dainius mežanskas - keeping software development ecosystem healthy
TRANSCRIPT
![Page 1: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/1.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/2.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/3.jpg)
DESIGNSoftware
TEAMT-DEBT
DEMO
DESIGN
![Page 4: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/4.jpg)
CODE
DESIGN
ARCHITECTURE
![Page 5: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/5.jpg)
because of –ilities!
DESIGN...is important!why?
![Page 6: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/6.jpg)
MAINTAINABILITY SECURITYTESTABILITY SCALABILITYEXTENSIBILITY USABILITYRELIABILITY VULNERABILITY
-ilities
... and several dozens more
system quality attributes
![Page 7: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/7.jpg)
-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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/8.jpg)
CONTINUOUS ATTENTION TO
TECHNICAL EXCELLENCE AND GOOD DESIGN ENHANCES AGILITY
![Page 9: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/9.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/10.jpg)
§ PRODUCTION CODE
§ TESTS
§ BUILDS | DEPLOYMENT | AUTOMATION
§ TOOLS
§ UX
§ PROCESSES
DESIGNapplies to
![Page 11: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/11.jpg)
WHOISRESPONSIBLE
FOR DESIGN?and quality
![Page 12: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/12.jpg)
IS
RESPONSIBILITYTEAM
DESIGN
...and every member should be responsible
A
![Page 13: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/13.jpg)
DEFINE
FOLLOW
REVIEW
IMPROVE
![Page 14: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/14.jpg)
TEAM
ü TECHNICAL VIDEOS
ü SELF-IMPROVEMENT SESSIONS
ü CROSS-TEAM COMMUNICATIONS
ü OFFICE LIBRARY
IMPROVEMENT
![Page 15: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/15.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/16.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/17.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/18.jpg)
EXAMPLARSPRODUCTION
READY ARTIFACTS
CREATED FROM SCRATCH
...reusable examples
... or pre-generated
![Page 19: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/19.jpg)
ARCHITECTURE
& DESIGN
POTENTIAL BUGS
COMPLEXITY
DUPLICATIONS
CODING RULES
COMMENTS
STATICCODE ANALYSIS
![Page 20: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/20.jpg)
§ 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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/21.jpg)
![Page 22: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/22.jpg)
INFORMATION RADIATORsonarqube
![Page 23: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/23.jpg)
DEBTTECHNICAL
![Page 24: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/24.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/25.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/26.jpg)
§ 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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/27.jpg)
§ 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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/28.jpg)
PROPERTY
vs.INJECTION
CONSTRUCTORINJECTION
![Page 29: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/29.jpg)
Property Injection
![Page 30: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/30.jpg)
Constructor Injection
![Page 31: Dainius Mežanskas - Keeping Software Development Ecosystem Healthy](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/31.jpg)
§ 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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/32.jpg)
“
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/33.jpg)
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](https://reader034.vdocument.in/reader034/viewer/2022042517/586f75fa1a28ab10258b62b1/html5/thumbnails/34.jpg)
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