Building is the easy part. It's everything around it that's complicated.
Developers often focus on technology being the biggest challenge. Which architecture to choose, what patterns to apply, what libraries to use. Not surprisingly, if you live and breathe code, that's your reality. But nothing is further from the truth. Building things is the easy part. It's everything around it that's hard. Here is why.
You're a consultancy. Understand the customer's question incorrectly, and whatever you propose won't answer their needs. You don't even get to build anything. Similarly, propose the best solution in the universe, but that's not on budget or just pitched incorrectly, and again, you won't even get to start. And even if you get to build stuff and ship it on time, if the customer's organization won't adopt it, it will be all for nothing and the whole effort will be seen as a failure anyway.
You're an ISV. There are a million problems in the world you could address. Pick the wrong problem and no matter what you build, no one will care about it. No matter how beautifully engineered it is, or how much load it can handle, it won't matter at all. Imagine you picked the right problem and you built a solution for it. If you fail to explain your value proposition and to capture the market, the whole investment will be a waste.
So, in the end, you see, building things is the easy part. I'm not saying that building is trivial as some things require sophisticated skills. But without knowing what to build first, bringing it to the users and ensuring that it's being used, it's a nice exercise not worth much to your business.
Photo by Sven Mieke on Unsplash