DEV Community

loading...
Cover image for Side Projects - how do you choose a tech stack?

Side Projects - how do you choose a tech stack?

Josefine Schfr
・1 min read

To get my hands dirty and continue learning a little more holistically I have been wanting to get started on a side project for a long time. What’s been holding me back so far is the sheer abundance of options - I feel like a little kid at the candy store. Torn somewhere between frantically running around and completely paralysed.

During the bootcamp I participated in, we created our own web app with React, Node & MongoDB and tested a little with Cypress. Deployment / Hosting was not part of the course. Now while these are probably solid options, these choices were made for me. Now I am wondering, if I am completely free to choose, how do I decide on the stack for a project?

I get that this highly depends on the project’s requirements and personal preferences. But say I want to create a very basic portfolio page - think virtual business card, really nothing fancy as an MVP (else I will literally never even try this).

I discussed this with colleagues and got pretty diverse (and sometimes confusing) answers. This these perspectives helped me a lot put my own research into perspective, I would love to hear from you:

How would you choose what to work with?

  • Based on what you would like to learn or rather something you already know well?
  • How do you determine what tech stack is best suited for what you want to do?
  • Do you rather try something new and shiny or do you have a ‘winning team’ you aren’t likely to change any time soon?

Literally any tip, opinion or resource is highly appreciated :) Thanks so much!

Discussion (11)

Collapse
terabytetiger profile image
Tyler V. (he/him)

How I choose

There are 2 reasons I would do a side project and they influence how I choose:

  1. If I'm trying to learn a technology
  2. If I'm trying to make an idea come to life

In case 1 I will pick as many options to minimize friction around what I'm trying to learn (i.e. if I'm trying to learn Chart.js I won't also try and use React since I'm not very familiar with it).

In case 2 I'm going to use my preferred stack that aligns with the goal - as a JS developer that probably means JS in one form or another (Vue, Node, or NativeScript 99% of the time).

To answer your question about a portfolio page

There's absolutely nothing wrong with just using Wordpress, Squarespace, etc... but those take away the ability to play around and develop your site into exactly what you want.

Depending on what your goal is:

  • If you want a blog - I'd recommend a Static Site Generator like Gatsby (React) or Gridsome (Vue) - starting with one of their "Starters" and building from there to make it your own!
  • If you want a single page site - I'd recommend starting from scratch, maybe use a UI library like Bootstrap

A portfolio is a great place to experiment and express yourself - and it's fun to build on over time when motivation strikes!

As for hosting - I can't recommend Netlify enough! If you've never used it before, I wrote a walkthrough on setting it up with a custom domain:

Collapse
josefine profile image
Josefine Schfr Author

Thank you so much for sharing your thoughts & process - it helps so much to see how other people approach a topic! I will give Netlify a go, read so many good things about it already, thanks for sharing your article!

Collapse
margo_hdb profile image
Margo McCabe • Edited

Great question! As mentioned in my MERN stack blog, "there is no ultimate right or wrong answer when it comes to choosing a tech stack because it really depends on the specific use case it’s meant to solve for."

As others have mentioned, I think it comes down to trying different things to see what works best for your skillset and end goals.

Collapse
dastasoft profile image
dastasoft

It depends on the problem side, let me explain:

If you are trying to learn a new technology you should think of a project that applies that technology and that is useful to use that technology, the most important thing here is that it actually solves a real problem.

On the other hand if you want to do a project and not learn anything in particular, you should look for what technology solves better (better here is very debatable, maybe better for you is better developer experience or better performance, better UI, etc.) the different problems that you suppose you will have to reach your desired goal.

Collapse
josefine profile image
Josefine Schfr Author

Thanks for sharing your perspective - really important to reflect also what 'better' or ' more suitable' really means for each project!

Collapse
willvelida profile image
Will Velida

I'm currently building a personal health application on Azure Functions using C#. I'm using Service Bus as a message broker and Cosmos DB as my data store.

I use this stack for my work, so I used it in my personal project to develop and deepen my understanding of the stack. I also enhanced it by doing things I couldn't do or haven't done during my job. For example, use Terraform for provisioning Azure resources, using DevOps to build and release my Functions, use multi-stage build pipelines, add my Functions to APIM etc.

If you're looking to deepen your understand with the tech that you use for your everyday work, I'd recommend doing the same. It allows you to grow your skills in essentially a pressure free environment 😊

Collapse
josefine profile image
Josefine Schfr Author

That's a great idea, thanks for sharing. That way, you get better at the stuff you need day to day anyway and get more freedom to explore :)

Collapse
jonrandy profile image
Jon Randy • Edited

Normally making stuff from scratch as far as possible. It's more interesting and rewarding

Collapse
josefine profile image
Josefine Schfr Author

Good point - I'm sure you're learning a lot doing things from scratch but it seems so daunting as a beginner :D

Collapse
jonrandy profile image
Jon Randy

It's probably the best way to improve your understanding and skills

Collapse
andrewbaisden profile image
Andrew Baisden

I tend to go with a tech stack that i am already familiar with. And maybe a few technologies that i am trying to learn. Typically the MERN stack.