Auto-translation used

Why a novice developer needs pet projects

Pet projects as the key to career success: creation guide and tips

Kevin Systrom developed the Burbn mobile app in his spare time, where users could check in, schedule meetings and upload photos. After rethinking the project with Mike Krieger, the social network Instagram appeared. Mark Zuckerberg created Facebook as a pet project while a Harvard student. Drew Houston started Dropbox as a personal project to solve a file storage and synchronization problem he was facing.

These stories show that small personal projects can grow into global companies if they solve people's real problems.

In this article, Vyacheslav Legostin, team leader of the backend development of the Kolesa Group, will tell you everything about pet projects that beginners need to know.

A pet project is a developer's personal project that he creates in his free time.  Such a project is needed mainly to explore new technologies and gain experience in developing projects close to commercial ones. Also, thanks to the pet project, you will interest the employer in the interview, showing what you are capable of. It can be any idea that you are interested in: an application, a website, or even a game.

  • The idea of the project

Choose a topic that is very interesting to you personally. For example, I chose my hobby — landscape photography. This will allow you to be as involved as possible: you will be able to come up with new features and improvements, find like-minded people and real users.

  • Case

I will give a guide through the prism of my pet project, a website for photographers. I spent two months creating it so that I wouldn't be ashamed to show it at interviews.

We will not choose the same idea for the guide: it is at least ten years old. We will expand the idea to other areas and adapt the project to the realities of 2024. The site should include hubs, a feed of posts, dynamic blocks with useful information, categories, ratings. The site will be in the style of Reddit.

1. Select the stack

The choice of technologies and programming language for the project should correspond to your goals and the labor market. Determine which stack is used in the companies where you plan to get a job. For backend developers, I recommend PHP, Python or Java.

We choose PHP for the site — it is a relatively easy-to-learn programming language with a lot of educational materials and the Laravel framework. Laravel has a powerful community and a lot of materials.

For data storage, always choose free and popular relational databases such as MySQL or PostgreSQL.

Backend developers need to know how frontend works. For a quick and easy layout, I recommend Tailwind CSS.

2. We define the basic functionality for the site

- registration and authorization;

- creation of hubs — analogues of the subreddit {community inside Reddit on any topic};

- creating posts;

- hub feeds;

- the main page;

- likes, dislikes, comments.

At this stage, you will master the necessary programming language and framework, learn how to work with databases and create authorization for web projects. You will also understand how backend and frontend interact with each other.

3. We post the project on the Internet

When the basic functionality is ready, it's time to post the project on the Internet. You will need a virtual VPS server, an operating system (for example, Ubuntu) and a beautiful domain.

At this stage, you will learn:

- work with SSH access and SSH keys;

- configure the SFTP protocol and upload files to the VPS server;

- work with the terminal and commands: cat, ls, nano, vim, history, grep, apt, cp, mv, chmod, chown, artisan, etc.;

- deploy PHP, MySQL, PostgreSQL, NGINX on the server.

Additionally, you can implement an application containerization system — Docker. It is a popular and easy-to-learn application containerization system that contains libraries, system tools, code and runtime environment.

4. Logs and evaluation of the product status

A good specialist should be able to collect logs and analyze them. Logs are a repository where all events that occurred in the computer system are automatically recorded. This storage can be text files, a proprietary database, or a separate system. You need to know where and how to search for NGINX logs, be able to analyze PHP logs and the application itself, and use utilities such as Pail from Laravel.

5. Developing the product

At this stage, you can add additional features to improve the project.:

1) Caching using Redis — to speed up page loading.

2) Search on the site using Elasticsearch — to improve the user experience.

3) Setting up CI/CD pipelines — for regular automated code assembly.

4) Working with queues via RabbitMQ or Apache Kafka — for asynchronous data processing.

5) Transfer of information from the MySQL relational database to MongoDB — for convenient data storage.

6) Using microservices on Go — to highlight individual functions, for example, sending notifications.

1) Indicate in your resume the skills that you acquired while working on the project. 

2) Show the project to real users and take into account their feedback.

3) Repeat the theory before the interview and be honest: note that the project was created to gain experience.

Comments 7

Login to leave a comment

🤔👨🏻‍💻🙏

Reply

Для получения 1 ХР

Reply

Спасибо за то, что поделились своими мыслями. Посмотрите на идею статьи со следующих точек зрения: 1. Если начинающий разработчик создал pet-проект, то он уже стал начинающим Product Owner. 2. Если вы стали начинающим Product Owner, то нужно ознакомиться с основами PLM (Product Lifecycle Management). 3. После ознакомления с PLM (Product Lifecycle Management) Вы будете больше думать о JTBD (Jobs To Be Done). 4. Если идея вашего pet-проекта будет потенциально перспективной, то необходимо уделить внимание юридическим вопросам, например: регистрация торгового знака в той стране, на рынок которой нацелен продукт. Часто это USA, и вопросы регистрация торгового знака здесь очень важны. Желаю Вам мечтать и творить, не забывая о Project Environment.

Reply