Why do any of us do this stuff? Why do we read so many books on the subject? Go to user group meetings? Fly across the country to hear people talk?
Why do you code? Seriously. I want to know.
Rory Blyth - Neopoleon.com - WHY DO YOU CODE?
Because I have to?
I code because I can. I code because I couldn’t not code.
I feel so at peace when my mind is immersed in building executable abstractions.
So, I saw all this stuff over on Scoble and Chris Sells’ blogs about Microsoft being full of ENTJ’s and wondered what the hell they were on about.
Myers-Briggs personality types; I took the test, apparently I’m an INTJ…
Well, the descriptions read about right; though I expect my Michelle and my sister might have something to say about them…
Further to my recent wailings about being responsible for family member’s PCs… I decided to deal with the internet connection sharing issue at the hardware level… So far the Netgear MR814v2 firewalled, DSL router, WIFI access point seems to rock…
The MR814v2 is a nice piece of kit. It’s a DSL router with configurable WAN MAC address; you can make it pretend its the PC you’ve always been connecting to your cable provider with and neatly sidestep any issues regarding re-registering your MAC address.
Eric Sink has an amusing piece on how his problem solving skills have been spoiled by Visual Studio’s F5 rebuild and run option. He obviously isn’t developing test first, because if he was then going for the instant gratification of a green bar is fine.
That’s one of the things I really like about test first; you’re encouraged to do the things developers like doing. Write a test and then you can just write the code and run it to see if it works.
Today the FX engine went into UAT. Well, the nearest thing we have to UAT; a user looked at it… 3 bugs, differences between the new code and the current production version. All slipped through our test coverage. :(
I had actually expected more problems. Two of these new bugs look like they’re related, which is good. The third is an easy fix which could be viewed as an unwanted feature… What I found most disturbing about the two bugs was being shaken out of the safe, controlled, world of test first refactoring into bug fixing a piece of code that had insufficient test coverage.
Although the other developers on the refactoring project agree that the code needs to be made better sometimes they don’t seem to bother to make changes in a way that improves things…
This week a major new piece of functionality was completed. I helped with merging the branch back onto main and started to sort out the release; then I realised none of the test harnesses compiled anymore…
The developer responsible for the new functionality had changed an interface and then failed to update the tests to test the change.
The rates engine was now easy to test but the interaction between the engine and the user wasn’t. This was unfortunate as the interaction is reasonably complex. We hadn’t built and tests for any of the GUI code yet, last week we fixed that…
The rates engine interacts with the user via two grid controls, a master and optional detail display and a cluster of buttons. As the live data changes the grids update.
By Friday our FX test harness was pretty much complete. We had coverage for all the nasty special cases that had caused us problems in the last few weeks. They were the hard things to write tests for so we wrote those tests first. If we can these these things we can test pretty much all of the FX engine’s functionality. Now we just need to add back the functionality we removed when we were chainsawing the FX code out of the GUI code.
We’re approaching the end of this phase of the poker game project. The client has started reporting lots of little things that don’t quite work how he’d like them to. Some are bugs, most are feature requests, either way there’s suddenly more of them than I’m comfortable managing with lists on paper and email trails. I decided that I needed a proper way to track these things.
I looked at Bugzilla but it looked like I had to invest thinking time in it; I looked at FogBUGZ and it didn’t.
Today we wrote some complicated FX business logic tests. Things like making sure that the FX library can calculate a EURUSDCAD 1M rate - it can; or a USDCAD ON rate - it can’t and nobody had spotted the fact that it was out because it’s way down in the 0.00001’s of the rate.
It has taken us around a week to get here. The initial code was a tightly coupled mess.