Switch to
AI Translate

My Path to Becoming a Programmer

How I Became a Programmer and Why Programming is Awesome


Since childhood, I’ve been unusually curious—while other kids played with toys, I was more interested in how they were made and how they worked. My first workshop was in the corner of my parents’ garage, where I spent hours fiddling with various parts and tools. Even back then, I tried inventing simple mechanisms—anything I could build from available materials.

As a teenager, I got into metalworking—I learned how to weld metal, work with a gas torch, and solder. After that, I mastered almost all metalworking machines: turning, milling, drilling—everything. At the same time, I learned woodworking because sometimes wooden parts are just as necessary as metal ones.

Electronics and electrical engineering were more difficult for me. I knew the basics—I soldered simple circuits, understood the principles of motors and sensors, and could assemble a basic electrical circuit. But diving deeper into this field was challenging—it was a completely different domain.

Over the past few years, I became interested in CNC (computer numerical control) machines. I started by building my first, very simple CNC milling machine in my garage. It was a real challenge, as I had no experience and limited resources, so I had to do a lot from scratch. The machine worked, though not perfectly, but it was a huge step forward for me.

Realizing that I needed to learn design to create something more serious, I started studying solid modeling. At first, it seemed difficult, but gradually I became proficient in 3D programs. While designing my second machine, I continued learning modeling and finite element analysis for load calculations. In the end, I built a more complex and industrial-like CNC milling machine—in my garage again.

Since then, my workshop has transformed into a true engineering center. I design and build various machines and mechanisms, constantly improving my skills. Mechanics are my element, and I can solve almost any task in metalworking and mechanical engineering.

However, programming and electronics still remain a challenging area for me. I can write basic code and assemble simple electronic systems, but deeply understanding and creating complex systems isn’t easy yet. Nevertheless, I’m not stopping—I keep learning and striving to get better.

And so, I, a simple guy with a garage workshop and a deep passion for discovery, have gradually moved from the first inventions and simple mechanisms to modern CNC machines. And this is just the beginning.

Why I Decided to Become a Programmer

I had two main goals that pushed me towards learning programming.

The first was to “bring mechanisms to life”—the ones I was constantly designing and building. To do that, I needed to master microcontroller programming, understand electronics, and be able to assemble my own electronic systems.

The second goal was web development. I had long been interested in creating apps and websites, and web development seemed like a perfect starting point. I chose JavaScript because it’s versatile and allows you to create programs not only for browsers but also for mobile devices and desktops. It was an opportunity to combine my engineering knowledge with the digital world, creating interfaces and tools that could remotely control my mechanisms or build hardware-software complexes.

How I Started Learning

My journey in programming began with Jonas Schmedtmann’s courses — I completed two of his courses, which gave me a solid foundation in JavaScript and web development. It was there that I first realized programming isn’t just dry code, but a living tool for creating useful and beautiful things.

After that, I dove into learning GraphQL and wrote my first application for network marketing. This was an important step: I understood how to build flexible and efficient APIs that make applications fast and user-friendly.

Next came an internship, where I was introduced to NestJS, microservices architecture, databases, and many other technologies that broadened my horizons. Understanding microservices and how to organize backend systems properly was a real revelation for me—it was like giving my applications wings.

Armed with this new experience, I moved on to React—a powerful library for creating interfaces. Thanks to it, my applications became not only functional but also beautiful, interactive, and responsive.

I combined all these skills into one ambitious project—a giant pet project with a microservice architecture. Today, it consists of 22 microservices and 6 interfaces, all connected by a seamless authentication system. My goal is to launch this project on my own local server, which will be accessible from the internet.

To achieve this, I learned Linux, dove into CI/CD, studied Kubernetes, set up virtual machines on a hypervisor, deployed a Kubernetes cluster, and configured GitLab with my own Registry. Each part of the process—from building and testing to updating applications in pods—became a new challenge and a new victory for me.

It’s been a long, hard, but incredibly inspiring journey. Today, I don’t just know how to write code—I know how to build scalable, reliable, and complex systems that can work in real-world conditions and solve serious problems. And this is just the beginning.

First Wins and Challenges

Behind every small success were hours of hard work and many mistakes, which I saw not as failures but as valuable lessons.

Difficulties with learning new technologies, misunderstanding architectural decisions, configuring complex systems—all of this tempered my character and shaped my mindset as an engineer-programmer. Every bug in the code, every mistake in server configurations turned into lessons that, over time, allowed me to move forward faster and more confidently.

The first small victories—whether it was a working API, a properly configured CI/CD process, or a launched microservice—gave me a sense of real progress and inspired me for new achievements. I learned to appreciate not only the final result but also the entire journey that leads to it.

Today, I realize that difficulties and mistakes are an inherent part of any journey, especially in such a complex and dynamic world of technology. They help us grow, find unconventional solutions, and not be afraid to try new things. And this understanding has become one of my greatest victories.

What Has Changed

Since I took my first steps in programming, a lot has changed—I’ve changed, as well as my approach to work and life in general.

Today, I am able to create full-fledged applications—from simple web interfaces with React to complex systems with microservices architecture. I write scrapers for automatic data collection and processing, which allows me to quickly obtain necessary information and integrate it into my projects.

Working with cryptocurrencies introduced me to a new world of financial technologies. I learned to interact with blockchain services, accept and process payments, and integrate security and reliability into each transaction. As a result, my projects have become truly modern and competitive.

I also mastered interacting with various APIs—REST, GraphQL, gRPC—and learned how to build architectures where microservices efficiently exchange data and work as a unified system. This freedom allows me to create scalable and flexible solutions that easily adapt to any challenge.

Learning about microcontrollers enabled me to create my own control systems for machines, implement intelligent functions, and make my projects independent from off-the-shelf solutions. In addition to controllers, I studied electronic components and circuit design to be able to build complete devices from scratch. This step transformed me from a mechanic and inventor into a developer of complex electronic systems.

I also delved deep into modern DevOps practices: automating build, test, and deployment through CI/CD, container management with Kubernetes, setting up virtual machines and clusters on Linux. To simplify infrastructure management, I learned Ansible—a tool that automates server configuration and application deployment. Thanks to this, I effectively manage the entire environment, ensuring stability and scalability for my projects.

As a result of these changes, I became a versatile engineer—a person who can not only design and build complex mechanisms but also bring them to life with code, integrate them with digital services, and make them accessible to users around the world.

This journey has given me the confidence that any challenge—from mechanics to programming and DevOps—can be overcome if approached with perseverance, curiosity, and a desire to constantly learn.

What Do I Want to Learn Next?

I don’t set myself the goal of learning everything in general. If a real problem arises, for which I lack knowledge—that’s when it’s time to learn. Only specific needs serve as my true motivator.

For now, I want to try myself in other areas. Write stories. Play with light and composition in photography. Live a little broader, observe, seek inspiration beyond the code.

After all, development is not just about new technologies, but also about discovering new aspects of oneself.

Conclusions

If someone had told me once that I would be running my own Kubernetes cluster, writing distributed systems, and setting up microservices on dozens of virtual machines, I wouldn’t have believed it. I just loved assembling mechanisms, soldering, welding, tightening bolts, and designing parts.

My journey wasn’t easy. I started from scratch, got confused by the terminology, spent hours searching for answers on forums, made mistakes, got lost, got frustrated… but never gave up.
And perhaps the most important conclusion I can share is: anything is possible if you take it step by step.

💡 Tip #1: Don’t wait until you’re ready — start now.
You’ll never be “ready enough.” You’ll learn syntax — and then realize you don’t know architecture. You’ll figure out APIs — and then face security.
It’s always like that. The most important thing is to start. Everything else will come along the way.

💡 Tip #2: Work with your hands.
Until you start writing code, building circuits, deploying clusters — your knowledge will just be theory. Practice, even with mistakes, will turn you into an expert.

💡 Tip #3: Learn boldly.
Don’t be afraid of complex topics: Linux, CI/CD, Docker, gRPC, microcontrollers, Ansible, Kubernetes — all of that only seems scary until you dive in yourself.
Anything others do, you can do too.

💡 Tip #4: Projects are more important than diplomas.
No course can replace real-world experience. One genuine project, where you go from idea to launch, is worth more than a dozen certificates.

💡 Tip #5: Be an engineer, not just a coder.
We live in a unique time when you can master not just one field, but several. Mechanics, electronics, software, DevOps, crypto, web — everything can be connected.
Build systems, bridge worlds.

I didn’t become a programmer because it was trendy. I became one because I wanted to bring my ideas to life. And you can too.
Even if you don’t know where to start — just take the first step.

The road will open up beneath the feet of those who walk.