Do You Even Agile, Bro!?
Today I'd like to touch on the subject
of agile software development. I've been working in the software
development industry for almost two decades and as I moved through my
career agile software development was gaining popularity, up to the
point where it became just a buzzword for many companies.
Let's start with little bit of a
history. In the early part my professional career, back in 2001, a
world away from my development roots in Belarus, a few developers got
together at a resort in Utah and published the Manifesto for AgileSoftware Development. Concepts contained in that paper
were considered a revolutionary ideas and initially mostly rejected by
those who in those dark ages followed the "waterfall"
process as the most popular approach to software development.
The
waterfall approach began with extensive research from which specifications were created. Only then was it permitted
that the work of writing code could begin based on those specifications. That process made sense
when computers were not personal, computing time costed a fortune.
All of that meant that you had to do a lot of things up front, on a
piece of paper (gasp!) and when satisfied with that paper coding on a
mainframe began.
By late
90’s as personal computers became massively accessible and
developers could experiment without any penalty at their own
keyboard, day or night, that type of process no longer make sense.
Especially when term "lean manufacturing" was gaining a lot
of traction, with Toyota leading the way with such success that the
Big 3 automakers trembled.
Software development was no different
and if you look deeper into the Manifesto and "lean
manufacturing" you'll find a lot of similarities. Life had only
begun to increase the rate at which it would throw surprises at us.
And our ability to adjust to new circumstances, new situations, and
new demands mean that we had to gain more agility to succeed,
no matter the industry. Never before was it more clear that it's all
about your people and interactions among your people, your rare earth
mines of new ideas and the ones who could overcome the obstacles along the path toward success. In this new world of constant
change and adaptation the Manifesto was born.
Fast forward 20 years, and you can't stop hearing "agile" again and again. It's becoming a buzzword and with that people often trying to transform that word into noun. How about verb? "Do you even agile, bro?". While it is common place for English language to transform words overtime. My position is that "agile" as a word is an adjective and transforming it into anything else will change it's original meaning entirely.
Fast forward 20 years, and you can't stop hearing "agile" again and again. It's becoming a buzzword and with that people often trying to transform that word into noun. How about verb? "Do you even agile, bro?". While it is common place for English language to transform words overtime. My position is that "agile" as a word is an adjective and transforming it into anything else will change it's original meaning entirely.
In the end, when agile software development is not clearly understood for what it is and it's original meaning is not enforced we get
only a slightly improved waterfall development process. It’s quite easy and common for institutions to value process over interactions, documentation over working software and so on. For those institutions following waterfall process, is safe, comfortable, predictable and they could budget it almost to an exact dollar.
Why do so many
companies not truly follow agile software development principles? I
think the problem for the majority of these companies that they fear
the unknown, they are scared of unpredictability, find solace and
security in “repeatable processes.” But intelligently taking
risks is where the real opportunity lay. You can plan all you want to
have a nice beach volleyball party tomorrow, but if it will suddenly
rain you are screwed. These challenges are unavoidable so is our
software development must embrace this deep fact of life. Otherwise
developers increase the likelihood they will build useless or
overly-constrained software which, though delivering results for a
while, will have to go through scalability pains and are potentially
easily compromised and dangerous because everyone care less about product and more about meeting process goals. The demands of process, deadlines,
and contracts dictating how that software is going to be developed
and work denies the quality and security, and ability to discover
innovations that are usually revealed through open, transparent collaboration
. Don't get me wrong I am not saying that let's run into the wild
without any plan. What I am advocating for is having a plan which
helps your team react to the unknown (both the positive and negative
unknown) faster than otherwise, helping your team to collaborate more
and produce solid results. The agile software development empowers
your team with authority to make decisions to find errors early and improve the product stability. After all it's a different way of thinking.
Agile software development is hard to
achieve and has certain costs associated with it, especially in a
well-established company with a lot at stake, producing software to
be used by thousands to millions of customers. It is also a lot of
work associated with changing how everybody, who is involved delivers
software. It’s can be a big change in mentality of entire team.
All that work and those actions will never make a "front page
article" and will never be properly recognized. That's where a
lot of companies struggle, especially those where non-technical
executives focused on their bonuses cannot see the need to have the
strongest possible foundation, both the foundation of the company’s
software products and, as a result, the foundation of the company.
These foundations are essential to the scalable and sustainable
success of the company’s products and the company as an organism
So, from executive to developer and all
in between; embrace change and challenge; champion the true agile
mentality and empower your team. Now is the time to adopt understand
the core principles of agile software development and embrace those principles.
And for those of you starting a new company, embed the agile thinking from
the start so that it can become part of the basic culture. Follow
the Manifesto. Have your team start with the proper attitude. Ans
as you do, keep firmly in mind that agile software development is not
a process, but a mindset.
Comments
Post a Comment