1. “I don’t know anything about marketing.” This is a lie of false modesty. The engineer is thinking, “I don’t know a thing about marketing, but how hard could it be compared to what I’m doing? I should run marketing and engineering. I just hope that the MBAs come up with something that is worthy of my code.” However, don’t worry too much about this lie, because it self-corrects as the engineer misses deadline after deadline and comes to realize that he has bigger issues.
2. “We’re about to go into beta testing.” This is a meaningless statement because it doesn’t matter when you go into beta testing-what matters is when you come out of beta testing. (The only hard-and-fast deadline for coming out of a modern-day beta test is “before you run out of money.”) In the good old days, alpha used to mean, “All features are implemented though not necessarily working properly.” Beta used to mean, “There are no more repeatable bugs.” Nowadays beta means, “We’ve gone as long as possible past the shipping date that we promised our investors.”
3. “I’ll comment the code, so that the next person can understand what I did.” This is a lie of good intentions. The engineer did intend to comment the code, but as the schedule slipped, priorities changed. The question put to management became: “Do you want me to comment the code or finish it sooner?” Guess what the answer was. Luckily, the lack of comments usually doesn’t matter, because the code is so crappy that a total rewrite is necessary in a year.
4. “Our architecture is scalable.” This is the lie I enjoy hearing the most. Typically, an engineer who has never shipped a product says this after creating a prototype in Visual Basic. The whole lie goes like this: “Google’s architecture isn’t as scalable as mine. They can support 25 million simultaneous searches. We will be able to easily handle a billion.” Luckily, in most cases, the adoption of the product is slower than the CEO’s “conservative” forecast, so scalability never becomes an issue.
5. “The code supports all the industry standards.” This is almost a truth, except for a short omission: “This code supports all the industry standards that I agree with.” The engineer has made a personal decision to ignore standards he doesn’t like-for example, those promulgated by Microsoft. To the engineer, it’s no big deal because customers will never know.
6. “We have an effective bug-reporting database and system.” However, the assumption behind the design of the bug-reporting database and system is that there are no bugs in the code, so there’s not much to database and report. Generally speaking, if the largest number of documental bugs never exceeds 1,000 it means that the company isn’t tracking bugs carefully.
7. “We can do this faster, cheaper, and better with an offshore programming team in India.” Rank-and-file engineers usually don’t tell this lie; it’s the CTO who does. Somehow people got it in their heads that every programmer in India is good, fast, and cheap, and every programmer in the United States is lousy, slow, and expensive. This simply isn’t true.
8. “Our beta sites love it.” In twenty-five years of working in technology, I’ve never heard a company report that its beta sites didn’t like the product. There are three reasons for this: First, many beta sites are so honored to get prerelease software that they don’t want to say anything negative. Second, most beta sites haven’t used the software very much. Third, most beta sites don’t want to seem cruel by criticizing a company’s new product. Doing so is as socially unacceptable as telling someone that his baby is ugly.
9. “This time we got it right.” The scary thing about this lie is that the engineer really believes it. Again. The problem is that “this time” occurs over and over. I have great faith in engineers and believe that in the long run, they do get it right. It’s just that in the long run, we’re all dead.
10. “This code is so bad that it would be faster to write it all from scratch than debug and expand the current shipping code.” Every programmer says this about every other programmer’s code. And someone will say this about the rewritten version, too.
11. “I like thinking about architecture, but I can code.” The means that the programmer can’t code. And probably can’t design a good architect, either.
12. “It works on my machine.” And “my machine” is probably the only computer in the world that it does work on.
13. “Of course I can let go of the code and run the business instead.” These are the famous last words of every engineer turned entrepreneur. It means that he (or she) can neither let go of the code nor run the business.
14. “Even my mom can navigate the screens.” Of course, your mom has a PhD in computer science from MIT.
I love the lies that engineers develop for three reasons. First, their lies demonstrate the engineer’s childlike ignorance of how companies really work. Second, engineers really believe the lies they tell. You can’t say this about entrepreneurs, venture capitalists, and lawyers. Third, most of the lies they tell aren’t dishonest-they’re just “early” and will eventually come true. If you’re an engineer, now you know what you’re unconsciously doing. If you work with engineers, now you know when engineers are lying to you.
SOURCE: "Reality Check: The Irreverent Guide to Outsmarting, Outmanaging, and Outmarketing Your Competition" ISBN:978-1-59184-223-1 Pages 139-142
Saturday, August 28, 2010
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment