ps. ruby sucks

respond_to?

ps. ruby sucks

  • Home
  • Archive
  • About

.net project structure and build time statistics part 1.

So, my current role has us dealing with a build, deployment and integration test cycle of about 2 hours. Given the 50-odd developers spread across 6-7 teams, this is not a particularly nice situation. Apart from it being a PITA, a feedback loop of this length results in plenty of negative consequences, a selection of which include:

  • feature branching (esp to mitigate cross team dependencies during a release phases)
  • developer multi-tasking (“I’ll just start this other thing while I’m waiting for a build… oh wait now I’m doing 3 things at once”)
  • difficult tracking build breakages (30 min builds mean commits bunch up - which one broke the build?)
  • large batching of code changes (“if it takes 2 hours to get feedback, I’m going to save integrating my work until its finished”)
  • forgetfulness (“I can’t remember what changes I made 2 hours ago that just broke the build”)

We get into a situation where we are no longer “continually integrating” our work, but moving back to the dark old days of hourly or nightly builds (or not at all!). Instead of speeding up, the teams are slowing down, releases become less frequent and quality inevitably falls.

So, considering the amount of lost development resource this was costing the company (2 hours times N developers = a lot of money and more importantly time), I was tasked with improving the situation in any way that we could. Some outcomes were possible, some not, some resulted in great improvements, others only minor gains. But it did mean that I did possibly more research into the MsBuild system, csc.exe, .NET assembly structures and Visual Studio project files than is probably healthy, in an effort to squeeze every last second of time out of the process.

I’ll present my findings, and a bunch of interesting articles I (re)discovered along the way in the next few weeks. In the meantime, and to help set the scene somewhat, enjoy this little gem from the man himself - Patrick Smacchia (creator of NDepend)

http://www.simple-talk.com/dotnet/.net-framework/partitioning-your-code-base-through-.net-assemblies-and-visual-studio-projects/

Dec 22 2011
Comments
Copyright © 2011–2012 respond_to? ‒ HD Exhibit Theme by Dustin Hoffman