How do you measure the progress of software careers? I don’t mean rhetorically — give it some thought. As a software developer working your way through the workforce, subconsciously optimizing for AMP, how do you evaluate yourself?
I can think of some things that probably flash into your head:
Maybe you have others. Weigh in below in the comments if so — I’m honestly interested to hear.
Anyway, today, I’m going to propose a different one. At first blush, this measure seems kind of binary. But I think there’s actually a subtle continuum, and this post will explore it.
So, how do I propose we measure progress in software developers’ careers?
Simple. Your career is as mature as the degree to which you control the decision about whether or not to write software.
What Does It Mean to Decide Whether or Not to Build Software?
Before I get into the progress spectrum I mentioned, I should probably justify my assertion and elaborate a bit.
First of all, when I talk about the decision about whether or not to write software, I don’t mean it in some kind of granular, micro-sense. I don’t mean that you have the autonomy to decide whether to roll your own logger or to use Log4j. I don’t even mean that you’re an architect and you can push back on the business about technical feasibility in the short term.
No. I mean that you make the business decision about whether or not to write software.
For instance, say you’re a free agent that specializes in helping mom and pop retailers establish an online sales channel. When Mom’s Gourmet Macademia Nuts calls you and contracts you to help, you decide whether to build a custom web app, use Shopify, or send them to Etsy. (Or whatever — this isn’t exactly my forte.) Mom asks you for help, and you decide whether or not writing software should be part of that help.
Or take me and my content business, Hit Subscribe. In order to earn my CTO designation on LinkedIn, I’m handling the business’s technical decisions, including whether to delegate tasks, automate them with off the shelf products, or build custom automation myself.
That’s what I mean about the build decision.