Sergey's blog

Follow me on GitHub

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 forward20 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.