Author Archive: The Programmer

Hitting a Moving Target

29 Mar 2007 /

IT has got to be the world’s most unprofessional profession . . .

I’m sitting through a dry run of a presentation for our CEO, explaining why the company’s flagship IT project has taken so long and cost so much, with no end in sight.

It seems that, compared with two years ago when the project started, headcount is up 60 percent, sales volume has more than doubled, the product mix has changed significantly, as a result of of which, requirements and assumptions have had to be constantly changed.

Of course! Two years ago, who could have anticipated that the business might look a lot different two years down the road?

If you said “Uh, pretty much anybody,” you’re right.

Thus spoke The Programmer.

You may also like ...


Something I Learned Today

13 Mar 2007 /

When you’re meeting with the people responsible for a company’s software development process being the way it is, any suggestion that it could be improved is going to be a tough sell.

Prepare to hear something like this: “We didn’t get where we are today by doing things wrong.”

Thus spoke The Programmer.

You may also like ...


How Long Should it Take to Define a Project?

25 Jan 2007 /

Project X hit a milestone called Vision/Scope seven months ago, 99 days late. It’s 312 days late on the current milestone, which is called Definition.

To date, the project has consumed 36,000 labor hours — 18 person-years — and $2.5 million.

At this morning’s enterprise-level status meeting, it was decided that Project X will be put on indefinite hold, as it is no longer a strategic priority.

This reminded me a lot of an article I read a few days ago:

What the waterfall does well is to keep useless projects from resulting in useless code that needs to be maintained. I’m not sure if that’s the real purpose, but it’s certainly a great side benefit. It may sound inefficient to pay a lot of engineers to get started on projects, do a bunch of analysis and design, and finally abandon the whole thing when something else becomes a higher priority, but every line of code they don’t write is another line that can’t break!

OK . . . you could make a case that waterfall “worked” here — clearly if, after 18 years of effort, people can’t even define the project, that sounds like a project that has no chance of success and shouldn’t be attempted — but it worked at a cost of $2.5 million.

That doesn’t seem very efficient.

What I find is that if you put the customer, the technical team and other appropriate representatives together for as little as four to eight hours, à la a Sprint Planning Meeting, it should be obvious whether or not anyone understands the problem well enough to go ahead and attempt a software solution.

Thus spoke The Programmer.

You may also like ...


Standard Methods = Standard Results

20 Jan 2007 /

This is an excerpt from a job posting for a Sr. IT Project Manager:

  • Develop project plans and ensure that deadlines are met on time and projects are delivered within budget constraints. You will use standard project management tools to define requirements and track project status.
  • Manage and prioritize projects for the division using standard project planning methods and software through all phases of the project/development lifecycle.

OK, let me get this straight: You want projects delivered on time and within budget — you don’t mention whether or not you want the software to actually work, but I assume you do — and you want it done with standard tools and standard methods.

It may have escaped your attention, but that is not a standard result. The standard IT project is either late or over budget or fails to meet customer expectations, or all three.

If it were possible to deliver high-quality software on time and within budget with standard tools and methods, then everybody would be doing it.

So you want someone to achieve exceptional results — non-standard results — with standard tools and methods. How is that supposed to happen?

I can deliver exceptional results, but you have to let me do it my own way. If I have to use the standard tools and methods, I’ll get the same crappy results everyone else gets.

Thus spoke The Programmer.

You may also like ...


Practices vs. Accomplishments

23 Dec 2006 /

Per our Head of Software Development, IT managers are henceforth being evaluated on the “quality” of their status reports.

A little background on this: We have a weekly conference call during which managers report project status. Every week you the hear the same things over and over: We’re waiting on this. We’re waiting on that. We’re working on requirements. We’re figuring out the architecture. We’re doing the design.

Very rarely does anyone say, “We delivered working software to a customer.”

Even more rarely does anyone say, “We delivered working software to a customer, the customer is using it, and can’t stop raving about how great it is.”

What would be our motivation for evaluating practices rather than accomplishments? When I do projects, I like to be evaluated on one thing: my ability to deliver business value to a customer.

Everything else is waste.

Thus spoke The Programmer.

You may also like ...


Profiles in Management: The Liar

5 Nov 2005 /

My boss’s boss resigned yesterday.

If I had to sum him up in one sentence, I would say — and I think he would take this as a compliment — that he made Machiavelli look like a goddamn amateur . . .

Thus spoke The Programmer.

You may also like ...


Requirements are Boring

6 Aug 2005 /

You’re working on the requirements for Project X? Boring. You’ve got someone figuring out architecture for Project Y? Boring. The guys are designing Project Z? Boring. . . .

Who has built something that their customer will certify is part of what they want? That’s interesting.

Who has shipped something to their customer and the customer is using it? That’s very interesting.

You may also like ...


We Don’t Have the Money, So We Have to Think

27 Jun 2005 /
We don’t have the money, so we have to think.
— Ernest Rutherford

Ernest Rutherford was an illustrious scientist — the 1908 Nobel Laureate in Chemistry, and the father of nuclear physics.

Money out the window

His humble upbringing as the fourth in a family of 12 children in rural New Zealand influenced his approach to science, as summarized in the above quote.

A recruiter called me today about a job managing an $80 million IT project.

How in the world can you spend $80 million on an IT project?! I could put your company logo on Mars for $80 million.

Most of the big, expensive IT projects that I’m familiar with, there really was no reason for them to take so long or cost so much. A lot of time and money could have been saved with some upfront thinking.

I get a lot of this now — recruiters asking me if I have experience managing multi-year, multi-million dollar projects, as if there’s some competitive advantage to be had from spending huge sums of money over long periods of time.

A modern variation on Rutherford’s famous saying might be: “We’ve got 80 million dollars! Why should we have to think?!”

Thus spoke The Programmer.

You may also like ...


High-Tech Turnaround

5 Jun 2005 /
High-Tech Industry Employment Slowly Turns the Corner, Says New Report

I clicked that link, only to learn that while high-tech employment continued to decline in 2004, it did so at a lower rate than the two previous years.

Hence, the job market has turned the corner, if by “turned the corner” you mean “continued to disintegrate, but at a slower pace.”

Thus spoke The Programmer.

You may also like ...

Tags:

Setting Expectations

3 Jun 2005 /
Doctor pointing at an x-ray

A family member had surgery recently and had to sign a consent form:

I have been advised that all surgery involves general risks, including but not limited to bleeding, infection, nerve or tissue damage and rarely, cardiac arrest, death or other serious bodily injury. I acknowledge that no guarantees or assurances have been made as to the results that may be obtained.

And so on . . . Don’t say you weren’t warned!

Medical professionals are very good at setting realistic expectations with the customer, whereas in IT we take customers into projects with glib assurances and wishful thinking.

I wonder if we could make a practice of saying to customers even something as simple as this:

“This project — like all projects — has a number of possible outcomes, and not all of them are good. Let’s go over some of the more likely scenarios . . .”

Thus spoke The Programmer.

You may also like ...


10 Best Questions to Ask at the End of a Talk When You Absolutely Have To

15 May 2005 /

From Bertrand Meyer:

You know the feeling: You’ve accepted to chair a session at a technical conference, you’ve managed to keep the speakers on time, and a talk has just finished. “Any questions?” asks the speaker, met only by stunned silence. It’s your job as Chair to fill in, and you have no idea what to ask. Here, as a service to the community, is the list of the Ten Best Questions To Ask At The End Of A Talk When You Absolutely Have To:

10. When do you come up for tenure?

9. This doesn’t look like PowerPoint. What presentation software are you using?

8. Very interesting theorem you just proved on the last slide. It’s lemma 2 in chapter 1 of my 1977 thesis.

7. I like your accent. Where did you learn English?

6. Who does your hair?

5. On slide 2, what did Lambda stand for?

4. Did you do your PhD in physics at Brigham Young University?

3. Have you thought of using a scientific approach instead?

2. Does your university offer courses on how to speak in public?

1. What else do you do?

You may also like ...


The Waterfall Approach Persists as an Urban Myth

7 May 2005 /

Much of present-day software acquisition procedure rests upon the assumption that one can specify a satisfactory system in advance, get bids for its construction, have it built, and install it. I think this assumption is fundamentally wrong, and that many software acquisition problems spring from that fallacy.

We were doing incremental development as early as 1957, in Los Angeles, under the direction of Bernie Dimsdale [at IBM's Service Bureau Corporation]. He was a colleague of John von Neumann, so perhaps he learned it there, or assumed it as totally natural . . .

All of us, as far as I can remember, thought waterfalling of a huge project was rather stupid, or at least ignorant of the realities. I think what the waterfall description did for us was make us realize that we were doing something else, something unnamed except for “software development.”

— Gerald M. Weinberg

In his book, Agile and Iterative Development, [Craig] Larman has well documented the history of the many disasters introduced by accident when the Department of Defense standardized on a non-iterative method that was unproven on large projects. It was essentially a blunder by a consultant who had little experience with real software development.

The DOD has long since abandoned the waterfall method, and the consultant has recanted, but the waterfall approach persists as an urban myth in many software development organizations.

— Jeff Sutherland

You may also like ...


99 Rules

16 Apr 2005 /

Here’s a short excerpt from an article called “Ninety-Nine Rules for Managing ‘Better, Faster, Cheaper’ Projects” by Alexander Laufer and Edward J. Hoffman:

In a dynamic environment, project management is not about performing according to plan, with minimal changes. It is about meeting customer needs, while coping successfully with unavoidable changes. Therefore, the planning system should be capable of coping with changes.

Jesus Christ, if I could articulate even one rule that perfectly, I’d publish it and call it a day . . . but there are 98 more of these!

Here’s another one:

More paperwork does not ensure greater information reliability or accuracy — it only adds to the non-value-added cost. It only seems that adding more measurement and reporting means better control. The illusion of control may partially explain an obsession with control.

A must read!

Thus spoke The Programmer.

You may also like ...


Job Posting of the Week

27 Mar 2005 /
Man holding pizza

6 Programmer Analysts with Java, J2EE, Weblogic, Websphere (before Java you should have programmed in C++ not VB or Visual Basic)

I don’t entirely share the author’s view that programmers can be ordered up like pizzas — Java, C++, hold the VB — and I would point out, sadly, that the hiring path for developers is now littered with jackasses who don’t know that VB and Visual Basic are the same thing . . .

Thus spoke The Programmer.

You may also like ...


Women Leaving IT Considered Discouraging?

26 Mar 2005 /

Women represent nearly half the workers in the U.S. — 46.6 percent. However, they always have been underrepresented in I.T. Even more discouraging is the fact that the percentage of women working in I.T. jobs is not growing but dropping.

Woman leaping through doorway into field

Why is that discouraging? Who exactly is discouraged by it?

Here’s a simple explanation: Maybe women don’t want to work in IT. Is there nothing more rewarding that a woman can do with her life than work in IT?

IT in the post-dot-com era is a stagnant industry. A lot of people in it would like to get out of it, but they need the money.

I don’t encourage my son to get into it, nor would I encourage my daughter to get into it, if I had one . . .

Thus spoke The Programmer.

You may also like ...


Disorganization

6 Mar 2005 /
Papers covering the courts transcript room after a war crimes trial in Germany

We’re trying to figure out a directory structure that lets us organize project documents in a way that’s less confusing than the current directory structure. We’ve got a lot of documents and nobody can find anything when they need it.

Thinking outside the box for a minute, maybe a better question would be: Do we really need to produce this many documents?

Thus spoke The Programmer.

You may also like ...


Soul-Crushing Email of the Day

5 Mar 2005 /
BIG font

I swear to God this is a real email from a once-promising manager with degrees from Brown and Princeton, who recently accepted a new position as Chief of Staff to the CEO, and now uses her Ivy League education to put out emails like this:

Effective immediately please ensure that all written communications at [insert company name here] have a minimum font size of 12. In particular, [insert CEO's name here] has asked me to convey that he will be ‘throwing away’ any communication he receives (over email or on paper) that does not meet this criteria [sic].

Please call me with any questions or comments, and hope everyone has a great weekend!

I always say if you’re going to misuse the word “criteria,” at least do it in a highly readable 12-point Verdana font . . .

Thus spoke The Programmer.

You may also like ...


Completion Percentages

21 Feb 2005 /
It ain’t over till it’s over.
— Yogi Berra

A project manager reports that her project is “48 percent complete.” In terms of what, I wonder? Calendar time? Cost? Effort?

I know it’s not 48 percent complete in terms of functionality because there hasn’t been any working code delivered, just a bunch of documents.

One approach that makes sense to me is to express completion percentages in terms of implemented requirements.

For example, if you have 100 functional requirements, and 48 of them have been successfully implemented, then you’re 48 percent complete!

Actually, I oversimplified that a little . . .

All requirements are not created equal: Because some requirements cost more to implement than others, and some requirements have a greater business value than others, you could assign relative cost and relative value numbers to each requirement, and calculate completion percentages accordingly.

This is good both for measuring the value of work already completed, and for estimating time to completion on the work remaining.

Completion percentages continue to be one of the enduring fictions of our business. I wish I had a dollar for every time someone reported that work is 90 percent complete, it continued to be 90 percent complete until a week before the due date, at which time the date was pushed out another six months because nothing actually worked . . .

Thus spoke The Programmer.

You may also like ...


Profiles in Management: The Baffled Bigwig

30 Jan 2005 /
Businessman looking puzzled

Our Sr. EVP dropped by today for a meet and greet . . . he was 45 minutes late, and when he arrived, it was obvious he had no idea who he was talking to.

“Is this the IT group?” he asked.

It was explained to him that some of the people were from IT, but some were from the call center and tech support.

“And do they all report to you?” he asked the senior manager in the room.

Here’s a little trick I’ve picked up over the years: When you’re addressing a group of people, take a few minutes beforehand to learn who they are. It will make them feel less insignificant.

After this fiasco, he went off to a catered meeting with other highly compensated executives, and I went out to buy my own lunch.

Prediction: This meet and greet will be mentioned in at least two exit interviews in the not-too-distant future . . .

Thus spoke The Programmer.

You may also like ...


Two Simple Rules

5 Dec 2004 /
More software projects have gone awry for lack of calendar time than for all other causes combined.
— Fred Brooks, The Mythical Man-Month

As a corollary to this, I’d say that lack of calendar time very often forces us to admit that our projects have gone awry.

Small Texas store in 1939

Denial is a viable strategy when delivery dates are far in the future, but when the deadline is staring you right in the teeth, the time for sunny optimism is over and the time for the Day of Reckoning (DoR) meeting is at hand.

I attended one such DoR meeting yesterday afternoon . . .

This particular meeting broke down into a battle between the Designers and the Implementers. The Designers — who happen to be the more senior members of the team — felt that they had written the specs in such excruciating detail that the system should pretty much have coded itself from that point on, despite the relative inexperience of the Implementers.

The fact that this didn’t happen was frustrating to both factions. The Designers think the Implementers are incompetent; the Implementers think the Designers are arrogant.

Let me say here that if my life depended on delivering a project successfully, I would want to follow at least two simple rules, namely:

  1. Keep it simple.
  2. Deliver early and often.

At every DoR meeting I’ve ever been to — and I’ve been to quite a few over the years — one or both of these rules has been violated.

Yesterday was no exception.

Judge hitting man with gavel

Rule One violated

The company I’m working with is a believer in big upfront designs. On this project, the Designers were allowed to generate hundreds of pages of design docs, models, diagrams — then hand it off to the Implementers to implement.

The design is way beyond the ability of human beings to comprehend in its entirety. You’d have to be some kind of savant to keep that much information in your head and feel a sense of mastery of it. Software development is a technical process, but it’s also a people process, and you have to work within the limits of human comprehension.

Rule Two violated

You can’t really assess the efficacy of a design until you try to implement it — except to say that it’s almost certainly wrong in some respects — for the following reason:

If you were assigned to model an existing system of moderate complexity in perfect detail — well, I don’t know you, but I feel safe in saying that you probably couldn’t do it.

You’d get some things wrong, you’d leave some things out . . .

Now if you were assigned to model a system that hasn’t been built yet in perfect detail, just working from a set of requirements — well, that is an impossible task.

And even if you could do it, you’d find that in the course of building the system, forces beyond your control would inevitably lead to requirements changes, thus invalidating your model.

Bubbles and Lines

Bubbles and lines don’t crash.
— Bertrand Meyer
Car crashing into delivery truck

Nothing ever breaks during the design process. Bubbles and lines don’t crash — code crashes!

So if you defer the writing of code until the big upfront design is done, you wind up learning things late that you would have been much better off learning early, when you still had time to do something about them.

Again, if my life depended on a successful project delivery, I’d start with early delivery of a working system that did almost nothing, but had the basic infrastructure in place — the essential hardware, software and network connections — then start adding to it, one piece at a time.

Summary

  1. Keep it simple.
  2. Deliver early and often.

Thus spoke The Programmer.

You may also like ...


« Previous PageNext Page »