I jumped boat, changed role, changed tech stack, I’m enjoying a bit more of tranquillity, I have a bit more family time, I got my (dev) passion back! Way to go folks 😎
I’m just sharing some reasons for this decision and few insights on the past few years, for my future self, for the ones who have asked or will ask. Also, for a good DRY approach 🙂
It was a positive experience overall, I did achieve many good things during my tenure as CTO:
- Took charge of entire IT dept, code and infrastructure the hard way, in half a day, lots of pieces were missing but eventually I managed to figure out everything.
- Cut down 30% of IT initial costs.
- Empowered a “Flexible Tech Stack” approach: PHP, Node.js, Python, Bash were some of the languages used, no hard rule for fixed tech stack.
- Managed to take control of the unstoppable flow of tasks.
- Improved load of the web servers with CDNs, cache layers, version upgrades, code optimizations and fine-tunings.
- Established Stand-Up meetings, Planning Poker (then dismissed), Code Review, Weekly Demo, Quarterly Team Retrospective, Tech Radar Review Sessions, and Learn at Lunch.
- Migrated HTTP to HTTPS, upgraded all bare-metals servers, upgraded PHP 5.6 to PHP 7.2 (and to 7.4 WIP), upgraded Symfony 2.7 to 3.4 (and to 4.4 WIP).
- Managed to learn a lot about system administration, server management, and also enjoyed a few trips in the server farm.
- Got out of comfort zone, had to face public speaking, conflict management, budgeting, vendor management, people management, managing up, down and across.
- Had the “luck” to get some DDoS and eventually manage to “survive” them.
- Improved Joel Score, implemented The Twelve-Factor App.
- Took part of PCI Compliance Check, Digital Invoicing and GDPR implementations.
- Introduced Infrastructure as a Code with Terraform, Packer and Ansible.
- Created a wiki to document everything (or as much as possible), as there was no trace of documentation whatsoever, and kept it healthy and up-to-date.
- Introduced Continuous Deployments, reduced pipeline execution time of 80%, increased YoY number of deployments of ~60%.
- Dismissed old rusty Excel spreadsheet and introduced Jira and a ticketing system.
- Automated KPI extraction and reporting, Four Key Metrics and application telemetry.
- Helped exposing and aggregating core business data via BI tool Tableau.
- Introduced a mixed approach of bare-metal and cloud servers.
- Got an NPS amongst my colleagues of 8.7/10 (responses available).
- Hired an awesome team.
Although won’t have the chance (at least not in Skuola.net) to pursue some goals I wanted to achieve and enjoy, like:
- Introduce effectively NoEstimates.
- Extend effective retrospectives company-wide.
- Keep growing the team (quantity- and quality-wise).
- Implement DDD, CQRS and Event Sourcing.
- Switch to Kubernetes & Chaos Engineering.
But as we all know, all good things must come to an end, like my previous experience abroad, it was necessary, it was good and I just moved on and came back to Italy. Next one, now this one too.
Don’t get me wrong, it was a good (rollercoaster-y) time as CTO, although it was going to happen, it was meant to, but why? There’s no just one reason.
I so long dreamed of being a CTO, stepping all the way up the ladder. Truth is that was a change of career, not a “level upgrade”. With the “promotion” I had to start over and focus on the business part, on the product, on metrics, on the processes, and last but definitely not least on the people. It was challenging, it was fun sometimes and it was pain some others, but that was part of the game.
I did grow so much with this experience, I worked hard for it, I worked hard in it, I’m glad I took the job, I’m glad Marco trusted me back at the time, I’m glad I found some amazing people in my team and in the company, but I’m glad I left too.
We managed to pair all the tech tasks achieved with real business needs, so the company was pushing value, faster and faster, to the customers, while the IT was adjusting, growing and evolving architecture and infrastructure.
Despite the fact that Skuola.net is a small company, with less than 20 people, and being “flexible” and “adaptive” to market needs, all the processes and procedures have been “normalized” in the past year, some went smoothly some other not so easily. We did manage to keep the communication flowing across all the departments, regardless of the overall receptivity of the ideas.
With a “kaizen spirit” in mind, I started to monitor all the possible improve points and then take actions accordingly. After monitoring and keep improving I decided to share those metrics and the approach followed with some slides and a speech at a local meetup.
I left this legacy to Davide Dell’Erba who is promptly guiding Skuola.net after me, and will have fun pursuing on those goals 🙂
Also, the fact I’ve been on-call 24/7 for 3 years kinda took a toll on me, I needed a break, I needed to unplug and detox a bit.
Then Charity Majors really got me thinking, it was true to me and I needed to act “quickly”, timing-wise I was still in, so back to engineering, my roots, my passion. There’s no final decision nor hard-no going back to management, for sure not right now.
I was so deeply committed to my role as a manager that I went, unfortunately, radio silent for years:
I became more active and involved in open-source the last period of Skuola.net as my dev passion kicked back in.
I also focused a bit more on security, it was long overdue in my todo list, I attended many courses, also thought of a change of direction and jump from programming to cybersecurity. For now, I’m staying in the “safe harbour” of programming.
During this pandemic, I had the chance to grab a bunch of free deals and followed over 20 programming courses (some here and here). I felt I needed to get “back in shape”, even though in the last 3 years I wore so many hats that, I believe maybe, I became “good enough” on many areas of the IT dept.
I felt like a Jack of All Trades and a Master of None, and that gave an edge while being CTO, and will also give me an edge as any other role, as the T-shaped mindset is more flexible and adaptive, but the daily role juggling was something I needed to change or at least adjust.
Back in Sep ’19 I certified myself as AWS Solutions Architect, and I was working daily for a while on the infrastructure and architecture of Skuola.net, also because of my role in helping my dev colleagues to work in a better and smoother way, I naturally fell in love with DevOps.
I’ve started to “question” myself, built a Don’t Know List, went back to basics and challenged myself, and planned to keep doing so over time: I started some programming challenges on HackerRank. I challenged myself with 2 consecutive year plan and trying to stick to them to get the most out of the spare time I have.
So, in the past few months, I proudly produced and/or contributed to:
- Common Utilities
- COVID-19 Spreading in Italy
- Developer’s Learning Path
- Nginx & Lua Docker Container
- Practical Estimates
- Tech Test Checklist
I’m sure that more ideas and projects will come in the near future 😉
If you’re wondering what resources helped me the most in surviving and taking control even more in the C-role, this is my list for you:
- A Crystal Ball to Prioritize Technical Debt – Adam Tornhill
- Accelerate – Nicole Forsgren, Jez Humble, Gene Kim
- Andreessen’s Corollary: Ethical Dilemmas in Software Engineering – Bryan Cantrill
- Congrats! You’re the tech lead – now what? – Eryn O’Neil
- CQRS and Event Sourcing – Greg Young
- Depression and Burnout: the Hardest Refactor I’ve ever done – Jérôme Petazzoni
- Growing Software – Louis Testa
- Learnings from 80 startup CTOs
- Making Work Visible – Dominica DeGrandis
- Managing Humans – Michael Lopp
- Managing the Unmanageable – Mickey Mantle, Ron Lichty
- Mixed Paradigms: The Method to Madness – Venkat Subramaniam
- NoEstimates – Vasco Duarte
- Rethinking the Developer Career Path – Randall Koutnik
- Software Architecture vs. Code – Simon Brown
- Surviving being senior (tech) management.
- The Art of Being Right – Arthur Schopenhauer
- The Art of War – Sun Tzu
- The Critical Career Path Conversation – John Riviello
- The Manager’s Path – Camille Fournier
- The New Manager Death Spiral – Michael Lopp
- The Passionate Programmer – Chad Fowler
- The Twelve-Factor App
- ThoughtWorks Technology Radar
- Your ultimate guide to Minimum Viable Product (+great examples)
I thank Giulio for this new challenge, of joining Radical, having good time and letting me grow even more.
Let’s do big (coding) things now! 🚀