|YaK:: WebLog #535 Topic : 2006-07-07 22.35.41 matt : imeem job over, looking for new work||[Changes] [Calendar] [Search] [Index] [PhotoTags]|
|[Back to weblog: pretention]|
My eXtreme Programming Lead job I've been doing for the last 6 months has come to an end. I was able to help them accomplish some really cool things, like:
An almost-continuous build. I say 'almost', because we never got the deployment steps (obfuscating the binary and putting into a private release area) into the build. I was finally able to do something I've been wanting to do for a while, though: fail the build on lowered code coverage. Using CruiseControl.NET and NAnt , I configured the automated build to compile the code and run all the unit tests. I then used NCover and NCoverExplorer to measure the code coverage of the unit tests, and compare the code coverage against a configured watermark. If the compile, test, or coverage comparison failed, the build failed. The NCoverExplorer author actually added a console app for these purposes and I acted as customer and got him compensated for his work.
The beginnings of Test-Driven Development were started with a few key people. There were a handful of engineers who were very interested in applying TDD, and they were truly a joy to work with. We never got much beyond writing failing tests for bugs and then making the test pass by fixing the bug, but the coverage measurement in the build helped motivate people to at least check in unit tests for new code written.
The most interesting part for me was applying Refactoring and Design Patterns to legacy code. While frustrating at times, it was kind of like being a detective and reverse engineering the intention of the person who wrote the C# code so we could safely refactor and preserve the intent. On some levels, it was great fun, especially when pairing with the aforementioned engineers. The increased stability, robustness, reuse, and ease of debugging having a positive impact on customers (via quicker bug fixing, less regressions, and quicker/safer adding of features) was a really good feeling.
I implemented remote pair programming once again for pairing with remote developers in a different country. This time we used MSN Messenger and iChat for audio chat, and MSN Messenger and VNC for remote desktop view/control. It wasn't plagued with as many annoying NAT-related issues as when I did it with BugScan, but we did have fun with the ssh tunnels there for a while. It started off great with very positive results and I hope it continues now that I'm no longer there.
Overall, this experience has proven even further to me the value of staying agile and "paying as you go". I also now understand why XP is so prescriptive -- you really need to be doing all of these things all the time to yield the giant leap forward in productivity. I forget which book it was, but it said something like "If you can't do pairing, TDD, or ruthless refactoring all the time -- that's fine -- just don't call it XP." That's not to say something looser, like Scrum, is bad or inferior -- one just has to choose the best tools and process for the job at hand.
Anyways, I'm looking for similar agile/XP/TDD/patterns coaching/coding, mono/C#, static and/or runtime code analysis, and automated build contracts. Here's a link to my resume -- please send it to anyone you think might be interested. I'd also be interested in reverse engineering and vulnerability discovery work, if the price is right. I'm open to other things too, feel free to email or call me with your ideas and contacts! :)
Discussion:showing all 0 messages
|(last modified 2006-07-07) [Login]|