Choosing software engineering pet projects

Intro

Every software engineer needs to practice what they have learned. Unfortunately, it is impossible to learn swimming through reading, as it would remain dead, passive knowledge until the skill is practiced. Similarly, when mastering software engineering, going through tutorials, online courses, and books is not the ultimate answer, as they share the same quality. Therefore, one wishing to become a software engineer should transform dead knowledge into practice. But how do you pick the projects for that?

Here is some food for thought. Off the top of your head, how much are we supposed to practice? From my experience, practice in self-studies should take no less than 50% and reach even up to 90% of your time and further. In the beginning, I preferred to pick theory only and practice at work (that made a balanced proportion of 10-15% of theory coming with 85-90% of practice). But as I learned a plethora of code quality elements that the majority of the world population rarely ever uses, I came to practice the stuff I needed even in my free time, despite having practice at work. What’s the difference between practice at work and home? At work, I use what I have to. At home, I use something I enjoy working with the most and would prefer to get comfortable with enough to make it a part of my professional skillset.

UI tools

I find sparkling sparkling with ideas, if I know a good UI tool.

Every tool we build usually needs the end interface to interact with a user.

There are lists for ecosystems of every language that are googlable like this: “LanguageName Awesome curated list of libraries” Here are some of the examples:

Having tools to build UI interfaces, we have an “entry point” to plan how it will look for our user.

(P.S. Technically, we approached the stage formalized for devs as gathering requirements and building user-usage case scenarios. Here is some theory on the topic; however, if there was someone who was not too proficient, I’d recommend reading Code Complete first, as it is more novice-friendly and covers a lot of things that exist in programming).

Someone needs it, at least you

The best pet projects are the ones someone actually needs and will be using. It is pointless to make a “business-like needed project in a vacuum.” Even though it could work as a part of a tutorial completion, it has no life beyond its first implementation. A good project has users:

For example, i started with CLI instrument (because it is kind of easiest interface also too) and went to build autogit tool. Which makes for me easier to write git conventional commits and based on that, the tool generates changelogs i utilize to make releases for products. It helps me to communicate with users and other developers using my tools.

Ideally, you are part of some community.

I found an unlimited number of things to do at the space game Freelancer community, as in 20 years they have accumulated a huge number of tools but failed to uphold the quality standards and maintain the code for an array of them; so the tools got bad, deprecated, lost code, etc., so there was a need to… rebuild things in a quality way. As long as I make sure to employ at least unit testing and give it a thought from the perspective of a community member about what is needed and what I miss for a comfortable life, I always have a project to do.

Other ideas come to me just because I use different tools with their own ecosystems and find things I miss.

I love playing Minecraft and Starsector, which introduces me to the infinity of their modding projects, including infrastructure projects to run Minecraft servers with mods.

Lets summarize things we said.