+ All Categories
Home > Leadership & Management > Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

Date post: 06-Jan-2017
Category:
Upload: agile-lietuva
View: 282 times
Download: 0 times
Share this document with a friend
34
HEALTHY KEEPING SOFTWARE DEVELOPMENT ECOSYSTEM Dainius Me žanskas © 2015 Software Architect @ Intermedix Corp. [email protected] www.agileturas.lt/kaunas intermedix.com kaunas-jug.lt
Transcript
Page 1: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

HEALTHY

KEEPING

SOFTWAREDEVELOPMENT

ECOSYSTEM

Dainius Mežanskas © 2015Software Architect @ Intermedix Corp.

[email protected] www.agileturas.lt/kaunas intermedix.com kaunas-jug.lt

Page 2: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

DAINIUS MEŽANSKAS

§ Telecommunications, E-commerce, Health Care,Insurance, E-learning (17+ years)

§ Developer, Architect, Team Lead, IT Trainer

§ Software Architect at Intermedix Corp.§ Co-Founder and Leader of Kaunas JUG

Page 3: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

DESIGNSoftware

TEAMT-DEBT

DEMO

DESIGN

Page 4: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

CODE

DESIGN

ARCHITECTURE

Page 5: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

because of –ilities!

DESIGN...is important!why?

Page 6: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

MAINTAINABILITY SECURITYTESTABILITY SCALABILITYEXTENSIBILITY USABILITYRELIABILITY VULNERABILITY

-ilities

... and several dozens more

system quality attributes

Page 7: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

-ilitiesACCESSIBILITY ACCOUNTABILITY ACCURACY ADAPTABILITYADMINISTRABILITY AFFORDABILITY AGILITY AUDITABILITY AUTONOMYAVAILABILITY COMPATIBILITY COMPOSABILITY CONFIGURABILITYCORRECTNESS CREDIBILITY CUSTOMIZABILITY DEBUGABILITYDEGRADABILITY DETERMINABILITY DEMONSTRABILITY DEPENDABILITYDEPLOYABILITY DISCOVERABILITY DISTRIBUTABILITY DURABILITYEFFECTIVENESS EFFICIENCY EVOLVABILITY EXTENSIBILITY FAILURETRANSPARENCY FAULT-­TOLERANCE FIDELITY FLEXIBILITY INSPECTABILITYINSTALLABILITY INTEGRITY INTERCHANGEABILITY INTEROPERABILITYLEARNABILITY MAINTAINABILITY MANAGEABILITY MOBILITY MODIFIABILITYMODULARITY OPERABILITY ORTHOGONALITY PORTABILITY PRECISIONPREDICTABILITY PROCESS CAPABILITIES PRODUCIBILITY PROVABILITYRECOVERABILITY RELEVANCE RELIABILITY REPEATABILITY REPRODUCIBILITYRESILIENCE RESPONSIVENESS REUSABILITY ROBUSTNESS SAFETYSCALABILITY SEAMLESSNESS SELF-­SUSTAINABILITY SERVICEABILITYSECURABILITY SIMPLICITY STABILITY STANDARDS COMPLIANCESURVIVABILITY SUSTAINABILITY TAILORABILITY TESTABILITY TIMELINESSTRACEABILITY UBIQUITY UNDERSTANDABILITY UPGRADABILITY USABILITY

All?

https://en.wikipedia.org/wiki/List_of_system_quality_attributes

Page 8: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

CONTINUOUS  ATTENTION  TO  

TECHNICAL  EXCELLENCE  AND  GOOD  DESIGN ENHANCES  AGILITY

Page 9: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

WHEN

§ LARGE CODE BASE

§ LONG LIVING PRODUCTS

§ DISTRIBUTED | BIG TEAMS

§ HIGH PRICE OF FAILURE

§ HIGH THROUGHPUT

DESIGNIS IMPORTANT?

Espe

cially

for..

.

Page 10: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

§ PRODUCTION CODE

§ TESTS

§ BUILDS | DEPLOYMENT | AUTOMATION

§ TOOLS

§ UX

§ PROCESSES

DESIGNapplies to

Page 11: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

WHOISRESPONSIBLE

FOR DESIGN?and quality

Page 12: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

IS

RESPONSIBILITYTEAM

DESIGN

...and every member should be responsible

A

Page 13: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

DEFINE

FOLLOW

REVIEW

IMPROVE

Page 14: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

TEAM

ü TECHNICAL VIDEOS

ü SELF-IMPROVEMENT SESSIONS

ü CROSS-TEAM COMMUNICATIONS

ü OFFICE LIBRARY

IMPROVEMENT

Page 15: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

PAIRINGüSTART WITH PAIRING

...and define guidelines

üREVIEW RESULTS IN PAIR...in case task were complex

üRETURN TO PAIRING...if there are new ideas or challenges

Page 16: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

GITFLOW

2 MEMBERS TO APPROVE

WORKFLOW

OFFLINE PAIRINGPULL REQUESTS

TWO HEADS ARE BETTER THAN ONE

...it is like

...are four even better?

Page 17: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

POC

WORKING CODE CHUNKS

… in separate repo ...fully of partially functional

...discuss with teamDESIGN PROTOTYPE

a.k.a. proof of concept

Page 18: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

EXAMPLARSPRODUCTION

READY ARTIFACTS

CREATED FROM SCRATCH

...reusable examples

... or pre-generated

Page 19: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

ARCHITECTURE

& DESIGN

POTENTIAL BUGS

COMPLEXITY

DUPLICATIONS

CODING RULES

COMMENTS

STATICCODE ANALYSIS

Page 20: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

§ MULTIPLE LANGUAGES

§ RULE SETS INHERITANCE

§ CROSS-TEAM RULES

§ TIME MACHINE

§ CODE COVERAGE

§ IDE PLUGIN

§ 60+ PLUGINS

son

arqu

be

Page 21: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy
Page 22: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

INFORMATION RADIATORsonarqube

Page 23: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

DEBTTECHNICAL

Page 24: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

TECHNICAL  DEBT  IS  A  METAPHOR

THAT  REFLECTS  THE  EXTRA  

DEVELOPMENT  WORK  THAT  ARISES  

WHEN  THINGS  ARE  DONE  QUICKLY

AND  DIRTY.

The term was coined by Ward Cunningham in 1992.

Page 25: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

REASONS✓ BUSINESS PRESSURE

LACK

OF ✗ PROCESS, KNOWLEDGE or COLLABORATION

✗ ALIGNMENT TO STANDARDS

✗ TEST SUITE, DOCUMENTATION

✗ LOOSELY COUPLED COMPONENTS

✓ PARALLEL DEVELOPMENT✓ DELAYED REFACTORING

TECHNICAL DEBT

Page 26: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

§ POSTPONED RELEASES

§ CONSTANT HOT FIXES

§ BEING SCARED ON CHANGING ANYTHING

§ LOW CODE COVERAGE

§ UNREDABLE CODE, EVIL HACKS

... what are your TD symptoms?

SMYTOPMSTNECHAICL

Page 27: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

§ CLEAN CONSTANTLY (10%+)

§ ATTACK NEXT T.D.

§ DEFINE OUTCOMES

§ EVALUATE CHANGES

§ CLEANUP RELEASES

REMOVINGTECHNICAL DEBT

of P 1

Page 28: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

PROPERTY

vs.INJECTION

CONSTRUCTORINJECTION

Page 29: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

Property Injection

Page 30: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

Constructor Injection

Page 31: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

§ BETTER TESTABILITY

§ ALL DEPENDENCIES VISIBLE IN ONE PLACE

§ ENCAPSULATION IS PRESERVED

§ TOO MANY DEPENDENCIES - SRP IS BROKEN?

CONSTRUCTOR DI

Page 32: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

Prediction is very difficult, especially if it's about the future.— Niels Bohr “

Great software is not built, it is grown.— Bill de hÓra“

There is nothing noble in being superior to your fellow man; true nobility is being superior to your former self.

— Ernest Hemingway

Stay clean, stay agile. Encourage others.— Internet wisdom

LAST...but not least

Page 33: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

THANK YOU

Q&ADainius Mežanskas © 2015

Software Architect @ Intermedix Corp.

[email protected] www.agileturas.lt/kaunas intermedix.com kaunas-jug.lt

Page 34: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy

REFERENCES

• http://www.agilemanifesto.org/principles.html• https://en.wikipedia.org/wiki/List_of_system_quality_attributes• https://en.wikipedia.org/wiki/Technical_debt

• http://www.slideshare.net/lemiorhan/technical-debt-do-not-underestimate-the-danger?related=1• http://www.slideshare.net/zazworka/identifying-and-managing-technical-debt


Recommended