Pet projects: a whim, a self-help tool, or an attempt to distract yourself?

image

Hello, Habr! My name is Kirill Koshaev, I am a Java developer at Gazprom Inform and a teacher of the profession Java PRO developer on the Skillbox educational platform. Today I would like to talk about such an interesting topic as pet projects. Here, on Habré, many have them, by the way, I also have them. And I would like to discuss the importance of pet projects for representatives of the IT industry.

What is this – a way to kill time, distract from reality, or a path to professional excellence? I can talk on this topic for a long time and in detail, since I have many of my own pet-projects. Some of them have been completed, others have been safely forgotten, and still others are on their way to completion. Today I propose to discuss the importance of pet projects in the life of a professional. If interested, let’s continue under the cut.

Personal case

First, I’ll tell you about my own experience in running pet projects. As mentioned above, I have a lot of them. But I do not conduct all of them at the same time: most of them go to the “back box”, some are abandoned and forgotten, and some become serious projects that I am not ashamed to show in my portfolio.

After many months of work on projects “on the table”: applications for counting fruits in a basket, displaying figures in the console using ASCII and a bunch of test benches to understand the work of libraries of my chosen language, I realized that there was a certain stagnation in one place.

Reflections on this topic led me to the following decision: it is necessary to collect everything that I have learned into one big pile and cut something more serious, something that will not be just another tutorial example, but a self-contained application that will embody specific functionality and will solve certain problems. There was an ambition to develop something useful that could be downloaded / downloaded / installed and used on your device by anyone who wants it. The only thing left is to come up with an idea.

Generating an idea is a stone on which every novice programmer who starts his first pet-project finds a scythe. First of all, I was faced with the fact that wherever I looked and no matter what I came up with, in 90% of cases a similar application already existed on the market and not even in a single embodiment, and the remaining 10% were occupied by ideas that already required implementation. the team and, accordingly, all the tools and technologies necessary for team development, and after all, I had just dealt with the core of the programming language I had chosen.

This is where the turning point usually comes, because you don’t want to write something like “Hello, World” and simple problems, and there is no worthy idea for a good pet-project. Newbies here usually have a phrase like: “Well … I don’t know what to do next, everything is wildly complicated and I don’t really understand what else can be written in this X language, except for all those helloworlds that I have already written” … Further, programming is either abandoned altogether, or the studied language / technology / library / framework changes (underline the necessary), and everything starts from the very beginning, until the person again comes to this tipping point.

The way out of this situation for me was the decision to implement the game in the first pet-project. It seemed to me that this was an ideal format in terms of the ratio of labor intensity, interest and complexity of the technologies used. I immediately got down to business and began to dig up various information about how, with the help of what technologies and within the framework of the language I was studying, I could develop and roll out a small indie game alone, going through all the accompanying stages on my own.

Why the game:

  • Firstly, I had a good idea of ​​what a computer game is and what it consists of, since I play myself from an early age.
  • Secondly, technologically, this idea was quite densely concentrated around those things that I already knew, and I was able to master additional skills already in the process of implementation.
  • Thirdly, writing games is great for visualizing what you describe in code, and visual information is best stored in memory and makes it easier to understand complex and abstract things.

As a result, my first pet project was implemented in two small games and a minimalistic note-taking application with encryption using classic algorithms. All three apps are available for download on Google Play. You can personally test them by going through by this link… In addition, today I have a joint pet project with my colleague and friend from Skillbox Oleg Sadovnikov, dedicated to exploring and visualizing data API Wikipedia, which we develop with varying degrees of success in our free time.

How many pet projects will there be?

I am sure that pet-projects were, are and will appear from time to time in the practice of almost any programmer. Why? I believe that when the era of Hello World programs ends, the era of pet projects begins. In other words, when you, as a beginner programmer, run up against the ceiling of practical value from writing the simplest programs such as “output to the console with asterisks of Christmas trees”, “greetings app”, and the like, for further growth you will have to move on to writing more complex programs, then there are pet projects.

While working on a pet project, you will still be coding, but now you need a complex idea. Until recently, you were jubilant when launching MySimpleWhishListApp on your localhost, and then suddenly it turns out that these are only foothills, and new peaks are only slightly visible behind the fog of technologies, libraries and tools that hide them, which will need to be mastered to get there.

And this will happen more than once until you reach the Olympus of this whole IT crowd and become a senior architect in a reputable corporation, the owner of your own startup, or settle somewhere on the outskirts, preferring to grow horizontally rather than vertically. …

How long does it take?

My personal experience shows that the time spent on a pet project is not constant. I do not subordinate the work on the pet-project to a fixed schedule, but work for my own pleasure and to the best of my ability.

You should understand that this is a pet-project, and initially, in most cases, it is of value exclusively to you, unless the chosen idea turns out to be so successful that the pet-project grows into production-grade. In the initial stages, while you are full of enthusiasm and have not yet faced the first difficult implementation problems, a pet project can be spent quite a lot of time, up to a full day.

Another important nuance is the fate of such projects. In my opinion, it cannot be predetermined. Suddenly, you may be dawned by an idea that seems at first glance to be completely brilliant. You will write a couple of thousand lines of code on sheer enthusiasm, and then suddenly you realize that the fuse has passed and the original idea no longer seems as brilliant as it used to be. Another time, you will spend a couple of months developing the next pet-project, bring things to version 1.0, release, but you will not go beyond version 1.0, preferring to switch to something else. And of course, there is every chance that you will hit the bull’s-eye, and your pet-project will begin a meteoric rise to the heights of production-grade projects.

The benefits of a pet project for a novice programmer

For a beginner, working on pet projects allows you to move from experimenting with the capabilities of the target language to real team projects, for which you pay money. For advanced programmers, working on pet projects is an opportunity to explore and try various technologies in practice, for example, using a pet project to study in detail the process of creating REST services. Finally, pet projects can be created for fun as well. For example, I sometimes like to play in different variations of game of life in order to distract from work as a discharge and prevent burnout.

You should start your first pet-project in an area of ​​interest to you. My first programming language was VisualBasic, but I started writing any significant programs only after 1.5 years of programming in Java. In this language, in my opinion, there are generally two large areas: enterprise and mobile development. And since I first approached enterprise development only a year later, at the time of the creation of the first pet-project, my choice was obvious. That is why my first project is a small 2D game for a smartphone. With the same success it could be anything, for example, some Arduino / RaspberryPI projects if I was fond of electrical engineering. Or, say, some new js library, if my main language was JavaScript and not Java.

As a conclusion

A pet project is a cross between the simplest programs, in which you learn to work with the chosen language, and production-grade projects, on which you make money. What are they needed for? Pet projects primarily teach development. Not the simplest programs, namely projects, from which production-grade projects can grow later and under favorable circumstances.

Pet projects are a personal garage workshop where a programmer or even a small development team, combining various technologies, ideas and approaches to their implementation, can end up with what is called an MVP – a minimum viable product. However, pet projects allow you to do more than just experiment and have fun. As mentioned above, they teach how to create holistic projects, navigate the huge world of libraries, frameworks and other tools. Pet projects force us to move on, master new technologies, expand our toolkit, work in a team, go beyond the HelloWorld and MyFirstGreetingsApp programs.

Similar Posts

Leave a Reply