3 ms·
I very much disagree with the idea that a CTOs job is to minimize code built in-house. Every app has different needs and there's always some code that would be
by serverholic 4y ago
I very much disagree with the idea that a CTOs job is to minimize code built in-house.
Every app has different needs and there's always some code that would be a lot simpler if it were written in-house and specifically built for the needs of the application.
Abstraction has a cost and if you take everything off the shelf you'll end up with a much higher overall level of abstraction in your codebase. Plus, your engineers aren't going to understand third-party code as well as in-house code.
I've worked at companies that wrote almost everything in-house and I've worked at companies that had a phobia of in-house code. Both had problems and I think the real solution is somewhere in the middle.
Edit: I also get a "nobody was fired for buying IBM" vibe from this.
- didibus 4y agoNot only that, but in-house offerings can be a competitive advantage. Sometimes it's over-engineering, and sometimes it's the secret to what makes your business successful over competitiors. In house has the ability to build only what is really needed and nothing more, and can adapt to your specific needs, it can also identify unique to your domain challenges and tailor solutions specific to that. A good CTO has good intuition into when and what makes sense to invest in an in-house solution and what is best using a self-managed open source solution, and what is best using a paid managed offering, and all manners of hybrids.
- BigJono 4y agoHonestly the biggest competitive advantage isn't in the thing you're building in-house, it's just the fact that you can debug it 10x faster than your competition. I never understood this until I saw some dysfunctional enterprise companies. I've seen entire teams spend 3 months doing fuck all because they can't get a local dev environment or build pipeline to work. If you only have Postgres, and you're weighing up whether to add a second dependency instead of installing a Postgres plugin or writing 50 lines of code, of course it's going to seem like an obvious choice ("I can get this working right now instead of spending a day or two on it! Wow!"). If you make a habit of making those decisions again and again, then your project is going to spiral out of control before you even realise it.