So you’ve decided to start a company
Alright. So you’re toying around with the idea of starting a company - specifically a software company. Perhaps you’re looking for a change in your career. Maybe you recently came across a problem that you have a great solution for. Or maybe you’ve had a ton of ideas in your head for years and now is the time to act.
Whatever the reason may be, starting a software company can be an amazing journey. You could end up building something that really changes the world.
But even though you have a great idea, you might be stuck as to how you actually get started. How do you start putting together a team? How do you build your product? How do you sell and market it? There are so many questions you have to deal with when starting a company.
While there is a lot that can be said, in this article, I hope to answer “How do you build your product?” and give your idea some legs.
Build it and they will come? Nope.
Before we get started though - I want to be very clear. Building the product is by no means the most important nor the first step you should necessarily take. It really depends on a lot of factors and each case is different. In some situations, doing market validation and research is more important first. In some cases, putting together your staff is more important.
This article is not saying you should build your product first, but rather, when you decide to proceed with that step, here are some ideas.
If you’re reading this article, you’ve probably got a great idea that software seems suitable for, but you might be completely lost when it comes to actually creating, building, or developing the software. However, if you’re in that state, the term “building software” itself might be confusing. What does building software actually entail? What should you understand about it? Regardless of whether you build it yourself or hire someone to build it, it’s good to understand some high level concepts that go into building software.
When you build software, one of the most important aspects is deciding what features your product will have, the details of how they will work, and when they will be developed. This practice is known as Product Management.
After you’ve decided on what features you want in your product, you might have to design your product. This can involve UI and UX design where you’re figuring out what the screens or pages will look like and how they will behave when a user uses them.
Development, Coding, Implementation
Next, you have development or coding. This is where developer (or computer scientist, or software engineer, or coder) will write code (or source code) to execute your vision.
Deployment is the act of getting your software into the hands of your users. So for a website, it’s putting code on a server out in the internet for people to access (hosting). For an app, it’s submitting your code to the Apple App Store or Google Play.
Source Control is using a system to literally control your source code. When you start to build software, you may have multiple people working on the code together. You’ll want good source control to track all changes, allow for parallel work and collaboration, and revert things in case something goes wrong. Having a good source control system in place will spell out success as your startup grows.
Lastly, you’ll want a process to manage all these aspects of software development.
Now, it’s important to note that not ALL these aspects are necessary to start developing your product, but as you grow, you should be aware of these and more.
What are your options?
So now that you have a general idea of what developing software looks like, how do I actually go about doing it? Well, there are a couple of options.
- Build it yourself
- Partner with a developer
- Hire a software developer
- Hire a software development firm
Build it yourself
Probably the cheapest and lowest overhead way to build software for your startup is to build it yourself. If this is your startup, you could act as a product manager, designer, developer, all in one. If you happen to have a background in software development, then you’re set. Nothing is stopping you from sitting down at your computer and starting to design or code.
What if you don’t know how to code?
Well luckily, the internet is full of amazing free content to learn. A quick google search of “Website tutorial” or “App tutorial” will get you started. You might think - there’s no way I’ll catch up to seasoned developers, but that’s not quite true. I’ve met founders of startups who learned to code all themselves and build amazing products. If you’re determined, you can really do it.
- Lowest overhead
- Can be the slowest (especially if you have to learn coding)
Partner with a developer
If you don’t want to do the development yourself, you can find a business partner. Ideally in this case, you want to bring on someone who can wear multiple hats - someone who can do some product management, design, development and more. Sound too good to be true? It’s not. I’ve met a LOT of developers who can do all the other tasks to a workable level. Especially enough for a startup.
In these cases, a lot of the time your partner is part of the startup and you’ll have to sort out an ownership or compensation structure.
- Best balance of overhead and return
- Can be hard to find a good partner
- You give up some control of your company
Hire a software developer
This is similar to partnering up with a developer, except in this case, rather than having some kind of equity agreement, you simply pay an individual to develop software for you.
- You retain control of your company
Cons - Can be hard to find a good developer
Hire a software development firm
The last option is to hire an entire firm. Just so we’re clear, software firms or companies that are capable of software development go by many names:
- Custom Software firm/shop
- Digital Agency
- Web Design and Development firm/shop
- App Development firm/shop
- (many more)
This option is the most expensive, but if you have a revenue source or some money that you are ok with spending, this could be fastest and could yield the best quality. When you hire a software firm, you’re getting a lot that may not be obvious. Depending on the software firm, you may get access to:
- A team full of talented, vetted developers
- A well-oiled process
- Years of experience in all development aspects
Yes you’ll get your software product in the end, but you’ll also get all this along the way. The biggest issue here is cost and the high cost can also amplify the negatives if you find a bad firm. For example, BiteSite recommends a $5,000 - $10,000 starting budget to get things going. Most startups don’t have that kind of money and most are hesitant to spend that up front.
That being said, if it’s successful, you could end up with a great product, that’s properly managed, and what’s more, you’ll get exposure to what it’s like to run a successful software team which becomes very useful as you grow.
- If you find the right firm, you’ll get a great product and great experience to carry on throughout the life of your company
- A firm by no means guarantees quality and it can be hard to find a good firm
So what should I do?
So with the 4 options, what should you choose? Unfortunately, I can’t answer that. There are honestly merits to each approach and you have to think in your situation what’s the best for you. You’ll have to see your comfort level and weigh it against the benefits you see from each option to make your choice.
Whatever you choose though - you should remember a simple philosophy when it comes to good software development: good software development is iterative.
That means keeping a philosophy of “try something, if it doesn’t work, try something else”.
Software development should never be all or nothing. Software development should be a process of constant feedback and iterating. Everyone who develops good software should believe in this, and as such, they should extend that to your decision on the approach you take.
So whatever you decide, I highly recommend finding a way to try out the approach in some small way, and telling yourself to evaluate and iterate if it’s not working. For example, if you’re building itself, try it for a few weeks and see how far you get. If you’re hiring someone, set a super small milestone to see how it goes.
However it turns out, I congratulate you on pursuing your ideas and I hope I’ve shed some light on how to build your software startup product.