Showing posts with label SDLC. Show all posts
Showing posts with label SDLC. Show all posts

Thursday, September 17, 2009

Agile vs. Waterfall: A Personal View

Ok, before the town halls start and people start screaming about what their favorite software development methodology is while drowning out the opposition, let me say that I do not believe that one is necessarily better than the other. Let's face it - if this was a perfect world, no methodology would have to exist. Programmers would hear and understand the request from the customer immediately and quickly crank out the perfect software application in response to the request. Now we come to the real world and we all know this will rarely, if ever, happen. (if it has, please tell me about it!) This would also put Project Managers out of work.

Recently, I engaged in a discussion with a colleague regarding the Agile vs. Waterfall methodologies and came upon what I like to call The Agile Wall. According to this colleague, there is nothing good about Waterfall. If it isn't Agile, it's crap. And so on. I've encountered this before and it shouldn't surprise me any more but I do think Waterfall has it's place. Now before you go yelling your head off, hear me out...

There is a time and place for everything. In my opinion, it is important not to blindly adhere to a single methodology without taking in a comprehensive view of a new project. Each project is different and there are many factors which should be taken into consideration before defining the process to be applied.

Here is a high level diagram of how complexity of the project should be considered when choosing which methodology will be the correct choice for a project. The problem of this picture is that there are projects that are landing in the "High Complexity" range which do not react well with Agile methodology and end up with poor results. By the same token, a low complexity project which has been bogged down in a Waterfall will probably be just as problematic. The sweet spot for managing a development project is ensuring that complexity is reduced by creating phases and sub-tasks, and applying a hybrid methodology to address development which is beyond the ability for a pure Agile methodology to address.

The real trick is finding the right mix. Agile is a fantastic methodology for very small, low complexity projects, especially when working with small teams. When the project grows to be something more than that, with more stakeholders and more requirements which may be codependent on one another, the advanced legwork of requirements gathering can really end up saving time over the long haul. However, breaking those complexities down into smaller chunks that can be applied in an Agile method can be done to save time and effort overall.

Waterfall can be time consuming and can seem like a waste of time. However, a complex environment can sometimes benefit from a good solid design effort up front. There is also a lot less likelihood of "cowboy coding" resulting in spaghetti code that has been churned out via Agile and Extreme methodologies (have you ever tried debugging some of this stuff??? Ugh!)

So, my advice is that at the beginning of the project, stand back and take a good look at what is to be accomplished. Weigh the triple constraints (scope, time, budget) against the complexity of the project, know your expert teams, and be realistic. Reduce your complexity and apply the methodology to your project, not the other way around. In the long run, you'll be glad you did.

Sunday, September 13, 2009

My Thoughts on the PMP Exam Review

I'm really excited about the weekend review seminar I'm taking for the PMP exam. Like anything, I questioned whether the value would be worth the expense by doing my own personal cost benefit analysis (yes, I apply these concepts to my personal life as well.... :-) So far, I like what I'm seeing. I've read the PMBOK (both 3rd & 4th editions) and have been applying the PMI methodology in my work for years. The intent of the class is not teaching project management, but focusing on passing the exam. This is exactly what I needed. I was a bit worried that it was going to be a PM 101 course but instead it's focused on helping experienced PMs focus on the exam. We are using the Crosswinds class materials (about 50 lbs of books, cds, flash cards, etc) and in addition to the presenters, it appears to be a great value add to my studying.

I also had a great time meeting new people and engaged in some very interesting side conversations with other PMs with similar experience in software development. One of the most interesting conversations related to the Agile vs. Waterfall methodologies used in SDLC. I anticipate that I will go into more detail about this in my next post, but right now I need to go study and do my 'homework'.

Tuesday, September 8, 2009

Keep It Simple and Communicate!!!

Having worked in the IT industry now for about 15 years, starting as a developer and most recently as a manager, I have to say that this little snippet from Youtube summarizes the issues and risks better than any 300+ page book I've read to date.

http://www.youtube.com/watch?v=OfgfnZZdMlI

This definitely applies the KISS principal to describing the potential pitfalls encountered with many stakeholders involved in a development project. Well done!