This time, we’re going to be moving away from technical topics, and have glimpse at some of the project management stuff that surround technical projects. It’s actually very important to have an understanding of these management styles, because how the project is management determines what kind of tools you’ll use, the way you write your code (TDD? Microservices?), and what your focus on development is (Testing? Automation? Abstraction?)
We’re going to be looking at one of the MOST commonly used word thrown around: Agile.
Back when I was in a small startup company, we had 2 managers who, in every meeting, would always say “We need to be Agile!” “We must make ourselves Agile!”. What I think they really meant was “We need to develop faster and push this to the market faster!”.
But Agile != Fast. So what is it?
What the heck is Agile?
The word Agile alone should give you a hint. When you think about agile athletes, you don’t just think fast. Fast is important, and a key concept of agile, or agility. But more so than fast, we need to be adaptive. To be able to make sudden changes in direction when the ball goes the other way. To adapt the the defence of the opposing team and form a new offensive strategy. More than just moving fast, we need to adapt fast.
And the term “Adapting Fast” doesn’t also mean just moving quickly into a new direction, but having the right processes, tools, frameworks and mental models to facilitate that movement. Without the right process, trying to move fast will cause you to fall flat on your face.
Mental Model of Agile
Customer First. It’s as simple as that. Be it a single customer, or the whole market itself, being Agile places that at the forefront, and gives it reins to the product development direction.
It’s having customers over product. That sounds really simple, but when you get down to the details, you need to look at the kinds of questions you’re asking before development.
“What do our customers want?” vs “What should we build?”
“What are the demands of the market?” vs “What the coolest stack to use?”
“How can we deliever to the customer faster?” vs “What tools does our team like to use?”
Focusing outwards rather than inwards, at the paying customer rather than your own preferences.
Feedback and Validation
After having the right mental model, we now move to the right work process. What sort of processes do we need to incorporate to be Agile?
Key to this Agile process is getting feedback, and getting it fast. We’ve heard of Scrum, Sprints, Cycles, all of which last typically for 1 or 2 weeks at most.
This quick feedback cycle is extremely important, because if we look at the mental model of putting the customers first, it entails listening to the customers, and listening to them very often. Feedback and validation allows you to listen to the customers, and adjust your product development accordingly.
Gone are the Waterfall method days, where everything is done in big chunks. Requirement Gathering, Design, Development, Verification. By the time you reach the verification stage and realize what you build wasnt what the customers wanted, you’ve already wasted months and months of effort.
Agile and DevOps
I won’t talk too much about DevOps, because it’s a massive chapter on it’s own, but Agile and DevOps are very much interlinked. DevOps promotes the culture of multiple code commits a day, quick implementation of code from development to production, and other things like monitoring and feedback, which are exactly what facilitates the Agility in Agile (weird, I know).
DevOps requires a set of tools, processes, and its own set of mental models to promote their 3 Ways of DevOps
A framework is a set of tools and well-defined strategies to approach a problem. A framework allows you to tackle the problem systematically, and there is a smooth flow between different stages of work.
In Agile, there are a few frameworks, and the most famous of all is the Scrum framework. An intro to Scrum is also a super heavy topic, so I won’t go deep into that. But aside from Scrum, we have other frameworks such as Extreme Programming, or using Kanban, which is also another very popular Agile framework.
Adopting a certain framework sometimes requires you to adopt a certain set of tools to faciliate that framework. For example, adopting the Kanban approach requires you to use the Kanboard tool.
So, what the heck is Agile?
With Mental Models, Frameworks and Tools mentioned above, we can define Agile as a Characteristic of a company, while the Frameworks like Scrum and setup like DevOps are the enablers of that Characteristic.
Agile is not a tool, it’s an emergent feature from the adoption of various processes like DevOps, frameworks like Scrum, and mental models of putting the customer first.
Being Agile is being able to respond to the market fast, and what makes you fast are the underlying tools and processes.