The Top Ten Lies of Engineers
After a several month hiatus, I would like to return to my top-ten lies series. So far, I've covered entrepreneurs and VCs, Today's topic is 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.
Addendumbs (sic):
“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



Amazing! Both true and false at the same time! It boggles my engineer's mind!
No, honestly. We've all said things like that. The best thing I can add to that is "It should take N days to complete".
On the other hand, noone but engineers seem to understand that
- Software should be released when it works, not when the management sets a release date.
- When software is feature-complete it should go into a thorough testing phase before releasing it.
- Adding developers to a late project will make it later.
- Adding features to a late project... oh my god, just because you moved the release date back, did you really think there's enough time to add MORE?
- No feature is ever "small". It takes a lot of work.
- For software to fulfill it's requirements, the requirements have to be clearly stated. Without that, there's no way you can test whether the software fulfills it's requirements.
- No, trying out a few things isn't testing. Testing means automated, repeatable tests with trackable results.
Now most engineers I've met don't act like they realize this either. But then, most of them don't stand up to management and tell them that their opinions.
Posted by: foo | Apr 28, 2006 11:35:40 AM
Hopelessly cliche-ridden (gawd, the picture!) and software-biased (writing about what you know, I guess...).
Both engineers and managers need to avoid reinforcing their respective cliches.
I like Glenn Kelmann's points much better :-)
Posted by: Vladimir Orlt | Apr 28, 2006 11:00:17 AM
11. The design specifications are complete, and up-to-date.
When I was a tech writer, this was a deal-killer. It was heartbreaking to find out you'd been documenting code (and even features) that had been tossed out two months earlier.
For some engineers, specifications must feel like clingy relationships - they tie you down, don't let you sleep at night, and take away your freedom.
Posted by: Jonathan Cohen | Apr 28, 2006 10:55:56 AM
I have never told any one of these lies.
Posted by: Santosh | Apr 28, 2006 10:47:08 AM
#8 (Outsource to India). This isn't a CTO-driven myth; it's an investor-driven myth. Most CTOs who are technology-focused probably don't care about cheaper, and they certainly believe that the engineers' proximity to them is what is going to make the product faster and better. The CTOs who are business-focused either lack personal experience or are influenced by external factors (read investors, press, etc.), and thus make false assertions about outsourcing. Though the business wisdom of the day, promulgated by the press to investors and people who sit on company boards, has been that outsourcing is the hammer that will solve all development problems for emerging, leading edge, or any other complex technology, it rarely, if ever, works as advertised. Outsourcing is an executive management lie, not an 'engineering' one.
Posted by: Pramod | Apr 28, 2006 10:28:37 AM
ROTFL (and crying, as well).
You certainly got it right with this top ten! Being an engineer myself, I have to admit that all true (though mostly because of narrow-mindedness, not plain incompetence :-)
Now, how about a 'Top 10 lies of the marketing department' for the sake of err... balance?
And another for CTOs (their an entirely different breed).
I do hope all engineers read this!
Posted by: Matias | Apr 28, 2006 10:06:47 AM
insulting and mostly bogus. Most projects are screwed up by marketing changing their mind, not being able to let go of the "entire vision" long enough to ship a "good enough" product (with the 20% of the features the product actually needs) that is well built; not being able to be realistic about how long it takes to write software, etc. Most (but not all) code ends up being bad because marketing can't seem to act like anything other than spoiled kids who want their cake and eat it too - this results in engineers having to RUSH all the time and who can do great art when rushed? And software is art plain and simple.
Read "Get Real" by 37signals.com
Posted by: bob | Apr 28, 2006 9:10:22 AM
Having spent the past 8 years developing dynamic online applications for customers all over the place and running a few businesses who rely on "software engineers" to get stuff done, here are my words of wisdom ;-)
1) triple your timelines and double your budget RIGHT OFF THE BAT!
2) start ugly and work your way to "pretty"
3) establish meaningful milestones each step of the way, be sure to share them with both engineers and execs
4) nothing ever goes as planned and keep multiple sequential backups all over the place
5) higher the quality of the work the longer it takes to get done BUT the less problems you have during testing/launch
In defence of software engineers, their jobs are highly undervalued by execs and considering the complexity of their tasks under deadlines, they are among the smartest people I know.
Jon
Founder of http://myfoodcount.com - Free & Anonymous Health Monitoring
Life: http://jon.legendarylife.com
Posted by: Jon | Apr 28, 2006 9:05:42 AM
Another common one:
"That feature is easy to build. All we have to do is..."
It's always way easier on a cocktail napkin than in implementation.
Now that I think about it, this applies to engineering, marketing, sales...
When you assume...
Posted by: Kim | Apr 28, 2006 8:36:52 AM
Guy,
I am an engineer, so I was getting worried there when I saw that picture of the engineer. However, most of the stuff you mentioned is very true. It took me about 3 months in my first permanent job just out of University to say to a Marketer "yes, I now understand that we need you (Marketing)". He then tried to get me to walk around the office and repeat that to everyone. Needless to say, I got quiet and went back to my desk, but I have gained an appreciation for taking even technology driven innovations through the process of making them as useful as possible to customers. So this blog didn't offend, it mostly confirmed what I have been learning.
BTW, congrats on reaching the top 50 on Technorati! Keep up the great blogging!
Posted by: Matthew Wilder | Apr 28, 2006 8:20:05 AM
As a SQA Engineer for about 11 years, working closely with programmers, I believe the biggest lie they tell is: "I'm done". The gap between what they think that means and what it means to me is staggering. I advocate for the end-user, and to me it means: "ready for end-user". Like most deception it is not really a lie, just a different point of view. An ordinary person assumes that something works, a SQA Engr assumes things don't work (and is in the business of demonstrating why they don't scientifically.) We work in the realm of what can be proven repeatedly, not what can be imagined or hoped for.
Posted by: Daniel Schumacher | Apr 28, 2006 8:04:14 AM
I eat badger poo!
Posted by: Norbert Sponge | Apr 28, 2006 7:45:03 AM
What about the top ten lies of CEOs? Internal and external? Actually the internal are more interesting.
Posted by: John O | Apr 28, 2006 12:55:15 AM
"Marketing is the only thing standing between your company's strategy and a tactical reality of shoddy product delivered late to a market that doesn't want it, need it or understand it."
This is really pretty funny. In many cases in my experience, marketing was responsible for the delivery of a shoddy product (due to unrealistic schedule demands), delivered late (at least according to the schedule in the marketing offices), to a market that doesn't want it (due to marketing's failure to set or at least negotiate a realistic feature set) or understand it (because the final feature set didn't deliver enough to make the product clear).
aloha
Posted by: Smittie | Apr 28, 2006 12:42:23 AM
I wonder what Scott Adam's Dilbert (who is still an engineer at heart) will say to this list. I think he will miss his "lies":
1. All the features described in the proposal have beeen implemented. (The user is a complete moron. She did not tell me about her needing this, that, whatever while I was doing the specs and now she is asking for it.)
2. The GUI for my product is very beautiful and intuitive. Even my Mom can navigate the screens.
3. The documentation is self explanatory. All the features are covered in it in case you need to refer to it.
Posted by: Nitin | Apr 28, 2006 12:42:01 AM
Is the top 10 (or should that be top 100? ;) lies of Marketeers coming?
Posted by: Simon Cast | Apr 28, 2006 12:34:00 AM
"This should just work."
Posted by: Shashikant | Apr 28, 2006 12:33:05 AM
Lol. You have a gift for writing and telling the truth. I laughed a lot. I can't wait to start your book this weekend...! Looking forward to it.
Posted by: Peter | Apr 27, 2006 10:24:18 PM
Guy,
We run a venture-philanthropy program for young social entrepreneurs in developing countries.
It would be interesting to hear your "10 lessons for young entrepreneurs".
Dev
Posted by: Dev | Apr 27, 2006 9:51:47 PM
Great Post Guy...
A favorite story is one from my data which we talked about on my blog just this week.
In it he asked an engineer when the piece of code he was working on would be done. He got the soon. Week after week it was the same with no sense of anything ever going to finish.
Finally he changed the question and asked, when will it meet the spec, to which he got the response "That was 4 weeks ago".
Or something along that line.
Posted by: Stephen Hayward | Apr 27, 2006 9:32:33 PM
Elisa said:
>>>>>
For those who don't "get" marketing's value, I like to explain is like this:
Marketing is the only thing standing between your company's strategy and a tactical reality of shoddy product delivered late to a market that doesn't want it, need it or understand it.
>>>>>
I've been in various high-tech marketing roles for more than a decade. I gotta take issue with this statement.
If a product is truly crappy (i.e. no one wants it) - no amount of genius marketing can sell it. It is hard enough to sell a good product.
What is needed to bring great products to market is better collaboration between engineering and marketing - so that the company only builds products that the target market wants in the first place.
Posted by: Michael | Apr 27, 2006 9:26:05 PM
Let's look at the marketing side, then:
1) "We need to beta test now! Our advertising schedule demands it."
We haven't bothered to keep up with the project, but we'd really like running those flashy ads we came up with.
2) "We don't need to know about engineering"
The engineers will f&*ck this up anyways, but our superior marketing skills will sell it.
3) "You guys should use agile development! And best-of-breed tools"
We've got no idea what that is, but it could be turned into an article in a popular magazine.
4) "We need an extremely scaleable architecture!"
We don't know how many customers we'll get. In all likelihood, a single server will be able to handle them, but Google is scaleable too! Plus, it's a great bullet point
5) "We're Web 2.0 standards compliant!"
We've got no idea what those standards would be if they bit us, but it makes a *really* great bullet point.
6) "Our entire product line is cross-platform"
We've seen a prototype on the PC. But really, those engineers are nincompoops anyways - my son writes RealBasic, and that runs on Mac and PC, so how hard could a port be?
7) "We leveraged our excellent Quality Metrics Program to assure 100% bug free software."
It didn't crash for 2 days. Ship it!
8) "It has been developed using an international team across three continents and is leaping past the competition due to this cross-cultural experience!"
American Management. Russian Design. Indian coders. A complete in-house rewrite because it really wasn't what we expected.
9) "Our focus groups loved it!"
We really have no opinion whatsoever on this, but by asking cleverly worded questions, we got one out of three people to reluctantly agree that he might install this on his machine. If it was free.
10) "Our marketing campaign is spot-on!"
We're insulting the majority of our customers, but boy, those dinosaurs are funny!
----
Ah yes, life on the engineering side is not a walk in the park, either... ;)
Posted by: Robert 'Groby' Blum | Apr 27, 2006 8:24:55 PM
As a marketer who has heard every one of these and more, I thank you.
For those who don't "get" marketing's value, I like to explain is like this:
Marketing is the only thing standing between your company's strategy and a tactical reality of shoddy product delivered late to a market that doesn't want it, need it or understand it.
Posted by: Elisa Camahort | Apr 27, 2006 7:50:42 PM
If a VC doesn't do a "technical due diligence" on a company they are thinking of investing in, that VC is incompetent.
Questions about scheduling, bug tracking, scalability, software architecture, etc would be a standard part of such a technical due diligence investigation. This investigation would be done by an experienced software engineer - someone who can see past bland assurances and ask about the details. This person acts as an intermediary between the VC (who typically lacks technical knowledge) and the engineers at the company.
Posted by: Cameron Hayne | Apr 27, 2006 7:37:54 PM
It took me a long time to realize that software engineering and mechanical engineering had a lot in common. I spent many years in the automotive business where I learned the secret to design: prototype, prototype, prototype. I even developed the equivelant of extreme programming for car design. I once built a working prototype of a full size wagon in four and a half weeks. The goal is to prove the concept before you spend a penny on the details.
Engineers and project managers in the mechanical world are married to GANTT charts. In the software world they are married to release cycles. They eliminate whole prototype iterations in order to meet deadlines. Thus forcing customers to test prototypes.
Great list Guy.
-RS
Posted by: Stiennon | Apr 27, 2006 7:36:14 PM