I’ve been a software entrepreneur for over 30 years now. But a lot has changed since my days of staying up all night to write custom code on black and green screens. Today’s software development landscape is vast, with numerous niches to specialize in. If I was going to start a business in the software industry today, with no previous business experience, I’d want to know the following.
1. If You’re not a Developer, Partner With a Software Entrepreneur That Is
When I started in the software development world over 30 years ago, then ideas could be rough concepts, scratched down on paper, taken to someone who could code, and turned into a small program. Now, however, code is one small piece of a massive system within another massive system, layered and complex. If you don’t have any experience in the coding world, you’ll never know what language to code it in, what platform to build on, or how best to roll out your software. Suffice it to say, if you’re a software entrepreneur that plans to start a business in the software development space, have someone who knows it by your side.
Partnering with someone who knows code and is personally invested in the process will help you guide your steps and make important scaling decisions early. The software development world is vast and constantly expanding. Even experienced developers face diseconomies of knowledge simply because of the speed at which their industry evolves. While other business models may not require personal knowledge of goods or services in their field, software development, in my opinion, is not one of them.
2. Hire Inquisitive, Passionate Developers
Software work can be tedious unless you love it. When I hire developers, I look for people who are working on something outside of what they are trained to do simply because they are curious. This tells me they are always learning, which speaks to the diseconomies of knowledge concept I brought up earlier.
I also look for people who are passionate, empathetic, and a little paranoid. Why? Because passionate coders care about how great their code is and will work on it without feeling like they’re doing work. Empathetic coders will finish a project, and, if bugs show up or the code breaks, they will wonder how many people could be affected by the error, then go fix it for everyone. And slightly paranoid coders are those who double, triple, and quadruple check their work to make sure it’s perfect. When you roll all of these traits together, you end up with high-quality code and software that works—which, at the end of the day, is all the customer cares about.
3. Keep a Small, Agile Development Team
Less is more. Patriot Software, my accounting and payroll software company, has about 10 software developers. We’re making software that is taking on the software of companies with legions of developers, and we’re winning awards while doing it. How is this even possible? Easy, because it’s better to have a small software development team of amazing employees working on something they are passionate about than a large team of disconnected ones working on small fragments of something they don’t know the final look of.
There is a concept out there known as the Mythical Man Month which disproves the concept that suggests adding more people to a project makes that project go faster. This isn’t just a project management concept however, it’s business building philosophy. If you put together the right team of developers, they can build great software faster than an army of developers, and your company won’t collapse under the weight of your payroll!
4. Embrace Failure
This is an agile principle, but it applies to any business that has to prioritize speed-to-market. Basically, failure is not your enemy as a software entrepreneur so long as you keep it on a small and manageable scale. Work fast, test, fail fast, iterate, retest, etc. …
Most businesses want to avoid failure on a large scale. Well, the best way to do that is to fail on a small scale first to test how you’re doing. Instead of trying to eradicate failure from your development process, embrace it and the interactions it generates. After all, failure is the best way to learn.
5. Grill Applicants With Hard Questions
Hard is a broad term. Some software developers simply do not like other humans as much as they like machines. They may be great coders but they can’t share information with other developers. Not because they don’t want to, but because they simply aren’t wired that way. For them, human-to-human communication can be “hard.” However, human-to-human interaction is one of the most elusive software developer qualities out there.
For others, hard means the actual development side of the job. Software development skills are in high demand, but that doesn’t mean you should take anyone who can list them on their resume. When you interview candidates, you should be asking hard technical questions. Test their knowledge with real problems and ask how a candidate would solve them. Ask them about situations in which they failed. Probe them to see how they handle stress and how they work in teams. It may seem cruel to put them under such scrutiny with these interview ideas, but very few things can damage a company like a bad employee—especially when that employee has access to your base code!