Trivadis TechEvent 2017 Secrets of creation of reliable + maintainable (=cost effective) software by Jonatan Kazmierczak
1. BASEL BERN BRUGG DĆSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF
HAMBURG KOPENHAGEN LAUSANNE MĆNCHEN STUTTGART WIEN ZĆRICH
Secrets of creation ofSecrets of creation of
reliable + maintainable (= cost effective)reliable + maintainable (= cost effective)
softwaresoftware
Jonatan KazmierczakJonatan Kazmierczak
2. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Why is it important?
ī we and our customers want to be cost effective
ī we want to create reliable and maintainable software
ī we want to help our customers to do the same
3. We want to avoid expensive failuresWe want to avoid expensive failures
4. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
About author
ī senior consultant at Trivadis
ī creator of Class Visualizer
ī creates software for 28 years
ī top rated participant in contests
in programming and data science:
HackerRank, TopCoder, Code Jam
ī conference speaker
ī fan of Atari XL/XE demos
5. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
About author ā cont.
www.hackerrank.com/jonatan_k
ī 1st rank in Java
ī 1st rank in JavaScript
ī Top 1% in functional programming in Scala
ī Top 1% in SQL
ī Medalist in algorithmic contests
7. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Mottos
ī "80% of the lifetime cost of a piece of software
goes to maintenance"
ā Java Code Conventions (12.09.1997, Sun Microsystems)
ī āEverything should be made as simple as possibleā
ā Albert Einstein (probably)
11. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Stable ground
ī Requirements ā challenges
ī usually incomplete and not clear enough at the beginning
ī will be extended afterwards
ī some may be changed or removed
12. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Stable ground ā checkpoint
Is there an existing product fulfilling
the purpose and most of requirements ?
Usually it is cheaper and safer to buy itā
than to create the own one
15. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Clear boundaries
ī Defined input and output ā how to interact with the software
will be extended and maybe changed in the futureā
16. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Clear boundaries ā checkpoint
Do we have a clear picture of input, output and constrains
of the new software?
18. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Architecture
ī allowing to fulfill requirements in the simplest way
ī allowing the software to be:
ī easily extended
ī possible to change
ī with limited dependencies on external libraries and tools
each dependency can become a project killerā
19. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Design
ī easy to maintain and to extend
ī clear picture of flows (what, not necessarily how)
ī interfaces (UI, REST, API)
UI mockups highly recommendedā
21. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Implementation
ī starting with mockups of exposed interfaces
ā for easy integration and verification
22. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Implementation
ī correct syntactically, logically, functionally
ī easy to maintain and to extend
23. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Implementation
easy to maintain and to extend
ī as simple as possible + clean = easy to understand
ā with meaningful, descriptive names
ī with logging
ī tested (discussed later)
ī boilerplate code should be generated
ā regeneration should be possible
ī with constants and enums representing:
magic numbers, strings, sets of allowed values
24. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Implementation
easy to maintain and to extend
ī best choice of used classes/interfaces
ī first - language API
ī next - existing external libraries
ī last - eventual new libraries
ī stateless and immutable whenever possible
ī minimal needed visibility/scope
ī no useless/unused code and comments
25. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Implementation
easy to maintain and to extend
ī no redundancy/duplications
ī proper exception handling/throwing
ī formatted properly to ensure maximal readability
ī following (language-specific) coding rules and conventions
26. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Implementation
ā easy to (re)build
ī built by execution of one simple command (not only from IDE)
ī fast build for developers
ī long-running build for automated verification
ī outcome: distributable package
27. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Implementation
ī documented
ā especially public APIs / interfaces
29. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Quality assurance
ā involving people
ī working in pairs
ī review of everything:
requirements, architecture, design, implementation
30. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Quality assurance
ā automated
ī sending notifications in case of new problem(s)
ī build
ī unit tests
at least partially written not by author of tested codeā
ī verification of coding rules and conventions
33. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
What do you need to be successful
ī Stable ground
ī Clear boundaries
ī Solid foundation
ī Proper construction
ī Quality assurance
35. Cost effective software ā Jonatan Kazmierczak ā TechEvent 2017
Session Feedback ā now
ī Please use the Trivadis Events mobile app to give feedback on each
session
ī Use "My schedule" if you have registered for a session;
Otherwise use "Agenda" and the search function
ī If the mobile app does not work, use the web browser
ī URL: http://trivadis.quickmobileplatform.eu/
ī User name: <your_loginname> (such as "svv")
ī Password: sent by e-mail...