Process Over Technology
As the struggles continue with the application rewrite I'm currently involved with, I've read and reread these articles by Joel Spolsky, James Shore, and Chad Fowler on why this path generally leads to failure. After I finish reading articles like these I often ask myself: since many of the industry thought leaders think these projects are a bad idea, why are they still so common? I mean, Joel's article was written in 2000. Eight years later (an eternity in technology) that article is still extremely relevant, but it's lesson has failed to penetrate mainstream thought.
There's not enough industry focus on how best to approach legacy system enhancements. Many software development articles that garner the most attention focus on quality improvements delivered through innovations in technology - new programming languages, frameworks, APIs, architectures, and hardware. While that stuff's definitely important, they're relatively little help to application developers looking to extend the life of existing systems.
Martin Fowler's Refactoring book is the best example I've read for extending the life of existing software. This book - and articles like those in the opening paragraph - are timeless because they describe thought patterns for maintaining applications. Their lessons are applicable regardless of any specific technology or language.
In a recent StackOverflow podcast Joel Spolsky and Jeff Atwood discuss a recommended reading list for developers (Jeff had a previous post on the subject). In looking through their lists, I'm not seeing any "Teach Yourself Perl in 8 Hours" or "Ruby for Dummies". Specific technology is not the focus here. These recommendations teach software professionals how to think - improving quality, efficiently, and allowing them to deliver greater value.
I'm starting to believe that there are an increasing number of developers who are starting to think more like this (or at least I'm meeting more of them) - focused on improving processes rather than relying on technology innovations for increased software quality. I hope this mindset spreads to more of the development teams I'm working with.... before the next big rewrite. This thing is painful.
*****
Jeff Atwood also had a recent post on Dealing With Bad Apples. He has a similar take to my Observations in Poor Management.
There's not enough industry focus on how best to approach legacy system enhancements. Many software development articles that garner the most attention focus on quality improvements delivered through innovations in technology - new programming languages, frameworks, APIs, architectures, and hardware. While that stuff's definitely important, they're relatively little help to application developers looking to extend the life of existing systems.
Martin Fowler's Refactoring book is the best example I've read for extending the life of existing software. This book - and articles like those in the opening paragraph - are timeless because they describe thought patterns for maintaining applications. Their lessons are applicable regardless of any specific technology or language.
In a recent StackOverflow podcast Joel Spolsky and Jeff Atwood discuss a recommended reading list for developers (Jeff had a previous post on the subject). In looking through their lists, I'm not seeing any "Teach Yourself Perl in 8 Hours" or "Ruby for Dummies". Specific technology is not the focus here. These recommendations teach software professionals how to think - improving quality, efficiently, and allowing them to deliver greater value.
I'm starting to believe that there are an increasing number of developers who are starting to think more like this (or at least I'm meeting more of them) - focused on improving processes rather than relying on technology innovations for increased software quality. I hope this mindset spreads to more of the development teams I'm working with.... before the next big rewrite. This thing is painful.
*****
Jeff Atwood also had a recent post on Dealing With Bad Apples. He has a similar take to my Observations in Poor Management.
Comments
I think the reason we don't see more focus on the "get more out of what you have" is related to "agency syndrome".
Extracting more out of legacy systems is not "fun" and in a pure economic sense, is not valuable (for the individuals making the decisions). If I didn't own the company (or have a significant stake), it'd be hard to invest the energy into getting more out of legacy systems. That's why so few people do it.