I was reading an article by Taj Pelc called Are you able to move fast? where he rightly recommended constraining your tech stack to help give yourself appropriate constraints and I 100% agree with him, about 95% of the way. 🤨
I think that these constraints are critical to to a successful MVP and even an early stage business. If you are one of the few companies that exceed this initial starting point, great! Now we can talk about microservices and other technical solutions to the scale you need, but we are in a more informed position and we can look at adding that complexity where you need it.
This is part I 100% agree with Taj about.
Some technology stacks tend to require complexity. They will describe this as choice, or flexibility, but when I hear those words, I cringe a little bit.
As an example, whenever I’ve looked for a recommended Node/React stack I am given about 20 recommended solutions. All of them are about 60% the same, but it’s never the same 60% and the pieces that are swapped out are nearly identical. Granted, some of these articles are 6 months old and as such are out of date…
The Node stack, to me, seems to be inherently complicated and lacks a certain level of stability. This is potentially great for the purpose of pushing technology forward, but are you trying to push technology forward with your business, or are you trying to take the best of what’s current and stable to make the best thing you can make today?
This is not a rhetorical question by the way. There are companies pushing the boundaries of AI, UI/UX, or any other field, but that isn’t most companies. Is that yours? If not, might I suggest picking technologies not for the peak potential technical capacity, but for the peak real world productivity?
This is why I typically work with Ruby on Rails. I haven’t found a platform that allows me to move as quickly as I can with it. It’s far from perfect, but it has well established solutions to many of those problems.
I’m also not saying not to try other frameworks or languages. I’ve heard very good things about Django (it’s on my infinitely long todo list), and I’ve played some with Elixir/Phoenix. Both seem to highly prize productivity.
And I guess that’s what I would have as amendment to Taj’s very good article. Yes, avoid complexity, but also, consider productivity!