One of my aims with this blog is to help software developers take charge of the business of writing software. And, while I love writing rants and diatribes, doing this requires a good bit of positively focused how-to sorts of things. Today, I'll charge at one of those: how to become a software specialist in a world of low-status generalists.
To specialize, you need look no further than your resume.
But I'll come back to that in a bit. First, you need to understand the essential sales problem of the software developer, from a labor perspective.
Individual Contributor Software Development Is a Terrible Business Model!
Before you pick up the pitchforks and torches, hear me out. I realize you've earned a good living writing code for some product company or agency. I've done that too in my life.
You can earn a good living this way. But you can't really conduct good business this way. So when software developers hang out their shingles after years of salaried employment, things can go sideways from a leverage perspective. Mostly, people in this position become contractor staff augmentations that look a lot like employees. Why is that?
It's because of an incoherent value proposition: selling code-writing-labor.
To make money as a business-person, you need a customer. I don't mean a nameless, faceless corporation. I mean a middle-aged guy named Stan. Or maybe a hard-charging woman in her early thirties named Ashley. You need a buyer, represented by an actual human persona that you can picture and speak to. And this person has to be able to afford your services.
Who is this person that can buy tens or hundreds of thousands of dollars of your labor?
The Case of the Split Persona
At this point, you're probably picturing Stan as an architect or Ashley as a tech lead. But those people don't have tens or hundreds of thousands of dollars. In terms of company money, they have zero dollars and zero cents, unless the company gives them like a $1,200 per year training budget. That doesn't buy a lot of your app dev, does it?
You want a 3- to 12-month app dev gig, which goes on the market for $50,000 to $200,000. Do you know who signs off on buying that? A director named Sheila. And do you know what Sheila will say if you come to her and tell her that you're really looking to work on a Node.js-this and a React-that? She'll tell you that you need to talk to someone that reports to someone that reports to her. She can't remember their names off the top, but, you know what, just send your resume to HR or something (I've written more on this here).
When you try to sell a keyword-heavy resume as your value proposition, you create an existential conundrum for yourself. The people that understand what you bring to the table can't afford you. And the people that can afford you can't conceive of what problem you purport to solve.
The only way you can make sales is to sell to a system - an algorithm involving various people and committees and whatnot.
And that's a recipe for either going out of business or floating along through your "consulting" career as a pseudo-employee.
Enter the Software Specialist
So you don't want to sell big honking chunks of app dev labor by the hour. At least, not if you're serious about establishing yourself as a consultant, the way I epically described the other day.
I routinely advise people to specialize (I'm certainly not alone in this - I could link you to lots of other freelance bloggers/podcasters/etc. that say the same thing). But I also recognize that this is hard. A self-defeating culture has settled over our line of work, encouraging us to compete en masse as generalists, rather than divide and conquer.
When I encourage folks with experience tuple resumes to specialize, their first impulse is to pick a tuple. "I'm going to specialize in the C# Oracle database driver's API!" This can work. But only if you're going to sell courses or books to fellow software developers.
If you're going to try to sell your labor in $50K - $200K chunks, this is honestly probably worse than generalizing in C# or programming. Sheila still won't understand or give a crap, and fewer Stans and Ashleys will perceive you as valuable and hire you.
To become a software specialist (or any specialist), you have to stop thinking about you and start thinking about your buyers. Who are they, exactly, and what problem do you solve for them? How do you make their lives better in exchange for a price that they can pay?
Your Resume Can Actually Help You Specialize
When people tell me about their lives, I can help with specialization ideas, based on what they enjoy and what they're good at. I've gotten very used to thinking in these terms.
But I've also had such a prodigious amount of experience with this that it's completely unfair. Not only have I consulted for years, but I've also been writing for a lot of others' blogs, which forces you to think of their buyers and what they offer.
So I conceived an admittedly hokey exercise where I talk to myself from a decade ago and think about how it would go. A decade ago, Erik would have wanted to specialize in a driver API.
And the best gap-bridging exercise was to dig up an old resume and use it as an example of how to iterate toward a specialty.
But first things first. Does your resume have one of these?
Mine did. CMM and waterfall "methodologies." I wish I could remember if I added that cynically to light up the keyword detectors or if I really thought of them that way.
Anyway, the point is, toss this section of your resume in a garbage can. Then light that garbage can on fire and shoot it into space (or just ignore this part of your resume).
Your Specialties Are in Your Accomplishments
Here's another segment of my old resume. And wow, just noticed a grammar error in there at a casual glance (can you spot it?).
You probably have a section describing what you did, day to day, the way I have here. But hopefully, you also have a "key accomplishments" section. If you don't, add it, because it answers the question, "did anyone care that I worked at this place?"
Good accomplishment sections include not only things your employer recognized you for, but, ideally, who benefited and how. And, if you're really on top of your game (as I would be toward the end of my resume taking days), you'll start quantifying your accomplishments. For instance, "added an integration test suite that reduced escaped defects by 40%."
But it's not only good resume accomplishment statements that have these things. It's good positioning statements for free agents! It's full of ideas!
- I get late software projects back on schedule (Sheila will appreciate that one).
- If your team hasn't done it yet, I have an offering where I add automated tests to your build.
- I'll set up a knowledge base for your team.
- I specialize in getting your team on newer source control with no loss of historical information.
You get the idea.
Brainstorm Furiously and You'll Be Swimming in Software Specialist Paths
This is one role I had at one company once. With almost zero effort, I glanced at its accomplishments section and popped off four viable business models for free agents. Imagine me doing this with 10 years worth of roles, across a bunch of different companies. The ideas will pile up in a hurry.
In the initial stages, don't be picky. Leave it in there even if you think you'd hate it or that you couldn't sell it. Just get in a mode where you're piling up ideas. They'll really start flowing this way.
Once you have an impressive hoard of them, you can start filtering. Filter out ones that would destroy your soul first, perhaps. From there, think about the marketability of the idea and the viability of the business model.
And think about how you'd position yourself. Remember, this is a buyer-focused activity, so as you filter your ideas, you should always think about who the buyers are and what makes you uniquely qualified to help them.
Like a muscle, exercise this style of thinking, and get used to it. Let it become second nature. Because it's this style of specializing and positioning that really lets you differentiate yourself and stop competing with 18 million other software developers for the title of "best at algorithms." Nobody cares about that title as a buyer, except wage employers that benefit from you making less than you could. So stop engaging in quixotic races and start using your unique specialty to run unopposed.