Thursday, January 24, 2008

Bills and Billability

Contract work is a difficult game. You have to provide a product in a timely manner...but you only get paid for the time you spent on it. No one gives you a bonus for getting the job done early, but you can guarantee that it'll hurt you when you're late.

Most companies have to go by the hourly model: how many hours an employee spent working for a client seems to be the most efficient unit of measurement. Unfortunately, it's also a giant wrench in the works of your process. I know companies that make "billability" their policy. Some of them even claim "100% Billability is MANDATORY!". This simply cannot work.

The moment everything has to be billable, work becomes a game of hot-potato. People focus more on getting someone else to do the work while they write down that they billed for it. Hours get rounded up (and padded), productivity goes down, and people get stressed about who's going to pay for bathroom breaks and general ass-scratching time. This also means that any time someone is looking at a work estimate, the side wanting to close the deal is looking to trim the hours down, while the people doing the work are trying to keep their feet out of the fire more
than they're trying to honestly assess how long it will take. Padding grows.

That's just the beginning. Companies that emphasize billability can't charge the client for the time they took to drive to their office and meet with them. They can't charge for the time it takes to figure out what needs to be done and work up an estimate. And they can't bill for
any time that might be spent making sure the end product works without breaking and can be used by the client.

Worse still, the client doesn't want good code. They don't want elegantly-written, efficient programs because those take time. Get it done, and get it done yesterday. Documentation is the biggest casualty: even if your programmers don't leave the company, even if no one else is
assigned to the project, that same harried programmer can't sit down 3 months later and remember what he or she wrote. It doesn't work that way, any more than you could recite word for word an e-mail that you sent last week.

Suddenly the add-on possibilities become enormous: testing costs money, but bug fixes are billable. If my application breaks when it gets on your servers, even better: because now you have to pay me to come on-site and work with your people to get things right. Best of all, if the
client mis-spoke, or they forgot something, or they just feel you misunderstood what they wanted, you're off the hook: that's not unbillable hours, it's a Change Order. Or an Enhancement.

I once had a company tell me that the Hourly Model was perfect because it was "just like a Law Office, and those guys make a lot more an hour than we do." I talked to a lawyer I know: he said that the greatest loss to his practice has been mentoring. Junior partners are
reluctant to ask a simple question in the hallway because they'll find their mentor just charged half an hour to their client for the answer.

As a result, nobody gets better: they just get by.

Too Much of a Good Thing

Nobody appreciates a Prophet until after the fact. Then they most appreciate a Prophet who can refrain from saying, "I told you so."

Despite my last post about Honesty, you should realize that too much of it at once can poison a person. It's up to you to regulate the dose, but see that you do so, over time. Raise or lower the amounts based on how the patient responds.

An application I am involved in has seen the worst of it: no requirements, poor documentation, it's the re-write of a bad source application, and it's had complete staff turnover since it began. The data used to provide the application is not only a nightmare, it can't be changed because it belongs to another party and/or connects directly to other things.

The client who hired us to re-write the application doesn't care about this, and they shouldn't. You have to remember that the client doesn't care what you have to go through. They don't want to know about how awful it's been, how sad it was when the developer walked out, and how upset everyone's been at the office. What they care about is results. You have to have something to show.

Our team is making its best efforts. Progress has been unbelievably slow, for a lot of reasons. And worst of all, it seems to be extremely difficult to get anything going that the client can get their hands on and see for themselves. This is the last time to be laying the drama on the Man who signs your paycheck.

Many sins led us to this point, but it will be interesting to see whether our efforts will truly be allowed to continue. It would be a shame if they didn't, but it wouldn't exactly be a surprise.

Thursday, January 17, 2008

Money Changes Everything

I wish I were making this up...

I went to my neighborhood gas station to fill up my car. Standing at the pump, I noticed a cheery glow, flickering from the space in between the pumps. Flickering? Oh, that's not good. The sparks that started to shoot out confirmed it.

I immediately stopped filling, cradled the pump, and drove off without the receipt. Parked the car, went straight into the store, and found two employees. "Excuse me, you have a major problem right now--there's an electrical fire starting between the gas pumps."

That got their attention--"What?" "Where?" "Oh my god, shut 'em off!"

Oh, if only. But it didn't go that way. The Manager Was In Control. He said, "I don't see anything." I said, "Ill show you" and walked out there. The employee followed me, but the manager didn't. He stood inside the store and watched me. Coward. Thankfully, it had slowed down for some reason, and gone back to a flickering glow: the electrical box for the overhead lights was clearly badly grounded, overheating, and conducting electricity across the gap.

A woman had pulled up in an SUV. "You really don't want to gas up right now," I told her. "This electrical box is shooting sparks." She stared at me like I was the stupidest person in the world, didn't bother to look, and went right back to gassing up.

I went back inside with the employee, who was hurrying, "I'd better shut the pumps off," she said.

Back inside, the manager SPRANG INTO ACTION.

No, wait--he didn't. He said, "Hold on--I want to go see this." This time, I thought, "I am getting the hell out of here. I do not want to watch someone burn to death because this idiot thinks electrical fires are No Big Deal. He walked back, said, "I don't see anything. We'll just wait and see." I told him, "If you'd at least turn off your overhead lights, the fire would probably stop. Then you can get an electrician in here in the morning, and in 5 minutes he'll probably have it fixed for you."

"No, that wouldn't work--people might think we're closed."

Well, there it is: what was I thinking? We can't have people stop coming in! Safety is bad for business!

"Well, good luck to you then. You'll need it." And I left.

That was two days ago. Nobody's burned yet...but nobody's fixed it either. I imagine the cheery campfire glow is just the thing to huddle over, on these cold, cold nights. After all, what are the odds that someone will park their SUV just a little further back than normal? And the wind will waft towards the fire? And enough fumes will be trickling out of the pipe to catch? Probably no more than the danger from smoking at the pumps, which people do all the time.

Thursday, January 10, 2008

Okay, so Why?

On the subject of this article:
Herb Greenberg Picks Circuit City CEO as worst of 2008

If we all know about bad management at the top screwing a company, and article after article laments the golden parachutes given to idiots for tanking a company....why is it still happening?

Who looks at, say, Philip Schoonover's resume and thinks:

"Hrm....you hired expensive consultants who told you that the best way to save money was to fire damn near everyone who keeps the stores running. Then your company paid said consultants to "foment their plan into actionable items" (translation: 'to do it'). Wrecked the company's reputation, infuriated everyone from investors to customers, and drove the stock down more than 80%.

"When can you start?"

Perhaps it would be easier for everyone if, any time a company hires a CEO like this, the CEO in question just comes to their first meeting, drops their pants, and craps into a box in front of everybody. The message is conveyed instantly, time and money are saved all 'round by cutting straight to the point, and the golden parachute provides emotional comfort to the Board of Directors because they want the guy to go, and by that point they're willing to pay him extra if he'll carry the box out with him when he goes.

New Millenium Deal

I'm a natural at Sales; it just seems to be in my blood. Where other people thumb through inspiring books geared to "energize your synergy", I can simply...walk in and do it. Close the deal, get what I want, and make everyone happy.

That's really the big secret to being a successful salesman: make the customer happy.

Believe it or not, there are high rollers in the business who make the customer unhappy, but I guarantee you that this way never works out in the long term. I've seen aggressive bastards who cram deals down the client's throat simply by wearing them out: "Come on! What are you waiting for? I've got all this ready-to-go, and you're hanging your ass on the line with your superiors by not just signing the dotted line already!" I worked at one place where the Alpha Male stole from other people's orders to fill his faster. It made them look like buffoons to their clients because they were always "losing" parts of their orders. Alpha sold massive quantities at a loss, to gouge it all out on the next deal.

This is the tipping point between getting one's foot in the door and begging for a restraining order. Alpha Male would also pad the order with the wrong things, just to fix the numbers in the "Quantity" column and make it look like he'd turned the sale around: 15 of the flat-panels you need, 5 wrong ones that were lying around, and let you take the two weeks to figure it out and turn it around: not his problem, he put 20 monitors on your loading dock in 24 hours and you damn well better pay. He knew that in a large company, the guy that signs the deal isn't the guy that unpacks it at the dock and has to send some of it back.

Sales is the worst way to come into IT. I used to spend my time trying to make everyone happy, and in application development that is one of the worst things you can do. Because it means you start thinking about how to gloss over the rough spots when you have to meet with the client. You figure out ways to make it sound like things are going well when you have a fire on your hands. Making the customer happy, as I have learned, is absolutely not the same thing as "managing expectations."

Managing Expectations is really what software development is all about. These aren't widgets, and anyone who's spent any time in IT knows that a) there is no "turn-key solution" and b) "out of the box" is never what you want. Pretend otherwise and you're setting yourself up for failure.
  • Tell your clients when something goes wrong.
  • Tell them if you don't think it's a good fit
  • Don't cover your ass, because bad things grow in the dark
  • Don't throw anyone under the bus, because you never know when you're going to need them again

and most important:

  • Ask questions if you're not sure you've got it right

I can't begin to tell you how many applications I've seen get all the way to the demo, only to leave the customer baffled and angry: "Why did it look like that? That's not what our people do at all!"

Some people are afraid that going back and asking questions makes them look stupid. The truth is, it shows that you are listening. And that you care about the customer. My father is a master at sales, and he taught me a golden rule in dealing with people: that they love to talk about themselves. Let them talk, take an interest, and start thinking about how you can make that match with what you want to do for them, and you have a winner of a deal.

Leveling with a customer about things that aren't working can be your saving grace; everyone knows that software doesn't come out on time, delays happen, changes get made, and things don't work out the way they should. Being earnest about your intentions will carry you a lot farther than throwing a curtain over it all and pretending The Great and Powerful Oz has the situation under control. And last but not least, the simple courtesies can speak volumes about you: don't be late to a meeting (call or e-mail if you are), don't interrupt, and if you can't seem to communicate with the client, just do the listening, and save the convincing arguments for another day, when you can think it over and plan up a good way to show them why your way might be better.

And as for the Alpha Males? The customer may sign the contract, but they'll never be happy with the destination if you got them there via railroad.

Screen for LCD

When you aim for the Lowest Common Denominator, the only direction you will ever go is down.