When Chad Fowler gave his talk, he mentioned that the implied career path for most people in software is to become CIO – perhaps for the ambitious – CEO – of the big company you work at.
He suggested the alternative of becoming CEO of something else. A programming language. A platform. A tool. Become known as a contributor or thought leader in a specific space, and if you live in a reasonably-size city, then at least having a job – even a good one – is pretty much guaranteed. At that point, your options really start to open up – such as consulting, writing, teaching, starting your own company, or just retiring early.
I think this plays well with the end of the blockbuster, because there are now a lot of niche fields within software development – even within software testing. Requirements Engineering.
So how do you find your niche? Chad suggested technologies – either ones so new that the market is small (think ruby in 2003) and the big companies can’t compete, or ones so old that the market is small (cobol, powerbuilder) and the big companies can’t compete. Chad suggested that if you bet on a new technology and it takes off (java in 1996), you could become an “expert”, which is the slingshot to fame and fortune.
Now, that’s a perfectly reasonable strategy, but it’s not mine. It feels … mechanical to me, and I’m not in love with technologies. So I suggest a different route:
If you find that you enjoy a particular subject, that you’ve read all the books on the subject, and, at lunch, invariably, you are the local expert – then you’re already on the path.
Don’t find a technology – find a passion. When you’ve read all the books and find insights between them; when you disagree with some of the authors … when you feel you have something to contribute … when you find yourself in a tiny little community of people who really care about the subject … suddenly you’ve found a niche.
Once you’ve found a niche, the next question is how to gain “recognition” for expertise in your niche.
On it’s face, that’s pretty selfish.
The good news is that in order to be recognized for being good, like Linus Torvalds or that other guy, you have to contribute – you have to give something away.
Sure, you can be recognized for having written a book or five, or having a PhD, or a bunch of other things, but I submit that those kinds of things (“marketing”) are separate and distinct from being good. They may coincide; they often do, but there are a lot of people who want to be famous in the world of software testing, and a few who want to do good work and be recognized.
If you’ve ever read a book that was bone-dry, full of platitude, obvious, and included a bit of impressive hand-waving pseudo-science, it was probably written by someone who wanted to have written a book, instead of wanted to contribute to the community.
So, you’ve found your niche, but you aren’t a developer who’s niche is open source, and you don’t want to be a self-appointed blowhard. How do you contribute?
I’ve got a bunch of ideas, but they can wait until tomorrow. In the mean time, what do you think?
(*) – Jerry Weinberg, “Rethinking System Analysis and Design”, and Eli Goldratt, “The Goal”