How does your organisation deal with bad programmers?



  • So, we’re trying to hire a second Web developer at a company where I work. I’ve spent the last several weeks going through résumés, code samples, and interviews to try to find someone qualified for the position, and am absolutely blown away by the complete vacuum of competence that seems to exist in this field.

    For example, the developer that didn’t write HTML because “the
    designers do that”. He also thought front-end development was “writing
    actions [in PHP] and JavaScript that connect the back-end parts
    together” and that back-end development was “things like forums”. His favourite feature of Postgres was the EXPLAIN function, and for his code test he essentially spent 3 days editing some Symfony configuration files to present a final product that missed about half the required functionality.

    Or, the
    programmer with 17 years of experience on their résumé that sent along something that
    looked like it was based on an “introduction to PHP” tutorial from
    2001, complete with AJAX functionality
    ripped from anyexample.com, a very novel attempt to use $_SESSION as a function passing an undefined constant ($user_id = $_SESSION(USER_ID);), attempts to concatenate strings using an addition operator, and—the coup de grâce—SQL statements that were passed back to the server and executed directly from JavaScript.

    My current thought is that most good programmers already have well-paying jobs that they are satisfied with, and so the market only contains those that ought to find different careers. On the other hand, one of my mates reckons that most large software teams are also filled with terrible programmers and that they only manage to put out halfway-decent software through some sort of “process”.

    TL;DR, I am curious to know if any of you have had actual experience with a process that manages to somehow filter away bad code into an acceptable end-product. (Also if you know PHP, have experience with Web apps, don’t suck at it, and want a new job, please get in touch.)



  • You state three different questions in the subject, the body text, and the TLDR. I will address them separately.

    @snover said:

    How does your organisation deal with bad programmers?

    We fire them.

    @snover said:

    How do you get the competent programmers?

    Luck, plus determination to keep tossing the crap resumes until you hit that nugget of gold.

    @snover said:

    I am curious to know if any of you have had actual experience with a process that manages to somehow filter away bad code into an acceptable end-product.
     

    We're a pretty small company, so there's enough personal contact between all of us. We basically have interactions like:

    "I had to modify X, but I was unable to do it properly because of your shit code"
    "Oh, what was wrong with it?"
    "This and this hinders maintanability"
    "You have a point. I'll mend my ways for your pleasure."

     and:

    "I made this data model, but I'm a little unsure of it. Can you take a look?"
    "Looks fine to me. Maybe change table X with column Y."
    "Right."

     and:

    "If I catch you using a string as the first argument to setTimeout again, your life is forfeit."

    and:

    "You put the file on the live server without backing up the original. You're an idiot."

    and:

    "Oh shit. Look at what these offshore guys did now. What the hell."
    [a bad code example session then ensues, existing on the fine line bewteen light-hearted hilarity and grave worldy disappointment]



  • @dhromed said:

    We basically have interactions like:

    "I had to modify X, but I was unable to do it properly because of your shit code"
    "Oh, what was wrong with it?"
    "This and this hinders maintanability"
    "You have a point. I'll mend my ways for your pleasure."

    That's hot.



  •  I also threaten coworkers with bread knives loaded with chocolate paste.



  • But what happens when you can’t fire somebody, and when you try to explain to them what’s wrong with their code, they don’t understand what you are saying? (Other than ending up on the front page of TDWTF.) I mean, how does a company like Microsoft manage to create a product that doesn’t completely suck when there are so many people there that couldn’t possibly have a clue what they are doing? Or am I just grasping at hypotheticals?



  • @snover said:

    mean, how does a company like Microsoft manage to create a product that doesn’t completely suck when there are so many people there that couldn’t possibly have a clue what they are doing?
     

    I really don't know.



  • @snover said:

    But what happens when you can’t fire somebody, and when you try to explain to them what’s wrong with their code, they don’t understand what you are saying? (Other than ending up on the front page of TDWTF.) I mean, how does a company like Microsoft manage to create a product that doesn’t completely suck when there are so many people there that couldn’t possibly have a clue what they are doing? Or am I just grasping at hypotheticals?
     

    They become management. 

    And I become Scotty and spend half my life saying 'Nae Jim I cannae dae that' to the stuff they agree to without asking if it will work first.



  • @snover said:

     I mean, how does a company like Microsoft manage to create a product that doesn’t completely suck when there are so many people there that couldn’t possibly have a clue what they are doing

     

    Well, they don't. That's why I use Linux. When I encounter bad products, which is a lot less frequent, I can blame it on some people somewhere who give up their hard-earned leisure time to write it, not some Initech-esque monopoly whose mission is to siphon whoevers' pockets. I admit I'm a bit of a fanboy.

     


  • Discourse touched me in a no-no place

    @snover said:

    I mean, how does a company like Microsoft manage to create a product that doesn’t completely suck when there are so many people there that couldn’t possibly have a clue what they are doing? Or am I just grasping at hypotheticals?
    An intensive hiring process and screening out the failures early and often

    Since you seem genuinely curious as to how the hell decent software actually gets made, here's my recommended reading list:

    Joel Spolsky's Joel on Software - Proper hiring practices, proper team management practices, etc.
    Raymond Chen's The Old New Thing to see what this all looks like from inside Microsoft (as well as frequent explanations as to "what the fuck were they thinking when they did x?"). Most of the goodies are buried deep in the archives though :(
    Landon Dyer's Dadhacker - More Microsoft insiderness, plus old-school Apple and Atari and etc. Mostly for fun and flavor.
    The Daily WTF
    - The whole thing - cover to cover.
    Stack Overflow
    - The exact opposite of The Daily WTF - plus there's a Job's board which you can hire from if you'd like people who know what the fuck they're doing (or be hired from if you know what the fuck you're doing).

     

    Note that there's a lot of incestuousness between Joel, TDWTF, and Stack Overflow.



  • @snover said:

    ...how does a company like Microsoft manage to create a product that doesn’t completely suck when there are so many people there that couldn’t possibly have a clue what they are doing?


    The problem is that almost every programmer would like to work for the top companies. These companies are:

    1. Google

    2. Microsoft

    3. Apple

    There are a couple others perhaps (Oracle, Pixar, the NSA) but for the most part those are the three and every programmer wants to work at one of them. Because of that those companies get tons of resumes and basically get to pick the best programmers. Small shops are left having to use old-school networking to find good programmers or they will be left with shit.


  • Discourse touched me in a no-no place

    @tster said:

    The problem is that almost every programmer would like to work for the top companies. These companies are:

     

    1. Google

    2. Microsoft

    3. Apple

    I'll definitely pass on #3 from what I've heard about the environment. I'll probably pass on #1 unless they wave stacks of green in my face, which I hear they don't do anymore, because I don't like joining cults - #2 I'd probably work for, but id depends on the division.


  •  @snover said:

    How does your organisation deal with bad programmers?
    We hire them.

    @snover said:

    I am curious to know if any of you have had actual experience with a process that manages to somehow filter away bad code into an acceptable end-product.
    I write/design as much of the code as possible myself. I keep a close eye on source control updates.

     

    Just be glad you can veto a hire. Some of use have to work with whoever the boss had a drink with last night.

     



  • @DOA said:

    Just be glad you can veto a hire. Some of use have to work with whoever the boss had a drink with last night.

    You have to work with your own wife?  Must be tough...



  •  I've been jobhunting for the last 6 months and here is what I'm seeing: companies aren't looking for good programmers so much as they want people with tons of experience with very specific toolkits and very specific business domains.  I'm sure there are alot of really good programmers out there with good programming habits, keep up with industry best practices, have a high work ethic and having already learned X different programming tools could easily learn new ones.... but they're left out in the cold because companies don't want to teach the toolkits OTJ anymore.  And they especially don't want to teach the business domain.  Which is really peevesome because you can do an opensource project to teach yourself C# for example, but good luck getting a hobby project to learn the medical field, or public safety, or banking, or whatever.



  • @jetcitywoman said:

    peevesome



  •  Sort of like truthiness?



  • @jetcitywoman said:

    And they especially don't want to teach the business domain. 
    I work for a consulting company and this realy is a big problem with my current client. They don't know their own business domain and have to hire externals to come in and investigate what they are doing.

    We can tell from experience how things are usually done in (for example) the insurance business and we can measure in how far they work like the rest of the industry. But the companies knowlegde usually is buried deep within ancient COBOL modules that only an ever-decreasing number of internal developers understands.

    In short: they can't teach what they don't know



  • @snover said:

    I am curious to know if any of you have had actual experience with a process that manages to somehow filter away bad code into an acceptable end-product.
    At work I just experienced how we handle bad programmers. First of all we're a small company, and we do financial transactions, so getting shell access to any server is difficult and time consuming. Since I'm the system administrator now I have shell access, the only other person with shell access is the CTO, who is primairy a coder, and have to install anything that gets written. The first task a programmer is given is used as a filter, it generally meets two requirements: 1) We actually need it written 2) It's a small task that can function as module for something else.



    The first thing we noticed when we did a quick code review (mandated by PCI/DSS) is there were SQL injection vulnerabilities, full of copypasta and in some places actually useless*. I notify the CTO, patch it, and install it in a sandbox that I've setup on my own machines**. It fails to meet the requirement that the CTO put forth, at this point the CTO is notified again, and I'm notified the coder is no longer employed with us and he'll be informed by the CEO shortly. All in all it took us less than an hour to go through all of this.




    *) Code was posted in IRC when discovered. Consider this a shameless plug. The useless code was actually a hideous SQL parser written in PHP (yes, it actually parsed the SQL) functioned by using 11 seperate classes (two final, one abstract), had no documentation and even had a class with two members: const ASC, and const DESC


    **) We have no development environement, this leads to a few annoyances for me, but that's another story.


  • Discourse touched me in a no-no place

    @Lingerance said:

    The first task a programmer is given is used as a filter, it generally meets two requirements: 1) We actually need it written 2) It's a small task that can function as module for something else.


    [...], at this point the CTO is notified again, and I'm notified the coder is no longer employed with us and he'll be informed by the CEO shortly. All in all it took us less than an hour to go through all of this.
    An hour from hiring to firing - not bad ;)



  • After some thought, I think the point of my rant was this:  it's a management problem as others have said.  But to elaborate on that, management has to be willing to criticize (constructively, of course) the work your programmers do.  And when some programmers react like two-year olds (as many people do when their work is criticized), management needs to have the balls to a) try to teach them to accept and use criticism if they are young (because it does take a certain amount of maturity to accept criticism gracefully), and b) if the person refuses after some time of trying to work with them, just get rid of them. The idea behind my rant was that I accept criticism well, and am happy to learn by it.  But it seems to me that companies these days want rock stars who do no wrong and know all the latest tools like the back of their hands.  They seem to assume they can hire based on toolkits and not maturity or other soft skills.  And they sure as heck don't want to spend any time actually managing their staffs.



  • @PJH said:

    An hour from hiring to firing - not bad ;)

    No, the programmer in question was employed for a while, a few weeks IIRC. Basically he failled horribly on the first assignment given to him.



  •  @jetcitywoman said:

    They seem to assume they can hire based on toolkits and not maturity or other soft skills.

    I actually know of a project where the company who is running it is looking for 15 programmers who all have a certain certificate for a certain framework and have the usual 80+ years of experience etc.. etc... The fact is however that currently there are only ~20 people who have that certificate running around of whom more then half are already employed in various companies ;) This of course does not deter the company. As far as I know they are still looking ;)

    However, beyond companies who make silly demands for programmers, I also think it's a programmers duty to keep up with the times. No you can't know every framework ever built, but when one or two frameworks are very poppular then anyone would do good to make sure they know at least one of those very well. 

     



  • @Weng said:

    @tster said:

    The problem is that almost every programmer would like to work for the top companies. These companies are:

     

    1. Google

    2. Microsoft

    3. Apple

    I'll definitely pass on #3 from what I've heard about the environment. I'll probably pass on #1 unless they wave stacks of green in my face, which I hear they don't do anymore, because I don't like joining cults - #2 I'd probably work for, but id depends on the division.

    Meh. I wouldn't turn my nose up at Apple, but the whole search engine thing (e.g. Google) seems pretty infantile to me. And, as I told my woman once, I'd be glad to work for Microsoft, but it'd have to be as a Chainsaw Al Dunlap-style "slash-and-burn" restructuring expert. (I've been working on my Scott Guthrie termination speech for years... think Mussolini-from-the-balcony, but if he'd really meant it). Sadly, I don't think Microsoft has such an opening.

    I think your overall point is valid though. I'm basically a good programmer (real experience, real degree, actually show up every morning, etc.) and I've essentially been able to pick a job that makes me happy, so I'm not really looking for anything else.

    BTW your suggested reading is spot on. Raymond Chen's must have the world's best BS detector. (Plenty of time at Microsoft must have given him ample opportunity to tweak it).



  • @bridget99 said:

    I wouldn't turn my nose up at Apple, but the whole search engine thing (e.g. Google) seems pretty infantile to me.

    Protip: trolling isn't funny when you're this heavy-handed.



  • @morbiuswilters said:

    @bridget99 said:

    I wouldn't turn my nose up at Apple, but the whole search engine thing (e.g. Google) seems pretty infantile to me.

    Protip: trolling isn't funny when you're this heavy-handed.

    Amateurtip: I wasn't trolling. Working on a search engine just doesn't really appeal to me. Strike one: I don't like applying brute force to a problem. It makes me feel... so used. Strike two: The inevitable back-and-forth with people playing SEO games; seems kind of like running on a hamster wheel and I think those people and their games are beneath me. Strike three: It's too soft; at least if I work for DoD, for example, non-tech-types can relate to what I'm doing. Working for Google just sounds dorky and pointless to non-programmers.

    Now, if they started pursuing me I'd probably be very flattered. But it's not something I lust after and, yes, in a way I do think Google has more CPU power than sense. "Search" fits into a cowboy society like ours, where people are constantly posting all sorts of disjointed crap onto a common mess-of-a-network. But in a more organized society, I think the powers-that-be would take all those servers and use them to run FAHCore so that we could cure, for example, Down Syndrom or Huntingdon's Disease.

    Incidentally, I'm not the only one whose (at least initial) reaction to "search" was negative. Danish historian Saxo Grammaticus felt exactly the same way - look it up. Also, this dude:  http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html. And consider that pre-Web services like Compuserve, Minitel, etc. never relied on search. Instead, they used the much-less-computationally-expensive approach of placing things in categories.



  • @bridget99 said:

    Amateurtip: I wasn't trolling. Working on a search engine just doesn't really appeal to me. Strike one: I don't like applying brute force to a problem. It makes me feel... so used. Strike two: The inevitable back-and-forth with people playing SEO games; seems kind of like running on a hamster wheel and I think those people and their games are beneath me. Strike three: It's too soft; at least if I work for DoD, for example, non-tech-types can relate to what I'm doing. Working for Google just sounds dorky and pointless to non-programmers.

    Google doesn't only do search.  What's more, I find it laughable that a nitwit like you can actually claim that working on Google search is "beneath me".  The rapid growth Google has undergone has probably resulted in some pockets of bureaucracy or mediocrity where middling engineers have been able to make a home.  However, Google would still never consider someone as clueless as you.

     

    @bridget99 said:

    Now, if they started pursuing me I'd probably be very flattered. But it's not something I lust after and, yes, in a way I do think Google has more CPU power than sense. "Search" fits into a cowboy society like ours, where people are constantly posting all sorts of disjointed crap onto a common mess-of-a-network. But in a more organized society, I think the powers-that-be would take all those servers and use them to run FAHCore so that we could cure, for example, Down Syndrom or Huntingdon's Disease.

    Incidentally, I'm not the only one whose (at least initial) reaction to "search" was negative. Danish historian Saxo Grammaticus felt exactly the same way - look it up. Also, this dude:  http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html. And consider that pre-Web services like Compuserve, Minitel, etc. never relied on search. Instead, they used the much-less-computationally-expensive approach of placing things in categories.

    And here's the disjointed rambling to back me up.  Whoa, people hand-categorized everything on the Internet back when only 12 people used it?  Well, clearly search is useless!



  • @morbiuswilters said:

    @bridget99 said:

    Amateurtip: I wasn't trolling. Working on a search engine just doesn't really appeal to me. Strike one: I don't like applying brute force to a problem. It makes me feel... so used. Strike two: The inevitable back-and-forth with people playing SEO games; seems kind of like running on a hamster wheel and I think those people and their games are beneath me. Strike three: It's too soft; at least if I work for DoD, for example, non-tech-types can relate to what I'm doing. Working for Google just sounds dorky and pointless to non-programmers.

    Google doesn't only do search.  What's more, I find it laughable that a nitwit like you can actually claim that working on Google search is "beneath me".  The rapid growth Google has undergone has probably resulted in some pockets of bureaucracy or mediocrity where middling engineers have been able to make a home.  However, Google would still never consider someone as clueless as you.

     

    @bridget99 said:

    Now, if they started pursuing me I'd probably be very flattered. But it's not something I lust after and, yes, in a way I do think Google has more CPU power than sense. "Search" fits into a cowboy society like ours, where people are constantly posting all sorts of disjointed crap onto a common mess-of-a-network. But in a more organized society, I think the powers-that-be would take all those servers and use them to run FAHCore so that we could cure, for example, Down Syndrom or Huntingdon's Disease.

    Incidentally, I'm not the only one whose (at least initial) reaction to "search" was negative. Danish historian Saxo Grammaticus felt exactly the same way - look it up. Also, this dude:  http://unqualified-reservations.blogspot.com/2009/07/wolfram-alpha-and-hubristic-user.html. And consider that pre-Web services like Compuserve, Minitel, etc. never relied on search. Instead, they used the much-less-computationally-expensive approach of placing things in categories.

    And here's the disjointed rambling to back me up.  Whoa, people hand-categorized everything on the Internet back when only 12 people used it?  Well, clearly search is useless!

    I didn't say working for Google was "beneath me." What I said was "beneath me" was engaging in the silly back-and-forth that is SEO. I stand by that... those people aren't even programmers FCS. Frankly, I think the whole SEO game is probably beneath you as well. It's more at a SpectateSwamp level.

    I know Google does other things besides the search engine. But they all seem boring to me as well: so-called cloud computing, some kind of OS for PDAs, etc. Yawn. I'm just not that into businesses that live and die by consumer popularity. I'm not a very popular kinda guy in case you haven't noticed. The people at Google would consider me a knuckle-dragging extremist and I'd probably consider them a bunch of weird kids, and we'd be right. I'm not trying to claim any kind of moral or professional high ground, it's just reality.

    And as for that "disjointed rant," well, forgive me for trying to brighten your day with an absurd little non sequitur. I assume you'll be removing the absurd little non-sequitur that is your avatar. I find it to be disjointed, abrasive, and off-topic.

    EDIT: Any why do you hate me so much? You say I am a troll, but even this does not prevent you from giving me what a troll would want, i.e. blind rage. Clearly you hate me so much (sight unseen) that even your internal bias against responding to a troll cannot prevent you from spewing bile back at me. If you're trying to get me to leave, you're doing the exact opposite of what you need to do. Frankly, this is still fun for me. If you're trying to hurt my feelings, you're barking up the wrong tree. You're not going to convince me that I'm stupid, or even a bad programmer. I'm in posession of too much evidence to the contrary. Tell me I'm mentally defective, that I'm an awful person, etc. You'd be closer to the truth about who I am and why I could never work at a place like Google. I see how other programmers react to me when we meet in person. I hear how they feel about working with me. Clearly something is wrong. But all this "you're stupid, you could never work at Google cuz yer codez suckz, etc." just isn't getting it done.



  • @bridget99 said:

    WAAAAH
     

    I fixed all your past and future posts for you.



  • Don't let Morbs get under your skin.  He's like our resident puppy, going around humping everybody's legs.  Just pat him on the head and go on with your conversation.  

    Luv ya Morbs!



  • @jetcitywoman said:

    Just pat him on the head
    I wouldn't. You don't know where he's been.



  • @DOA said:

    @jetcitywoman said:

    Just pat him on the head
    I wouldn't. You don't know where he's been.

    Trust me, it's worse if you do know.



  • @DOA said:

    Just be glad you can veto a hire. Some of use have to work with whoever the boss had a drink with last night.
    Well, I haven’t talked about the consultants that the company has used since before I was hired (and are still used, despite me and another person telling the owner in no uncertain terms that she should not be using them). I probably should; there’s an endless supply of WTF there. The only reason I haven’t had to do much work with them is because their complete lack of maturity early on made it so that I was entirely justified in refusing to work with them.

    The first incident was about a month after I was hired. One of them sent me an email asking me to call them for a “quick 5 min call”—at 8:30pm on a Friday. I replied back that I didn’t provide phone consultations during the weekend, but that I could schedule a call on Monday if he let me know what time was good for him, or alternatively that he could email his request directly and I’d be able to respond to it more quickly that way. He took my email and forwarded it to the person that recommended me for the job as well as the owner of the company and called me “an arrogant asshole”.

    The second was about a month after that, after I prepared a report showing a myriad of security vulnerabilities in their codebase. Instead of copping to the fact that these issues existed, they decided to deny everything—and then disabled my access to make changes to the codebase, claiming that I was a security risk, and that before I would be allowed to work on anything again, the company would need to pay them an (exorbitant) fee for a new dedicated server. (Yes, the consultants were hosting the site on their own server, and the company I worked for, that paid for the work, was never actually in control of the entire codebase up to that point.)

    Despite this, and the fact that a second person just the other day said that he couldn’t stand working with them anymore because they are incapable of following very simple instructions (like, “go to this Web page with nothing on it except for a link that says ‘Download files’, click the link, and deploy those files to your Web server”), the owner has continued to send them work. In response to this person’s complaint, the owner said “i don't think that [contractor name] is terrible. i just think he doesn't listen or pay attention often”. Which is, of course, a ridiculous thing for someone with no technical prowess to say when she’s being told by two different qualified entities to stop using them. Funnn.



  • @owner said:

    i don't think that [contractor name] is terrible incompetent. i just think they don't possess aspects of competence he doesn't listen or pay attention often
     

    FTF Me, You & Everybody.

    I'm stumped.


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.