Dogs at work. Insane hours. Beer bongs in the break room.
Oh, the crazy days of IT yore!
If you were developing software when these were hot trends, you know there’s another legacy that’s not quite as fun to remember: failed IT projects. From extreme cost overruns to missed deadlines to projects that were cancelled mid-way through, the track record for wildly successful software development projects is less than perfect (see my previous post for more about that bad news).
But here’s some good news: software development has come a long way since the ‘90s! Instead of the traditional Sequential or “Waterfall” development process – which involved a long requirements gathering process in the beginning, followed by design, development and testing – many developers (including ours) now use the Agile or “Collaborative” development process.
I think of Agile as reality-based development because life, work and, well, software development, is all about change. (If you’ve been alive longer than five minutes you know that’s reality!) When an Agile approach is used, changes are easily accepted and adapted. In fact, with Agile, change is baked right into the process.
But don’t confuse change with confusion. Progress must be made and measured on a regular basis. When Agile is in use, progress is measured in “iterations,” which translates into a tangible work product. Multiple iterations provide the project foundation, with each one taking from one to four weeks to complete (two-week iterations or “sprints” are most common).
One of the best things about Agile software development is that it keeps all parties actively engaged and work gets done in the way they like best. Customers (or other key stakeholders) determine the priority order of the iterations and other key decisions. Developers – many of whom are Millennials that thrive on continuous feedback and teamwork – can deliver working software with each iteration. A classic win-win!
“There is pleasure in the pathless woods,” declared an 18th century poet. Maybe that’s the best environment for developing poetry, but software development works best with a clear path. That’s why Agile involves a work plan defining each step before any work begins, with plenty of flexibility for adaptation as changing circumstances dictate. Best of all, using an Agile software engineering approach adapted to an organization’s specific culture, history and staff means more accountability and less waste.
We’ve come a long way since the crazy ‘90s as Agile-based development is proving every day. (There may not be many dogs in offices anymore, but successful software projects don’t need to rely on gimmicks to distract developers from terrible projects!)
Next, I’ll share thoughts on what to look for and how to work with team members and partners.