Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Businesses Programming IT Technology

How to Recognize a Good Programmer 529

KDan writes to share an article he has written about what some of the key factors in recognizing a good programmer. "It's not as easy as it sounds. CV experience is only of limited use here, because great programmers don't always have the 'official' experience to demonstrate that they're great. In fact, a lot of that CV experience can be misleading. Yet there are a number of subtle cues that you can get, even from the CV, to figure out whether someone's a great programmer."
This discussion has been archived. No new comments can be posted.

How to Recognize a Good Programmer

Comments Filter:
  • by El Cabri ( 13930 ) on Friday January 11, 2008 @04:24PM (#22004260) Journal
    How to recognize someone who would give good advice about how to recognize a good programmer ? I think the C.V. can be misleading : the " official " experience at hiring programmers does not necessarily mean the the person would be apt at giving good advice about hiring programmers.
  • by SCHecklerX ( 229973 ) <greg@gksnetworks.com> on Friday January 11, 2008 @04:45PM (#22004674) Homepage
    The best I've met have degrees in English, Physics, Engineering, or Math. They then focused on the programming aspect as needed to create tools that helped them and their peers to streamline their work. As that focus became more of a primary job function, they honed their skills and methodology around maintainable code, version control, security, documentation, reusable modules, etc.

    I'm guilty of being one of these types myself, but have since moved up to project management around security type stuff after having taught those who replaced me the things that I learned through experience.
  • Re:WTF is a CV? (Score:5, Interesting)

    by MyrddinBach ( 1138089 ) on Friday January 11, 2008 @04:47PM (#22004708)
    CV is latin for Curriculae Vitae which as someone else noted means "course of life" and it is a bit of a misnomer to use "CV" as a resume as traditionally a CV actually includes everything related to your "life" - thus "course of life" - a true CV would be more a of a large binder with many many pages - a portfolio if you will - of anything and everything you have accomplished and achieved in your life whereas a resume is usually just a one page condensed version of anything relevant to the job you are trying to acquire.

    I actually have something that is closer to a true CV - a portfolio that is about 25 pages of material of all my IT experience, education, major projects, contacts, letters of recommendation, etc. When I apply for a job I send them my resume but if I get called for an interview I bring in my portfolio and use it during the interview - it often has a very large positive impact.

  • by MightyMartian ( 840721 ) on Friday January 11, 2008 @04:56PM (#22004874) Journal

    Frankly, I work 50+ hours a week and the last thing I want or feel a need to do is look at a f*cking computer when I go home. And this comes from someone who got a Master's in CS while working full time; led implementation of new technologies and languages within the group.


    One of the best programmers I ever knew wrote and maintained a large Cobol-based Point-of-Sale program for MS-DOS. It was an incredibly good product, with all sorts of hooks for all sorts of POS-based equipment, right down to pump controllers for gas stations. He had an office, worked there, but when he went home, he went home. It's tough in this day and age to do that sometimes, but I really envied the way he actively divided his world between work (development, marketing, support) and home (family and recreation).
  • Point by point (Score:5, Interesting)

    by SirGarlon ( 845873 ) on Friday January 11, 2008 @05:13PM (#22005154)

    I disagree with a lot of these points.

    * Passionate about technology * Programs as a hobby

    Reasonably good indicators

    * Will talk your ear off on a technical subject if encouraged

    Ability to yammer on about a subject one's audience does not care about is a weak indicator of programming ability and a strong indicator of poor communication skills

    * Significant (and often numerous) personal side-projects over the years * Learns new technologies on his/her own

    OK

    * Opinionated about which technologies are better for various usages * Very uncomfortable about the idea of working with a technology he doesn't believe to be "right"

    NO, NO, NO!

    A good programmer has an open mind and makes decisions after thought, study, and understanding the users' needs; not based on some knee-jerk personal prejudice.

    * Clearly smart, can have great conversations on a variety of topics * Started programming long before university/work * Has some hidden "icebergs", large personal projects under the CV radar * Knowledge of a large variety of unrelated technologies (may not be on CV)

    Negative indicators: * Programming is a day job * Don't really want to "talk shop", even when encouraged to * Learns new technologies in company-sponsored courses

    There is nothing wrong with taking advantage of company-sponsored courses. Taking advantage of classroom opportunities is just good time management (it can be easier to learn more, faster, in a well-taught course than in self-study).

    * Happy to work with whatever technology you've picked, "all technologies are good"

    So what you're looking for is a prima donna who will refuse to work in the environment you ask him to, and is insubordinate out of the gate? No. A good programmer will find the strengths of the technology you've picked and design a strategy that plays to those, rather than just telling you you've made a stupid choice and should have used his pet technology instead.

    * Doesn't seem too smart

    I don't know if it's ever a good idea to hire someone who "doesn't seem too smart."

    * Started programming at university

    That's a stupid criterion. Why someone starting programming is a lot more important than when

    * All programming experience is on the CV

    Inability to write a complete CV is hardly an indicator of competence. The author is biased in favor of people who started programming at the age of 9, as he did.

    * Focused mainly on one or two technology stacks (e.g. everything to do with developing a java application), with no experience outside of it

    Nonsense; depth of knowledge is as important as breadth of knowledge. Ability to justify 50 different buzzwords on one's resume doesn't make someone a good programmer. It is a lot better to talk about the problems the candidate has solved, than the technology used to solve them.

  • by SirGarlon ( 845873 ) on Friday January 11, 2008 @05:27PM (#22005400)

    As one of the elite few programmers who does know how to spell, thank you for noticing. I would say "take it as a good sign" rather than "get out your checkbook" but I'm just the cautious type I suppose.

    However - I can spell, and my brother can't. I believe this has more to do with the teaching methods in our respective elementary schools than with our inherent attention to detail. His school used an experimental method that I think failed him utterly - at a time before national standards were yet fashionable.

  • by spkog ( 1167487 ) on Friday January 11, 2008 @05:35PM (#22005532)
    "A; B; while(F) { C; D; A; B;} C; D;" from "while (F) {A; B; C; D; }" works only if the loop always iterates 2 or more times. If F is not true or F is true for 1 iteration, the proposed substitution is incorrect.
  • by bkr1_2k ( 237627 ) on Friday January 11, 2008 @05:36PM (#22005552)
    Every time you have an interview, it should be their interview as much as yours. That's the point of an interview, to see if you fit together, not just to see if they think you fit them, but to see if you think they fit you too.

    Every interview I've ever had, I interviewed my interviewer as much as they interviewed me. Maybe I'm strange, but it's worked so far.
  • by Anonymous Coward on Friday January 11, 2008 @05:44PM (#22005688)
    Funny... from the point of view Central/Eastern European country citizen... your last names are often unpronounceable. Think about as dollar weakens.
  • by DreamCoder ( 679179 ) on Friday January 11, 2008 @05:52PM (#22005848)
    I've written some truly amazing code which works quickly, efficiently and is used on hundreds of different high traffic websites. I have yet to find someone who can understand what it does and how it does it. Its voodoo to everyone. Its a 20 line snippet which never needs to be touched.

    LOL - I double-dog dare you to post these magical 20 lines here. If you do, I guarantee you will find that:

    (A) Most of us will understand it.
    (B) Many of us could make it better.
    (C) It's definitely not voodoo.

  • Re:Baloney (Score:5, Interesting)

    by Xentor ( 600436 ) on Friday January 11, 2008 @06:06PM (#22006116) Homepage
    I do agree with you on the "programming is a day job" part, mainly because I'm going through the transition myself. I used to spend a lot of time at home playing around in different languages, writing my own games and utilities, endlessly writing and rewriting websites... Now, I just want to go home and vegetate in front of a game or the TV...

    The change? Full-time job. After spending a full day programming to earn my paycheck, it just becomes mentally separated from what I do in my spare time. I kind of miss the old college days when I could just spend hours and hours doing it for fun, but now I just want to zone out.

    As for the new technology part, I somewhat agree... A good programmer shouldn't be ranting about how everything MUST be done on Ruby-on-Rails, because that's the new fad (Yes, I realize it no longer is. That's the point)... A good programmer will look at a new technology, look at the needs of the project/business, and decide whether or not that technology is a good fit. If it's a major improvement that fixes existing problems, then he'll start pushing it.

    On the other hand, when you're interviewing a programmer, and ask them about some personal project or technology they worked with, getting your ear talked off is a good sign, because this ties into the whole "passion" part. If they find this project or tech interesting enough to ramble on about, this is probably someone who's in the industry because they enjoy it, not because their high school guidance counselor told them it pays well.

    So, on to social skills. Yes, you need to be able to communicate with and get along with other programmers, even those who aren't on the same level. Apart from that, the importance varies depending on the person's role. If they're going to be one programmer on a large team, working off design documents and style conventions, then it's not that important. If they're on a smaller team, and will be working directly with the business side to design parts of the application, then social skills become a necessity. Of course, if you find someone who just wants to sit in a dark room apart from the rest of the team, and just silently deliver code modules to them, then you might want to look elsewhere.

    Qualifications... Degrees... I think the article was basically preaching against certifications, and in that respect I agree entirely. I don't care if someone passed a certification test by Microsoft or Sun... That means they know how to work with one specific area of technology, well enough to pass a test once. It doesn't say whether they can think for themselves, or adapt to a new situation.

    On the other hand, an undergrad degree can be a good thing. You don't learn how to program in college (Well, I hope not), but you do learn how not to reinvent the wheel. You learn some standard algorithms, data structures, and methodologies, and you learn about lots of things that you'll consider useless at the time (Natural sciences, higher maths, etc), but will still influence the way you think. A master's degree or doctorate, well, I don't know... I've worked with PhDs who couldn't think outside the smallest box, and I've worked with a few who could work miracles. A dropout might be a bad sign (Though not a disqualifier, depending on other factors), but I wouldn't trust a PhD to necessarily be better than an MS or BS.

    In short, you make some good points, but you're leaning toward the other extreme. Remember, you're looking for a programmer, not a corporate executive. This is about looking past the doublespeak and self-promotion and determining whether someone can write quality software.

    On a side note... The phrase "working yourself out of a job" is starting to look really scary... I shouldn't have automated this place so well that I have nothing to do but post on slashdot...
  • by Anonymous Coward on Friday January 11, 2008 @06:07PM (#22006136)
    char *reverse (char *buf) {
            int len = 0;
            while (buf[len] != 0) len++;

            for (int j = 0; j < len / 2; j++)
            {
                    buf[j] += buf[len-j-1];
                    buf[len-j-1] = buf[j] - buf[len-j-1];
                    buf[j] -= buf[len-j-1];
            }
            return buf;
    }
  • by daem0n1x ( 748565 ) on Monday January 14, 2008 @07:33AM (#22033032)

    Dude, you're right on spot, with the exception of the Bangalore code-monkey, which sounds a bit racist to me.

    I've worked with a few nerds before and, in spite of being considered "geniuses" by the management they are a pain to work with, they work too many hours and force others to do the same because they are unable to plan and organise, and also explain themselves and listen to others. Once, for a particular project, the lead developer coded an FTP stack of her own in C++ because he didn't trust the standard ftp unix command or any free FTP library.

He has not acquired a fortune; the fortune has acquired him. -- Bion

Working...