Thursday, May 11, 2006 

Book Review: Code Complete, Steve McConnell, V2.0

Due to the fact that our small company has grown 50% since I arrived, Flatirons Solution is attaching us new people (hired in the last year) with mentors. My mentor is my direct supervisor, head of our division, and the only other person working on Federal Content Management Contracts in the D.C. Area. Let's just say there wasn't a whole lot of mentoring options.

Since my mentor is a bonafide programmer, he recommended that I read "Code Complete," by Steve McConnell. The book is a great collection of recommended best practices.

As a software management-wannabe, I particularly liked the analogies for programming that Mr. McConnell emphasizes in the first 5 chapters. Specifically, managers often feel that programmers are simply labor to be exploited. "Why isn't Mary Programming? (WIMP)" is the principle that most managers and clients have. The idea that you need to plan and design seems foreign, we're paying you people to code! Of course, the author recommends that you design anyway, using the 'building a house' metaphor for what he calls "code construction."

While my recent metaphor for programming (using Agile development) has been that a program evolves and grows like a tree (the trunk being the basic code, and the branches being additional requirements), the author of Code Complete says it's like building a compelex house. While a single person scripting or coding can complete a doghouse without too much trouble, larger projects require site surveys, blueprints, and the like before the experts (electricians, plumbers, database admins) are put to use building their parts. I suppose this would work with my analogy if we specified that we were building an airport.

You know, the airport opens with much fanfare, meets the requirements at that time, and the first terminal is a beautifully designed glass-and-steel building. As the years pass, new requirements and throughput are needed, and a second and perhaps third terminal are built, based on the first, but with less fanfare and less architectural considerations, and attached to the old terminal by a tunnel or train or moving sidewalk-thing. So I submit to you that building software is like building an airport, terminal by terminal as requirements change and spirals are added.

The rest of the book, and it's a large book, addresses the various minute details of programming style. McConnell gives his opinion on when to use a class, when to use a method or function, what to name variables, where to handle errors, and all the other various questions programmers like to argue about. The theory is, that if you follow his recommendations, the author feels that your code will be correct, elegant, and understood by that poor guy who has to change it after you've left the company for greener pastures. Common programming errors, known as "CODING HORRORS" are also called out in the text, along with an amusing Freakazoid-looking programmer

If you have experience as a hard-core programmer, and would like to see Steve McConnell's (and Microsoft's) coding style guide, then read the entire book. If you would like additional anecdotes and metaphores about programming that supports a big design up front (BDUF) methodology, interspersed with admittance that adherance to agile and spiral models are more successful, read the first 6 or so chapters.

Thursday, May 04, 2006 

There have been recent news articles describing the amount of productivity lost while college-educated professionals watch their Alma Mater play basketball during march madness, and how much global productivity is lost every four years during the Soccer/Futbol/Calcio World Cup (Go Yanks!).

I would like to know how much productivity is lost by converting content into different formats. Every time our fine company responds to a proposal, we spend a few hours retooling our resume, proposal documentation, and whatever into the client's preferred format. Even people who all accept "Word" as a standard don't specify which version of Word (2000? XP? 2003? Works?) and they all have different styles (at least those who use styles.)

The next version of the internet, and the purpose of XML standards such as those described on the right list, are to remove style from content, to remove content from documents, and to save people time formatting that can be used to make sure the content is quality. Unfortunately, this is going to take a significant shift. We've been using books (and scrolls) for several thousand years.

Tuesday, April 25, 2006 

Book Concept Review: PeopleWare Tom Demarco, Timothy Lister

This book has an interesting topic that needs to be addressed: Programmers are people. I've worked at a few government contractors that think programmers are 'resources,' that can be stuck in a cube and whipped into shape. That doesn't work.

Programmers are engineers in the highest sense of the term. They identify problems, and want to find the most elegant solution to that problem. They can get into religious discussions about .NET vs JAVA, and Microsoft vs. the World. But they are not just assembly-line worker bees. If you have a "programmer" that just does what he or she is asked, without complaint - they are not software engineers, they are script kiddies.

This is the great conflict of our times. Managers who "design" software and hire temporary "resources" to build it. That might work with a road, or a bridge, or even a building (although architects are infamously involved in construction), but not programming. Programmers need to be involved in the design and the building, so that they have some idea and vested interest in the outcome. Programmers need offices with doors that close so they can get into a Mountain-Dew enhanced "flow," where code flies out and problems are solved quickly.

The book, like all great books, is old enough that managers with half a clue should be aware of what it says. And like all great books, they aren't.

Tuesday, April 11, 2006 

Jury Duty: I have jury duty today, after I had to postpone it from last week due to my Utah trip. Unlike the airports, there is wireless access in the Jury Assembly Area. It's basically a big room with tables where you wait around all day. I've already been called into a trial, but since the witnesses never showed up, the jury selection process never happened.

This seems to be a common occurance, as most of the potential jurors are called to a trial only to return minutes later. Couldn't we do this a different way, maybe with videoconferencing of trials, or cell-phone-jury selection?

Yes, there is a technology answer instead of me sitting here all day.

Monday, April 10, 2006 

Rant: Internet at the Gate.

Granted, you can pay out the nose for food and drink at an Airport, specifically because at an airport, you are a captured customer. A captured customer, like a person buying a $6 hot dog at a baseball stadium, is an environment where a consumer will happily pay extra for something cheap because to go to another vendor (in this case, a $1 hot dog stand outside the stadium) is, apparently, so difficult as to be worth $5.

In this case, an airport is supreme. You're not going back through security, take a taxi/shuttle/limo to another sandwich shoppe, so yes, that tuna fish on rye is worth $7.99. And internet is worth $10 a minute.

With wireless available in Starbucks across this great nation, why isn't wireless available in Starbucks in terminals? I would happily buy a $10 latte so I could spend the four hour delay I experienced in Chicago checking email, sending information to my awaiting family where I am.

Come on, it's $30 a month for a cable modem, and they throw in the wireless point for free. You could take it out of the "taxes and fees" that never seem included with the published price.

Friday, March 31, 2006 

Software Management: PMI is not the answer.

In an effort to furthur my career at a large government contractor, I took some vacation time and attended a class offered by the Program Management Institute. Many program and project managers in the government space can't help but notice that in addition to the CMMi level certifications, programs are requiring that project managers have PMI certification as well.

This combination of CMMi level practices and PMI certifications is supposed to be an assurance that the government won't be wasting money on a failed project once again. In principle, the ideas are sound. In practice, the certifications are a waste of money, little more than a document-page-count exercise (CMMi) and a vocabulary test (PMI).

CMMi certification offers little more than an audit on documents that have been written and stored away in a dusty file cabinet. More often than not, these process imperitives aren't dusted off until the project is well behind schedule and cost, and suddenly process people start wondering why the code doesn't work. Getting CMI certification should require observation of people using the processes, testing employees about their knowledge of the processes, and perhaps even completing a project or two using the CMMi level processes. Nope. In fact, I was a programmer and technical lead on two projects that received their CMMi certification and I didn't even know about it until it was over. When the people on the project only vaguely know about the certification project, it's hard to believe those same people are involved in the processes being certified.

PMI certification is nothing more than a vocabulary test, dealing with knowledge of the "PMBOK" which is little more than the cost/schedule/resource triangle, complete with scope creep and other common managerial knowledge. Perhaps this knowledge isn't as common as it should be, but having a prospective program mangers take a pop quiz on PMBOK during the oral presentation (which I've seen) shouldn't be a prerequisited for hiring a contractor.

Quite simply, finding a good project manager and a capable contractor is a lot more complex than making sure they have the certification du jour. Unfortunately, investigating this particular group's successes, strengths, and weaknesses would take time and effort, something most project sponsors lack. It's just easier to pretend that "planet PMBOK" is the perfect blend of give and take for requirements analysis and hope everything goes well.

Wednesday, March 22, 2006 

Book Review: "The World is Flat," Thomas Friedman

Now, I'll admit that this book feeds into my belief that America is heading for trouble, and that the myth of American exceptionalism is bunk. You will find out that I believe American success has been achieved through a combination of good old fashioned hard work, an amazing laziness that continues to inspire innovation, and a constant ability to redefine and reorganize to absorb new immigrants and new ideas. I also believe this is coming to an end.

Freidman, in his book, describes why American exceptionalism is coming to an end by describing the factors that have allowed barriers to trade -- little things like geographical barriers, culture and language problems, and educational opportunity -- have been 'flattened.' The world is flat now because of the investment in cross-global internet backbones, the addition of two billion Chinese and Indian potential knowledge workers, and free trade agreements that allow a VW to be built in Mexico from German parts and claim to be "made in America."

I would recommend reading the book, if only for the first 4 and last 2 chapters. The point is well-made in the first 4 chapter; the world has changed, this is why, and this is what happened. The problems the flat world has for American citizens and employees is made in the last two chapters, and the middle is just beating you over the head with more anecdotes.

The anecdotes are pretty good, however, with tales of highly intelligent and motivated engineers and other white-collar workers slaving away in centers in China and India for a quarter the price of a middle class American doing contract work. The point is made that there is not a "race to the bottom" to create the lowest priced labor, these new countries are actually competing with Americans for college educated jobs, and competing with American children for college admissions.

Read the book, if only to realize that the world is your market -- and your competetor.