In doing so, I had to really think about why exactly I think waterfall is bad.
The feedback loop
It really came back to one central thing for me, which is the length of the feedback loop. When we are using a waterfall process for software development, the customer doesn’t really have a chance for feedback until the end of the project. Even the testing is done at the end of the project, so that feedback is coming very late.
The biggest strength Agile gives over Waterfall, is the tightening of that feedback loop. The quicker you can get the feedback, the quicker you can respond to it and the less time you spend going in the wrong direction.
From a programmer’s perspective, think about how many of us used to write code before the tools came along to help us, and before we knew any better.
Write a bunch of code for 2 hours
- Run the compiler
- Fix an error
- Repeat 2-3 until all errors are fixed
That wasted a large amount of time. Especially when we had some syntax wrong that affected large portions of code.
Using a modern IDE, we are able to see syntax errors getting highlighted the second we type them. We can start to type a method name and auto-complete can take over and offer us suggestions. It it difficult to write bad syntax because we are getting constant and immediate feedback as we write out code. The feedback loop is so tight that we don’t even consider compiling to be a separate step. There are even some IDE plugins which will continuously run any unit tests which may be affected by your code change in the background as you are making the change.
If the modern IDE experience is Agile, then Waterfall is punch cards.
Taking the best of all
So, here is my prezi presentation. Please give feedback if you have some. Remember this presentation is designed to be a very basic beginner’s guide to why someone should choose Agile over Waterfall. It is not going to go into very detailed topics about Agile.
Also, at the end of the presentation you will notice that I suggest taking some of the process of Scrum, and the XP best practices, and running Kanban using those guiding principles. I currently believe that is the best mix of what Agile has to offer.
Went to Boise Code Camp this weekend and it was great!
There were some really good sessions and good discussions on Agile, Scrum and domain specific languages.
I think events like these are important because they help us to zoom out a little and see what kinds of things other people are doing in our field and what companies around us are interested in high quality software.
Code camps are also a great place to get some experience doing presentations and share what you are working on. Networking opportunities abound.
I presented two talks this weekend. I am posting the links to those here.
The first presentation I did was on Pair Programming.
You can find the presentation on Prezi here.
We also did a live pair programming session, which I thought went pretty well. We ran into some of the issues that often come up with pair programming, like being afraid to tell someone you don’t like their method name.
The second presentation I did was on Creating an Internal DSL for Automated Functional Testing.
You can find the presentation on Slideshare here.
We went over how to go about creating a good automation framework which fills in the gaps between the business language and technical language.
Thanks to everyone who attended.
As a developer who is often a technology evangelist, I am often doing presentations. Typically I will throw together some boring Powerpoint slides and try to get through them before people fall asleep. It is not that I am a boring speaker. I like to think I am a pretty decent speaker.
It’s a little thing I like to call “Powerpoint hypnosis.”
It seems that our bodies have been subconsciously trained to go into a deep sleep whenever we see Powerpoints up on a projector. It probably stems from an overexposure to boring Powerpoint slides, which has got us trained like Pavlov’s dog to instantly sleep when we see a slide. I am sure the number of ADHD programmers in the world also has some part in the effect.
Waking up from the coma: Prezi
I think I may have found a cure for Powerpoint hypnosis. I found this nice, little, mostly free, web presentation product called Prezi. I am going to be speaking at the Boise Code Camp on March 27-28 on “Internal DSLs for Automated Functional Testing” and “Pair Programming: How To and Demonstration.” I am going to try Prezi on the paired programming session and see how it works out.
I actually found the tool very easy to learn and work with. Although it has a few quirks, and there are some things I wish I could do with it, it may become my new presentation tool of choice.
Prezi allows you to create a lively presentation in which you can zoom in and zoom out to different parts of your presentation landscape. It also allows for the embedding of .swf files which can provide additional animation. I really like how it allows freedom to put ideas anywhere on the page and then fill in details and connect them together in whatever order you want.
It is web based, but also has a downloadable version of the presentation and the editor. You can also easily embed it in a blog or webpage. Which of course I cannot do, because I am on wordpress.com. I really need to move to self-hosted wordpress.org. Anyway, this is a very good tool that can help you give presentations that are more lively and “out of the box.” I highly recommend giving it a shot.