Forget Software. Agile Is The Latest World Muncher
A little while back, Marc Andreessen (yep, the Marc Andressen from Netscape and Andreessen Horowitz) made a super famous statement I’m sure that you have probably heard a million times now:
More and more major businesses and industries are being run on software and delivered as online services—from movies to agriculture to national defense. Many of the winners are Silicon Valley-style entrepreneurial technology companies that are invading and overturning established industry structures.
If you think about it – all content is now software – the blog you are reading is built on software, the computer I’m typing this post on wouldn’t run without software and you could argue (and I would) that some of the most successful business of today (and probably the next 5-10 years) will all be software. Look at Uber and AirBnB and their competitors – they are basically software companies with no real inventory – they simply connect those who need a service to those who can provide it. At their core, they are software. Algorithms.
If software is eating the world, then I have my own pithy quote:
Agile Is Eating The World
Although I’m sure that my quote won’t be as re-quoted as Marc’s was, but you never know. Let’s hope, right?
What do I mean?
If you have been involved with software development in any way shape or form, then you have probably heard of agile programming. Created in the 70s but not really popularized until the mid-90s, it promised a new way of developing software which for some things worked better than the old waterfall model.
If you’re not familiar with Agile, here is the short description from Wikipedia:
Agile software development is a group of software development methods in which requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. It promotes adaptive planning, evolutionary development, early delivery, continuous improvement, and encourages rapid and flexible response to change
So instead of a linear, top-down approach where you know exactly what you are going to build at the start by creating a super detailed spec, then handing it over to the developers to build, then they hand it back, usually late, over-budget, missing key features and probably no longer useful since the market has moved on, you all do everything together, in short little bursts.
Instead of the product owner dictating what they want to build, everyone involved in the project, the developers, the designers, the product owners, and yes, even the customers, all get into the same physical (ideally) space and map out what the product is going to do. Everyone brings their ideas to the table and everyone has a say. The coders start coding early and often, and there are regular checkpoints along the way to make sure things are on track, and if any changes need to be made, they can happen early and with the full knowledge of the team.
So far, most people think that this works great. And it usually does, IMHO because it kind of emulates life. Life is change. Change happens all the time, every day. And any methodology which doesn’t factor this constant change into the equation will suffer when put up against real life.
So if Agile is so great for software projects – why can’t it apply to life in general? I’ve been thinking about this for a while: if agile programming works so well for software because it deals with change – why can’t we use agile programming methods to deal with life? All of the tools of agile, like the daily stand-up, could they not be used to live life better?
Why not use agile programming to reconnect with your family in a daily stand-up? Why not use it to help your kids? Why not use it outside of work to help you through life? If software is eating the world, and agile is eating software, doesn’t agile eat the world?
I just listened to a TED talk where a gentleman (Bruce Feiler) talked about using Agile (and SCRUM, an agile technique) in order to help manage his family better. As I was listening I thought – he’s right. Agile is much more powerful than just a programming methodology – it could be a way of life.
As such, here is my version of the Agile Manifesto, edited for life:
- Deliver useful things rapidly
- Embrace change, no matter when it happens
- Talk to people about how you are doing and where you are going often
- Don’t be a lone wolf – co-operate with others
- Trust people to do things
- Talk to people face to face
- Keep moving forward
- Do the best you possibly can
- Keep it as simple as possible
- Adults (and even some kids) can manage themselves
- Be nimble
Not bad rules to live by, don’t you think?