6 ms·
How to recognise a good programmer (2007)
- diN0bot 17y agoquality is still hard to measure. speaking from experience, i've always had passion and personal projects, etc, but i used to be a sucky programmer. now i feel like i've mastered certain things, but i'm still developing and getting better. for one thing, quality comes from sustained effort and committment. i've been working full time on startups for a while. that's a hell of a lot different than someone doing a different weekend toy project every month. i'm friends with some pretty passionate "hackers," and i'm definitely not knocking that kind of activity---heck, i have side projects sometimes, too. but there's a big difference between hacking and building something serious. toying with tons of APIs and langauges doesn't make someone a good programmer. finding a good programmer is still hard. even if programmers were completely honest, and the metrics all objective, would they even have the language to explain to business guys that they were good programmers, both in technical proficiency and quality? it's not impossible, but it's quite difficult.
- csytan 17y agoI find that for me, side projects are very beneficial because they give me absolute freedom to try new things without stepping on co-workers toes. I have to agree that metrics don't tell the whole story. It really depends on what the programmer is looking for. Some people may be attracted to new features & complexity in their projects, while others look to design a small simple project.
- ldh 17y agoAgreed. Often the worst part of my day job is having to worry about what might confuse or frustrate co-workers.
- diN0bot 17y agotrying new things is great. it's also extremely different, or rather limited, than what is needed for a start up. that is, you need A LOT more than the desire and experience of toying with new things. toying is part of the inventor spirit and different projects need different things. one project might be ok with one of the mockups architects make. another project might need the life sized building. and so on in between, changing as the project grows.
- dbz 17y agoI fit some of those criteria! I don't feel it in my place to judge my programming skills in front of everyone here though. =p
- sketerpot 17y agoIf loads of false negatives are okay, here's a simple heuristic: I don't think I've ever seen a Haskeller who wasn't plenty smart.
- ggruschow 17y agoI've seen a lot of smart people who weren't good programmers.
- Dilpil 17y agoIn practice, how much of this article is about informing business folk and how much is about patting ourselves on the back?
- cakesy 17y agoIt is really hard to tell someone competent, let alone good. Consider doing it for a surveyor or pilot, how would you tell a good one? Not easy.
- rw140 17y agoI'm generally interested in other people's criteria for hiring people as it makes me think about what I'm not doing (and whether that's a concious decision or I've just got distracted / out of the habit), and what I could be doing better.
- j_baker 17y agoI'll be honest. It's probably all about back-patting. Personally, I like having my back patted though.
- deleted 17y ago[deleted]
- edw519 17y agoI know OP means well, but this post provides far more data about his own experience than anything that can be reliably used by the reader. What he calls "indicators", I call "co-factors". They may or may not accompany a given programmer, and they predict nothing. Generally speaking, good programmers are intelligent and do care about their work, but his positive indicators are much more a matter of personal preference than the quality of their work. For each good programmer OP can identify who programs as a hobby, will talk your ear off, started programming before university, or has knowledge of a lots of technologies, I can cite a counterexample. Similarly, I can also identify many good programmers who possess some of OP's "negative indicators" like having a day job, enjoying a single technology, not wanting to talk shop, or enjoying other activities. There is one sure-fire way to identify a good programmer: their work. In fact, it is by definition the way that we should evaluate programmers. It is the great equalizer, and with web technology, exposed for all to see. It really is as simple as cause and effect: good programmers produce good work; bad programmers don't. Anything else, including OP's positive and negative indicators, is just a detail.
- marciovm123 17y agoThat misses out on efficiency. Good work that takes an inordinate amount of time can indicate high standards but not the ability to get things done (which I would consider an attribute of a good programmer).
- cakesy 17y agoWhat we are looking for is a way to find good programmers, for non-technical people. You seem to be missing this point, and have gone of on a rant. How do you look at someones work and tell if it is good? Most projects involve more than one programmer, and how can you even tell how good it looks underneath the front? How do you know it even works as it is supposed to? You are basically saying nothing at all.
- azanar 17y agoThere is one sure-fire way to identify a good programmer: their work. In fact, it is by definition the way that we should evaluate programmers. It is the great equalizer, and with web technology, exposed for all to see. Unless you are presuming a team of only a couple of developers doing their own thing, there is a real challenge in determining the extent of the programmer's responsibility for something that is exposed for all to see. There are a number of other causes that might make a site a developer helped work on look or run like complete garbage. Organizational inertia might have forced the site into sucking, regardless of how good the programmers developing it were. The organization may have one or more bad programmers who were assigned to work on some critical component, screwing the whole site and all the good programmers. We can wax on eternally about how the good programmers in this situation should've seen the writing on the wall and gotten out as soon as possible, but that's very easy to say seated in armchairs gazing from afar. Maybe they thought things were going better than they really were; maybe they saw things going bad, and thought they could motivate others to turn things around before things become a disaster -- and maybe they failed trying to do that[1]; maybe they have been trying to get out, but they are already tainted by the bad work of the organization that has become part of their image as well. They could do work outside of their employer, for instance on an open source project, but these can succumb to the same sort of pressures that push profit-seeking organizations toward mediocrity. A single developer, even a really willful one, will have a hard time overcoming this inertia. [1] At one of my prior employers, I was in this boat; I both tried and failed to get things turned around. I did quit, but probably not soon enough to convince people that the site was not a reflection of me and my standards. The site was absolutely shameful, and I'm sure anyone who used that site to infer things about my skill level would've sworn I had no skill or experience outside of a weekend PHP crash course. Granted, it would vet one organization I would probably not want to work at; but it would represent wasted potential based on presumption, which is a shame. I really think the details matter, because they are a chance to determine if the work you are using to assess the programmer is spurious input, and reflect an influence largely made up of things other than that programmer.
- araneae 17y agoJust something I noticed: "If your potential programmer didn’t do any programming before university, and all his experience starts when she got her first job, she’s probably not a good programmer." This is the only time he uses the female pronoun anywhere in his post, and he uses it to describe a programmer that started in college and isn't any good. Conscious or not, it's somewhat accurate; female cs majors are less likely to have prior experience with programming going into college.
- mistermann 17y agoMaybe it shows he actually knows what he's talking about! ;) Not that I agree with the article entirely...
- deleted 17y ago[deleted]
- patio11 17y agoI subscribe to the Build Stuff school of programmer evaluation. Why do you hire a programmer? So you can have him build stuff. Has he built stuff? Then he can probably build stuff. If he hasn't build stuff, he might be able to build stuff, but it is a better idea to have somebody else pay to figure out whether he can build stuff or not.
- derefr 17y agoSo, if everyone follows your philosophy, how do people get started building stuff?
- mquander 17y agoHint: You do not have to be employed by a company in order to build stuff.
- derefr 17y agoWhen I say "if everyone follows this philosophy," I include both VCs and college acceptance boards in that antecedent. Then, presuming you don't have a trust fund, the only way to get your start building stuff is to do it on the side while being underemployed; this is a net efficiency loss for the economy.
- mquander 17y agoFirstly, colleges are not in the business of making admittance decisions based on whether you are a good programmer or not; secondly, 40 hours a week is the standard for being reasonably well-employed, which leaves a whole lot of hours for doing your own thing in life (not to mention the years you're in primary and secondary school, during which many programmers build a pretty passable CV of personal work.) I feel guilty even typing this much, because I don't think you're being intellectually honest at all. The vast array of open-source and free projects in the world speaks plainly about the ability of people to build useful things outside of work.
- jquery 17y agoTL;DR - they're smart and their whole world outside of work revolves around their profession and they've been doing it their whole lives. You could write a "How to recognize a good [X]" article about almost any profession if that's your thesis. Let's face it, the vast majority of work programming isn't that hard. A lot of programmers, perhaps especially the good and smart ones, might rationally realize that having a life outside of work--in other words, working a 9-5--often makes more rational sense than putting all of one's considerable intellectual energy into writing yet another CRUD (or whatever application du jour one normally writes) remix.
- InclinedPlane 17y agoI think there's a good point in your comment but I think you have buried it in unnecessary insults and mischaracterizations of the article. For all of the great devs I know and have known programming is very much a passion for them, and they will engage that passion outside of work. But this doesn't mean their job is their life or that they don't maintain a healthy work/life balance. Indeed, working on projects they're passionate about outside of work can often provide a release from toiling with a brain-dead code base at work. Also, the vast majority of software development may not be hard, but perhaps that's because the vast majority of developers aren't that good. The work being done by the best devs is orders of magnitude better (and more challenging) than the work being done by the daily-wtf generating paycheck programmers in the enterprise trenches.
- tdziuba 17y agoThe same drivel I read here every 20 days or so. Move along, nothing to see.
- mlLK 17y agoI am going to extend the discussion by asking this, how do you recognize a good programmer who wasn't born from the culture of academia? The only reason I ask is that I consider myself a late-bloomer, and after reading Coders at Work (which I highly recommend) I was kind of bummed out that I squandered my opportunity in college by not hanging out with CS crowd. It seemed like so many of Seibel's interview subjects accomplished so much in this period and were more or less born to be programmers. . .it sounds trite when I read it aloud but I can no longer ignore this unspoken caste system amongst programmers.
- rw140 17y agoHow much weight would anyone here give to the "Started programming at university" criterion? It's one that is bugging me slightly because 1) it applies to me and 2) it's not something I can go back and change.
- nickelplate 17y agoI know a lot of good programmers who started in university. Not everyone discovers their passion when they're young, or has the opportunity to pursue that passion (in the third world, starting young may mean starting in university). Some of the skills that help you "code smarter" are not necessarily learned in front of a keyboard (math, English, etc.).
- gridspy 17y agoWhy did you wait until Uni to learn to program? Is that the point when you finally realised you had the freedom to do what you wanted in life? - If so, perhaps you are alright. Is that when someone told you that you needed a job, and programming looked well paid? - Perhaps not so good.
- richieb 17y ago"Why did you wait until Uni to learn to program?" Because at that time computers took entire floor of building and costs millions of dollars. By the time I got my hands on Apple II I was in graduate school...
- azanar 17y agoHonestly, it would serve more to guide my questions than it would to just flat dismiss someone as untalented or apathetic. Curiosity and genuine interest develop at different times for different people depending on the circumstances of their life. They might have not discovered programming until later in their life, or they may have been soured by an bad experience early on and only came back later on. For some people, they don't discover programming until university, but then find the absolutely love it and quickly develop a considerable talent. For these people, who do exist, the pre-university test is a false negative. A lot of these tests people come up with are based on the concept that past performance indicates future potential. The thing about these tests is that they suck really bad, except that for certain things there are no other tests. A meteorologist I once heard talking about weather phenomena in Alaska joked in his talk about how there are two possibilites for available weather data there: data sparse, or data void. It is much the same in finding good programmers. There are a lot of important considerations, and getting a feel on each depends on sparse data at best. The best advice I can offer is don't take things like this too personally. Following advice from pg almost certainly applies to applying and interviewing for jobs as well. Don't be put off if they say no. Rejection is almost always less personal than the rejectee imagines. Just move on to the next. (This applies to dating too.) - Paul Graham, Undergraduation. Just take it as a sign that they probably would be judging you even after you are hired in ways that you might find unreasonable. Not every hacker is meant for every programming job.
- clistctrl 17y agoI would say I fit all of his criteria, but I would define myself as a mediocre programmer at best.
- JosephAltmaier 17y agoA "good programmer" hasn't been defined, has it? Does it mean an architect, designer, tester, integrator, debugger, coder? Each of these requires a different skill set. Very few have all of these skills. Some are nearly mutually exclusive. I know for instance that a good tester (worth their weight in gold) has almost completely orthogonal skills to a good developer. The tester focuses on regression, corner cases, code coverage, etc. The developer is sprinting toward a goal. I've had some limited experience hiring - 15-member teams for startups. My approach is to fill out the skill set, put them in a snug environment to promote communication and collaboration, and then monitor the heck out of the progress. My job then is to keep them on track, make sure all the holes and cracks are addressed, and mediate disagreement. I've repeatedly hired (different startups) a plodding, methodical, university-educated, by-the-book programmer to crank out database schema with its 200-plus-dialog query frontends. And an inspired, chaotic, brilliant, chronically sleep-deprived developer to write the 100,000+ lines of code a year we needed to get to the next funding stage. In the same team. In the right environment these guys even learned to respect and admire each other.