The Agile method was the best thing that happened to me in my career as a developer. Before I came across Agile, one of my biggest frustrations was the difficulty I had with getting large assignments and breaking them down in little pieces. Usually, in the beginning, I'd be at full steam, really motivated, really excited, and rearing to go. This would last for a little while then the chunky middle part of the project came, some of the more boring parts, and before you know it I'm at a crawl. Then, when things are due in a week, full panic mode would commence and there would be ridiculously late nights followed by incredibly sleepy mornings, then sleepless nights all because I thought I had a handle on the scope and how long it would take to complete.
Agile was a new awakening for me. For those of us who aren't aware the concept is to plan your software development X amount of weeks in advance then break up that time into still smaller sections before you get started. The reason for this change is that seeing how dynamic and fickle the world of software and software development is it just isn't prudent to plan that far ahead. You go with the brightest and best new tools and concepts and three years later when your plan is complete it's mostly obsolete. Planning only small parts at a time allows for the ever changing industry. The unit of weeks that you choose to use is called an iteration. Each iteration you plan out exactly what your team will deliver when it is complete. Then as a group you break down your plan into projects. Then personally you break down your projects into tasks that are anywhere between .5 and 3 days long. You then have daily stand up meetings to discuss how you are doing on your tasks, if you are ahead, or possibly running into issues you can cut them off at the pass. There are all kinds of permutations like Scrum and XP, but you get the drift.
I myself took to this like a fish to water. No longer did it feel like I was sitting in front of a ton of unpeeled potatoes, I had something to accomplish today. Just one thing. Then tomorrow I have something else that will take me two days, then after that another day on something else. Honestly, I haven't looked back since, I could never go back to the old way of doing things.
Frankly, the industry hasn't been the same. Agile development lends itself to huge wins for well designed, awesomely developed software. However, nothing has surprised me more then the rumblings I've been hearing lately about how “Agile sucks, everyone said it was so cool and it just doesn't work.” “We have an Agile shop and they are four months behind and no one gets anything done ever.”To me, that's like saying “Water is a solid” or “Aaron Heilman is a dependable reliever,” it just doesn't make any sense.
So, I've done a little investigating of my own. An insightful email from a reader who goes by the name Abhishek Parolkar really got my brain churning. I asked myself what was consistent about the complaints I have been hearing. I had my Eureka moment a few moments later (sans bathtub)
See, what was making these Agile shops so successful and productive was not purely Agile at all it's a combination of some very key traits that allow for unfettered growth in technology and development. What the initial adopters of Agile had in common was that it was a “start up” type of idea. In other words, it was the small companies adopting this methodology, not the bigger firms. And this makes sense, because it's a lot easier for 5 guys to make a process change then 150 people of varying skills and specialties. We see this everytime a new software or tool that is popular among industry professionals. Like, right now it's Git and RoR the majority of the shops you will see focusing on these things are the progressive, smaller companies.
So, what else did these smaller companies have in common then the fact they were using Agile? Well, the time from approx 2003 on I think we will grow to view that as the re-awakening of the start-up. A little of the sting of the “bubble burst” had passed, people got some of their money back, and had some new ideas. The perks and the relaxed atmosphere and the focus on employee satisfaction retuurned. The developer as a species appreciates these type of places, it's our natural environment and the condition in which we thrive. Where our ideas are welcomed, where there is no pre-approval paper work, where there aren't 2 week long QA processes, where the hard part of implementing a great idea together is walking from the big white board to your desk without getting another one.
See, what's happened lately is the bigger IT departments have attributed this success and prosperity to the Agile process, when really they need to look at the minds that recognized this process as a great idea and what other things they think are important. Making a process change as big as a new methodology is huge, so most places with > 50 people are either slowly switching over or seriously considering it now. The kind of complaints I've been hearing are followed by statements like “Plus, my boss is such a dick he makes me subtract out my cigarette breaks when I bill” or “I just can't stand it everything they ask me to do just makes no sense and there is nothing I can do about it.” That's where the larger companies are loosing it, being an Agile shop isn't good enough. When your employee dreads Mondays no methodology is going to make them want to work hard for you, and therein you get no similar productivity boost as the other Agile shops, you may have better architected software, but the huge measurable profitability successes just aren't there.
What about Google you say? Well, they are the perfect example of how you do it correctly when you have a lot of people. They are a large company, however they run their development teams as a bunch of smaller more intimate groups. They take the time to make sure every employee loves being there, that their immediate needs are met and all their individual ideas are considered and encouraged.
So what's the moral of the story? Implementing the newest ideas is simply not going to get you the incredible department you have been waiting for. Sometimes, you can get caught up in pomp and circumstance about your “sophisticated and professional” team. However, your “sophisticated and professional” team of developers is hating every second, so you get behind, and you miss deadlines, and you get stuck in backlogs. Not because Agile doesn't work, but because when people aren't happy they don't care if your company succeeds or not. They care about their Saturday nights, or where they are going after work, or if they remembered to TiVo Heroes. So it's simple: when you care about your developers, they care about you and that ALONG with the best practices and tools are the keys to success.
I would contend that Agile methodologies are a new craze - their take up maybe, but DSDM has been around since at least 1995.
ReplyDeleteThe success or failure of using an Agile methodology is partly based on the attitude of management (supporting project managers, team leads, and developers) and how the methodology is employed within that organisation. SCRUM is great, in that it provides a framework that you can use to supplement existing processes that already exist (continuous integration, QA, etc.).
Stakeholders *must* be brought on board at all levels, so they understand the risks and benefits and can themselves be agile when the Agile methodology does not fit well with the business strategy. If one part of the Agile process doesn't work, don't use it - possibly embrace agility from somewhere else.
I would have to say that I agree, regardless of what process you use, if you aren't taking care of the needs of your staff, you aren't going to succeed. It seems a lot simpler to most members of management staff, We can use this new process and it will change things. Our production cycle will increase, and profits will go up.
ReplyDeleteWhile that could be true they don't seem to pick up on the same thing that workers have been trying to relay to management for as long as management has existed...Treat me fairly or find someone else who doesn't care.
It's simple math really, a given methodology of production can only give you X percent performance increase before you have added too much stress to the individual producer. At this point you really only have two options, push the producer harder, possibly endangering your current X percent production increase, or augment the producer in some way.
Whether that is in an incentive package to ease the mental or physical burden to said producer, or by adding X numbers of producers to offset the workload, performance numbers can only go so far before you need to change something greater than a meeting or a memo.
So to sum it up, I blame lackadaisical management staff for their paltry implementation of what could have been a great productivity tool.
I would say that in every situation out there people make processes work and not the other way around. Good people will make any process work because they cut to the spirit of that process and do the right thing. But there is always another group that applies any process in letter. And then it does not matter if the process is called Agile or Waterfall or whatever. A change in process has to come from within in order to be successful. Imposed process changes will end up just changing the label while people are doing the same thing underneath, a thing that is not the new process, wasn't the old process, but just something that helped them go through the day. Companies have their own culture established in time and this culture determines what kind of people are hired there and how they are educated after being hired. And they in turn reinforce the culture of the place. So I guess Agile can be successful or not based on the culture of the place. A while back I wrote a post about Agile adoption in the enterprise: a href=http://littletutorials.com/2008/06/24/the-agile-800-pounds-gorilla/The Agile 800 Pounds Gorilla/a. You might find it entertaining... or not. Good reads on your site, by the way.
ReplyDeleteWhen your employee dreads Mondays no methodology is going to make them want to work hard for you...
ReplyDeleteFor the win!
This is how I see Managers' mindsets:
ReplyDelete1. Steal Underwear.
2. ?
3. Profit!
What the hell, let's plug Agile into #2 and see what works.
Actually, I believe the reasoning behind breaking code into small iterations is so you always have a compilable, shippable product - Even if it doesn't do anything.
Meetings suck the life out of me. How can you possibly not feel the same way? Every hour wasted in a meeting is an hour you don't get to spend doing something fun - like coding.
Something to accomplish today... So if you can only see three potatoes, you don't care about the ton of them you don't see?
As for being four months behind... The way I understand it, if a shop is really Agile, they don't have deadlines. They estimate the time they need based on current velocity and give that to the customer. The customer does not make the dates in Agile.
I worked in an Waterfall shop. There were great perks and a relaxed atmosphere; employee satisfaction was easily accomplished because when you have good people building a good product, it doesn't matter what methodology you use - You'll succeed and feel great because of it.
What 2-week QA processes are you referring to? In the Waterfall shop I came from, elevates to Test were as simple as logging into the server and copying the files when the Testers were ready for code. How quickly that happens is a simple matter of how good your Testers are and how big your changes were.
At my current position in an Agile-ish shop, such elevates take a week of time, six hours of meetings, PM involvement, and half a bottle of Tylenol. After all, one must organize with so many teams (Dev, Test, Environment, Project Management) and document so much of the process. We actually have Pre-(Pre-(Elevate Meeting) meeting) meetings (http://www.zi255.com/?Req=PostPID=560). Whether the Company or Agile is to blame remains to be seen, but it's clear that you can have too much organization.
Maybe I'm more Cowboy than Waterfall, but I never had a problem implementing an idea before I joined an Agile company. Now I'm nothing more than a code monkey. The engineering and problem-solving have flown the coop, and what's worse: Agile has taken all the fun out of it. At my last job, I felt free to implement great idea whenever one occurred to me. I could whiteboard it and consult with my peers, if I felt like it.
Last job, Waterfall, small team (1-2). Completed project early and under budget. Current job, Agile-ish, huge team (60). Two years behind, 105,000 man-hours to go, and enough money left over for a tenth of it. They're now moving back into a Traditional methodology - they're afraid to use the word Waterfall - because Agile just isn't working. Make of that what you will; but these are strong Agile proponents saying it.
So I guess maybe you're right in that Agile works better in small shops than it does in large ones. I'll have to see if I ever work in a small Agile shop. I do dread Mondays now. This project would have been done two years ago if it were just architected right in the first place. They could have done it with six people.
So I guess the moral of the story is thus:
1. Start with a good idea.
2. Get smart people to do your Design and Development.
3. Make your people happy.
4. Methodology doesn't matter; but most Devs are strongly in favor of one type.
5. If you're not Google, you're probably doing it wrong.
I agree with you, however sadly have to play devil's advocate.
ReplyDeleteIt is one thing to know that projects should be properly scoped, and organized in such a matter that all nuances of the project are defined, with reasonable time lines, and functional build progression.
As a matter of fact, my business partner and I just last night were stating quite simply, you know what? it would be awesome to actually have the time to properly scope out a project, and build it without it falling into that last minute chaotic, oh by the way, can you do this? and, Oh and we forgot to tell you... or, oh. Well we actually visualized something completely different, will it still be ready on time even though we've completely changed what we want now, in comparison to what it was we initiated?
Yes folks... that is the nature of business in the real world. Gone are the days of the professor assigning something, and then we get marked on how well we do something - on a time line that is far too long to accomplish a task.
The fact of the matter is, I am a full on fan of the agile methodology - however... very few organizations - beyond perhaps Microsoft, Intel, Sun Microsystems - have the staffing, availabilities or man power to fully portion a project in chunks to ensure it returns on time.
It is the nature of IT to be up late, tired in the morning, and running at Mach II with our hair on fire.
It is the age old complaint of the technologist. It isn't likely to change with any new breed of technician, no matter how idealistic or optimistic we all (were) or may be for any given generation.
Glad you're enjoying it though... hope you can maintain.
Thanks Sara , for sharing your thoughts about conversation that we had.
ReplyDeleteI feel the term methodology of development help software salesmen more than the natural coders like us. While implementing any idea every thing to me looks fresh and naturally agile (not Agile as in Agile Methodology), Every engineering problem brings a question mark on how to solve it and I rarely found a process to attack any innovative problem.
I certainly agree with Slackmaster K's points.
I do respect and use the concepts of Agile @ work. But point to note is , the real essence of agile isnt conveyed to many who claim to be agile shopkeepers for only reason that majority of developers still choose agile because its turning out to be buzz word. I wonder how many devs can understand Agile without having failed many-many times in delivering solutions in other methods. On the other hand, how many can deliver good quality software in name of Agile without being ever failed even once. I am a software craftsman and none of my work ever evolved 100% perfect at first instant hence I believed in fast iterations (Am I Agile?)... At another times... I crafted innovative idea and didnt involve anybody and sat in black box till I had qualitative prototype (with buggy code)to speak for itself...(Am I not Agile?)
For a great surprise, every favorite piece of software I use is crafted by atmost one or two passionate programmers every body else just followed their steps... There was no process of communication/ development / QA. Because all that just complicate the innovation... We got to agree Software is a complex material when it comes to communicating ideas and explaining things to fellow mates when innovation is in pre-mature state. So the question isnt about agile methodology but about When does a methodology gains enough respect such that developer starts using it for his/her own software craft?
Isnt that the question that answers when team starts loving the methodology?
In my experience (I worked Agile consultancy for 4 years) you tend to get little outbreaks of Agile in an organization. There will be team of developers, business analysts and testers all cranking out good software and it will mostly be under the radar of the rest of the organization. Those projects can be successful.
ReplyDeleteTrying to impose something like that on a large scale is fraught with difficulties: some people don't like to collaborate at work. Engaging them to pair program is hard. Running an Agile project is hard anyway. Poor developers can take a lot away from a project when they are given the high degree of trust that an Agile project has. And it's not clear how to interoperate Agile development teams and operational teams.
(my pet peeve is the last one. We don't often think about things like deployment until it's too late)
However, with the right team and the right conditions, Agile can be pure magic.
BTW, it's losing (pronounced loo-zing), not loosing (pronounced loo-sing). E.g: If I loose my dog (by undoing his leash), he might run away...I can then say that letting my dog run free is a good way to lose him....
ReplyDeleteI need to do a writeup on RAD/Agile interoprability .and RADs impact on software industry.can you given some examples?
ReplyDeleteHow can i lean more how
If he wants to make some point about defying social norms or something else, so be it: just don't bring it into what is probably otherwise a great developer community.
ReplyDeleteI agree with Devo as well as some others above. I would add that it's more important to find a process that fits the product being asked for, the project team's ability to execute on it, and one that will underscore the stakeholders responsibility and ownership. Unless the Agile folks or the PMI peeps are sending a check or all the projects executed in a given environment really aren't new or unique, therefore not really projects, I don't see the point in absolute method inflexibility. More important than the method is an intelligent and creative project leader or manager. Managing a project is as much art as mechanics. :-)
ReplyDeleteA lot of people have been asking the question What is Agile Software Development? and invariably they get a different definition depending on who they ask.
ReplyDeleteYour blog write very wonderful, very good, can be posted to my page?I don't promise to ask you to stop.... But I can run with you.
ReplyDeleteFully agreed with your points on this post.
ReplyDelete