Monday, July 06, 2009

Jeff and I were have a discussion on Twitter last month around 37signals' "Getting Real" philosophy. Specifically, Ben's post initiated the conversation, and his post was based on this one from Signal vs. Noise. What we were discussing was how the "Getting Real" philosophy applies (or doesn't) to other organizations that have justifiably complicated problems to solve, or have to work with legacy systems, or have to deliver up front estimates on work to be completed, or have a QA team.

My point was that ultimately, "Getting Real" is delivered in an extremely prescriptive manner by the folks at 37signals. Their philosophy is contrived in a vacuum that they've built with well-packaged and well-priced software, which I'm sure they worked very hard to create, but, unfortunately, that model isn't in the stars for everyone.

Eventually, our Twitter conversation ended on me promising Jeff a blog post on why I thought "Getting Real" does apply to large scale development. The reason is that we need to stop thinking that large scale development is necessary. Just because the project may be relatively large, the development doesn't need to be equivalently large. The concept of parallelizing development with a large team to deliver a large amount of code for a large project all at once, is in my opinion, well... broke.

The only successful large projects I've been a part of have consisted of small development releases. Small teams focused on single or few chunks of functionality delivered in short iterations, with the team deferring as many of the decisions as late as possible. And this is where I think the "Getting Real" philosophy fits in really well, and works well even if it doesn't fit into the other aspects of the organization.

Take "large scale development" off the table, eliminate it from your vocabulary. Keep it short and sweet, even if the rest of your organization can't be that way.

With the "large scale development" mind set, the odds are stacked against you. You'll find that you've fallen short on what you've envisioned, fallen short on your timeline, and probably done some irreparable damage to your talented team.