I was updating my bio at work for the last few projects I’ve been on since I was between projects. I looked back at some of the projects I’ve worked on and remembered the “good ol’ times”. Some projects were executed well and the client appreciated the outcome (read: warm fuzzies), while others produced a variety of useful retrospective topics and lessons learned (read: stressful, hair-pulling, glad I’m on this side of that delivery).
Old & Busted vs. New Hotness
There were some projects I mentally labeled as product replacements because they usually involved taking a piece of hardware that was outdated and building a newer, smaller, more efficient version with new firmware. We do many projects in this vein: taking the functionality of old software and/or hardware and putting it onto a new platform.
But then I started thinking about the other work I’ve done. Something nagged at me in the back of my mind: Weren’t those other projects replacing something, too?
Version 1.0: The Cutting Edge
New software, labeled cutting or bleeding edge, isn’t replacing itself or predecessor software, per se. But it may be replacing a mechanical or manual process. You know, that old paper process that needs signatures in triplicate. Or automating hundreds of pages of manual test procedures with a set of scripts and known data sets.
Perhaps this new software is a new algorithm for encryption or compression. In and of itself, it could be a thesis for a computer science PhD. However, it could be extrapolated into replacing existing standards like RSA or FLAC.
Next Man Up: New Personas
When developing software, we try to target a group of people that will be using the software. This group can be consolidated down to a representative persona. Sometimes we don’t target all personas up-front because of complexity. Sometimes we miss a persona that emerges from the use of our software in the wild. Either way, a new persona represents incrementally adding and/or replacing functionality in the system.
Paradigm Shift: Cutting In
Some software evolves to have functionality to “keep up with the Jones’”. Some software leads ahead of its competitors with new ideas. However, other software may change its focus and morph into something slightly different, getting the attention of a new customer base. As business people like to say, it was a “strategic marketing decision”. In this way, the software isn’t replacing itself; it’s replacing its competitors in the hearts of their customers.
Refinement: Trim the Fat
Just as metal is refined by removing the impurities, software may need to be refined to clean out features that aren’t used or provide little utility. In the Lean and Agile software practices, we call this “reducing waste” or “trimming the fat”. We’re replacing stuff with … nothing. And it’s all the better for it. It makes room for features that are more appropriate or needed.
The More Things Change, the More They Stay the Same
With Moore’s Law pushing hardware limits and certain portions of software implementation becoming commodities, expectations around software performance and functionality are becoming more and more user-centric. People are looking for the next new thing. Phones are out of date before they are released. E-readers are replacing print books in some cases. Mainstream media is being phased out by the internet and social media. We’re either riding the wave or being left behind.
Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. About the only thing you can’t do is ignore them. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.
– Apple Inc.
We, as software engineers, need to continuously improve and continuously deliver our products. If that means replacing something we or someone else has worked on, so be it. Push forward. Odds are, we’ll do it again; but next time, we’ll do it better.