kuda.ai | code. guitar. life.

Skills You Acquire In Side Projects

created in February 2023, last update in October 2023

Recently, I was talking with someone who told me: “Oh, you have no production experience with technology x, but only on your side projects? That’s not worth much!”

In fact, I would even say I learn more from side projects than from work projects.

At work, other people have laid out a path that you can follow. Patterns already exist. At work, you have to understand existing abstractions, and you have to know how to use existing patterns.

In side projects, you have to figure out everything yourself. And you have to take care of everything yourself.

By writing a command line application in Python, I learned how to run Python scripts in a shell with arguments, and I am solving repetetive tasks this way.

By programming my blog, I learned how web technologies (frontends and backends) are deployed and work together.

Python Password Manager

This wasy my first meaningful, individual side project. I started it in 2020. At that point, I was comfortable with Python. At work, I haven’t designed a Command Line Interface (CLI, a terminal application), but I have used many.

I love CLI apps with a great user interface, I think it’s a great place to interact with your computer. So I wanted to have the ability to build such applications myself.

At work, you can’t just do your own thing and play around with the code. Normally, you have to prioritise heavily and focus on what the business wants you to focus on. And of course, you also have to align your efforts with your team. You can’t spend much time on things that yield little value.

In your side projects, you can do whatever you want. You want to learn about cryptography and encode your data? Go ahead and do it! You don’t like the current design and APIs, and want you to change it? No one will ever stop you.

In your side projects, you can always focus on learning and growth. At work, learning and growth happen, too, but you have to focus on productivity.

Although there are plenty password managers out there, I wanted to program my own. There was just so many things that I could learn: How do you store sensitive data securely? How can you make sure no one can access them? How do you interact with your data structures? How can I make sure that it’s fun to use?

So I went ahead and read the official Python documentation of the argparse module and put everything into practice. I learned so much by doing that.

In the mean time, I read books like Clean Code or A Philosophy of Software Design, and I experimented with my code and APIs every day. I learned how to hide complexity and information, I learned how to avoid pass through methods, and much more.

It’s easy to write a script and run it in your IDE. But how can you execute your scripts from anywhere in your shell? You make your script executable by defining the “hashbang” (for example /usr/bin/env python) at the top, by changing the file permissions with chmod 744 script.py and finally by putting it in a directory that is listed in the $PATH envrionment variable.

Nowadays, these skills are very useful at work. But at work, I had to focus on the business logic, and much less on obsessing with the user interface, code design and the shell environment.

Building My Blog kuda.ai

  • How react works, state patterns
  • Server Side Rendering, Static Sites
  • What a “Headless CMS” is

Building lyricsapi

  • writing a backend in golang
  • RESTful APIs
  • OpenAPI
  • Authentication
  • SSL