This is the first post in a series of How to ship maintainable product
Reason behind this blog series
I have been programming for over 10 years now. I have built from scratch several fairly large system (what is the right definition of a large system?). Systems with unclear upfront requirements. Systems made in the Agile way :).
I made many mistakes during that time. Now, from a time perspective, I think those mistakes were inevitable. Inevitable in a positive way. They allowed me to learn, to seek for a better solution and to improve.
If you ask me for one and only one advice regarding programming I would say Prepare for evolving requirements
The main purpose of this series existence is to list all crucial parts of programming maintainable software in one place for future reference.
We - software engineers - need to learn constantly new frameworks and languages. During daily programming routines, it's easy to miss the larger picture of the system we create. Often we ship an unfinished product. Main functionalities work, but there is some technical debt to be paid off. How to ship maintainable product blog series should help us to develop better products. Products with less technical debt.
Below is a list of upcoming blog posts in this area. (The list is most probably not finished and will be extended as we go.)
- People - they come and go, code stays
- Requirements and design - demand requirements and create simple design
- Tooling - use tools for the right purpose
- Unit tests - make them small and smart
- Patterns - stand on the shoulders of giants
- Dependencies - isolate interfaces and use stable components
- Automation - save your valuable time
- [Todo] Logging and monitoring - use best diagnostics sources
- Documentation - bring identity for code puzzles
- [Todo] Business - try to tame the lion when it's hungry
- [Todo] Communication - blood of software development
- Version management - optional
- [Todo] Code poetry - optional, program all parts so they naturally fit together
So please stay tuned for the first blog post in HTSMP series to come any soon.
Of course, any advice and ideas to the list above are welcome.