2. Create a technical foundation of such superb
quality and architecture that it is capable of
seamlessly integrating changes in business
logic without error.
Crafted – Elegant – Beautiful
Allows for rapid modification and deployment
Completely bug free; always 100% tested
This is the ‘ideal’
The Developer’s Single,
Most Important Goal
4. First phase of development
Learned and sharpened during formal
education and small business development
Focus is getting things ‘to work’
Important for startup cultures
Vital for launching initial technical platforms
Essential for productivity in new and uncertain
environments
Becoming a Hacker
5. ‚At some point, all programmers will experience this.‛
http://imgur.com/l3aFizL
6. Phase two of a developer’s evolution
Learned when confronted with large scale,
evolving systems
Required for GROWING software
Involves writing code that easily
accommodates change
Discovering the Value of
Maintainability
7. Third phase of development
Learned in team environments focused on a
high traffic, large scale code bases
Focus on readability by ‘other’ developers and
efficiency in code execution
Thoughtfulness towards overall code base
architecture and design
Coding for Scalability
8. Final pursuit of development
A desire for simplicity created by the
complexity of large scale systems
Requires a vision for the potential elegance of a
code base
Occurs when code is managed holistically and
thoughtfully
Only drawn upon by passion for development
and pride in craftsmanship
In poetry, no word is wasted
Draws developers toward the ‘ideal’ code base
Code as Poetry
13. Technical Debt
Developers are incapable of moving beyond the
‘hacker’ stage due to incompatibility with the
speed and nature of business
Code becomes bug-ridden
Becomes apparent only in the ‘long run’
Undesirable environment for developers
Leads to overall organizational frustration
Stifles innovation
The Cost of Imbalance
14. Initial technical platform
is constructed.
Short-term business
needs outweigh the
long-term need for
technical stability.
Technical debt compiles.Productivity diminishes.
Complete code rewrite
is desired.
16. The nirvana fallacy is the informal
fallacy of comparing actual things with
unrealistic, idealized alternatives. It can
also refer to the tendency to assume that
there is a perfect solution to a particular
problem. A closely related concept is the
perfect solution fallacy.
http://en.wikipedia.org/wiki/Nirvana_fallacy
17. ‘Le mieux est l'ennemi du bien’
‘The perfect is the enemy of the
good‘
Voltaire (1694 – 1778)
18. We can achieve balance through awareness
Through balance, we can achieve and minimize
the costs of an imperfect code base
We do not have to achieve the ideal code base
but we must make an effort towards it
Requirements for Organizational Success
Energy
Open Communication
Pride in Craftsmanship
Execution via Pride not Fear
Achieving Organizational Success
19. Avoidance of technical debt
Solid, technical foundation motioning towards
the ‘ideal’
Business remains agile and competitive
Satisfaction for both business leaders and
technical developers
Real value for the cultivated technical platform
Poised for innovation
Benefits of Balance
Notas del editor
high school and collegeLearned at first job – developing for a web design agency (iHOG)
Big Smile Magazine
PriceGrabberWorking with a teamWorking with an architect
Natural desire when faced with the complexity of large code bases
Questions:Where do you feel that our overall code base falls on this chart?How can we move towards from where we are to the ‘ideal’?More discussions about architectureUnit testingPeer reviews
Questions:What do you think about this?Product: Is this representation of imbalance accurate? Inaccurate? How?For product to think about: How do they understand this relationship?
Questions:1. Can anyone describe an experience they’ve had in the past where this has occurred?
Energy for constant critical thinking/analysis – Energy to continuously seek improvementOpen communication to share ideas and knowledge to produce higher quality code – and to not be afraid to speak up when the quality of our code is compromisedPride in what we createCultivate our technical foundation based on decisions of craftsmanship not based on fear of breaking things