Talking about how modern Agile Development interacts with the advice he gives in his (awesome) book A Philosophy of Software Design, Dr John Ousterhout wrote:
"Developing incrementally is generally a good idea, but the increments of development should be abstractions, not features"
I deeply resonate with this quote. So much so, I had to share it in a blog post.
Far too many times I've seen the quick-and-dirty, "make it work now" style of programming - what the author calls tactical - just evolve into a massive, unmaintainable piece of garbage that most likely had to be rewritten, costing more time and effort than doing it right in the first place and slowly iterating towards better design would've (not to mention the cost of sanity and burnout from the developers).
Please develop with the future in mind. Making it work now is important, yes. Making sure it doesn't crumble in 6-12 months even more so. Your future self will thank you.
Note: Apply this advice pragmatically. Do not over-engineer every piece of software you build from now on, but do apply best practices, and please, if you have to revisit software, then make it better, not worse. If you're building what it supposed to be a core product, build it over a strong foundation, not on sand, hopes and wishes. Take pride in your work. That's it.
Top comments (0)