after the book of Peter Hruschka and Gernot Schulmeister, patterns and anti patterns for software architects and developer like dictator, misjudger, notation warrior, code hero, decider, cleaner and simplifying gobelin
2. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 2wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Gernot Schulmeister
¡ Lives in M?nchengladbach
¡ Developes websites with TYPO3 since Version 3.7
(2005)
¡ Works for wfp:2
¡ Has a migration background and comes from
Southeast-Europe (Austria)
¡ Likes operative CMS evaluations
Contact
? facebook.com/gernot.schulmeister
? twitter.com/mistakanista1
9. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 9wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Dictator
? Smart alecks, patronizer, justification objectors are
often ignored, boycotted and undermined ¡ú desaster
? Architator: dictator with power for architectural and
technical decisions
? Dictators make decisions without giving reasons and
ignoring objections
? Balance between clear decisions and endless
discussions is necessary
? Monarch ¨C friendly, constructive dictators terminate
endless, unproductive discussion by clear, founded
decisions
10. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 10wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Misjudger
? Misjudger deliver clear numbers for costs, response
times and availibilities ¡ú putative safety
? Estimations are lead to absurdity by reality
? Responsible architects disclose uncertainties and risks
in estimations
? Misjudge causes stress for developers
? Misjudge costs money (estimations based on few,
unclear requirements is needed tomorrow morning)
11. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 11wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Techniques for better estimations
? First count then estimate (Use cases, features,
change requests)
? Historical data from old similar projects
? Expert estimations of people who know the field
? Divide and conquer (decomposition)
? More independent estimations
? Estimate quality features (performance, transactions)
¡ú prototyping
? Estimate products ¡ú decision making
13. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 13wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Perfectionist
? Perfectionism is very expensive (Pareto 80:20 principle)
? Causes overtime and bad conscious for employees
? Perfection trap source code: stop refactoring after
business targets have been reached
? Perfection trap organization: will fail because
organization is based on humans
? Perfection trap decision: suboptimal decision today is
better then best decision in six months
? Instead clean pragmatism: suboptimal solutions when
necessary
15. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 15wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Ignorant
? Not invented here syndrome
? Avoids reuse, makes everything on its own and can
everything
? Prefer to make mistakes himself than to learn of
mistakes of others
? Cause: school punishes copying
? Instead: learn from others, neighbor projects,
architecture & design patterns, reference architectures
? Ivory tower: loose relation to reality, programs
features which no one needs
16. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 16wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Code hero
? Last minute code and features
? Tries to solve all problems with new code
? Avoids communication but code is written in teams
? Code is important, but describes facts not reasons
? You see a lot of tree but not the wood
? Source code is not enough as input for humans
? Important decisions are not written in the code
? Other documentation than code is needed
18. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 18wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Notation warrior ¨C process preacher
? Shape is more important than content
? Regulations, rules and standards are law
? Stick to the process for any price
? Comprehensibility has priority
? Pragmatism ¨C no sloppiness
? Results are more important than check off steps
? Architects should know their tasks (make requirements
comprehensible, structure and technical decisions,
communicate to stakeholders, get feedback, evaluate
risks and solutions)
19. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 19wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Other anti patterns
? Toolistan ¡ú a fool with a tool
? Dirty slob ¡ú writes dirty code
22. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 22wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Simple is good ¨C target simple solution
? Easier to understand, modify and extend
? Less bugs, risks and effort, cheaper
? Simplify complicated technology
? Direct paths are better than paths through many layers
and frameworks
? Warn of complex business cases and golden faucets
? Appreciate simplicity ¡ú simplifying minute
? But: simplify too much ¡ú falsify
24. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 24wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Proactive
? Behavior similar to successful business man
? Opposite of reactive, don?t wait until someone asks
? Look for improvements in requirements engineering,
test, build & risk management
? Clarify assumptions and preconditions ¨C the technical
solution should be based on facts
? Contact stakeholder actively to learn and get feedback
? Show enthusiasm for your system or project
? Define the tasks yourself and get things done
25. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 25wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Looking in the rear view window
? Evaluation methods for their decisions to measure the
quality objectives
? PDCA plan, do, check, act, iteratively
? Check the status of the architecture, technical
concepts, structures, models, documentation and
implementation based on the artefacts
? Look for bugs, vulnerabilities, risks and omissions
? Process improvements: correct assumptions, reached
targets, problems with boundary conditions or
requirements, missing technical know how
27. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 27wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Decision maker
? Decisions are the basis of every design
? Clarify the question or the problem
? Which conditions and requirements are valid
? Which assumptions are taken and verified, known risks
? Evaluate alternatives
? Make decision and justify and document them
? Early, last responsible moment, timeboxed decisions
? Courageous decision but no foolhardiness
28. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 28wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Important architectural decisions
? Cost now or later a lot of money
? Many stakeholders are concerned
? Affects the system core
? Affects important quality issues
? Long term validity and hard to replace
? Many consequences and side effects within the system
? Consequences for interfaces or neighbor systems
? Go beyond the experience horizon
30. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 30wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Code smells
? Inconprehensible, awkward code, injured conventions,
abuse or wrong use of the programming language
? No test automation ¡ú legacy code
? Code that causes pain at run time by bad performance
or high resource consumption
? Code that hinder or prevents changes
? Code that differs from the rest by using other concepts,
paradigmas, frameworks or languages
? Risky code who might cause problem in future
? Code that simply looks bad
31. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 31wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Find the dirt and clean
? Measure the rate of pollution and the run time
? Clean parts who are often used first
? Afferent coupling ¡ú interactions and responsibility of a
code block: cleaning most important
? Identify the code to change and define test cases
? Solve dependencies and write test cases
? Change the code and refactor
? Knowledge of static code analysis tools (SonarQube)
important for code cleaner
32. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 32wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Find the dirt and clean
? Measure the rate of pollution and the run time
? Clean parts who are often used first
? Afferent coupling ¡ú interactions and responsibility of a
code block: cleaning most important
? Identify the code to change and define test cases
? Solve dependencies and write test cases
? Change the code and refactor
? Knowledge of static code analysis tools (SonarQube)
important for code cleaner
33. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 33wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Other patterns
? Multi viewers ¡ú many views on the system
? Structured lazyness ¡ú templates for recurring tasks
? Multilinguist ¡ú speak the language of all stakeholders
? Juggler ¡ú solve conflicts between stakeholders
? Lector ¡ú write simple documentations
? The noble knight ¡ú defend quality issues
? Changes as normal case ¡ú reimplement is no option
? Investigator ¡ú looks for code crimes
? Exterminator ¡ú looks for bugs and fixes them
34. Gernot Schulmeister | gernot.schulmeister@wfp2.com 14.11.2015 Seite 34wfp:2 GmbH & Co. KG M?nchengladbach | www.wfp2.com
Knigge for Software Architects
Conclusion
? Very good book which gives a lot of new insights
? Also useful for software developers
? The authors stick to their documentation principles and
write short and entertaining