The goal of software development
3 min readWhy would anyone give money to me to type weird stuff on a computer?
Why would anyone do it? I mean, let’s face it. We, programmers, are picky. We want to work on what we please. We want to go to expensive conferences. We feel entitled to call the shots.
I guess one of the reasons is that we produce software – eventually.
Yet, we keep forgetting why are we doing this. We forget why do we get paid.
And no, it is not because we type weird stuff.
The goal of software development
(Did I just write a subtitle using the post title? You bet I did).
In short: the primary goal of software development is to reduce the lead time to deliver business value.
(“Lead Time” as in “the time elapsed between identifying a business opportunity and providing the tools to fulfill it”. Or this.).
Also, the goal of software development is to do so in a sustainable pace. Not once, not for a week, but for an indeterminate amount of time. That’s critical.
To goal of software development is not technical excellence. It is the other way around. Technical excellence is the best way to provide value through software over time.
The goal is not producing software
In an ideal world, more software always leads to more business value. But we all know that’s not true.
You could then argue that more software translated to more business value.
However, we know that more software means more maintainability, more defects, more effort needed to understand it.
Thus, to provide more value, we’d need to reduce the amount of code.
Thus, we’d need to produce less of what we just agreed that gives us value.
Thus, writing code is in conflict with its primary goal. A lovely paradox we got there.
Code is not an asset
If that’s true, then code cannot be considered an asset. Right? It is not something you want to pile up, to have a stock.
Code is the cost of getting that business impact. It is what gets in the way between us and creating that value.
Code is the way we came up with to achieve this goal – for now.
And we must not confuse the end with the means. Yet, more often than not, we do so.
This is / This is not
Software development is not about updating tickets in Jira. If only software development had nothing to do with Jira…
Software development is not about over-engineering stuff. It is not about feeling smart because it is cool and because lets you look at people over the shoulder.
Software development is about sustainably reduce lead time to business impact.