Friday, December 12, 2014

I saw Jeffrey Palermo speak on "Iteration Zero" at the Austin .NET User Group Monday night.

Iteration zero is, as the name suggests, a leg of work before the first iteration of development on an application. It conceptually has a let's-set-things-up-right theme to it and it's sort of akin to laying down that blanket in a field before you set down everything else in a picnic as if you skip that step and just set food on the ground you may find ants crawling into the jam. There are things you can do upfront to set yourself up for success and if you just skip these things... the bugs get in. Jeffrey touched on the six pillars of Software Configuration Management as suggested in "Configuration Management Best Practices: Practical Methods That Work In The Real World" by Bob Aiello and Leslie Sachs which are:

  1. Source code management
  2. Build engineering
  3. Environment configuration
  4. Change control
  5. Release engineering
  6. Deployment

Only the first half of these really have to do with iteration zero. If you squint your eyes this first half (as a whole) should look like continuous integration to you and perhaps half of the talk focused on continuous integration. Jeffrey name-dropped another book: "Continuous Integration" by Paul M. Duvall ...JetBrains TeamCity is what his company Clear Measure uses for checking to see if a build script needs to be run every sixty seconds and then kicking off builds when GIT repositories have indeed changed and the Psake PowerShell approach to build scripts of James Kovacs is his preferred way of doing what everyone used to do with NAnt. There was a chunk of the presentation where Jeffrey showed off his canned, tweak-me-from-project-to-project Psake script which you can see for yourself here, and there was a chunk of the presentation where Jeffrey spoke to good practices in setting up a folder structure at a GIT repository (put the source code in a "src" folder in the root and not directly in the root itself), and there was a chunk of the presentation where Jeffrey went over the benefits of Onion Architecture. A lot of this is his "greatest hits" stuff covered elsewhere already on this blog. So what did I hear that was new?

  • He suggested that AliaSQL is the new Tarantino Project. It looks like you may get it at NuGet. This touches on what that's all about and why you should care.
  • Entity Framework 7 will not support anything from the prior versions. It will be a completely new animal, and with regards to the Onion Architecture this is a perfect example of why you should decouple your data integration from your core logic. MVC6 is going to be built out on top of the Web API stuff and will abandon the prior MVC architecture leaving no way to upport (making my own word up) the prior versions of MVC to it. This is a great reason to decouple your user interface implementation from your core logic.
  • Trello was suggested to be a good Kanban visualization tool as was JIRA, though JIRA sorta sounded second best.

In circling back to "Iteration Zero" thematically, the things to do upfront before you start writing code for the stories in the first sprint are:

  1. Set up your code base with the Onion Architecture.
  2. Set up source control for your code base.
  3. Set up continuous integration and use a tool like AliaSQL to roll out database changes as a part of that.

No comments:

Post a Comment