The craft of software development
| As presence and online training
The way to more professionalism in code creation!
Nowadays, software development is increasingly perceived as a form of craftsmanship, which stands for a tradition of craftiness, cohesion, distinct values, and genuine quality. From this point of view, a professional software developer is a scholar who constantly strives to improve his or her own skills.
Generally, seniority is based on the number of years spent in an industry. Seniority is expected to be able to clearly answer the questions “Senior in comparison to Whom, in what technology, in what context?”
Professionalism, on the other hand, is embodied by a master craftsman: knowledge, a high sense of quality, pragmatism, as well as aspiration, passion, joy and pride in one’s own work characterize a professional software developer.
In this seminar, you will learn the values, rules and principles on which the craftsmanship of software development is based, enabling you to develop high-quality, Object-Oriented code in accordance with the proverb “Like master, like work” (Karl Simrock).
Software should meet precisely this requirement: The feature should not only be executable, but should be implemented in such a way that the code (what is not seen) is understandable, changeable and testable, i.e. “clean”.
In this seminar, you will:
– Use practical examples to train in the guiding principles that The Software Craftsmanship Manifesto describes.
– Expand your knowledge by applying meaningful design principles and patterns, and identify problematic code sections (code smells or anti-patterns).
– Learn how to effectively handle legacy code or evolve it through targeted refactoring and use review techniques to share knowledge.
Who should participate:
The seminar “The Craft of Software Development – The Path to Code Creation Mastery” is aimed at software architects, software developers, quality assurance professionals and technical project managers.
The seminar “The Craft of Software Development – The Way to Mastery in Code Writing” requires programming knowledge in an object-oriented language (the examples and exercises are given in Java) as well as basics with UML, or comparable knowledge.
Basics of professional software development
- Software development process
- Principles of “good” programming
- Quality characteristics (ISO 25010)
- Software entropy
- „Code Smells“
- Causes of “bad” programming and immoralities
- Professionalism and ethics
- Agility, Agile manifests, Agile Hangover
- Software Craftsmanship manifesto
- Clean Code Initiative (Clean Code Developer)
Principles of good design
- Simplicity wins
- Specific choices
- Explicit requirements
- Encapsulation, secrecy principle
- Loose coupling
- High cohesion
- Object-oriented principles (SRP, DRY, SOLID)
- Separation of Concerns
- Cross-cutting topics (Logging, Security)
Benefits of attending a seminar
- You will write more readable, maintainable, extensible and testable code
- Compact training focused on professional software craftsmanship
- Up-to-date courseware (state-of-the-art)
- Repeat and reinforce fundamental development aspects (design principles and patterns)
- Sensible and understandable naming
- Functions, data types, arguments
- Query / command segregation
- “Stepdown rule”
- Error handling, zero-reference handling
Effective development (including with Java)
- Design patterns
- Immutablitiy and immutable data structures
- Special features of individual data types
- Function literals (lambdas) and higher-order functions
- Reuse by composition
- Static code analysis
- Test-Driven Development (TDD)
- Continuous Integration & Delivery
- Code Reviews
Working with “Legacy Code”
- Resolving Dependencies
- Which tests are necessary / which methods should be tested / what about misleading parameters?
- Inducing code understanding
- Dealing with non-object oriented code
- Coding Dojos and Retreats
- Integration into agile approaches
- Modern software architectures (context)
- Practical experience in software development, acquired through various projects or systems outside of education
- Knowledge and practical experience in at least one high-level programming language
- In addition, helpful for understanding some concepts are basics in modeling
You’re interested in this training?
Then please call us at +49 621 595702 41 or send us a written inquiry using the contact form:
We are looking forward to your inquiry:
Customised in-house training required?
You have an entire team that you would like to provide a training for? If no training or workshop from our portfolio fits, we are happy to design tailor-made training courses according to your wishes. We look forward to your inquiry!