ROUNDTABLES ★ 12 upvotes 2019

Ask HN: What tech stack would you choose to bootstrap a side project in 2020?

The Founder's Submission

Direct narrative and submission text authored by @yagodragon on Hacker News:

I'm a college student trying to choose a language/framework to build some side projects. Other than the classic CS languages(java,python,c/c++), I've learned some JS and Vue.js and now I'm looking into a proper backend language and framework.

After searching online and asking friends I've gathered some feedback on the most popular solutions.

Rails: Proven and mature. 3rd party gems that can help you with anything web-related. The ecosystem is thriving and most developers are happy using it.

Laravel: Made PHP cool again. Took lessons from Rails and probably provides the best Developer Experience when it comes to building a monolith app from development to deployment. PHP is also the most popular backend language.

Django: People love python. I hear that Django Rest Framework is a great tool, plus, the ability to add ml features on your existing app is a big plus.

Node.js: Full-stack Javascript is great but the backend landscape is a mess. Probably a thin backend without complex rails-like structure.

Phoenix/Go/Rust: Good options for specific use cases where performance matters.

Java/C#: Complex and enterprisey. C# is gaining traction but the 3rd party ecosystem is still lacking behind other options.

Backendless: SPAs, Next.js/Nuxt.js/Ember, JAMstack. Use services like Firebase/Auth0 and 3rd party APIs for backend logic or serverless functions.

What would you suggest someone learn in 2020? I know the answer is "it depends" but I know that for example Rails, Laravel and Django are basically tools for the same job, building CRUD applications on the server. Would you suggest someone to learn Ruby or PHP in 2020, though many consider them dead?

Retrospective Overview & Key Insights

Distilled analysis of the business dynamics, operational challenges, and strategic takeaways:

An open Ask HN community consultation from 2019 where @yagodragon convened hundreds of developers and bootstrappers to share real experiences, hard numbers, and tactics.

Core Principles for Independent Builders:
1
Participants share raw revenue figures, churn rates, and stack decisions that corporate PR never publishes.
2
Recurring answers reveal that distribution, not coding skill, is almost universally the rate-limiting step in developer businesses.
3
Practical recommendations on bookkeeping, payment gateways (Stripe vs Paddle), and freelance-to-product transitions.
Community Debate Themes:

Hundreds of active indie hackers contributed case studies, pricing heuristics, and pitfalls to avoid when moonlighting on side projects.

Community Discussions & Critical Reviews

High-signal perspectives, counter-arguments, and peer founder insights debated on Hacker News (12 total discussions):

MI @mindcrime Peer Contributor

It doesn't matter. Pin a bunch of names on a dart board, throw a dart, and pick the one closest to the dart. Seriously, it really just doesn't matter. Not even a little bit. At least not in terms of whether or not your side project succeeds. You will NOT succeed or fail based on whether you chose Node over Ruby, or Java over Erlang, or Angular over React, or PostgreSQL over MySQL, or Mongo over CouchDB, etc., etc., yada, yada, yada.

Now if the question you're really asking is "which one should I learn from a long-term career standpoint?" or something along those lines, the equation changes a little bit. BUT even there, the simple reality is, you can be gainfully employed, making good money, doing fun work, using any technology you listed, and plenty you didn't.

If you're coming at it from the career / long-term perspective, and want an objective measure, then scan the job boards, and see what you find the most open reqs for. Go with that. Otherwise, pick two or three off your list, dabble in each, and see which one feels right to you.

The only thing I'd explicitly advice against is going with something really outside the (modern) mainstream, like COBOL, or some really new'ish languages which may or may not catch on (Nim, something like that), or any "esoteric" languages: Brainfuck, Intercal, Whitespace, Befunge, etc.

As to what I personally would pick? Groovy and Grails, along with PostgreSQL, and one of the popular JS frameworks for front-end (React, Vue, Angular, etc.). But that's just down to familiarity and personal preference.

Edit: let me add one bit of clarification... I don't mean to slag Nim, or any of the other newer'ish languages. And I don't mean "don't learn it" in the general sense. I just wouldn't "bet the farm" one of those just yet. By all means, dabble with lots of different languages, and constantly pay attention to how they are evolving over time, and how they are (or are not) gaining industry acceptance.

CD @cdnsteve Peer Contributor

My advice, look at what employers are actively hiring for and work backwards. Generally speaking, many value an MVC type frameworks, specifically Rails/Django, they are well-known, easy enough to hire for since they are "standard" and have broad application use and are quick to work with. Most of the knowledge is transferable between them. Understanding database migrations, app structure, authentication, etc is common.

I'd focus on that first, then when you're comfortable, move towards front-end. Again, focus on what employers are hiring for, React being top of the list, Angular is loosing market share.

Node isn't very complicated to develop in, front-end experience like ES6/7 will help you figure out JS and you can learn the event loop model later on.

This way you'll have a solid foundation in backend, front-end and can expand out from there as needed and specialize but this is a good starting point to be a full-stack developer. Spend time looking at development workflow, learn Git, write tests, etc.

TM @tmm84 Peer Contributor

Based on the year 2019, I think learning Python (AI/ML, Scripting, etc), Java (legacy code, enterprise systems, etc) and JavaScript (ES6, Node and a bundler because JavaScript has turned into something that is more than just some simple script on a page at this point.) are worth it. I say learn PHP if you are aiming for entry level rudimentary stuff. PHP is still out there and there are loads of clients asking for people to work on it. Anything else will revolve around how experienced of an engineer they want and the market you live in.

Aside from languages/frameworks, I would say focus on the container/orchestration area of development. This is becoming the real focus I am seeing from someone who has been working in software development for over 5 years. More and more it is containerized micro services that are being produced and it is people who can weave them together with kubernetes or similar software that is the real ticket.

AN @Antoninus Peer Contributor

I don’t think it matters. Learning a stack because there are a lot of hot job postings for it will only keep you in framework hell. If you had to choose, choose the one with a community that you like and want to be around. I’m happy I stuck by Node’s side all these years, sure its not perfect but part of the journey is growing with a technology as it matures in the market. From my experience, mid-range developers with a few years of experience working in different stacks rarely make high quality contributions to the project. The only exception is if they’re gifted cs students first. The devs with for eg. 10+ years working with Perl Dancer projects have so much you can learn from.

So my advice would be to pick one and commit to it for as long as you can. To the point where you both love and hate it. Get to a point where you can contribute to an well known open source project that is built in it’s domain.

PH @philipkiely Peer Contributor

I built a few applications using Django in college (still am, actually) and it gave me the foundational skills I needed to pick up other frameworks later. I think it balances convention and configuration well for both learning and doing and provides an intuitive learning curve for web development. While most tutorials are for server-side rendered CRUD-based applications you can use DRF to build an API for a single-page app and the framework is flexible enough to build all sorts of applications.

Django set me up with the tools and skills I needed a couple years ago. The other ones probably would too. Echoing other commenters you can build anything in any of these frameworks and shouldn't spend too much time choosing stack. Despite it not mattering, my vote is for Django.

HISTORICAL ERA Cloud & Mobile Era (2014–2019)
COMMUNITY SCORE ★ 12 points
TOTAL DISCUSSIONS 12 comments
TOPICS & TECH STACK: