GameDev

A Programmer's Story: From Game Development to Web Development with Ruby on Rails

A Programmer's Story: From Game Development to Web Development with Ruby on Rails

Free Python course ➞ A mini-course for beginners and experienced coders. Four cool projects in your portfolio and a live chat with the speaker. Click here to find out what you can learn in this course.

Find out more

Vitaly Yemelyantsev is a professional in his field, with extensive knowledge and experience. His approach to work is characterized by a high level of responsibility and a desire for continuous development. Vitaly actively participates in various projects, demonstrating his skills and ability to find effective solutions. Through his achievements, he has established himself as a reliable specialist capable of making a significant contribution to the team's success. Importantly, Vitaly also actively shares his knowledge with colleagues, which contributes to the overall growth and development of the professional community.

An expert in his field, he possesses deep knowledge and extensive experience, allowing him to effectively solve complex problems. His professional skills cover a wide range of topics, making him a valuable resource for clients and colleagues. Constantly improving himself and staying on top of emerging trends in his field allow him to stay ahead of the curve and provide relevant solutions. Thanks to his analytical thinking and clear understanding of the market, he is able to offer customized strategies that meet client needs. He actively shares his knowledge through publications, seminars, and consultations, contributing to the development of the professional community.

Since 2012, he has been developing websites and web projects using Ruby on Rails. Trains people, shares industry knowledge, and actively participates in open-source projects. Specializes in creating high-quality web applications using best practices and modern technologies. Links play a key role in the structure and functionality of websites. They provide navigation, allowing users to move between pages and access different content. It is important to optimize links for search engines to improve the visibility of a site in search results. There are several types of links: internal and external. Internal links connect pages within a single site, which helps improve indexing and user retention. External links point to other resources, which can increase your site's authority in the eyes of search engines. High-quality links, both internal and external, should be relevant and contain keywords that help users and search engines understand what the link is about. Using anchor text—the text that the user sees and clicks on—is also important for SEO. It should be informative and contain keywords to increase the chances of a click-through.

Link optimization includes creating a user-friendly URL structure, using redirects when necessary, and regularly checking for broken links. Proper link management not only improves user experience but also contributes to higher search engine rankings.

In conclusion, links are an important element of SEO and play a significant role in the success of a website. Their proper configuration and optimization can significantly increase the visibility and attractiveness of the site for users and search engines.

My name is Vitaly Yemelyantsev. I have been working in IT for nine years and have 15 years of experience in programming. My career began with video game development, which was my long-standing dream. Currently, I am focused on web development, where I apply my knowledge and skills to create effective and innovative internet solutions.

I have been passionate about video games since childhood. I had Dendy, Sega, and the first Sony PlayStation. At the age of 14, I got a computer and learned about game development programs from a classmate. This discovery was a revelation, and I realized that game development was what I wanted to do.

I asked friends for programs and articles, studied guides, visited local libraries, and read magazines about video game development. I also bought discs with game development software packages at the market, which became part of my education. This approach helped me to gain a deeper understanding of the video game creation process and develop the necessary skills in this area.

The market where I bought discs with game development software. Photo: Vitaly Yemelyantsev's personal archive
Magazines I took from the library to read articles on game development. Photo: Vitaly Yemelyantsev's personal archive

With the advent of the internet, learning video games became significantly easier. I continued to delve into the various game engines and programming languages ​​available online. Evernote didn't exist at the time, so I decided to create one. To do this, I learned Delphi and C++, which allowed me to develop my first programs.

Screenshots of my Evernote analogue. Screenshot: provided by Vitaly Yemelyantsev
Screenshots of my Evernote analogue. Screenshot: provided by Vitaly Yemelyantsev

I've developed several games that were published in small communities. There are many Russian- and English-language platforms where developers share their projects and rate each other's work. For example, gamin.me is aimed at Russian-speaking users, and ldjam.com is for English-speaking users. However, commercial game publishing has not yet taken off.

How I started making money programming

In 2012, I decided to start making money programming. At that time, Business Youth was actively developing, and I noticed how many young people were learning, setting up contextual advertising in Yandex.Direct, creating landing pages, and making money from it. Inspired by their success, I decided to try my hand at web development. I've been working in this field for nine years now.

I started my freelancing career by completing simple tasks like creating landing pages and setting up advertising campaigns. Instead of registering on freelance exchanges, I actively used social media to find clients. I friended everyone in the "Business Youth" community and participated in their game format twice, both on VKontakte and on other platforms. The main rules of the game were setting 10 goals for two months, reporting progress daily, reading other participants' blogs, and liking and commenting to support my colleagues. This experience significantly helped me develop my skills and expand my network in the freelancing world.

Image: Business Youth project

During my activity in the BM game and on the VK platform, interacting with posts and leaving comments, I demonstrated my knowledge in the field Landing pages and advertising. This confirms my ability to be useful in these areas.

I didn't use explicit calls to action or offer my services, but simply shared my expert opinion under each post where appropriate. At some point, clients began contacting me with questions about my working methods, pricing, and collaboration opportunities. Gradually, the number of such requests increased.

I actively participated in the Stack Overflow community, answering questions and increasing my rating. This allowed me to demonstrate my expertise, which ultimately led to client acquisition. One of them was particularly impressed by my knowledge and experience, which became the basis for successful cooperation.

Screenshot: provided by Vitaly Yemelyantsev

People periodically contact me who are familiar with my 2013 article on Habré dedicated to the Ruby on Rails case study. They report similar problems at their companies and request consultations. It's important to note that when I wrote that article, I was just beginning to learn the framework and was fairly new to the field. However, the goal of writing it was to deepen my knowledge and systematize the information. The result is content that continues to be relevant and in demand, attracting new clients.

There are many interesting elements worth noting: Twitter threads, VK groups that I ran several years ago, as well as my public weekly progress reports in 2014-2015. Currently, working on a current client's team, I occasionally hear from the client's employees that they followed me back then. This evokes a pleasant feeling.

Over time, I began to participate in increasingly complex projects. I first developed a small online store, then moved on to a larger one, and later implemented a project with 1C integration. My portfolio grew to include clients from various industries, including food delivery services and a local pizzeria that implemented a pizza builder. I also co-founded a Russian startup and began collaborating with an American startup. Gradually, I reached senior level, which gave me the opportunity to improve my quality of life and travel. Ruby on Rails is my primary programming language and framework. I also work with React for front-end development. I actively freelance and outsource, and also serve several regular clients involved in large international projects. My experience allows me to effectively develop and maintain complex web applications, combining the capabilities of Ruby on Rails and React to achieve the best results.

How my working day goes

Photo: Vitaly Yemelyantsev's personal archive

I don't follow a strict work schedule. My clients are usually business owners, with whom I discuss current tasks both verbally and by email. After such discussions, I immediately begin completing tasks.

In projects where I am part of a team and manage development, my responsibilities include management. I discuss requirements and deadlines, formulate tasks, distribute them among team members, and monitor deadlines and the execution process. My role ensures effective communication and achievement of project goals.

I work about 15 hours a day, simultaneously managing my projects and social media. In my free time, I prefer to sleep, watch movies, and sometimes play video games, although this does not happen often, as they can take up too much time. That's why I chose a MacBook—it's practically unsuitable for high-quality games, but it's perfect for work, offering comfort and high performance.

I work seven days a week, taking vacations only on January 1st and 2nd for New Year's. This has become a habit for me, as I'm a hard-working person by nature. I get paid for every hour I work, which makes weekends both productive and profitable. Even on weekends, my work brings me income, allowing me to remain productive and focused.

I strive for balance in my life and, in my opinion, don't overload myself with work. If I'm not feeling my best in the morning, I prefer to relax, get some sleep, and spend time watching YouTube videos, and then I leave work tasks for the evening. To recharge, I walk, ride my bike, watch movies, and play video games. Thanks to a flexible schedule, I sometimes allow myself to relax and procrastinate, which can lead to a state of apathy. Motivating myself to work is one of the most difficult challenges anyone faces. I've developed an effective rule for myself: work is worthwhile not only out of necessity, but also because it brings pleasure, allows me to gain new experiences, and energizes me. Living independently and traveling to different countries significantly pushed me to change my thinking. Finding myself in a new country with limited financial resources, I realized I needed to quickly find ways to earn money to avoid deportation. In such circumstances, you begin to think creatively and find unconventional solutions. To overcome procrastination, it's important to make time for good sleep and calm reflection. You need to soberly assess the current state of affairs and identify solutions to the accumulated problems. This approach will not only help you cope with tasks but also restore your motivation for further work. You don't have to solve your credit problems radically. If you have debt, don't rush to pay it off with all your available funds, saving as much as possible. Instead, try to pay it off gradually. While this may seem counterintuitive, this approach allows you to save more for everyday needs and maintain an acceptable quality of life. It also reduces the risk of a domino effect, where all your money goes toward paying off the debt, forcing you to take out another loan. Managing your finances with a prudent approach to debt will help avoid unnecessary stress and debt dependency.

This advice does not apply to commitments to clients—they should be eliminated as quickly as possible. Circumstances may vary, and sometimes it's worth contacting the client, having a conversation, renegotiating the terms, or easing the burden. In some cases, it may be appropriate to return part of the advance payment. It's important to find a compromise and release the commitment so you can focus on more promising projects and strengthen relationships with other clients.

Freelancing often involves a large number of clients with varying demands and expectations, making it difficult to meet deadlines. Additionally, unforeseen circumstances, such as illness or injury, can negatively impact work. To minimize these risks, it is recommended to consider working remotely for one company on a 5/2 schedule, which includes weekends and paid vacations. This approach allows for better time and expectation management, while providing stability and predictability in work.

Travel format - live in a country

I am passionate about traveling and exploring the world with my girlfriend and our cat. We have already visited countries in Asia and Europe, and now we are planning a trip to America. Our cat tolerates travel well; she is calm and is used to traveling by both train and plane. Travel has become an integral part of our lives, and we strive to discover new horizons, enjoying every moment along the way.

Cat-traveler. Photo: personal archive of Vitaly Yemelyantsev
The traveling cat. Photo: Vitaly Yemelyantsev's personal archive

We don't travel like most people; we prefer to move, buying one-way tickets and spending anywhere from a month to a year in new countries. When a new place ceases to inspire us, we move on. Therefore, it is difficult to accurately calculate the costs of each trip. We simply observe how the cost of living increases, depending on the chosen country and the region of Russia where we lived previously. For example, compared to St. Petersburg, life in comfortable Thailand costs about the same. Poland is one and a half times more expensive, Germany is two and a half times more expensive, and Switzerland and Finland are four to five times more expensive. This approach to life opens up a world of diverse cultures and opportunities, allowing us to experience different lifestyles and adapt to new conditions.

Since childhood, I have always been drawn to travel, and I dreamed of seeing other countries. However, as I've discovered, short-term tourist trips don't allow you to fully understand how life works in another country. There are nuances that only become apparent during a longer stay, when you have the opportunity to integrate into the local community. It's important to understand not only the local politics but also the local mentality. When you're just a tourist, you're treated differently than when you strive to become part of the community. Understanding these aspects enriches the travel experience and allows for a deeper appreciation of the culture.

Our flights. Photo: personal archive of Vitaly Yemelyantsev
Our flights. Photo: Vitaly Yemelyantsev's personal archive

We have had the opportunity to live in various countries, such as Turkey, Georgia, Kazakhstan, Malaysia, Thailand, Bali, Italy, France, Poland, Germany, and Switzerland. Each of these countries has left its own unique mark on our lives and enriched our experiences. Living in these countries has given us a deeper understanding of their culture, traditions, and way of life.

Thailand. Photo: personal archive of Vitaly Yemelyantsev
Thailand. Photo: personal archive of Vitaly Yemelyantsev
Thailand. Photo: personal archive of Vitaly Yemelyantsev
Thailand. Photo: personal archive of Vitaly Yemelyantsev
Poland. Photo: personal archive of Vitaly Yemelyantsev
Poland. Photo: personal archive of Vitaly Yemelyantsev
Poland. Photo: Vitaly Yemelyantsev's personal archive

Scandinavian countries such as Finland and Norway, as well as Canada, arouse my deep interest. Although I have not yet visited Canada, I dream of going there. I understand that the climate is cold there, which can be a challenge to live in, but this place attracts me with its unique atmosphere. Canada is famous for its respect for ordinary people who are not in power. It has a well-developed social security system, offers high-quality healthcare, and has a fair judicial system. These aspects make Canada an attractive place to live and travel, emphasizing the importance of human values ​​and social responsibility.

I would like to live in Spain, and also visit Portugal and the United States. In the United States, I intend to live in various states, starting with Texas and Florida. These regions offer a unique culture and climate, making them attractive to live in and explore.

When moving to new countries, a lack of familiar services often irritates people. One of the biggest inconveniences is the inability to quickly order goods with a guaranteed next-day delivery. Living in countries without centralized online marketplaces like Ozon or Amazon can be challenging. Furthermore, the lack of food delivery services, which are common in some parts of Asia, adds additional challenges. This creates certain inconveniences for people accustomed to the convenience of modern technology and services.

The more you travel, the easier it becomes to deal with visas, tickets, and hotels. With experience comes confidence and the understanding that all difficulties can be overcome. I remember how stressed I was when we were trying to move to Poland and obtain a residence permit. Over time, you realize there's nothing scary about these processes; all tasks are solvable, and you begin to perceive them as routine. This helps you get ready for future travels and organize everything you need without unnecessary stress. Traveling not only enriches your experience, but also makes the preparation process more comfortable.

How much I earn and what I spend money on

The cost of living in Russia is lower than in most other countries. Although rent in Moscow is quite high, food prices, including premium stores such as Azbuka Vkusa, remain competitive. Healthcare, communications, the internet, and other services in Russia are also cheaper than in Asia and Europe. The banking sector in the country is actively developing: almost all major banks offer convenient mobile apps for individuals and legal entities, as well as for investments. Tinkoff, Otkritie, and Sberbank stand out, offering a wide range of services and a user-friendly interface.

In Europe and America, the banking sector demonstrates outdated approaches and does not strive for active development. Interactive Brokers is a foreign company available for investments, but its terms and rates differ significantly from those offered by Russian companies such as Tinkoff, Otkritie, and Alfa Investments. My current investment income is around 20% per annum, but I strive to increase this figure and achieve a higher level of profitability.

I earn about a million rubles per month. Currently, a significant portion of my income goes towards everyday expenses. When I lived in the Russian provinces, I had enough left over to invest in stocks and cryptocurrency.

Given our progress and moving from countries with a low standard of living to more expensive regions, the increase in income allows us to offset the increase in everyday expenses such as rent, food, and equipment. This transition to a higher standard of living requires adaptation, but increasing financial capabilities helps us maintain a comfortable standard of living.

In Russia, I initially paid 25,000 rubles for a 70-square-meter apartment, then it increased to 35,000 rubles. After moving to Asia, my rent was around 30,000 rubles, but for 30 square meters. We currently spend around 90,000 rubles on an 80-square-meter apartment in Warsaw. These changes in housing costs illustrate the differences in rental prices across countries and regions, and highlight the rising costs of housing in major cities.

This is what our apartment in Warsaw looks like. Photo: Vitaly Yemelyantsev's personal archive
This is what our apartment in Warsaw looks like. Photo: Vitaly Yemelyantsev's personal archive
This is what our apartment in Warsaw looks like. Photo: Vitaly Yemelyantsev's personal archive

We often focus on large expenses. For example, a new MacBook or iPhone – is it worth it? Or are we planning an expensive month-long trip to France? However, everyday expenses often fly under the radar. We buy what we want or need without much thought. This can lead to unexpected expenses and financial difficulties. It's important to remember that even small expenses can significantly impact our budget. Therefore, it's worth paying attention not only to large purchases, but also to everyday expenses to maintain financial stability.

I don't skimp on things that are truly useful. For example, Apple technology for me is not just a status symbol, but effective tools like a MacBook and iPhone that work perfectly within the unified Apple ecosystem. When it comes to clothing, I prefer mass-market brands, as I believe there's no point in overpaying for things that don't add significant value. However, if in the future I need to appear on YouTube or in investor circles, I will consider creating a new image and purchasing higher quality and stylish clothes, perhaps in a formal or casual style, to meet the new requirements.

Taking care of your health requires investment. Dental treatment, braces, and bite correction are all important steps to maintaining not only health but also an attractive smile. Although such procedures can be costly, they are a significant contribution to your overall well-being and appearance.

Future Plans

I have many goals, and most of them are subjective. In recent years, I have focused on developing hard skills such as programming, architecture, and engineering. Now I am looking to improve my skills in management, personnel management, and HR, as I have certain gaps in this area. I realize this knowledge will be useful when I decide to create my own startup or return to the video game industry, where I will need to manage teams, inspire them, and be an effective leader.

I plan to improve my Spanish, as I dream of living in Spain. Spanish will also be useful in Mexico and the United States. Europe doesn't appeal to me because each European language is local and its use is limited. I also intend to obtain an international driver's license so that I can travel freely across different countries.

I'm considering resuming my mentoring activities. Despite nine years of experience in development, I haven't been active on social media or sharing my knowledge with an audience for a long time. I published articles on my blog and on the Habr platform, but I didn't consider myself an expert. However, I once attended a webinar given by a senior colleague who has more extensive experience in this field. He held a webinar where he discussed basic concepts, but he managed to earn money and establish himself as an authority in his field. So I thought, "Why don't I try something similar?" As a result, I built a group, started generating income, and attracted clients. This inspired me to take mentoring and sharing my experience with others even further.

Over the past year, I put the group mentoring project on hold, leaving only publishing articles and answering questions from the audience. Instead, I focused on individual mentoring and took on a few students. I announced the recruitment on social media and worked with those who showed interest over the next month. I currently continue to mentor students as part of a collaboration with one of my clients. In the new year, I plan to return to public mentoring to once again share my experience and knowledge with a wider audience.

I am motivated by mentoring not so much by the money as by building my reputation and image. The financial component of mentoring is significantly smaller compared to the income from development and investments. I understand that building my reputation is important, especially when applying for visas, such as those to the United States, where there is a visa for outstanding individuals. Participating in mentoring and community activities, including open source projects, helps accumulate points for such visas.

I plan to return to game development. Initially, I want to create a small project that will attract the attention of investors. Then, with a team assembled, I will be able to implement larger games. I have many ideas—at least 20 concepts waiting to be put into practice. My goal is to assemble a team and gain investor support to implement these projects.

For those starting their journey in IT, I strongly recommend following me on Twitter for access to useful technical threads. It is important to study the areas that truly interest you, as there are many directions in IT. Perhaps you don't need to delve into programming; design, layout, or testing might appeal to you. Find your niche and develop within it to succeed in the IT industry.

It's important to leave aside boring aspects and focus on what truly interests you to gain experience. Emphasize the learning process rather than the end result. For example, when interviewing, don't worry about whether you'll get the job. Anxiety can become an unnecessary source of stress, which is detrimental to interview success. Instead, focus on getting the most out of the experience. This applies to everything: learning new technologies or implementing your own project. Even if something goes wrong, you'll still gain valuable experience that will be useful in the future. Keep this in mind at every stage of your development.

Reading is an important aspect of personal and professional development. It helps broaden your horizons, improve your vocabulary, and develop critical thinking. Many studies confirm that regularly reading books and articles helps improve concentration and memory. In today's world, where information is abundant, it's important to be able to select quality sources and extract useful knowledge from them. Reading not only entertains but also enriches, allowing you to immerse yourself in new ideas and perspectives. So, devote time to reading, choose literature that matches your interests and goals, and observe how it affects your life.

  • "I'm no longer a zombie from comedies about office workers": the story of a web developer
  • Why working in top Russian IT companies is evil
  • Hotkeys in VS Code