Skip to content

Instantly share code, notes, and snippets.

@davidharting
Last active March 3, 2022 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davidharting/3139b249a5c5ec13add6584d90d570ff to your computer and use it in GitHub Desktop.
Save davidharting/3139b249a5c5ec13add6584d90d570ff to your computer and use it in GitHub Desktop.
Choosing a tech stack for your next side project

Summary

This gist is in response to this thread.

I voted for Next.js for your next side project! I'll caveat this by saying of course any side project that you find fun and rewarding is a good idea. Just throwing my 2 cents in the ring.

Factors

Reward

  • Because Next.js is a full-stack framework, you can build an interactive app with frontend + server-side components using a single piece of tech and one repo. Having that end-to-end thing to touch and click on (or navigate with the vim mode you will undoubtedly add to your app 😆) should make the project more fun and rewarding (it does for me anyawys :)
  • Next.js + Vercel has such a great deployment story. You should be able to deploy your app without much fuss. I love to get deployments going in the very early stages of a side project to make each subsequent commit even more rewarding. Vercel hosting is free for hobby tier. And again, because it's full-stack, deployment is much easier than having a backend and frontend to deploy separately.

Professional relevance

This is probably the least important factor. Overall, I always think the most important thing is that you find side projects joyful and life giving, instead of a chore.

  • You mentioned that devhub will likely utilize Next.js, so that is a nice win.
  • Additionally, Vercel and Next.js are a very similar company to dbt Labs. I think it will be very illuminating to learn about their open source and cloud products. Engage with their docs. Deploy with their platform. I think all of that will provide some interesting perspective / contrast to what we are trying to do. It's been really interesting for me to engage in both the web dev and analytics enginering community.

Comparison to the other options

Learning a compiled language

Elm and Rust are both fantastic and illuminating languages. However, they have a steep learning curve. That learning curve is worth climbing! However, if you are in the mood to build, I don't think you will scratch that itch with those approaches. Both of those langauges require a more "academic learning" mode for a while (in my experience) before you can then start actually building what you want to with them. If you are in the mood for more study and less building, then I think either of those would be fantastic. ML-lineage languages are the basis of all things that are beuatiful and lovely about modern compilers (in my opinion), and either of those will teach you about that.

However, if you want to build something while using a compiled language with a cool type system, TypeScript is really the best entry point in my opinion. It will feel familiar, and there are so many learning resources. You can usually learn just enough to get past whatever specific scenario you are dealing with and then keep building. Additionally, Next.js provides out-of-the-box TypeScript support, so you won't have to fuss with learning how to set up the project or work with the compiler.

Fast API

Fast API is super neat! The downsides I see with it really come down to the "reward" section above, and how I think Next.js will provide you with something where it is easier to build a full experience and deploy it without too much fuss. The effort to fun ratio could be a bit lower with Fast API than Next.js

Coda

All of this is my humble opinion. And I am biased as a career-long web developer. Whatever you pick, I wish you a rewarding and fun journey and am excited to hear about it! ❤️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment