I was chatting recently with Ian Baird about the benefits and demands of running an independent software business. It seems a lot of people are excited about the prospect of going solo, and I can’t blame them. I’m excited, too! Working for yourself means you answer to nobody. Except, of course, when you’re answering to all those people, customers and business partners, who you gave yourself permission to answer to.
But! You do wake up excited to pursue the day’s pressing problems. Some days that might mean the boring art of turning a profit, but on other, less strenuous days, your attention may turn to timeless questions such as “really, truly, what’s the ideal cascading behavior for new document windows?”
Working for yourself means a neverending list of outstanding questions. How do I improve my marketing? Can I streamline my quality assurance? Do I need a customer relationship management system? Maybe I should rent office space. When do I hire somebody? Is the printer ink deductible, even though I printed a couple concert tickets? How many free copies of my application should I be giving away? Should I be granting interviews? And if so, what’s my title, anyway?
In most “real” jobs you answer a much smaller set of focused questions on a day-to-day basis. In many ways, this is good. Being expected to fill a well-defined role is not only comfortable, it’s also efficient. I guess that’s why business evolved that way. After all, why should you spend time on questions that don’t pertain to your primary talents?
The best answer I have is that it’s really fun to run the show. As an independent developer, you learn a ton about all aspects of running a business, which is both challenging and rewarding. In some ways, this ambitious journey is like a long, strange approximation of earning an MBA. (And I don’t mean “Mister Bad-Attitude!”)
It’s not like I’ve earned the right to call out mistakes in this pursuit. I’m just getting started, myself. But I am opinionated. If there’s one shortcoming I spot in other developers who are intent on being self-employed, it’s a lack of respect for non-engineering aspects of the job. These developers seem to think that indie software development is all about software development. They quit their jobs convinced that they’ll do the same programming work as ever, only sell it directly to users for majillions of dollars and be happy and rich. If the software business was this simple, the companies these developers used to work at wouldn’t need all those other people, the passionate and talented folks who don’t do the programming! What does it take to run your own business? Take a look at every single job in your old company, you’ll be doing it from now on.
Every day brings new challenges, which is of course a huge part of the excitement. But the majority of these challenges fall outside our conventional areas of expertise. What are we to do? It’s relatively simple: learn as much as you reasonably can about all aspects of your business. Marketing, design, quality assurance, accounting, legal protection, payment processing, customer relations, and yes, software engineering, should all be topics of interest to you. If you’re not somewhat interested in these fields, I don’t see how you can run an indie software business. You’re better off in a real job, where you’ll be allowed to specialize in peace.
But the good news is that mere interest in these varied fields will carry you a long way. You don’t need to be an expert to recognize where your expertise ends. By learning enough about your business and the limits of your own abilities, you’ll be well-positioned to do as much as you can do yourself, and to outsource the rest to more capable hands. Just like a real business!
While I do enjoy the romantic image of the successful indie developer as jack of all trades, I’m convinced it’s both impossible and unnecessary. You’ll go much farther in this pursuit by developing a respect for all trades, instead.