Following up on our semi-monthly agile42 newsletter feature titled “Meet the Coach”, we asked some questions to one of our coaches from Italy, Roberto Bettazzoni. Thanks to his solid programming background Roberto often coaches development teams starting with Agile or DevOps techniques. He is one of the leading figures in the Italian DevOps community, and he recently co-organized IDI 2015, a one-day event sponsored by agile42.
What is your background and how you started with Agile techniques?
I have a technical background: I started programming in high school, I wrote my first commercial program when I was a freshman at university and since then I’ve always coded for work… and I like it. In the years I discovered that I appreciate teamwork and help others to code. What I like most in my work is learning new things.
Regarding Agile techniques, I don’t have a clear answer, because at the end of the 90s, or maybe first years of 2000s, the techniques that we now call “Agile” were not seen as linked: we used unit testing, refactoring… because they were the most efficient programming practices. The first time I heard the adjective “agile” applied to software development has been in 2002 or 2003. In particular I remember the XP2003 conference in Genoa where I discovered eXtreme Programming (XP) and Lean software developments practices from the authors in person. So I decided we needed to test XP as a methodology and I persuaded an Italian firm to try it while developing a solar electrical plant monitoring tool. It was a success and that software is still operational.
You have recently helped kickstart a new team at a startup, what do you think it’s needed for a proper Agile approach on a new project?
Now, as in the past, what is needed are knowledge and team effort. Development of software, especially modern software, requires a variety of skill sets and, even if members of your team hold a number of them, it’s nearly impossible to deliver something when you’re less than 4 or 5 people. When you have very skilled people that work together, efficient communications become fundamental, and misunderstandings and tensions inside a team are very dangerous. In this light, my opinion is that nothing is more important than transparency, everything should be accessible to allow a real “informative pull system”: everyone should have access to all informations in order to check, discuss or edit.
DevOps and Agile, is it a perfect match or something that needs to be further developed?
We are just at the beginning. DevOps is a movement, started from specific needs but so far it doesn’t have a clear identity, also because, in my opinion, such a definition could not exist. There is a technological common thread between virtualization, parallel testing, continuous deployment, microsservices, low-cost scaling IT infrastructure, SaaS, PaaS or IaaS … the technological links are quite clear, but I don’t see yet some “value” or “method” that can glue together this technologies and practices.
Moreover, the DevOps world needs to overcome cultural barriers originated by the prevalence of individual work over team-based efforts. Anyway a community is forming, gathering around practices and tools. Somehow it reminds me of the Agile movement at the beginning, because at conferences you can feel a sharing spirit, looking for working solutions and the “what is needed to solve our problem” attitude, that is a bit lost now in the Agile community once the movement got mainstream and started to be adapted to different needs (and I should stop here because I don’t think it’s politically correct to say “corrupted by incompetence and by big companies”). Price of success, because currently Agile is the only sensible way to develop software.
What is a recent technology, or development, that you got interested into?
In the Agile area I’m interested in how to optimize the Continuous Delivery practice in Scrum. It’s not so obvious when you have teams that continuously deliver value directly to the customer. The testing and the review phase is challenging, but it works and it gives a great advantage to the customer. On the tech side, I am constantly interested in development techniques, at the top of my list right now I have [micro]services orchestration and functional programming.
The orchestration of services rose some year ago as a need due of the great number of processes and services running in the enterprise level software. I first meet the problem 4 years ago with a massive parallel testing environment. Now the virtualization and Docker allows to have hundreds or thousands of small and specialized services (microservices) to form a complex, scalable and reliable enterprise system. The problem is the orchestration of all the system.
Functional programming is something quite dated and an old passion of mine that never died. Nowadays, thanks to new efficient languages with high-level powerful semantics, it has become very interesting and ready for mass adoption. I find it a very good solution especially for designing the microservices I mentioned.