Practical Software Design (Clean Code Series I)
You want to become a more productive software developer? Then systematic and visual problem solving is what you should focus on first. Effective and clean code starts long before you write the first line of code: it starts in your head.
Software design has fallen from grace. Once it was an honorable discipline under the roof of an honorable trade: software engineering. Then came Agile, and TDD, and software craftsmanship. Conscious, systematic software design in a short time became synonymous with BDUF (Big Design Up-Front) done by astronaut architects. Surely a task not worthy of real programmers working hard at coding to bring value to customers in small increments.
But as much as there was wrong with the earlier approach to software development, branding design as a relic in an ivory tower sure threw the baby out with the bathwater. The result: more code, less structure, more talking, less common understanding.
This workshop is trying to recover for your some of what has been lost. It's striking a balance between formalism and practicality. It's bringing back explicit, conscious, systematic software design where it belongs: into the trenches. Every developer should be fluent in at least the basics of software design. That means he/she should be able to evolve and express models for solutions before and independent of code.
Software design is about solving the problem at hand on a whiteboard and as a team. It finds declarative solutions which only later are implemented with imperative languages like C#, Java, C++ etc.
Software design is cheap. It allows a team to quickly explore alternatives while at the same time develop a common understanding of a domain. Coding solutions calcifies them. They become hard to change. Models of solutions, though, are much more malleable.
Explicit software design simply is a matter of increasing productivity: solutions are more easily found, are more widely accepted, and can be implemented in a more coordinated way.
"Flow-Design" as the approach is called draws from Object-Orientation (OO) as well as Functional Programming (FP); it even goes back to the roots of OO and puts messaging first. By that it tackles the evolution of legacy code at the heart: Flow-Design finally gets rid of functional dependencies. And cherished principles like SOLID are put into perspective, so that using a test-first approach for implementation becomes easier.
Come and see, how software design can be reclaimed as a crucial phase of software development. It's not only for architects, it's for every developer. Experience how lightweight design feels. Start with clean code before you code. Sustainable productivity can be achieved.
Developers, software architects.
Ralf Westphal (https://ralfw.de) is trainer, consultant, coach for software architecture and clean code development.
In 2008 he founded a clean code development initiative in Germany with a colleague. They were excited by Robert C. Martin’s book „Clean Code“ and thought that’s an important topic which needed more attention. Since then a discussion group on clean code on the German XING platform (a service like LinkedIn) has attracted more than 4500 members.
He has done dozens of talks on the subject at developer conferences, written many, many articles on it, and have delivered more than 500 training days to hundreds of developers.
His focus is on sustainable software development and making teams fit for a VUCA world. Since 1997 Ralf also has written extensively in blogs „(e.g. http://ralfw.de/blog)", magazines, and books. In addition he's been a speaker at developer conferences in Germany, Europe and abroad for the past 20+ years.