Where startups go to die
2020/11/16
I feel like this topic has been beaten to death, but some people still aren't getting it. Stop building stupidly complex software. Building software too complex, too fast, will bring your software organization grinding to a halt. I'm not talking about having a product with a steep learning curve, I'm talking about the software architecture and how it's components implement business processes. I get it. Business can be a snooze-fest for engineers. After all, engineering is the beating heart of this business, right? Wrong.
Let me backup a bit, for those that don't know Software Architecture means the high level approach to implementing a large set of whole or partial business processes in software, compartmentalizing chunks of this software into 'components'. What everyone seems to forget: Software Architecture isn't just about software. Wait what? Yeah, whenever I'm thinking about the architecture of a project, I consider the infrastructure (computers running software) to be part of the architecture. Since every component exponentially increases complexity, adding software, and it's infrastructure, adds complexity on a level a computer scientist could write a PhD dissertation on.
I don't think it's a coincidence every profitable project I've worked on had a monolithic software architecture. The rest, well, they had a whole pile of shit going on called microservices. Microservices compose a software's architecture components into small domain-specifc processes running on their own infrastructure. Usually. (hate me if you run your production microservices on a single machine) For example, consider a Software-as-a-Service with 15 microservices, that means there is at least 15 computers running those services.
"So what? If you can't comprehend that, you're probably just a dummy or bad software engineer." Point taken, but I bet you never considered how many business processes you've just manufactured with your "architecture". Now the business needs people to manage infrastructure of 15 computers instead of one; 15 CI/CD pipeline jobs instead of one; 15 version control repositories instead of one; 15 sets of logs to sift through when troubleshooting. I could go on, but you get the idea.
Don't come at me with the unicorn spiel your VC gave you. You don't need to scale to millions when you haven't even launched or gotten your first customer. Engineers rationalize. A lot. Some how, this stuff supposedly pays dividends in the future. In reality it becomes way too difficult to just launch, and everyone stands around wondering why they have to keep pivoting. I'll tell you why: you keep pivoting because you're too busy handling manufactured processes! The business needs to seize on opportunities RIGHT NOW.
The best software businesses are the ones without any software built. Sales and marketing experts can sell software that doesn't exist yet. Hell, sales and marketing experts can sell air to people living on earth. Seriously. Sales and marketing can sell a lot if what they're selling solves a problem businesses or people have, or promises to solve that problem.