My 25-Year Milestone

10-15 min read

In September 2001, I started my first official job as a software developer.

September 2026 marks 25 years as a coder.

I'm not entirely sure how I feel about it yet, but 25 years feels like a milestone.

It is time for memories, learnings, successes - and failures.


Chapter 0: becoming an adult

My Football Team

(My football team at 16, the peak of my football career)

School was the Istituto Tecnico Industriale in Pistoia. Historically the institute provided electronic and mechanical technicians to Breda (now Hitachi). Then they had that new experimental course in Information Technology. I went there because I wanted to build video games. I was very lucky. My IT professor Frosini was a great software engineer. He was working with neural networks in 1997 while he taught us, delivering the plate recognition system for the national highways. Fuzzy Theory fascinated me when he taught that to us. He was a great teacher and I was good at programming. The basic foundation was solid.

I was talented at school, always a quick learner. Unfortunately, during the last years at high school I focused more on football than on school. I wanted to become a professional footballer. But I wasn't good enough. Even though I tried very hard, I didn't join any professional football team. As soon as I finished school, I found a nice job where I could code and practice. And football became a passionate hobby.

My career as a footballer finished soon. I have no regrets. I wasn't good enough to become a professional; my talent was not for football, despite how much I wished it. But I learned a lot of things.

Once I went to Piacenza (Serie A at the time) for a selection. Before the classic first team vs juniors on Thursday, Pietro Vierchowod was practicing his weak foot for a good half hour. Vierchowod was in his last seasons, 40 years old. He had won countless trophies in his 20-year career, renowned as one of the best defenders of his generation, but still hungry and passionate, still working on his weakness. That episode opened my eyes to what practicing seriously means. So did my grandpa's stories: you are never too old to learn and improve. Later it became clear that serious practice is the core of my job.

My coach for a very long time was Paolo Mariani (in the pic above). He had a great love for football and deep knowledge. He truly appreciated my effort over my (poor) technical skills. He taught me many things, but one most of all: "Il cuore è un muscolo e come tale si può allenare" (the heart is a muscle, and as such it can be trained). He did not refer only to the biological part, but also to what the heart represents: the passion, the effort, the desire.

From football I carried a few lessons with me.

Team over individual: you win or lose as a team, not as an individual. I hated being MVP when we lost the game. Nothing to celebrate. I love the opposite: I would gladly trade my performance for a team victory any day! Technique is better than hard work: learn how to treat the ball, instead of over-performing to cover your weakness. Talented people have an unfair advantage, but they can fall into the trap of their talent: they don't learn how to learn, and they stop improving. Don't give up, not because you will eventually succeed, but because you'll regret not having done your best. Stay healthy. You make mistakes when you are tired; stay focused, so you are in condition to perform your best, and at least not to make stupid mistakes. Competition and collaboration: same shirt, brothers; other shirt, competitors. Don't mix. What happens on the pitch stays on the pitch. Shake hands on the final whistle. When they win, too, even when they probably didn't deserve it. Accept it.

I didn't go to university. I regret that, but at the time it simply was not feasible. Physiotherapy was an option I honestly explored, but the selection exam discouraged me. I could not cover many years of academic high school in a summer. I wasn't willing to study for many more years, and at the same time I found a stable job right after finishing school, so that was it.

Football also gave me so many friends, the kind that last for a lifetime.

School is over. Football dreams are over.

I follow the example of my mum Anna and my dad Paolino. They never told me directly. They showed me by example every single day: they went to work under any conditions, doing their humble jobs honestly, to put food on the table.


Chapter 1: freshman

My Document

(My first official document as an adult)

In September 2001 I started working as a software developer in a tiny company that somehow had 2 tech people: me as a developer, another guy as a sysadmin. After a few days, we all know what happened.

On my document I insisted on having "Programmer", like a modern Dijkstra, while the officer wanted to set a generic "Employee".

The kit was Visual Basic 6, PHP 4, and Postgres 7: normal for a dev at that time. In the first week I printed the whole Postgres documentation and studied it (Stack Overflow didn't exist yet): I loved Postgres because it had what I learned at school about databases. Shift-management software for the local vehicle licensing office was one of the things I built. Years later I heard they were still using it after 15 years.

My first boss used to repeat to me: "Better to shovel manure with nice people rather than polishing diamonds with bad ones". It took me years to grasp it. It took me decades to go further: you need the eye to spot nice people. People with real craft are usually nice, so they don't shovel manure. So I'd better improve my hard and soft skills to surround myself with nice people.

Meanwhile I was active in an online community about a PlayStation game called Winning Eleven. We updated the game with what we called "patches". I published an editor to modify teams and players directly on the ISO of the game. C++, Visual Studio 6, ugly UI for a desktop application. I recently discovered someone is still using it.

Mandatory national service put me behind the wheel as a driver, mostly for the elderly and people with disabilities. One important thing I learnt there: everybody, no matter what, seeks attention. And I could learn something from anyone, by giving them the space to express themselves.

After that, finding a job was a struggle: poor experience, poor offers in Tuscany. Under the Apennines there is no heavy industry that drives software engineering. So I moved to Milano, living alone in a modest but still decent apartment. Gaining experience, building my CV and my craft. Different world from the Tuscany countryside. Simple habits from the small town were what I missed, so far from big-city life.

Web work meant small companies, local customers. PHP, MySQL, some C++. JavaScript ran in Firefox; Chrome was not there yet to set a standard for the web. IE6 was the one that drove you crazy: it was like trying to grab a drunk eel. Java and Flash I dodged despite their popularity at the time: really not something I was comfortable working with. No git, no pipelines, no containers: you embedded deps into your project and you dropped it in production. No tests, no versioning, common sense and wildness. And a lot of malware just from opening the wrong web page.

After 3 years in Milano, I packed and went back. I wasn't doing badly; I could have had a good career in Milano, gaining experience so I probably could get hired by a good company. Business in Milano is another level for work compared to the rest of Italy. But my grandpa was getting worse and worse, and I did not want to stay far from my family at that moment.


Chapter 2: home sweet home

With my daughter Alice

(With my few-months-old Alice)

My grandpa Antonio passed away a few months later, after a long illness. He was basically my education: he taught me almost everything that mattered. He passed on to me the pleasure of building things and solving puzzles, finding creative solutions, and being proud of that. He taught me to have my own opinion despite conventions. And he left me an interminable list of anecdotes from Sicily, where he was raised, and from everyday life in Tuscany.

For a few months I kept working remotely for a Milano company, from Tuscany. In 2006 that was more than pioneering for remote work. Then came a few local companies, mainly in PHP, C# (I loved it), and the same Postgres. From being a developer I started taking responsibility for the whole IT setup, making decisions, hiring juniors and mentoring them. Finally, I applied Fuzzy Logic to one of my projects, a route planner. It worked like a charm in a few months, planning dozens of routes a day in a few minutes. By chance, my first international experience was in Leiden (Netherlands), at OCLC, one of the biggest companies in the book world.

My mum passed away too. She had a heart attack, and that shock changed my view on life forever, accelerating my pursuit of my goals. All of a sudden, I realized life is short.

Katia and I met at work, and after a few years together we bought a home, we got married, and Alice was born.

I started working with this new technology called Node.js in a crazy startup. It felt odd doing backend with JavaScript, but it was incredibly satisfying. I would discover all the JavaScript pitfalls later. It was like driving a motorcycle without a helmet. Modern tooling settled, and so roles (backend, frontend) started to take shape, and Agile landed in Italy too, even though everybody interpreted it their own way.

One January night I became a real Senior. I had taken vacation to babysit Alice for a week; she was 1 year old. The days before, my boss pushed me to deliver a feature even though I wasn't confident about it: we hadn't tested it enough - an integration with a non-standard fax machine. Of course it had bugs in production. Then he pushed me to fix it even though I was on vacation. So I went to the office in the middle of the night, fixed the bug in a few hours, and got back home while Katia and Alice were still sleeping. Because of tiredness and bad mood, I ran a red light too.

Back home, I promised myself never again, no matter what: never ship without confidence (and so without testing). From then on I got into testing, mastering all of it, and I still proudly claim to write more tests than code.

The small local companies started to feel tiny: boring challenges that I had already solved, and no career prospects. Working from home became a real need too, because commuting to Firenze or Pisa was a daily pain: I arrived already exhausted, and even worse when I got back home. The joy of the craft started to turn into frustration. No more interesting puzzles, no more stuff to learn; presence mattered more than shipping.

After 15 years as an employee and endless rational thinking, I opened my own solo company and became a freelancer.


Chapter 3: freelancing

An experiment with Raspberry Pi

(An experiment with Raspberry Pi and Node.js for a meetup)

Moving to an independent business came with many reflections. Was I a good colleague? Was I nice to people? Well, not always. I could have done better. And the harder question: was I good as a coder, or had I only looked good because I was playing in a small pond?

Oddly enough, as a freelancer I learnt how to improve my soft skills as a colleague. People choose you as a person first, then they give you the chance to prove your skills, but "You never get a second chance to make a first impression".

As a freelancer, it was very clear I had to act as a micro-company: bureaucracy, taxes, business plan, marketing strategy were as important as coding. My salary depended on my ability to get customers, do the math to win the job and earn enough, and deliver good stuff.

Alice was 2 years old. It was very clear that if it had not worked, I would have gone back to any kind of employee role, even outside the industry.

Getting customers was a ride. Fortunately the market was lively at the time. I started working for a few companies at the same time, small projects. The goal was to survive the first 2 years. My wife gave me the best advice I could have in that moment: "non ti svendere" (don't sell yourself short to get a job).

I positioned myself as a Node.js and Postgres expert, but open to anything. I believed I had good experience to sell, and that people would be more interested in that than in "provide me the code for this". I started having proper training: I decided how much and what to study. I got certifications. I studied what I believed was useful, from UX to negotiation to architecture.

I started to participate in meetups and conferences, both as attendee and as speaker. Networking is the core of sales. My principles were few and very simple:

  1. Keep your word, never promise under uncertainty.
  2. Ensure the conditions to fulfill the contract are there before signing.
  3. Deliver good stuff on time.

Nothing more. My strategy to get paid was simple and clear: half on delivery, the rest after customer testing - they have about 1 month to test. Testing now became the assurance not to rework over and over, and to keep debt collection off the list of duties.

I put all of myself into it: basically no vacations and a lot of extra time for the first 3 years. For a year, my day started with work from 5am to 4pm, then looking after Alice: one of the best times of my life.

It worked. I started to be known as a freelancer. Customers started to come on their own, by word of mouth from previous projects.

Then I tried to scale by onboarding a partner. A total failure. The risk was contained, but I lost some money. After a few tries, I gave up.

In a few years I somehow reached the Milano market, then good contracts and good money. I doubled my salary as an employee. I did it.


Chapter 4: world-wide engineering

Me speaking at We Are Developers in Berlin

(Live coding at We Are Developers 2022 in Berlin)

My horizon opened concurrently with Covid. At the same time I was tired of constantly looking for new projects, and I received good offers as a contractor. It was time for the international market. I started having private lessons in English. My English was so bad: only a few experiences abroad.

My first international talk was in Prague, February 2020. The topic was Postgres and JavaScript, of course. On the plane back, they tested us for Covid. To me, it started that way.

Lockdown was intense and controversial. Out of the hardship of normal life came the success of my career. I started working for a US company, Kodify, then I landed at NearForm.

NearForm had been in my target for a very long time, along with other companies. I was preparing myself to get there, then they finally had an open position as a backend Node.js engineer.

On my first project, my work was featured in the company blog as a success case study. I worked directly with Matteo Collina, a legend in the Node.js community. I started contributing to open source. Many Node.js core developers were working at NearForm at the time, and I was close to going for that too. I contributed to other projects for customers in the USA and the UK. I answered my question: am I a good coder? I think so.

I met great professionals, as a colleague or just for a while. I made some friends as well. I want to mention two of the kindest people I have ever met: Luciano Mammino and Duana Stanley.

Consultant work is harsh. The JavaScript language is so prone to being abused. As soon as you solve the problems you've been called for (spoiler: JavaScript misuse and/or bad database design, maybe cherry-picked with an ORM), you pack and go to the next one. Not the best feeling.

I fell in love with coding again with Rust. The level of design it requires is so satisfying. It looks like they baked the best coding practices into the language, not the other way around.

Then my dad passed away, after a long illness. I had therapy, Camilla was born, I divorced a few years later. Unfortunately, Katia and I diverged on how we saw life.

A hard personal time, and it showed up at work. My speaking career had just started when it abruptly stopped. I struggled to find a job after NearForm; that was a totally new experience. After some freelance projects, I landed on a video game project. Still web development, but now I was contributing to a video game. My teenage promise was completed.

Then I worked for a couple of years for Matteo Collina's startup. Best job ever. Great deep challenges, highly skilled colleagues. Unfortunately, it ended too, and after another round of struggle looking for a new job, I prioritized stability and got back to Kodify, where I am happily now.


Closing

Me on a mud race

(Me on a mud race)

In September 2026 I also turn 44. Football has been gone for a decade; now it's Spartan races and so on: mud is mud.

Kodify is one of the best companies I have worked with, and a good place to stay. It also gives me the opportunity to travel a little: a few months ago we had an amazing onsite in Tenerife, and we do them regularly. As a parent I'm doing my best; my daughters are marvelous. Katia and I are on good terms; new people have come into my life. Doing fine.

More than one era of IT has gone by: internet, smartphones, serverless, and now AI. I keep re-learning how to do my job over and over. Coding is still enjoyable; management never became the path. Computers are way easier to handle than people.

I wrote this down hoping to find how I feel, but I still don't know. Should I be satisfied? Sometimes yes, sometimes no.

List of (unconventional) achievements

  • mentored a couple of talented people
  • made a toxic leader quit
  • made a toxic leader get fired
  • wiped and recovered a production database
  • learnt English to B2/C1, from Tuscany
  • spoke at the biggest conference in Europe
  • had breakfast with Bjarne Stroustrup
  • published a viral post on LinkedIn
  • solved cache invalidation

Sometimes I think I had incredible success for the given context. Food always made it onto the plate despite difficulties. Still here, and lucky to have this job, looking at the jobs my parents had and how hard it was for them. Sometimes I think I could have got more results if I made different choices. More study would have helped, or more patience, or reading the situations better. Some places were clearly high risk with little gain; those I should have just avoided.

Anyway, according to retirement estimates, I still (hopefully) have 25 more years.