Hi.
I’m a dev with 3 YOE, mostly in ML and MLOps, and more and more I’m trying to pivot into traditional software engineering. As of now I’m trying to really learn the fundamentals of backend engineering (as opposed to the bootstrapping DIY learning attitude that I had during my ML roles towards backend engineering), and I’m learning Node.JS. I’m getting familiar with the the concepts and the syntax, and so far so good. But one thing that I really lack is the imagination of what a good side-project might be.
So I ask experienced devs here, can you recommend me some good project ideas to work on, to make myself a better dev?
The advice I usually see given is to work on a project you actually care about.
A guy I knew in college was really into rpgs, so he made a tool to store character information. Then he built it out to do dice rolls. And then to make it so other people can see the dice rolls. Sort of like DND beyond, but 10 years earlier.
When I was looking for a job, I built a tool to track my job applications. Not as fun, but it helped me brush up on the whole stack.
deleted by creator
Do you run your own server/VPS? If you are looking into backend development I can highly recommend running your own, and setting up things you’re interested in, stumble over, or find useful.
I’ve gained a lot of experience through working on what interested me, I found useful, or needed, and setting them up on my server too.
Do you not have things you stumble over or tools you would find useful? Or FOSS you use?
I’ve made tools for myself for file checksums, for practicing things, for storing resources/information, for publishing and integrating my services, for visualization and debugging, for parsing data formats, for cutting video, for downloading and converting things, and many more.
If you are looking into backend specifically, what kind of backend? For what kind of service or application?
Welcome! You’ve just started out on the path off mastery. The first step is deciding to take ownership of your growth and to begin independent study.
But… All the practice in the world won’t help if you don’t know what you want to learn. Before you pick a project, decide what skill(s) you want to learn in particular.
A list of a few candidates for skills considered “backend”
- software design patterns
- <any given language/web framework>
- infrastructure tools (dbs, docker, etc)
- api design
- SOA vs Monolith tradeoffs
I recommend picking a specific topic and build your project around that. Pick anything you like! It doesn’t even need to seem useful - everything you learn will make you a better dev - and doing fun side projects is much more motivating than doing “homework”.
As an example, here are some of my past side projects and what I learned from them:
-
A terminal multiplexer for a head-mounted PC ** Rust; ANSI escape codes; async software design
-
A CNN to identify Lego bricks ** keras; NN layer types;
-
A Ruby gem of useful language abuses ** edgecases of the ruby language; interface design; a little FP
-
A match 3 game ** Godot game engine; gdscript; ux and game design
-
a python FP wheel ** Functional Programming concepts
-
an LLM-based software writing agent ** LLMs - how do they work?
Each of these was targeted to help me dive into a specific area and improve my skills there.