hello_world_logo.gif (12859 bytes) maple_leaf.gif (1004 bytes)

This could be your company's banner advertisement

March 1999

Issue 1, Volume 1

About the Author

Jonathan T. Ng

Jonathan Tin. Ng
is a recent SoftEng. graduate from  Simon Fraser University.

Simon Fraser University

Hello World!
Editorial
News
Comics
Humour
Events
Sponsorship
Hello World! Teams:
Editors
Sponsorship
Site Design
Member Universities
Past Issues
Contact Us

Developing Waterfalls
How to Effectively Drown Your Software Schedules

-- Jonathan Ng

Last month, I shared with you two pet peeves of mine and some of my software engineering experiences. Well, if your river raft hasn't already split in two after those rapids, I'd like to share yet another experience - one that I'm sure many of you can relate to. Okay, let's have a show of hands - how many of you out there have had been in a project where your manager thought only about the bottom line?

I see a few heads nodding. Let me tell you about my experience, and to prove to you why this type of management doesn't work.

As a coop, we are often required to do many projects. Sometimes these are meaningful projects, sometimes they are less than meaningful. However, this one I'm about to discuss was perhaps the most meaningfully meaningless of all projects. I was to develop a skills database along with 3 other coops for the company. It sounded simple enough - it was a relational database that is supposed to relate skills with employees. We were a consulting company after all, and it would be nice if our managers had a tool that would help them to decide who was qualified to go to which project.

We set out to do a requirements analysis to determine what was needed. Upon interviewing our first candidate, we were confronted with the expression "Again?". Well, we thought it was rather odd, but apparently, this project had been attempted over 6 times in our regional office alone! Each of those 6 times it had failed. So, we thought - bad luck but hey, we can do it this time right? Not a chance. You see, it was neither the people nor the developers that was the problem - it was the management. Let me explain.

Two weeks into requirements analysis, we received an email from our project mentor about a particular upper manager who wanted to see us. He was wondering why there were four people allocated to this "little" project (that in his mind would take "only 2 weeks to complete"). Now it was of particular interest how this manager convened the meeting - he walked over to our cubicle area to within about 2 metres of where all four of us were working. He then proceeded to whisper in the ear of our project mentor about this meeting, who then emailed us! I know he's an upper manager and we were just measly coops, but hello! - we were only 2 metres away!

We had the meeting, and presented a preliminary requirements analysis. We had taken the majority of users of the system, separated the requirements into "must haves", "nice to haves" and "wishful thinking" categories. As we presented this to a board of managers, we were interrupted by a question from the upper manager: "How long do you estimate for the project?". What he was really saying was, "Do you know how much this is going to cost me?" Now, as usual, I refuse to give estimates when I have not even completed a full requirements analysis... which is exactly what I told him. I said, right now it would be foolish to give you an estimate because it's liable to be wrong anyway. Instead, let us finish the requirements analysis (another week) and we will have a much better idea for you.

Didn't work. He started touting numbers. He jumped up and said, "Did you know you guys are costing the company $80,000 for two months?" We were flabbergasted. Where did that figure come from? Turns out this figure was our opportunity cost. It was an internal project. Why were they calculating us on opportunity cost? It is true we were a consulting company - but the funny thing was that we were "on the bench" (i.e. had no work) for the past 3 weeks already, and the company wasn't expecting any short term opportunities. In other words, if we weren't on the skills database project, we would be doing nothing! The "bottom-line" argument simply didn't make sense. It got worse.

We proceeded with the rest of the interviews, one of which was the manager himself. It was a thoroughly unpleasant experience. Instead of answering our questions, he told us firmly that he wanted the database to be the way he wanted, nothing more. The only problem was that he actually wasn't the primary user of the database.

At this point, we knew exactly why this project had been attempted 6 times. Each time, the user requirements were never satisfied! And thus, the resulting systems were never used. Well, we had no choice either, so we took the manager-inspired requirements, and we came up with an estimate: a little over 2.5 months + 1 month - .5 months. Since we had only 2 months left in our term in the best case, we could finish it on time. In the worse case, we'd have only a design done. We thought that maybe we can convince him of that - produce an extremely well documented design and have him hire the next coop to complete it.

I decided that this time, we weren't going to let him get away with intimidating us with the bottom line. We knew he would be picky about the estimate, so we performed an estimation in 4 different and independent ways - to prove to him, that yes, it really is going to cost this much - even with a reduced set of requirements. We did the following:

  1. Estimation by seat of pants (in other words, a wild guess)
  2. Estimation by parts
  3. Estimation by function point analysis
  4. Estimation by asking an expert from within the company.

Amazingly, all four estimates produced results within the same vicinity. We had another meeting with the manager to present the estimates. This time we were prepared.

In the end, the project was cancelled. It was a wise move, because the system that would have been implemented would not have met user requirements, and thus would not have been used. Nonetheless, we as a team felt awful because we had so much wanted to finally implement a correct system for them, but instead we were asked to do a system that didn't match any of the user requirements and still had to take 2.5 months to complete.

So my message to managers is this: wake up! The high-tech business world is no longer going to put up with old-school managers. In today's world, if your company is to be competitive, and especially if you care about the bottom line, your business has to be flat, and you, as managers, are going to need to know more than just business management skills. An ideal manager has to be someone who not only understands the CEO and the financial books, but one that understands even the lowliest of jobs under his/her management. That's where the skill is. Don't patronise them, and especially don't discount their job or their knowledge. You hired them to play that role in the company, didn't you?

It's not everyday that someone will go to the extent that I did in my project to prove my point. But in a way, as technical computing science people, we often tend to be a little too lenient on the unrealistic expectations of our managers. Rapid development is a tricky business. As I mentioned last month, it has to be done right. Doing it right involves the whole team ...and yes, that means management too. Ultimately, it pays off. If you pay attention to the little things that may seem to deviate from the bottom line in the short run, you'll experience a team dedicated to working for the company and the product, and you'll experience record growth. Skimp on the little things and you'll save in the short run, but your bottom line will remain exactly that - down at the bottom.

P.S. I've been asked to think of a name for this column. And you know what? I'm stuck. So I'm going to ask you. If you can think of a good name for this column - an editorial column on software engineering practices, please email me with subject line "Column Name": ngt@canada.com; If I like a name, I'll use it and mention you in my next column!

Columns
MFC Corner
Development
Security
Network Security
Feature Articles
Artificial Neural Networks: An Introduction

C++ Standard Template Library: Part I

Designing the Web

Disk Scheduling Algorithms

Java and Swing

Random Pruning: A Heuristic Approach to Programming AI Agents

The Basic Commands of Linux

Networking Your Home/Dorm/Apartment

Nouveau Networking: Introducing Jini

Should You Use Linux?

So You Want To Be a Hacker

The X Windows System

XML Exchange

March 1999

Issue 1, Volume 1

This could be your company's banner advertisement

hw_publegal.gif (2694 bytes)