Today, I am celebrating 12 years of my career in professional software development.

These years followed 7 other of school, personal and NGO small software projects (2005-2012). This day finds me combining daily software architecture with managing international teams.

My love for informatics began back in 1997, when I was in the 2nd grade and first encountered a PC during a three-month informatics class. This opportunity was thanks to a visionary teacher who was ahead of their time, given the era, location, and educational systems we were living in back then.

First and foremost, I would like to thank my parents who dreamed with me for 7 years, from my first contact with a PC until I had my own in 2004. They made countless sacrifices to help me transition from a village where I did my homework by gas lamp light in the evenings without electricity in the 1st grade, where less than 10% of gymnasium teachers were qualified for the job, to accessing the best high school and university in our country.

Thanks also to all my teachers, mentors, inspiring colleagues, partners, collaborators and everyone who supported and trusted me on this amazing journey, even before I believed in myself.

These 12 years have been filled with incredible experiences: working with (emotionally) intelligent people from whom I learned so much, handling projects of impressive scale and complexity, exploring paradigms that changed my understanding of the world, and gaining hands-on experience with cutting-edge technologies.

Software development has a place in every domain, industry, and field of study. It empowers us to explore and create without limits. This is one of the reasons I love my everyday work, and I am immensely grateful to have been born at a time when I can experience these advancements in software development. We are in an era where we develop tools to connect people across continents like never before, work in multicultural teams, and create human-like intelligent machines.

Here are some valuable lessons I’ve learned that I’d like to share with younger engineers:

  • Experts become experts because they learn daily, not because they know everything. Don’t worry if you don’t know something, and don’t waste time with imposter syndrome if you get stuck.
  • Programming machines is not just about writing code or being familiar with a programming language. It’s not even solely about having deep engineering knowledge. It’s about understanding reality. What we actually do is imitate humanity, replicating simple behaviors that can be automated.
  • Programming languages are tools, not skills.
  • The more experienced you become, the more you value old-school tech that remains relevant decades later.
  • School grades have limited relevance, and lifelong learning is essential beyond academic motivation.
  • Real-life performance scales differ from school; you need mentors to look up to, regardless of your expertise level.
  • My version of a senior developer’s definition is someone who can alter an enterprise system without documentation and without causing any negative impact.
  • One of a programmer’s most developed skills is humor. Another is effective communication.
  • Technical leadership is much about people leadership.

The journey goes on!