Posts

Showing posts from February, 2009

Stack Overflow #41

Oh, hey! I got a small mention in Stack Overflow Podcast #41 . It was a quick mixed reference to my Object Mentor blog entries Curly's Guide To Software and Outliving the Great Variable Shortage . It's not much, but I'll subtract three or four seconds from my fifteen minutes. :-)

Global Variables

Know what I hate about global variables? Besides "everything", I mean? Seed And Harvest is evil. Globals propagate the seed-and-harvest idea which makes the existence of globals even more odious.

More Remote Pairing

Image
Some days it is a struggle. My network disconnected and reconnected a few times. That made me lose my session and have to restart. We determined the dark background that looks great on his screen was causing trouble, and had real issues getting VS.NET to return to white background defaults. Was much harder than one would suspect. Got some code moved and checked in, got green tests. Explored nhibernate space to learn how to do some of our specialized queries. Noted some overkill queries. Overkill queries get every object of a given type and then throw away all that they don't need. These full-table-scans cause performance engineers and DBAs to break out in cold sweat. We're going to build/rebuild some NHibernate chops and chase these down with an axe. Observation: almost all the NHibernate articles I found through google are tutorials on writing the XML (or appear so at a glance). Not a lot of them are about using it to do anything. I guess the tail does wag the dog somet...

Remote Pairing Day 3

Pairing from my house, using my broadband today. Took extra time to get set up, because I didn't have an office all squared away. Not yet. We're working on it. Today it's the dining room table for me. I was concerned because we had a late drive last night and didn't get as much sleep as usual. I didn't make the agreed upon rendezvous online, so my partner was left waiting. Again. This cannot be a pattern for me. This whole experiment is dependent upon us being able to conduct meaningful work from a distance. Tonight, more sleep, sooner waking. I don't want to flip a bozo bit. This morning, I tried using WebEx and skyping from my Ubuntu box for video. Skype installed okay, but will not use my logitech webcam. Ekiga will do that, but my partner apparently is firewalled in from stun servers and can't connect with Ekiga. That's two or three programs that we can't try because of that. Maybe we can get the admins to open a port or two for us. ...

Remote Pairing Day 2

I'm in a new position, and it is part of the deal that I work from home. Anybody's home. I'm learning the art of remote pairing, and will give some pointers here as I explore the space. Tech Today I want to mention some technology we're using. So far I've tried a few free remote solutions, and found them to be awfully laggy and troublesome. I'm so open to an open-source solution or two. So far I've done the A/V portion using google chat extensions and skype. Of the two, I had google drop out less and they both keep up to date pretty well. I was happy that there wasn't a lot of lag and pixelization with either. The video is grainy, but it does help to have facial expressions in a discussion. The screen sharing we've liked best have come through commercial services LogMeOn and TeamView. We've been using the free trial editions, and both seem to work very well. By "working well" I mean that Connection isn't dropped too often There is n...

Pork Barrel Agile Failure

So here is a failure mode I finally had time to think about. I saw a version of this play out, but here's the basic idea: The Customer doesn't get as many stories as he'd like, so he pads the story with functionality that has a lot of leverage. Then when it's done, he can use it many different ways. This makes it a little hard to see the original user request in the fluff, but it does accomplish its original task (too). The story is too large, but it is pushed to development, and developers take it on by sending a few guys offline to work on it for weeks/months. In the meantime, a developer realizes that this feature is considered critical, so it has to be pushed. He has other features he would like to ship, but they're not related to this one. On the other hand, if he can sneak in some of his feature into this story, he is assured it will be released. This makes the story later, so there's more overtime, and it takes on more testing risk, but it's a g...

Agile via Sound Bites

There was a long, multiparty discussion on the XP mailing list recently. A fellow was struggling with some issues about self-managed teams and taking direction from the Customer. There was a lot of misunderstanding going on. It reminded me that Agile is something that takes some training and coaching. I'm not currently in the "agile coach for hire" business currently, so I'm not just drumming up work here when I say that any team considering a transition should hire a good coach. Hearing a few words about agile at a convention, reading an article or two (or a few newsgroup posting, God forbid!), or watching a video lecture are not sufficient training for agile practice. Agile software development is clearly not brain surgery. The ideas are simple and deep. The problem is that the sound bites are pithy and (to the outsider) pretty shallow-sounding. The case in point is that the mailing list participant had the entirely wrong idea about what a self-managing team...

Clean code: Writing Functions

Uncle Bob writes an awful lot of code. Not all of it is in his Git repository, because he is also a consultant/coach and writes code for his customers. Here he describes the current state of his practice regarding writing code that is clean. Clean Code Talks: Writing Functions

The SOLID principles as motivational posters.

I want a full set of SOLID motivational posters for every client, employer, and beloved code influence in my life.

On python not scaling well

Yeah, right

Coding your way out of Fear Of Change

You can avoid many problems with process elements that are conceptually simple. You have to set a coding standard and stick with it (one that your tools support). You have to have a reliance on automated tests. You need QA to vet that automated testing, rather than substituting for it. You need constant refactoring to keep the code in its simplest state. You need pair programming so simplicity and readability will trump individual taste. You probably need some pre-commit triggers in your version control. That's nice for green-field development, but what about the rest of us? If you are already in trouble, you have a long road ahead of you. You should get a copy of Michael Feathers' excellent legacy code book. You should also get a copy of the clean code book. Having copies of Refactoring is a good idea. Education is a start. Have them read. Have them presented. Organize brown-bag lunches or catered pizza buffets. You will need to start a program of improvement concurren...

Code Doesn't Lie

I'm learning my way through Pylons, which really is very simple (so far) but the tutorials are all wrong in different ways. Even different versions of the same one. One will reference sa.something or orm.something but never import or define 'sa' or 'orm'. Others refer to things without prefixes, but show imports "as sa" or "as orm". Yet others leave out whole sections of code to type. That's the problem with docs, even the best of them. They lie. They may not have lied originally, but eventually they lose touch with reality and begin to say things that are not true. I don't know the editing snafus that lead to several copies of the QuickWiki tutorial all being wrong, but I know that it takes extreme vigilance to keep a document from going south. And I know that as you re-edit, you begin to be less wary. You start to read what you meant instead of what you wrote. I'm sure this is the same case. The subject matter is quite sim...

Looking for interesting work

I'm currently looking for some interesting work in northeast Illinois or southeastern Wisconsin, or possibly some minimal travel + work-from-home. If you know of some good people needing an agile/TDD mentor you might be interested in my resume. In the meantime, I'm putting some time into building up my web development skills with python and pylons , the book project, and setting up an Ubuntu server for my church .