What I Learned About Programming in 10 Years of Experience

This is what I learned during my first 10 years as a programmer to becoming a professional software developer.

Categories
IT Sector and Employment

How I Became a Programmer

Ten years translate to 120 months, 521,429 weeks, or 3650 days. 3650 chances to wake up in the morning and do what you must to get closer to the life you aim to achieve.

YouTube player
This video is in Spanish, but you can activate the English subtitles.

It’s 2024, and 10 years ago, I wrote my first line of C++ code in college. Today, at 28, I work in programming. I’ve been a programmer at international consulting firms with hundreds of employees, in small startups with innovative products, as a game developer, and I’ve even had my cameos as a programming instructor for businesses.

I’m not trying to brag or claim I haven’t wasted time in these 10 years. Because I’m a professional in that too. But I think this anniversary is a good moment to share what I’ve thought about programming in each phase I’ve gone through during these years.

I’m Carlos Sala, a software developer, and this is what I’ve learned about programming after 10 years of experience.

(2010) Prologue: Seeking Money on the Internet

Growing up in a large family of five siblings, during my childhood and adolescence, the only way to get money was to wait for Christmas or my birthday.

Looking for money on the internet.

We didn’t live in extreme poverty. But at the age of 15, when I started dating my first girlfriend, I increasingly had to ask my parents for grants to go to the movies, dinner, or buy myself a bag of sunflower seeds.

Feeling selfish about this, knowing we were many siblings, I decided to put my 1GB RAM Acer Aspire One to use for something other than playing World of Warcraft, and I googled: how to make money on the Internet.

First Contact with Online Businesses

After visiting dozens of pages with scams targeting desperate people, I came across Forobeta, one of the largest online business forums in Spanish.

Forobeta. Spanish-speaking online business forum.

On Forobeta, among many other scams, I discovered and followed different ways to make money such as referral systems PTC and PTR; Auto surfers; uploading movies, series, and adult content to forums like Taringa; jobs as paid writers per word; and finally, I learned how to create a website on Blogger and WordPress to monetize it later with an ad network like Adsense.

For 3 years, I experimented with online businesses, earned a few hundred dollars through PayPal, and also, without really knowing what it was, I made small modifications to the HTML, JavaScript, and PHP code of my blogs following tutorials I found online.

Choosing a University Degree

At this point, I was already 18 years old, I had to choose a degree to go to university, but I still didn’t know that the job of a programmer existed.

Since I enjoyed working on the computer and wanted to understand more about how websites and video games worked, I enrolled in the multimedia engineering degree, which is a variant of computer engineering with some subjects on 3D graphics, animation, and game development.

Choosing a university career.

Luckily, without knowing it, I had chosen what I believe is the profession that best suits my personality because, as I’ve said before, when I tried to find customer-facing jobs, I wasn’t hired even in supermarkets.

At the end of that last summer of high school, I moved to another city, entered university, and after this prologue, that’s when my first 10 years as a programmer truly begin.

(2014) University: Discovering Programming

Learning programming in engineering, at university, can be either thrilling or a nightmare. It all depends on how much you’re willing to study.

It is difficult to program.

For those unaware, in many universities, the initial algorithms are written on paper, without using a computer. Thus, only if you truly understand what you’re going to write, can you tackle the exercise.

Is Programming Difficult?

The first programming exams were a massacre, with over 90% of students failing. Including myself, who initially struggled to grasp concepts like variables, functions, or control structures.

Learning programming, which is vastly different from anything else we’ve learned in life, comes with a time and effort cost that you have to pay, the sooner the better, to understand the code you write and enjoy programming.

How to program in C++. Deitel.

So, I decided to climb out of the hole I was in, got the recommended book for the programming course (C++: How to Program, by Deitel), and finished it along with the practical exercises in a few weeks.

What seemed impossible now seemed very simple to me, and I went from failing exams to being one of the top students in the class. Additionally, since all object-oriented programming languages share very similar concepts, I was able to recycle what I learned about objects, classes, inheritance, templates, data structures, and polymorphism from that book when later learning Java, JavaScript, Python, and PHP at university.

As you can imagine, in university, there were only two types of programming students: those who loved it and those who hated it. Those who chose to learn to program and those who did not.

(2017) The Steve Jobs Syndrome

By the time I was in my third year of college, I had already learned at university and in my free time how to develop mobile applications in Java, terminal scripts, web pages with JavaScript and PHP, and games in C# with the Unity engine.

Snake II: Classic Mobile Game

Game development was particularly important to me. To set a goal while learning Unity, I decided to develop a copy of the Snake II game that came on Nokia 3310 phones for smartphones. I loved that game, and it took me 3 months to replicate it pixel by pixel.

YouTube player

Coincidentally, that year saw a reissue of the Nokia 3310, and the internet was flooded with nostalgic press releases recalling the phone and the classic Snake II. So, in just a few months, my game went viral and reached 2 million downloads, with very positive reviews for its faithfulness to the original and spikes of up to 4000 daily downloads.

Unfortunately, I didn’t know how to monetize it properly. Additionally, most players were from Brazil and India, which are two of the countries where you can earn the least money with ads. I was making between 100 and 400 euros per month for 2 years, and to this day, it still generates something, but it’s residual.

I Leave University.

Having succeeded with the first game I made, whether because I chose a project small enough to finish or because it went viral by chance, gave me an unrealistic image of software development. At that time, I thought I was a programming genius and that I alone would be capable of developing any project. This is what I call the Steve Jobs Syndrome.

I leave University.

To add to that, university parties plus a breakup with my girlfriend at the time, I had the bad habit of smoking weed daily. So, my head was in the clouds all day, and instead of fulfilling my obligations, I daydreamed.

With my perception of reality completely altered, I embarked on the development of several more games, too ambitious for a single programmer. They all failed, just like my university results, because I had stopped attending classes, and when I did, I was either drunk or stoned.

Developing indie games going high.

I was between my third and fourth year of college, broke, and demotivated, so I decided to create a programmer’s resume to enter the workforce.

(2018) The Working World: Perfecting the Code

In less than a month, I found my first job as a full-stack developer with Vue and Node at a startup called Tripnastic, aiming to connect travelers with travel agents without the commissions that travel agencies add.

By then, I had been programming every day, all day long, for 4 years, tackling all sorts of projects. I could solve most problems that arose as I programmed, consulting library documentation. But I had a weak point: I lacked knowledge of software architecture.

Software Architecture, Design Patterns, and Best Practices

Although what I programmed was functional, the project folder structure and code patterns I employed were more creative than efficient.

Software architecture and design patterns.

Design patterns are solutions to common problems encountered in software projects that are useful to apply when facing one of these well-known issues. To name a few:

  • The singleton, which is a mechanism to manage a single global instance of an object.
  • The factory pattern, which is a function that generates instances of an object without having to call the class constructor.

Applying popular design patterns, choosing an appropriate folder structure for the project based on its size, and carrying out best practices like testing allow you to reduce software maintenance and extension times for yourself and other developers. It will be easier to find bugs during debugging or add new features following the chosen patterns.

6 Years of Professional Maturation

I won’t go into detail about each of the professional experiences I’ve had, to avoid making this boring. But there are quite a few:

  • (2018 – 2019) At Tripnastic, the travelers’ marketplace, I stayed for a year until the project was decided to be closed.
  • (2019) I worked at a digital solutions company called Estudio Cactus with React, React Native, and Angular. But I left because I didn’t know anyone in the city where the office was located.
  • (2019 – 2020) I returned to Valencia, the city where I had studied at university, and joined Flamingueo, a well-known e-commerce startup in Valencia’s ecosystem, which was developing an application in Vue and Node. When the pandemic hit, they had to make staff cuts and closed the project I was working on.
  • (2020) Thanks to a contact, I joined Codigames, Spain’s leading mobile game developer. But I decided to leave because we only did Unity game reskins with the same gameplay, changing the theme.
  • (2020 – 2021) I opened my YouTube channel and spent a year at GeeksHubs, combining software development in Angular with programming courses, until I received an offer from a startup for almost double my salary.
  • (2021-2022) Internxt is a startup that offers an encrypted cloud storage service. I worked, alongside other developers, on the web and mobile version in React and React Native. This is when I started publishing open-source code on GitHub. After a little over a year, I felt the project was going nowhere and moved on to another job.
  • (2022 – Present) Currently, I work as a frontend developer in React and Angular at a small consulting firm in Madrid called Milú, where we develop digital solutions of various sizes for other companies.

In these 6 years, besides strengthening my weak points in architecture and specializing in frontend development, I understood how wrong I was a few years ago when I thought I was a programming prodigy.

Clean Architecture with React Native.

The experience of working on project after project had made me collide with the reality of software development. And the reality was more boring and disappointing than I had thought.

Ideas Are Unlimited, Your Time Isn’t

Every day, I become more reliable with time estimates for completing a task, and I know the pace at which an average programmer progresses in a workday. That’s why I’ve realized how focused one must be on the same idea for a certain period to finish any software project.

Developing a product, no matter how simple, that meets the quality standards users expect and releasing it is already challenging enough to make you fail. So, imagine what happens when you try to implement innovative ideas. Let me tell you: development time skyrockets from months to years.

Your ideas are unlimited, but your time is not.

Although I don’t like it, I’ve learned that ideas are overrated because no matter how hard you try, you can’t program at the same pace your mind generates new ideas. Pruning these new ideas when you’re already working on a project, being organized with your thoughts, is crucial for any programmer. Unfortunately, I’ve had to leave many projects unfinished to realize this.

Your ideas are limitless, but your time isn’t.

Programming and Motivation

Today, as a senior developer, I feel that the more realistic I am, the harder it seems to launch a successful project like the Snake game with which, without any pretension, I learned to program games when I returned home from university. Was it all luck? Or is there a formula for achieving the improbable by mixing ignorance and motivation?

Not knowing that limits existed, everything seemed possible. As simple as deciding to do it. Do you know what I mean?

These have been my first 10 years as a programmer, and I would love for there to be something more waiting for me in the next 10 to break my preconceptions again.

I’m Carlos Sala, a software developer, and see you soon!

Carlos Sala Samper

Handmade software.