Why I Would Never Hire Steve Yegge

Based on what I read in Steve Yegge’s latest article ("Get that job at Google") I came to the conclusion that I would never hire Steve. Here’s why:

I’m quite sure that less than 10% of all software developers in this world are able to understand big-O complexity, n*log(n) sorting algorithms, hashtable implementations, graph theory, n-ary trees, NP-completeness, mutexes and semaphores. But Steve states that (for him) this is all basic knowledge, and that his requirements for candidates are not much different from those of any other software company. Now, if this was really true then 90% of the software developers in this world would not be able to find themselves a new job at this time, if they needed to. As this is definately not the case — millions of them are changing jobs every year, despite all their shortcomings — Steve’s statement is evidently false. I know companies that hire demented trolls only because they look a lot like software developers, and they know which side of the computer they need to bang with their club. (And in my own interviews, I prefer socially-aware software engineers with common sense over uebergeeks from outer space. But that’s another story.) Therefore… 1 point off for tunnel vision, distorted sense of reality and false reasoning. I can’t abide know-it-alls.

In my opinion, building software is about delivering value to customers and making users happy. — Oh, and it would be nice if you enjoyed doing that, but it’s no requirement. — Software engineering is so much more than just knowing your "basic" algorithms and data structures. It not only entails Construction, but also Requirements, Design, Testing, Maintenance, Configuration Management, Project Management, Process Management, Tools, Methods and Quality. According to SWEBOK, the knowledge area of Construction — for many of us, including me, the most enjoyable part — accounts for only 1/10th of the body of knowledge for a software engineer. Many of us need that part to enjoy ourselves. However, we need the other 9/10th to make our customers and users happy. Therefore… 1 point off for forgetting whom you’re building for.

I hate it when people talk to long. The KISS principle is just as valid for blog posts as it is for code. If Steve’s blog writing is any measure of the volume of code he writes, then I understand why Google is so busy building these super server farms here in my country. — Therefore… 1 point off for not knowing when to stop.

Anyone who misspells the name of one of the greatest thinkers in the history of our Software Engineering discipline must be turned down immediately. No matter how many sorting algorithms he knows by heart. Now, I wouldn’t mind if people accidentally referred to Stevey Yiggo. That would be understandable. But come on, misspelling Edsger W. Dijkstra is quite something else! — Therefore… not 1 but 2 points off. Because Dijkstra was Dutch, just like me.

That’s five points in the negative, mr. Yegge. Thank you for coming, that will be it. Don’t call us, we’ll call you. Please leave the markers on the table. Thank you.

  • Testing Software Engineers
  • Iterations and Increments Recycled
Related Posts
free book
“How to Change the World”
  • Richard

    Thanks for leavening Yegge’s post with some common sense. While I love to discuss various technical arcana with people in interviews, I usually do so in an attempt to get them talking about something that excites them. While technical skills are important, teamwork and communication skills are equally important, and I am fond of quoting Steve Jobs in saying “Real artists ship.”

  • http://www.gmail.com anon

    Common sense? The only people to lash out at this are those that hide behind their ignorance and program by coincidence.

  • http://profile.typepad.com/jurgenappelo Jurgen Appelo

    “The only people to lash out at this are those that hide behind their ignorance and program by coincidence.”
    …said the person hiding behind an anonymous identity.

  • http://transientis.com/ António

    Great post. In fact there was a period when I “read in diagonal” Yiggo’s 🙂 posts from time to time. But in an age where we are flooded by information, having the ability to summarize is an important asset – for any IT worker.

  • http://www.levityisland.com/ Lawrence

    “big-O complexity, n*log(n) sorting algorithms, hashtable implementations, graph theory, n-ary trees, NP-completeness, mutexes and semaphores.”
    Some aspects of these topics are best left to computer science academia, it’s true. But other aspects are absolutely essential.
    For example, if you don’t understand mutexes and semaphores, you’re going to have a devil of a time Testing and Maintaining concurrent code. And if you don’t understand how to analyze runtime complexity, you might end up writing an algorithm that takes 3 minutes to accomplish its task instead of 5 seconds.
    Writing software includes more than just “the basics”, it’s true. But that doesn’t mean you can neglect the basics. If you do, you might end up on the wrong side of the “10:1 productivity variation”… http://forums.construx.com/blogs/stevemcc/archive/2008/03/27/productivity-variations-among-software-developers-and-teams-the-origin-of-quot-10x-quot.aspx

  • Mark Hansen

    Is this a satire?

  • Sigi

    In my opinion, building software is about delivering value to customers and making users happy.
    Yeah, and the keyword here is “value”, which you might be unable to “deliver” without an actual understanding of your discipline.
    Google builds cutting edge technology on top of rocket science infrastructure, and you don’t happen to get to that point by hiring “demented trolls”.
    I’m wondering why you’ve categorized this article under “Knowledge & Experience” while there is “Trash & Garbage”.

  • Abhi

    Anyone who misspells “definitely” must be turned down immediately.
    Now, I understand you are Dutch and should be excused for English misspellings. In exchange, can you forgive Steve for misspelling a German name?

  • zbignew666

    There’s a survey right now that asks “Is Google arrogant?” at http://www.huffingtonpost.com/2010/09/13/is-google-arrogant-or-humble_n_714642.html
    If Steve Yegge still works at Google, the answer is a resounding ‘Yes!’

  • Jurgen

    very interesting post. i completely agree with you.
    Software Engineering is about everything you mentioned, SWEBOK.
    it also depends on the requirements.
    well, if the project is designing a new operating system, or a new database system, those computer science knowledge are essential, otherwise for enterprise class application, NP completeness or not, is just pure intellectual masturbation.

  • Joel

    Sounds like Steve struck a nerve with you here. Big time.
    Firstly, I agree that Steve does over-emphasize math-style programming. Really, these days, with all the libraries that are available to us, programmer’s don’t need such a strong background in mathematics as they used to. But Big-Oh notation IS basic knowledge; and it’s simple. It’s not rocket science. If you don’t know it now, then learn it, please, for your company’s sake. And you’re second paragraph sounds like you’re promoting the employment of “demented trolls”. Why? Most software engineers are under-educated enough as it is (including me). You need to read Steve’s posts as motivation for making you a better programmer, not reading them as if he is having a go at you personally. C’mon.
    And why does everyone complain about long blog posts? Who says you have to read the whole thing in one hit? Steve doesn’t post very often, so just do what I do and read a bit at a time. Simple. Stop whining.
    All these figures you’re quoting are just speculation from your world view. 1/10th? 9/10ths? They’re subjective, and hence don’t mean anything.
    Finally, disqualified immediately for misspelling? Cut the human race some slack. We can’t be perfect all the time. I do expect people to be pretty good spellers in general but nobody can help the occasional mistake. No reasonable person should expect absolute perfection from anyone all the time. Generally I’ve found Steve’s spelling to be excellent.
    In future, if you’re going to have a go at someone for bringing your personal insecurities to light then you need to adopt a less immature writing style.
    Steve does have some strange views occasionally, but ultimately I would love to bring his skills and knowledge to my software team.

  • http://www.microsofty.com Johnny Microsofty

    Yeah, steve’s blogs are funny all right. Hey, it’s easy to write a blog and make yourself look intelligent by having a list of pre-researched questions designed to stump a candidate. But isn’t it humorous how Steve-o screws up the ‘every odd number count’ and blames it on being 3:00 am? Yeah, how many times have we used that excuse before, huh.

  • http://profile.typepad.com/thoolihan Thoolihan

    “I’m quite sure that less than 10% of all software developers in this world are able to understand big-O complexity, n*log(n) sorting algorithms, hashtable implementations, graph theory, n-ary trees, NP-completeness, mutexes and semaphores.”
    I’m quite sure that those 90% are working to make business applications, where business value, not engineering and performance is the emphasis. Steve works at google, and worked at Amazon, where the business is established and engineers are trying to solve very hard back-end problems with a great performance profile.

  • http://iweballey.com Deepak

    Thos blogs must have been interesting!

  • alex

    You lost me in the first paragraph. Most software companies require this basic knowledge. Most software developers are usually able to find a new job as needed. Therefore, the logical conclusion is that *most software developers don’t work at software companies* — which of course is true.
    The number of software developers working at *software companies* (Microsoft and the like) is absolutely dwarfed by the number of developers working at non-software engineering companies (like Boeing or Volkswagen), at research institutions (like your nearby state university), at companies that aren’t “software companies” by any stretch of the imagination (somebody has to write Nike’s Facebook integration code!). There’s a reason we had 14 gazillion lines of COBOL accounting software to patch for Y2K.
    And if you’ve ever worked in any of these fields, you would know that it’s perfectly obvious that most of these people have no clue about things like mutexes and semaphores. (That’s OK, because the Nike-Facebook synchronization probably isn’t going to fall apart for lack of a mutex, since it’s probably written in PHP anyway.)
    -2 points for not understanding logic!

  • Kim

    I just happened to stumble across this post, it’s not my intention to revive the dead.
    That said, I understand why someone would want to lash out at somebody like Steve Yegge, an individual with an abrasive personality who listens to himself talk (and write) way too much.
    But self-proclaimed software “engineers” are the very reason software development is never going to actually be taken seriously as an engineering discipline.
    In many (or most) developed nations, engineers are licensed and held accountable for their mistakes by code. Even electricians are held to much higher standards than software “engineers”. In the IT business, this practice is nigh unthinkable outside of government work. And that’s because 90% of software “engineers” fail to grasp, you guessed it, basic knowledge. The only reason they are not out of a job is because demand is so damn high.
    Just because the industry is currently willing to take any idiot who can tell “C++” from a fictitious “C+” doesn’t make these requirements non-basic.
    You know, Edsger Dijkstra himself once asked “How can we tell truths that might hurt?” Steve just told a truth that hurts.
    Your post weakens the case you are trying to make. I am pretty sure that Steve Yegge would like to work for people such as you much less than you would ever like to hire him, seeing as you seem to reject the notion that there may be people out there who could, maybe!, be smarter than you.
    As if he’d ever even interview with you…

  • Casey

    Ironically Dijkstra would probably be utterly contemptuous of the attitude that knowing stuff about requirements-gathering hocus-pocus was more important than knowing basic algorithms and data structures. Consider:

    “A number of these phenomena have been bundled under the name ‘Software Engineering’. As economics is known as ‘The Miserable Science’, software engineering should be known as ‘The Doomed Discipline’, doomed because it cannot even approach its goal since its goal is self-contradictory. Software engineering, of course, presents itself as another worthy cause, but that is eyewash: if you carefully read its literature and analyse what its devotees actually do, you will discover that software engineering has accepted as its charter ‘How to program if you cannot.’.

    “Besides the notion of productivity, also that of quality control continues to be distorted by the reassuring illusion that what works with other devices works with programs as well. It is now two decades since it was pointed out that program testing may convincingly demonstrate the presence of bugs, but can never demonstrate their absence. After quoting this well-publicized remark devoutly, the software engineer returns to the order of the day and continues to refine his testing strategies, just like the alchemist of yore, who continued to refine his chrysocosmic purifications.”

    — EW Dijskstra

    These things really are basic and if you can’t understand how they work, you are not programming; you are typing in the incantations to use APIs.

  • lol

    As someone working at Google, I concur. In my group the work is no different from any other software company – we don’t use any algorithms, time analysis etc.
    But I don’t think Yeggi himself claims that Google engineers use this sort of stuff at work. In fact most Google engineers would fail Google interviews unless they are given time to refresh their algorithmic stuff.
    Passing the interview is just a dirty game and is no measure of excellence at work, no matter what the interviewers may think or claim.

  • ValleyGeek

    Great post, mostly valid points. Before dissing someone’s spelling though, I would check that “definately” in the second paragraph.

    • Doodpants

      Also, “I hate it when people talk to long.”

  • ValleyGeek

    Great post, mostly valid points. Before dissing someone’s spelling though, I would check that “definately” in the second paragraph.

  • Darina Kacher

    And what can you say about this company https://artelogic.net ? For me, they are big and talented people. This is a really good team that solves many of my issues. Creative and talented. And all professionals. I thank them. Good team.

How to Change the World - free Workout - free