The Top Ten Lies of Engineers
1. “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 modern-day beta testing 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.”
2. “I don't know anything thing about marketing...” This is a lie of false modesty. The engineer is thinking, in totality, “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 marketing the MBAs come up with 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.
3. “I'll comment the code, so that the next person can understand what I did.” This is a lie of good intentions. Really, 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 that 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 conversation 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. Yeah, those clowns at Google, Yahoo, Oracle, Microsoft, Apple, and AOL don't know anything about scaling compared to the engineer...
5. “The code supports all the industry standards.” This is almost a truth but 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 she doesn't like--for example, those promulgated by Microsoft. It's no big deal--customers will never know...
6. “We can do a Macintosh version right after we finish the Windows version; in fact, much of the Windows code can be re-used because of how we architected it.” The truth is that version 1.0 of any software is an experiment. It can be a magnificent experiment, but it's an experiment nonetheless. Thus, Windows version 1.0 is held together by duct-tape. The Macintosh version is a copy of the duct-taped Windows version written by an engineer who just finished college and got his first Macintosh a month ago. How hard could it be to learn to program for a different platform? C++ is C++, right?
7. “We have an effective bug reporting database and system.” Of course, 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 documented bugs doesn't ever exceed 1,000, it means that the company isn't tracking bugs carefully.
8. “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 we've got it in our heads that every programmer in India is good, fast, and cheap, and every programmer in the United States is lousy, slow, and expensive. My theory is that for version 1.0 of a product, the maximum allowable distance between the engineers and marketers is thirty feet.
9. “Our beta sites loved the software.” In twenty five years of working in technology, I've never heard a company report that its beta sites didn't like its software. There are three reasons for this: first, many beta sites are so honored to get pre-release software that they don't want 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.
10. “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 again. 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.
“This code is so bad it would be faster to write it all from scratch than debug and expand the current shipping code.” (Joel.)
"I like thinking about architecture, but I can code." (Glenn Kelman)
"It works on my machine." (Gaurav)
"Of course I can let go of the code and run the business instead." (Jason)
"Even my mom can navigate the screens." (Nitin)
Powered by Qumana