I’ve been a professional software developer since 2002 and worked for several software companies over the years - some practiced SCRUM, some used Kanban, some had a tailored made methodology and some didn’t have any methodology in place.
When starting with Agile a few years ago I found out that
“All waterfall companies are alike; each agile company is agile in its own way.”
Over the years I learnt to classify each company’s methodology using two factors:
And so I bring before you the four types of agile companies that I had the pleasure (in most cases) working for in the past:
I got to work for several companies that had no visible software development process - or had a process which made no sense.
It doesn’t necessarily means that those companies didn’t had a project management “methodology” – in one case we had a whole division “planning” and “tracking” the various projects. Unfortunately the beautiful chats and predictions never affected us developers, and other than reporting (read: lying about) project hours it didn’t bother us much.
It was chaos incarnated – no one knew what was going on. Some of us were overworked while others would drink coffee all day. After finishing each task I had to ask my manager what to do next and from time to time we’ve shipped a product.
And so we’ve worked hard on fixing bugs and implementing new features without real understanding of the overall picture.
After a few years I got to work for Uber company Ltd. (if you know me you might know which company I‘m referring to). We’ve created a new shiny project that just had to succeed (at least until it got cancelled), and as such we needed to use the latest and greatest of everything - including a new methodology called SCRUM.
Consultants have been hired, courses have been taught, developers and managers were trained and a lot of money has been spent to make sure that the project would be a great success.
I was hired a few months after that and when I got there all that was left was the bills and a daily meeting that took between 30min to 1 hour – which for no particular reason we had to do while standing.
My educated guess is that the company refused to change its ways and so all that was left were the ceremonies: the daily meeting, planning that was done first by the team, then by managers and finally not at all and retrospective that happened three times during the year I worked there.
In one of the last companies I worked for before becoming a consultant was a team that knew about agile – the manager had experienced SCRUM before and wanted to us it to build software. He had a clear understanding of what he needed and wanted and how to achieve it. He had SCRUM custom made to fit his vision and while some of the benefits were lost on the way the underline values were always there.
Since the team was willing we were able to add daily meetings, retrospective and backlog and while the company never really wanted our iterations we were able to build a methodology very similar to ScrumBan that made sense for us.
We had TDD, task boards (plural) and clear priorities and we managed to create value for our customers – fast while reducing technical debt.
It was not always simple or easy but we all had the same goal and so were able to find tools and methodologies that worked for us.
This is where I became an agile addict – this utopian company decided to go with SCRUM and managed to stick to that decision.
When we noticed that SCRUM didn’t make sense for customer support – we’ve used Kanban for opened tickets.
After doing SCRUM by the book for more than a year we knew where we need to adjust our methodology and what we needed to keep on doing (retrospective) we’ve experimented with different iteration lengths, we had XP practices (pair programming, CI, TDD) and continuous deployment.
We managed to be productive and effective, we had management who was willing to provide us time to learn and much needed feedback.
There you have it – four types of companies based on my (limited) experience – some were successful and some failed miserably.
If there is one thing I learnt is that you have to have intent and understanding in order to succeed with agile – I got to use agile in waterfall companies and I also so bad agile (and “no agile) practiced even when someone up the corporate chain decided that the company is an agile company – the decision rarely left the board meeting if the developers (read: those who write the code) were not on educated or in some cases even part of the process.
Labels: Agile, Thoughts