Why building a software company is hard
One of the hardest things you can do is start a software company with a tech-illiterate co-founder. Watch them use the software you built, and realize with horror that building software is…hard. Writing code is the easy part but writing the right code… not so much.
Generally, in large companies, developers never see users use their end-product. QA is largely focused on making sure it doesn’t break (to avoid embarrassment on the developer’s behalf) and designers are generally rated on how the product looks and ‘feels’ (whatever that means).
The onus is on the Product Owner or Product Manager to ensure that the needs of the user are met.
This is hard because it involves a delicate balance of listening, good questions and mind-reading. It also involves shielding developers from tasks that would decrease the quality of the product. In some large companies, developers can have it easy because they’re being unwittingly protected by their PM.
Finding a problem
Sometimes the goals of the user conflict with the goals of the business. How do we get the user to do what we want?
First of all, we need to find out what the customer wants. This is hard. Categories of research have been built up over decades to answer this question. Recently, I finished reading the book Lean Customer Development, which lays out a step-by-step process of how to discover a user’s needs.
After reading the book, following the plan and trying it out, guess what happened.
It’s still hard.
Coming up with good questions is hard, getting the customer to open up about their pain points is hard and then positioning a possible solution is hard.
All hard and time-consuming while you’re also building the software. Yet, if you don’t do this then you have no idea what to build and if what your building is worth it.
Delays are inevitable
Software development is not unique in this regard. Large construction projects get delayed all the time. However, construction projects are done when they’re done. Afterwards, a customer can’t decide they don’t want windows anymore otherwise they will have to pay a large sum once more.
Software, on the other hand, is soft…it’s malleable and can be shaped. As soon as a customer sees you can make a small change, they will think every change is easy, increasing the burden of expectation on the software developer. Small changes quickly become big changes, and pretty soon, what the customer thought they wanted, was not what they needed at all.
This is why product managers exist. To shield the developers from these changes and stop the customer from making them. However, what if the customer has a valid point and it’s ignored. Pretty soon, they move on and you’re left scratching your head wondering why. Yet new companies don’t have the luxury of hiring product managers.
When building your own software business, you realize that all those resources you had when you were working for BigCo are virtually non-existent when you start working on your own.
Designer: That’s you QA: That’s you Product Manager: That’s you Business research: That’s you Accounts: That’s you
The thing is, your non-technical business partner doesn’t know what goes into building software. Your co-founder has to be doing the stuff that helps a business grow. They can’t be just a person that comes up with an idea and lets you build it for them.
A friend of mine described it as “they make one decision but it’s the thousand’s of decisions based on that decision that I have to deal with”.
This quote has stuck with me for a while now. Because a software business is more than just code. There are servers, deploying, design, marketing, testing, etc…
However, if it was easy then everyone would have a “killer app” by now.