I always love when someone posts something online saying they have an idea for an application and ask, “What stack should I use?”
It’s a fair question, but the answers usually start with “it depends”.
What is a “stack”?
The “stack”, for those unfamiliar with the term, refers to what programming language, frameworks, and database a project uses to get its work done.
Examples could be Ruby, Ruby on Rails and PostgreSQL, or JavaScript, NodeJS and MongoDB or maybe C#, ASP.NET Core, and SQL Server. All acceptable choices to build a web application.
Indie Hackers
There is a post on Indie Hackers, titled Tech Stack Suggestions. The original poster wants to build an MVP for his business idea and is soliciting opinions as to what stack to use.
He’s wondering about using a frontend framework like React and replies to someone suggesting he keep it simple:
Shouldn’t I be using a frontend framework in order to develop this? Backend Django + SQL has its advantages, in fact, the current project I’m working on in my organization is partially based on that. But, I’d like to implement things like GraphQL, NoSQL primarily to get a more hands-on on how they’d work in a real project. Would really appreciate your input.
Volkan Kaya replies with brilliant and practical advice:
Are you building a business or learning a stack?
If you want to learn a stack do it while being paid, not while starting a business.
Nick Haskins pragmatically suggests:
It’s really unfortunate that our industry has convinced you that you need to utilize tooling built for larger applications. On behalf of the industry, I apologize for that.
You do not need a front-end framework to develop a web app.
I’ve built multiple very large apps with Rails + Bootstrap. No ReactJS. No VueJS. No JS libs, just a sprinkle of jQuery.
These are examples of excellent and practical advice. The responses to the post include a lot of misguided answers as well.
Shiny Things
The thread from Indie Hackers sums up what it’s like to be a technologist who wants to build their software. You should give the thread a read.
It’s easy to want to build something and want to use the latest frameworks. It’s a great chance to learn something new. I’m all for learning; you should never stop. But, if your goal is to build a business and challenge yourself with new technology while doing it is not the best decision.
I’ve been guilty of trying to convince myself there’s some technology I need to use because applications that are created with it are faster or scale better. It’s not essential before you have that problem. People will try to justify using it anyway.
Don’t follow like sheep do…right off a cliff.
Love the One You’re With
It’s best to take a step back and breathe. Take stock in yourself and where your strengths lie. Ask yourself which programming language and framework you use most today? Which one do you make a living using today?
What is wrong with this combination that you wouldn’t want to use it to create your application? You want to make the right choice and not regret it later.
In its most basic form, people want to make an application and try to think too far ahead. Thoughts of scaling, finding developers, performance, and such things that don’t matter until later.
As a software entrepreneur, more appropriate questions you should be asking yourself are:
- Am I solving a real problem?
- Do I know people who will pay me money for my solution?
These are the questions to ask yourself now. Notice these have nothing to do with the stack you choose.
The simple answer to the stack question as a developer is to use the stack, you know, leading from idea to product in the shortest amount of time.
Why strap yourself with two hard problems? Toss the stack problem right out the window.
The best advice is to use the framework you are most comfortable with and will be the most efficient—the one you can get done what you want in the shortest amount of time. You’ll be happier and have something to show for it.
Don’t let people try to convince you their stack choice is better. They will have convincing arguments. None should sway you.
Exceptions
The above is my rule, but there can be exceptions.
As a Ruby on Rails developer, if I want to build a native Mac application, then I probably need to use Swift or Objective-C. Yes, I could use something like React Native; that’s not the point, so please don’t send me an email to the effect. If I don’t know the language, then I have given myself multiple challenges.
I’m sure there are other instances where I would need to learn something new, but the cases will be unusual when you’re deciding the application to build.
Conclusion
If you’re planning on starting a software business and you’re going to be the primary developer, then use the tools you know best. You are in a great position to get something out for your customers to see. Remember, they don’t care what your application is written in, only that it solves their problems.