Discover the best of the web!
Learn more about Digg by taking the tour.
- 1399 diggs
- digg it
- le0pard, on 01/12/2008, -1/+144programmar?
- jmpeagle, on 01/12/2008, -0/+102better than being antigrammar
- dinostabOMG, on 01/12/2008, -2/+15epic win
- norbiu, on 01/12/2008, -0/+55poorgrammar
- cotaskmemalloc, on 01/12/2008, -11/+3I deliver unto you a +digg
- zen6ox, on 01/12/2008, -0/+18Or even digg++;
- cotaskmemalloc, on 01/12/2008, -11/+3I deliver unto you a +digg
- Spuy767, on 01/12/2008, -2/+2"Negative Indicators:
-Doesn't seem to smart?" Um. . . no *****?
- floridiot2, on 01/12/2008, -0/+11Pirates who are programaaaarrrs.
- Emused, on 01/12/2008, -0/+12Àℜℜ∂h¿
- anthraxe11, on 01/12/2008, -9/+0recognise?
- TheSmiddy, on 01/12/2008, -1/+10Australian/British spelling
- gldfshnpcklejar, on 01/12/2008, -2/+3british much?
- tdous, on 01/12/2008, -0/+1*****, over-used phrase much?
- smacksaw, on 01/12/2008, -1/+7Says the guy who spells "Anthrax" as "Anthraxe", with "ax" being the joke - and the US English spelling, while "axe" is the correct, English spelling.
WTG. You win the Hypocrisy Olympics.
- fryguy1013, on 01/12/2008, -1/+21poster obviously has pro grammar.
- WikiEasy, on 01/12/2008, -9/+1Is that Jesus in your anus?
- Midnitte, on 01/12/2008, -2/+0Leave Jesus out of this. >:(
:)
- Midnitte, on 01/12/2008, -2/+0Leave Jesus out of this. >:(
- rootneg2, on 01/12/2008, -8/+6i think it's an intentional, subtle (and very clever) pun. and I give a digg for it (plus, the article is pretty good too)
clearly the poster knows how to spell programmer, from the title. And since the description is cropped to merely "good programmar" (as opposed to repeating the entire title), much as you would say simply "good grammar" as a possible description, it seems intentional. Programming languages *are* nothing more than a "formal grammar"; but in natural language there are concepts that play a part in "good grammar" outside the formal ruleset (things like: use clear, concise sentences; don't use extraneous words/structure; etc). Since automated compiler/spellchecker/debugging programs take care of almost all of the formal grammatical errors, "good programming practice", even in the broader sense of this article, can really be seen as nothing more than "good grammar" in the same sense we use the word to describe natural languages.- DynamiteMonkey, on 01/12/2008, -1/+10That or he's a moron. I'll stick with Occam's razor on this one :)
- Trollhammaren, on 01/12/2008, -0/+11I shaved with Occam's razor once, it wasn't that great because it insisted I only needed one blade.
- Spuy767, on 01/12/2008, -3/+2So Ockham would not use a Fusion Power?
- Spuy767, on 01/12/2008, -3/+2So Ockham would not use a Fusion Power?
- Trollhammaren, on 01/12/2008, -0/+11I shaved with Occam's razor once, it wasn't that great because it insisted I only needed one blade.
- DynamiteMonkey, on 01/12/2008, -1/+10That or he's a moron. I'll stick with Occam's razor on this one :)
- jmpeagle, on 01/12/2008, -0/+102better than being antigrammar
- Frecklefoot, on 01/12/2008, -24/+4Excellent list for anyone looking to hire a programmer (guilty, I fit most of his criteria).
- NotOptium, on 01/12/2008, -1/+10*toot toot*
- Fordi, on 01/12/2008, -4/+1Same here. I thought is was kind of funny; here, my boss just asked me to hire a couple of new guys to work on other projects so that I'm not so loaded down with my 75 hours weeks, and I come across an article that says I'm looking for my clones.
By the way, you need a job? Prototype, Ruby, PHP, JScript/ASP.NET required.
- snowlark, on 01/12/2008, -8/+2Great article, content, and perspective! Keeping this one to support much of my own choices when reviewing candidates from resume review through to onsite interviews.
Thanks! - harry4000, on 01/12/2008, -5/+78I'm a programmer, and this reminds me of when I was at a party with smart business people, and I was asked how to spot a good programmer. My answer was that a good programmer is able to articulate his ideas in plain English in a way that makes sense and are relevant to the business objective. Some programmers use jargon to answer questions, and are able to fool some business people into thinking that if the programmer knows so much jargon and is difficult to understand, then he's the real thing. That could not be further from the truth! Bad programmers are the ones who ONLY understand how the computer works, and DON'T understand how software works in relation to the outside world.
- smacksaw, on 01/12/2008, -2/+12hahahaha...I got fired from a project for doing the "good programmer" thing. I was brought in as consultant to brainstorm and fact-check and pick up slack for a big project run by IBM and Accenture. Long story short, when I explained to the principals what IBM and Accenture were selling them, the principal responsible for signing with IBM/Accenture had me fired from the project. The other 2 principals said "Why didn't we just hire this guy? We're just wasting a ton of money."
There I learned the lesson that sometimes it's better to let people be fooled. They're not buying a result, they're buying an idea. Good code or security or whatever matters to those of us who DO those things, but not usually the people who want them done.- pcpimpster, on 01/12/2008, -3/+2A coder for about 10 years, basically people dont give ***** about how we do,,, what we do. The just want what they can "think" of to make their lives easier.. I like to give them something they could never think of as the answer or cut them out totally
and then say to the VP... F#$k you, pay me.- smacksaw, on 01/12/2008, -0/+1hahahaha...that's true as well. Some of the garbage people ask for that you have to put into a scope of work is akin to writing Mad Libs or something equally absurd. I always used a basic template with fields for my SOW and filling it out was hilarious when people wanted totally redundant or absurd crap. They'd spend more time on the colour of the hardware than the actual ergonomics of it, or whatever. And God forbid you add anything in there they didn't ask for or don't understand - yet when they hire someone to come in and check the work you look bad for leaving essential stuff out.
- rootneg2, on 01/12/2008, -0/+10reminds me of an article extolling the virtues of bad code:
"Write code that is poorly commented/documented, has obtuse and nonsensical naming and structure, and uses as many odd quirks of the language as possible (bonus points for writing your own extensions), so much so that only *you* could possibly debug it; it's the ultimate job security."
- pcpimpster, on 01/12/2008, -3/+2A coder for about 10 years, basically people dont give ***** about how we do,,, what we do. The just want what they can "think" of to make their lives easier.. I like to give them something they could never think of as the answer or cut them out totally
- skywake, on 01/12/2008, -4/+9Another good point to add would be that good programmers don't "write code" but instead "make software". Being able to hack something together with little to no documentation is alright if you are an Electronic Engineer but not if you are working on a big project. The last thing a programmer should be thinking about is the code.
- counterplex, on 01/12/2008, -0/+10Not sure I agree with that. I think there's a subtle difference between a programmer and a software engineer. While a software engineer will be able to convert requirements into design, design into implementation and an implementation into a product. A programmer is basically the one who converts design into implementation and sometimes not even that. A programmer will be able to run circles around you with his language of choice be it perl, Java, C++ or anything else. He can optimize a given routine or refactor entire swathes of code with ease.
Having said that a lot of good programmers evolve into software engineers which makes the distinction somewhat blurry since those people still call themselves and consider themselves programmers. In short, a software engineer can be a programmer but a programmer is not a software engineer. The moment a programmer starts working outside the "design to implementation" box, (s)he's started the evolutionary path to becoming a software engineer.- smacksaw, on 01/12/2008, -0/+2Yeah, I agree with you on that. Personally, the guys who run a network day-in and day-out know way more about the little nuances than I do. But as an engineer, I have more breadth of knowledge than they do. I can't do what they do at the same rate or effectiveness, but they can't do what I do, either. I think the programmer is someone you hire for in-depth knowledge, know-how and specific expertise. But the engineers and project managers are the people you hire because the sacrifice that comprehensive skillset for a bigger understanding of the big picture. There's just only so much time in the day and it's not feasible to be an expert at everything. The engineer needs to only be knowledgeable enough to know if things are possible, being done correctly, can eyeball code or whatever.
It's a waste of expertise to ask an architect/GC to plumb a house, and a plumber is not going to know enough about pouring foundations, septic design, electrical code, etc.
- smacksaw, on 01/12/2008, -0/+2Yeah, I agree with you on that. Personally, the guys who run a network day-in and day-out know way more about the little nuances than I do. But as an engineer, I have more breadth of knowledge than they do. I can't do what they do at the same rate or effectiveness, but they can't do what I do, either. I think the programmer is someone you hire for in-depth knowledge, know-how and specific expertise. But the engineers and project managers are the people you hire because the sacrifice that comprehensive skillset for a bigger understanding of the big picture. There's just only so much time in the day and it's not feasible to be an expert at everything. The engineer needs to only be knowledgeable enough to know if things are possible, being done correctly, can eyeball code or whatever.
- drakethegreat, on 01/12/2008, -0/+4You're an idiot. Good programmers think about both making software and code. If you sit and think about the software and not how to actually implement it at some point how the hell are you ever going to actually complete an iteration or any sort of prototype?
- counterplex, on 01/12/2008, -0/+10Not sure I agree with that. I think there's a subtle difference between a programmer and a software engineer. While a software engineer will be able to convert requirements into design, design into implementation and an implementation into a product. A programmer is basically the one who converts design into implementation and sometimes not even that. A programmer will be able to run circles around you with his language of choice be it perl, Java, C++ or anything else. He can optimize a given routine or refactor entire swathes of code with ease.
- Fordi, on 01/12/2008, -0/+4Eh. That's not a sign of a bad programmer, that's a sign of a deceptive human being - and applies to any field. As a general rule, if they can't break it down, they're lying.
- neio, on 01/12/2008, -2/+1QFT
- calon9, on 01/12/2008, -1/+0I don't understand what you are trying to say.
- smacksaw, on 01/12/2008, -2/+12hahahaha...I got fired from a project for doing the "good programmer" thing. I was brought in as consultant to brainstorm and fact-check and pick up slack for a big project run by IBM and Accenture. Long story short, when I explained to the principals what IBM and Accenture were selling them, the principal responsible for signing with IBM/Accenture had me fired from the project. The other 2 principals said "Why didn't we just hire this guy? We're just wasting a ton of money."
- brendoman, on 01/12/2008, -12/+8This article was very helpful to me as an aspiring programmer to know what people are looking for and what I should be doing and working on.
- pcpimpster, on 01/12/2008, -0/+14Programmers dont like newbs.
Just kidding, were actually friendly - as long as you dont talk.- smacksaw, on 01/12/2008, -2/+3Just tell him to leave his messages in the code like this:
## Hey guys, wanna get a beer tonight?
## I was thinking about a Halo 3 party.
- smacksaw, on 01/12/2008, -2/+3Just tell him to leave his messages in the code like this:
- Fordi, on 01/12/2008, -0/+7More an indicator to an aspiring programmer as to whether or not they should be looking for something else.
Can you imagine yourself being flung out of bed by having figured out that inheritance problem you've been wracking your head over for hours? Do you get immense joy at seeing work the next most complex thing than you've done before? Can you see yourself poring over an API manual just so that you can see what's available and imagine the possibilities? If so, you can be a great coder. If not, you might want to pick something else to spend your time on.- atgmac, on 01/12/2008, -1/+1Yes! Yes!! YES!!!
But it's true, you have to really love to code. Otherwise you're going to be very bored. It takes a certain kind of person to sit in front of a computer all day writing code.
- atgmac, on 01/12/2008, -1/+1Yes! Yes!! YES!!!
- pcpimpster, on 01/12/2008, -0/+14Programmers dont like newbs.
- mooseontheloose, on 01/12/2008, -19/+64#1. Virgin
- Fordi, on 01/12/2008, -1/+12#2: Not a presumptive assclown.
- floridiot2, on 01/12/2008, -6/+4#3 a penis.
Haha, I kid ladies.- asdfuiop, on 01/12/2008, -0/+3Sorry, the correct answer was
#3: ???- Exbzurg, on 01/12/2008, -0/+4#4: Profit
- asdfuiop, on 01/12/2008, -0/+3Sorry, the correct answer was
- daveisfera, on 01/12/2008, -4/+10I was pretty skeptical when I started reading the article, but the more I think about it the more I think he's hit the nail right on the head.
- greenblob, on 01/12/2008, -2/+19More like "How to recognize a good ________"
These qualities are universal.- Fordi, on 01/12/2008, -0/+1Some are. You'd have to expand the definition of #5 to apply it to everything...
"#5 : Variety of applicable skillsets"
Done and done.- stefys, on 01/12/2008, -0/+0How to recognize a good janitor
- Fordi, on 01/12/2008, -0/+1Some are. You'd have to expand the definition of #5 to apply it to everything...
- wukillabee, on 01/12/2008, -6/+2*****
- wukillabee, on 01/12/2008, -2/+7digg comment system is ass on firefox
- Maloney, on 01/12/2008, -0/+4NO U
- combatchuck, on 01/12/2008, -0/+4digg comment system is ass
fixed
- wukillabee, on 01/12/2008, -2/+7digg comment system is ass on firefox
- wukillabee, on 01/12/2008, -5/+0^-- how to recognize a good pirate
- RobLiefeld, on 01/12/2008, -13/+13#10. Neck beard, smells, and dresses like a flood victim
- Fordi, on 01/12/2008, -1/+4#8: Can appreciate qualities in other disciplines that are analogous to his own.
I hit up your site from your profile. You obviously have passion, variety of technique, experience that's not on the record, and self-instruction going for you. I respect anyone who has become a master of their discipline, and I tip my hat to you. I don't know that you've had much experience with actual programmers, but let me talk about my co-workers for a second.
Two are cyclists; one a guitarist and the other a drummer in their metal band.
One is a painter as a hobby. Nothing too great, but he does it for the fun of it.
One is a political junkie.
One is a dive instructor, female, and has a degree in graphic design.
One (one of the cyclists) does, indeed have a neck beard (I call it a 'guru beard', despite that I'm a better coder than him). The rest keep clean shaven, or don't need to.
Not one of us smells, except myself - but that's just 'cos I'm a smoker.
Coding is far more an artform than it is a science. Get that past your prejudices, if you please. They're not particularly funny anymore.- Lyk4n, on 01/31/2008, -0/+1You sir, got trolled.
- Fordi, on 01/12/2008, -1/+4#8: Can appreciate qualities in other disciplines that are analogous to his own.
- duder, on 01/12/2008, -7/+1are you saying these guys aren't good? http://umn.dl.sourceforge.net/sourceforge/ssss/Kra ...
- CiDaemon, on 01/12/2008, -5/+65How to recognize a good programmer: He can pick out a host that doesn't die after 60 diggs...
http://www.inter-sections.net.nyud.net:8080/2007/1 ...
>>>>>
#1 : Passion
In my corporate experience, I met a kind of technical guy I’d never met before: the career programmer. This is a person who’s doing IT because they think it’s a good career. They don’t do any programming in their spare time. They’re shocked when they find out I have a LAN and 3 computers at home. They just do it at work. They don’t learn new stuff unless sent on a training program (or motivated by the need to get a job that requires that technology). They do “programming” as a day job. They don’t really want to talk about it outside of work. When they do, they talk with a distinctive lack of enthusiasm. Basically, they lack passion.
I believe that good developers are always passionate about programming. Good developers would do some programming even if they weren’t being paid for it. Good programmers will have a tendency to talk your ear off about some technical detail of what they’re working on (but while clearly believing, sincerely, that what they’re talking about is really worth talking about). Some people might see that as maladapted social skills (which it is), but if you want to recognise a good developer, this passion for what they’re doing at the expense of social smoothness is a very strong indicator. Can you get this guy to excitedly chat up a technology that he’s using, for a whole half hour, without losing steam? Then you might be onto a winner.
#2 : Self-teaching and love of learning
Programming is the ultimate moving target. Not a year goes by without some new technology robbing an old, established standard blind and changing half the development universe. This is not to say that all good programmers pick up these changes and ride the bleeding edge. However, there’s a class of programmers that will never, ever pick up a new technology unless forced to, because they don’t like learning new stuff. These programmers will typically have learnt programming at university, and expect to get by on whatever skills they picked up there, plus whatever courses their company is willing to send them on.
If you’re thinking of hiring someone as a programmer, and he ever utters the words “I can work with that, just send me on a training course for a week and I’ll be good at it”, don’t hire that guy. A good programmer doesn’t need a training course to learn a new technology. In fact, the great programmer will be the one talking your ear off about a new technology that you haven’t even heard of, explaining to you why you must use it in your business, even if none of your staff knows how to use it. Even if it’s a technology he doesn’t know how to use yet.
#3 : Intelligence
Some business people assume that lack of social tact and lack of intelligence are the same. Actually, intelligence has several facets, and emotional/social intelligence is only one of them. Good programmers aren’t dumb. Ever. In fact, good programmers are usually amongst the smartest people you know. Many of them will actually have pretty good social skills too. The cliché of the programmer who’s incapable of having a conversation is just that - a cliché. I’ve been to a few meetings of the London Ruby User Group and I can say that with only a very few exceptions, most people there are smart, talkative, sociable, have varied interests, etc. You wouldn’t look at them chattering away in the pub and think “what a bunch of geeks!” - at least until you approach a group and realise they’re talking about the best way to design a RESTful application with a heavy UI frontend.
This doesn’t mean that they’ll all feel comfortable in every social context. But it does mean that if the context is comfortable and non-threatening enough, you’ll be able to have as great a conversation with them as you would with the most “socially enabled” people (perhaps better, since most good programmers I know like their conversation to revolve around actually useful topics, rather than just inane banter).
Don’t ever hire a dumb person thinking they’re a good developer. They’re not. If you can’t have a great conversation with them in a relaxed social context, they’re very likely not a good programmer. On the other hand, anyone who’s clearly very smart at the very least has a strong potential to be a good or great programmer.
#4 : Hidden experience
This is correlated with the “Passion” point, but it is such a strong indicator that I’d like to emphasise it with its own point.
I started programming when I was about 9, on a Commodore 64. I then migrated onto the PC, did some Pascal. When I was 14 I wrote a raycasting engine in C and Assembler, spent a large amount of time playing with cool graphic effects that you could get your computer to do by messing directly with the video card. This was what I call my “coccoon stage”. When I entered that stage, I was a mediocre programmer, and lacked the confidence to do anything really complicated. When I finished it, I had gained that confidence. I knew that I could code pretty much anything so long as I put my mind to it.
Has that ever appeared on my CV? Nope.
I strongly believe that most good programmers will have a hidden iceberg or two like this that doesn’t appear on their CV or profile. Something they think isn’t really relevant, because it’s not “proper experience”, but which actually represents an awesome accomplishment. A good question to ask a potential “good programmer” in an interview would be “can you tell me about a personal project - even or especially one that’s completely irrelevant - that you did in your spare time, and that’s not on your CV?” If they can’t (unless their CV is 20 pages long), they’re probably not a good programmer. Even a programmer with an exhaustive CV will have some significant projects that are missing from there.
#5 : Variety of technologies
This one’s pretty simple. Because of the love of learning and toying with new technologies that comes with the package of being a “good programmer”, it’s inevitable that any “good programmer” over the age of 22 will be fluent in a dozen different technologies. They can’t help it. Learning a new technology is one of the most fun things a programmer with any passion can do. So they’ll do it all the time, and accumulate a portfolio of things they’ve “played around with”. They may not be experts at all of them, but all decent programmers will be fluent in a large inventory of unrelated technologies.
That “unrelated” bit is the subtle twist. Every half-decent java programmer will be able to list a set of technologies like “Java, J2EE, Ant, XML, SQL, Hibernate, Spring, Struts, EJB, Shell scripting”, etc.. But those are all part of the same technology stack, all directly related to each other. This is possibly hard to recognise for non-programmers, but it is possible to tell whether their technology stack is varied by talking to them about it, and asking them how the different technologies they know relate to each other. Over-specialisation in a single technology stack is an indicator of a not-so-good programmer.
Finally, if some of those technologies are at the bleeding edge, that’s a good positive indicator. For instance, today (November 2007), knowledge of Merb, Flex, RSpec, HAML, UJS, and many others… Please note that these are fairly closely related technologies, so in a couple of years, someone who knows all these will be equivalent to someone familiar with the Java stack listed in the previous paragraph.
Update: As a clarification to this point, there’s in fact two indicators here: variety and bleeding edge. Those are separate indicators. A good variety of technologies across a period of time is a positive indicator, whether or not the technologies are bleeding edge. And bleeding edge technologies are a positive indicator, whether or not there’s a variety of them.
#6 : Formal qualifications
This is more a of non-indicator than a counter-indicator. The key point to outline here is that formal qualifications don’t mean squat when you’re trying to recognise a good programmer. Many good programmers will have a degree in Computer Science. Many won’t. Certifications, like MCSE or SCJP or the like, don’t mean anything either. These are designed to be accessible and desirable to all. The only thing they indicate is a certain level of knowledge of a technology. They’re safeguards that allow technology recruitment people in large corporations to know “ok, this guy knows java, he’s got a certification to prove it” without having to interview them.
If you’re hiring for a small business, or you need really smart developers for a crack team that will implement agile development in your enterprise, you should disregard most formal qualifications as noise. They really don’t tell you very much about whether the programmer is good. Similarly, disregard age. Some programmers are awesome at 18. Others are awesome at 40. You can’t base your decisions about programmer quality on age (though you might decide to hire people around a certain age to have a better fit in the company; please do note that age discrimination is illegal in most countries!).
As a final note to this, in my experience most average or poor programmers start programming at university, for their Computer Science course. Most good programmers started programming long before, and the degree was just a natural continuation of their hobby. 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.
Disclaimer
None of the indicators above or below are sure-fire indicators. You will find great programmers who break some of those moulds. However, my view is, you’ll rarely find a great programmer that breaks all of them. Similarly, you may find poor programmers that meet (or appear to meet) some of these criteria. But I do strongly believe that the more of these criteria a programmer meets, the more likely they are to be one of those elusive “good programmers” that, as a business guy, you need to partner with.
The criteria in bullets
So, in summary, here are some indicators and counter-indicators that should help you recognise a good programmer.
Positive indicators:
* Passionate about technology
* Programs as a hobby
* Will talk your ear off on a technical subject if encouraged
* Significant (and often numerous) personal side-projects over the years
* Learns new technologies on his/her own
* 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”
* 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
* Happy to work with whatever technology you’ve picked, “all technologies are good”
* Doesn’t seem too smart
* Started programming at university
* All programming experience is on the CV
* Focused mainly on one or two technology stacks (e.g. everything to do with developing a java application), with no experience outside of it
I hope these help. Let me know below if you have any comments, or anything to add to them!
Thanks for reading.- Gaarra, on 01/12/2008, -4/+20That was pretty stupid IMHO. Only in "programming" is person expected to work all hours of the day and night, program all day at work then all night at home, and learn a million buzz words and flash in the pan technologies just so they can pretend to be cutting edge. I guess you could program updates to the linux kernel but unless you go home at night and code up your crazy hidden "iceberg" you aren't worth a damn...Gimme a break. The author should step out into the real world someday and away from their 5 person startup selling red socks...
- trickyt, on 01/12/2008, -4/+2You are obviously not a good programmer. I bet you're one of those business suits who hires bad programmers and just haven't come out of denial yet.
- smacksaw, on 01/12/2008, -0/+2Ah, the old "sellout" argument from indie music rears it's ugly head in Geekville, population=you
- fryguy1013, on 01/12/2008, -0/+4Doing programming for work, and having programming as a hobby doing fun projects are not the same thing. If someone enjoys having programming as a hobby, that infers that they like programming. If they like programming, that infers that they are a good programmer. Since the article is "how to recognize a good programmer," I'm guessing that a casual correlation between two things should be disregarded.
And I would be surprised if someone who programs updates to the linux kernel and goes home and does *nothing* related to technology (reads news about other projects, has a spare project on the side) on his free time, that he would be equal in programming skill to someone who does, at least in the majority, especially people younger than 30.- fluxion, on 01/12/2008, -0/+1to be fair, if i spent the whole day swimming in the linux source tree and debugging kernel code i probably wouldnt do much programming when i got home. id probably spend a lot of late nights at the office, however.
but in general i think personal programming projects certainly have merit in looking for someone who's passionate about programming.
- fluxion, on 01/12/2008, -0/+1to be fair, if i spent the whole day swimming in the linux source tree and debugging kernel code i probably wouldnt do much programming when i got home. id probably spend a lot of late nights at the office, however.
- Loonacy, on 01/12/2008, -0/+4Yeah, imagine if a basketball player went home and played basketball. That would just be stupid.
- smacksaw, on 01/12/2008, -0/+1It would totally detract from fathering scores of illegitimate children and random rapings of hotel employees.
- Fordi, on 01/12/2008, -0/+3Not expected to, but just *does*.
If I didn't code most of the time, I'd be bored *****. One of the things about being a coder is that the discipline is immersive; you're thinking in logical pathways eight hours a day, and when you see something that's not working properly, you think, "Hmmm... I'll bet I can make that more efficient...".
A newb will just think that and move on, but once you're really into it, you just start *doing* it whenever it comes to mind.
what you have to understand is that it's fun, and that you don't get tired of it. You're painting behavior onto a canvas of pixels. Sure, there's a lot of technical *knowledge* involved, but the actual process of coding is so organic, most good coders think of it as an artform.
- trickyt, on 01/12/2008, -4/+2You are obviously not a good programmer. I bet you're one of those business suits who hires bad programmers and just haven't come out of denial yet.
- netdroid9, on 01/12/2008, -0/+2These are fairly good suggestions, with a few failings. Firstly, technology doesn't change every year. Doesn't happen. New stuff comes out, yes, but not usually the sort of thing that revolutionizes the programming industry. Secondly, a programmer doesn't need a specific hidden iceberg project to be a good programmer, and if they do have such a project it may not necessarily be something private. For example, they could have been making contributions to the KDE project for the past year but didn't think that would be worth putting on their CV. Thirdly, social interaction is definitely not a good indicator of intelligence. Ever. A lot of good programmers have social difficulties, especially when you factor in disorders like Aspergers Syndrome which cause fixation on a particular subject (IE Computing) at the expense of sociality. In a comfortable situation they can and probably will talk your head off about programming, but an interview is not a comfortable situation. A comfortable situation does not involve strangers like you, so you can't take them being nervous as a sign of not being a good programmer, indeed people with these social difficulties can be a heck of a lot better than people who don't.
- DivisibleByZero, on 01/12/2008, -0/+2So he says it's a good thing to have experience in a wide variety of languages, etc... but also says the "all technologies are good" mentality is bad. Seems contradictory to me.
The last thing you need is that guy who wants to re-write the entire application in .NET this week, and Ruby the next. That's called wasting time. Especially if you have an older codebase, you need a guy who's capable of moving in and learning whatever backwards crap you've got in place at the time. I don't like it, but that's the way it is.- celotil, on 01/12/2008, -0/+0When a person has a wide variety of experience in programming languages, operating systems, etc, then they can say, from knowledge and experience, _why_ a language is good or bad and why they prefer working with either Java, C, ASM, Windows, Mac OS X, Linux, BSD, etc.
- celotil, on 01/12/2008, -0/+0When a person has a wide variety of experience in programming languages, operating systems, etc, then they can say, from knowledge and experience, _why_ a language is good or bad and why they prefer working with either Java, C, ASM, Windows, Mac OS X, Linux, BSD, etc.
- smacksaw, on 01/12/2008, -0/+8I didn't finish college. When I moved to Seattle in 1994, I was surprised to see that Microsoft understood there were people such as myself who learned computers organically on our own. Job postings didn't require a University degree. In fact, as I became closer with people at MS and learned about their culture (and other similar companies cultures), it was pretty much understood that people who live for programming have a gift that can't be taught in University. It can be proven by that sort of degree, it can be honed, but it's rarely a passion that is instilled in people. MS preferred those types of people.
My background was Child Development and Music. I had some ideas about music teaching that aren't totally relevant here. But the fact remains that students who don't get a good sampling of arts along with sciences are not as well-rounded of individuals. The expertise one gets in total immersion in computers comes at the cost of a lot of other things.
The shortcoming of people who simply love programming is that they don't have the imagination of people with a more well-rounded life experience. The people with more life experience rarely have the passion or in-depth knowledge to be a great programmer. However, you need both people since one lacks something the other does not have.
The one huge advantage the well-rounded person has is learning skill, ie they have learned how to learn. When I was 5 I learned BASIC. I knew it inside and out. But as BASIC became obsolete, I did not have the tools to pick up other non-programming skills. When I expanded the things I studied I had a better frame of reference to draw upon. So as technologies changed, because I learned how to learn I was able to acquire new skills. People who are simply "lifers" in programming are in a dangerous situation in that they limit their value in other facets of their job AND if the nature of the job changes, they know facts, but not how to learn new facts easily.
It doesn't really matter what sort of industry it is, you lose peripheral vision. I think that the "good programmer" they talk about will be a BETTER programmer if they take time away from their craft and do something totally unrelated, like standup comedy or congo drumming sessions, etc.
Going back to Microsoft - their lack of innovation, their "my way or the highway" business practises, all of their problems stem from their culture, which is they are full of "good programmers" as defined in this article. Good programmers, those with passion become great programmers when they diversify and expand what they do, not limit it to their craft and only their craft.- Trollhammaren, on 01/12/2008, -0/+4Updugg for utter truth. Programming should be a passion, but not a lifestyle. Programmers who entrench themselves in the logic but fail to keep the usefulness of that logic in perspective will tumble in their job. To be an excellent programmer you need to be a well-rounded person.
- chingy1788, on 01/12/2008, -0/+4so im screwed as a comp engineer?
as i really started the real programming at uni...
i done some Basic, HTML and stuff in a computers class in high school...
I know some languages
just finished 2nd year, have 2 more to go
i dont like math...
when it comes to any computing subject i can get those high marks...
is being taught by good programmers good?- jhoskins, on 01/12/2008, -0/+0The real indicator for yourself is do you like what you are doing.If you really enjoy programming and solving problems, It will not be a fault that you started getting into it at university. If you aspire to be a software engineer because the money is good, there are lots of jobs, or whatever, perhaps its time to look at what you really want to do. Not to say you won't find a job in that position, but its more likely to be a menial, soul-crushing position where you don't get to do anything interesting
- wpi97, on 01/12/2008, -0/+1"i dont like math..."
This one is a definite negative... - chingy1788, on 01/12/2008, -0/+1Well yes the hatred of math is bad, easier 1 yr maths thats great
harder stuff, complex analysis that started my hatred for maths...
when i actually try at maths i can do well
and yes i do like programming, i can make something and be proud of it
even if its a measly web server program that can serve 1 comp at a time, i made it it works its amazing to me...
- Gaarra, on 01/12/2008, -4/+20That was pretty stupid IMHO. Only in "programming" is person expected to work all hours of the day and night, program all day at work then all night at home, and learn a million buzz words and flash in the pan technologies just so they can pretend to be cutting edge. I guess you could program updates to the linux kernel but unless you go home at night and code up your crazy hidden "iceberg" you aren't worth a damn...Gimme a break. The author should step out into the real world someday and away from their 5 person startup selling red socks...
- smurfeh, on 01/12/2008, -0/+5http://duggmirror.com/design/How_to_recognise_a_go ...
- cotaskmemalloc, on 01/12/2008, -11/+19Waste of time, don't bother reading. Author lists several vague categories and attempts to eleborate on them in a way that makes a meaningful comparison to programming, but falls short each time. The article might as well be titled 'How to recognize a good sushi chef' or 'How to recognize a good zookeeper'. --digg.
- AHippie, on 01/12/2008, -0/+12that's not very pro grammar
- IceUck, on 01/12/2008, -0/+21For many years, I'd ask very specific technical questions when interviewing candidates for developer positions. After some time (too long, really), I noticed that my track record for hiring (predicting a good developer) was not much better than if I'd just flipped a coin.
The problem was that I was asking questions that were easy to score, rather than questions that would actually help determine whether the candidate had the "right stuff".
The "right stuff", as it turns out is simply this: pride in workmanship -- a desire to get it right, and not just 'good enough' (a.k.a. "working").
Not surprisingly, lots of these "right stuff" developers were not the most technically knowledgeable in the applicant pool. They knew enough to recognize a "tall building" when they saw one, though. You could set them on a task, and not worry about them immediately veering off into the weeds, or just doing damage.
Sadly, I'm still lousy at interviewing, since I haven't figured out how to judge the _quality_ of a candidate in the time-span of an interview (let me work with them for a week or two, and it's a different story).
At least I now know what _doesn't_ work. That's something.- grumpyrain, on 01/12/2008, -0/+2This is my experience as well.
I have been in both situations. I remember interviewing candidates who I believed to be competent, but when the rubber hit the road their limitations became obvious. I also remember interviewing candidates who came across as 'less than ideal'. I took a chance (gave them a 1 month trial as a contractor). They turned out to be one of the better developers we have had.
While I agree that technology staleness is an indicator of a poor programmer, I think the article goes to far by ignoring the opposite problem. I have also known programmers who spread their knowledge across so many different technologies that they fail to grasp any of them in a significant way. The adage "someone who has just been given a hammer thinks everything looks like a nail" holds so true. When a project comes up, they seem to suggest their current pet technology regardless of the suitability of the technology for the current problem. - Fordi, on 01/12/2008, -0/+6Agreed; who cares if you know offhand what the call is for moving a window three pixels to the right? That's what reference manuals are for. A better example question is, "Give a quick rundown of how, structurally speaking, you would design X application.", and evaluate the response based on creativity of problem solving, and how many times he catches himself with an, "Hmmm, that would cause X problem; I'd have to Y..."
- smacksaw, on 01/12/2008, -0/+2My observation (and my experience) is that it doesn't really matter what people know for facts as much as potential for facts. It can even backfire when people think they know it all and have preconceived notions about what you want.
If the person you hire has to learn a lot about the project's requirements to do it, they are essentially having to be trained. So the most important thing is finding someone who wants to be trained and has the fundamentals to learn opposed to someone who isn't there to learn. You don't want to lose productivity time teaching people everything. They need to come with something. But you lose even more time with a know-it-all who isn't going to learn and then you have to undo all of their mistakes.
- grumpyrain, on 01/12/2008, -0/+2This is my experience as well.
- Emused, on 01/12/2008, -4/+4‰∞
- afx1, on 01/12/2008, -0/+4agreed
- ekravchenko, on 01/12/2008, -1/+3⌨☹☺☻☼☽☭☫☪☢♙♚♛♜♝♞♟♠♡♢♣♤♥♦
- Emused, on 01/12/2008, -0/+7Don't ascii and I won't telnet
- Ellord, on 01/12/2008, -1/+2☃
- Emused, on 01/12/2008, -1/+1‰∞ 0 out of 100=FAIL forever
- Emused, on 01/12/2008, -1/+1‰∞ 0 out of 100=FAIL forever
- fluxion, on 01/12/2008, -0/+1oh word?
- alienmad, on 01/12/2008, -1/+1Could someone explain this please?
- Emused, on 01/12/2008, -0/+1100-100=0/100 ≡ FAIL, I was being a smartass,only about the spelling.
- dgh1973, on 01/12/2008, -10/+9Buried, sick of seeing news copied and pasted from slashdot... thanks. It's like getting digital cable and seeing the Bad News Bears on 4 out of 10 paid for movie channels.
Lame.- fluxion, on 01/12/2008, -0/+3its like subscribing to Showtime....but not subscribing to HBO...and having Showtime show some movies that also come on HBO!
(though if you subscribe to both...yes it's a bit annoying. you have to consider however that for many here, Digg is their primary/only tech news portal)
- fluxion, on 01/12/2008, -0/+3its like subscribing to Showtime....but not subscribing to HBO...and having Showtime show some movies that also come on HBO!
- threetoedkoala, on 01/12/2008, -0/+4I think you hit this right on the button! Programmers are a dime a dozen - but it’s been my experience that the bad ones out number the good ones. Your list provides a great basis for filtering the good from the bad.
I would also suggest that most programmers working for firms (specifically - outsource agencies) are less creative than the others who work independantly in a freelance capacity.
CV’s are usless - references and your gut feelings is what I suggest! - WestonP, on 01/12/2008, -11/+1A good programmer writes the important stuff in a language that compiles native machine code. A bad programmer thinks that Java or VisualBasic should be used for everything.
- Just someone who hates bloatware and misses the old days when code was efficient and programmers actually understood the machine level of things- cledet, on 01/12/2008, -0/+3I use whatever language/tool is right for the job/problem. It all depends on the project and if I have to learn it, so be it!
- WestonP, on 01/12/2008, -0/+2Yup, that's what we need more of! I'm getting really sick of people using trendy or beginner crap where it doesn't belong, just because it's all they know or it's popular right now. But on the upside, it does make me look pretty good when I write non-bloatware that does the job ten times faster.
- Izacus, on 01/12/2008, -1/+2It makes you look pretty bad if "ten times faster" wasn't required, but "cheap, short development time" was.
- WestonP, on 01/12/2008, -0/+2Yup, that's what we need more of! I'm getting really sick of people using trendy or beginner crap where it doesn't belong, just because it's all they know or it's popular right now. But on the upside, it does make me look pretty good when I write non-bloatware that does the job ten times faster.
- Fordi, on 01/12/2008, -1/+3A good programmer doesn't have such language prejudices - but does know how to best optimize his transactions.
- WayOfTheIronPaw, on 01/12/2008, -1/+2Yeah, drop the language prejudice. A good programmer is someone who understands how his code executes at the level of machine instructions. I have programmed in many high level languages, as well as assembly languages for the x86, 8080/Z80, 6502 and 680x0. I regularly program in C++ AND Java, and I know both VERY well. When a dynamically compiled language like Java is implemented well, it is fully possible for it to outperform equivalent statically compiled code (e.g. C++). I have seen it with my own eyes.
- WestonP, on 01/12/2008, -0/+1I like Java for it's quick development time and portability, but that doesn't make it a good fit for everything, so we should stop using it for absolutely everything. That's my gripe with Java... not the language itself so much, but the misuse of it by clueless devs. It's kind of like using VB for everything... I love the language because it can save me development time, but many of the things I need to do are pretty CPU intensive or sensitive to run time, so that makes VB only suitable as a GUI in my case.
If Java is outperforming your statically compiled code, then you aren't optimizing it very well. Despite the many advances in Java technology, it still has an additional layer of abstraction, and is therefore fundamentally slower and less efficient. That doesn't mean that Java is always horribly slow or anything, but a C programmer does have a performance advantage if he knows how to use it. There's a heck of a lot more to it than just knowing that multiplies are faster than divides, and that you can see a big performance boost by replacing floating point math with integer inside of loops.
- WestonP, on 01/12/2008, -0/+1I like Java for it's quick development time and portability, but that doesn't make it a good fit for everything, so we should stop using it for absolutely everything. That's my gripe with Java... not the language itself so much, but the misuse of it by clueless devs. It's kind of like using VB for everything... I love the language because it can save me development time, but many of the things I need to do are pretty CPU intensive or sensitive to run time, so that makes VB only suitable as a GUI in my case.
- allengeer, on 01/12/2008, -1/+2that is so completely and unutterable stupid of you to say. You do realize that a good amount of the large scale enterprise solutions today run on Java virtual machines? You do realize that many enterprise blades have specific optimizations for running the jvm? You do realize that a great many programmers know and understand Java, and part of programming is writing code such that someone after you in the organization can understand/own your code.
A good programmer doesn't care what language you want the job done in. It doesn't matter. Its ll the same fundamental logic underneath. Some languages are suited for some applications better. If you need things to run on your processor at an instruction set level, then maybe you do want to use something compiled to the machine code (real time processing, high-speed whatever the *****). But in many business cases, ease of use, understandability, and compatibility are tantamount.- WestonP, on 01/12/2008, -0/+1I'm well aware of JVM, but it's not a complete substitute for true compiled machine code. There are optimizations you can make in a language like C/C++ that you just can't do with Java because of that extra layer of abstraction. If you want to quickly built, simple, or portable app, then Java can be great, but that doesn't mean you should use it for absolutely anything and everything. I suppose it's not just the misuse of the language that's the problem, but also the mentality of a person who uses it where it's a bad fit... such a person rarely seems to know anything about code efficiency and optimization.
I see that we have a heck of a lot of Java fan-boys on this site though. lol
- WestonP, on 01/12/2008, -0/+1I'm well aware of JVM, but it's not a complete substitute for true compiled machine code. There are optimizations you can make in a language like C/C++ that you just can't do with Java because of that extra layer of abstraction. If you want to quickly built, simple, or portable app, then Java can be great, but that doesn't mean you should use it for absolutely anything and everything. I suppose it's not just the misuse of the language that's the problem, but also the mentality of a person who uses it where it's a bad fit... such a person rarely seems to know anything about code efficiency and optimization.
- cledet, on 01/12/2008, -0/+3I use whatever language/tool is right for the job/problem. It all depends on the project and if I have to learn it, so be it!
- ruddy, on 01/12/2008, -1/+10i realized when i'm slacking off at work, i'm still on topic...
im a php dev - trickyt, on 01/12/2008, -0/+6I can't believe no one mentioned this, but I worked with a dean of engineering at university recently who told me that for some reason, ever good programmer he's met played an instrument as a kid, or had/has some sort of musical talent. Said he had no idea why, it just always seemed to be the case. I agree. Don't know why, but I do.
- TheBuzzKiller, on 01/12/2008, -0/+1Learning a new instrument is almost identical to learning a new programming language mentally. Where the notes are like the basic concepts (pseudo-language) and each instrument has it's own "syntax" (ie, same notes on guitar and keyboard, but totally different method of playing them). Learning to actually improvise a song is like being able to write solid code without having to copy/paste code from the net (similar to downloading tabs/sheet music, and playing other people's music).
A good musician is someone you can hand an instrument and they'll be jamming out they're own sweet tunes in no time. Same goes for programmers.
It makes sense to me, though I've never associated the two before, even though i do both. - floridiot2, on 01/12/2008, -3/+1Yeah, because playing the piano is so similar to playing the guitar.
- chingy1788, on 01/12/2008, -0/+2uhh crap
im going to fall in the bad programmer category... - dwhitbeck, on 01/12/2008, -0/+0I read an article quite a few years ago by Patrick J. Hanratty, founder and president of MSC, a company specializing in CADD/CAM. He stated that he liked to hire programmers who were also musicians.
- sg1fan, on 01/21/2008, -0/+1Hmm, i played clarinet in jr High...
might be something to that! ;)
- TheBuzzKiller, on 01/12/2008, -0/+1Learning a new instrument is almost identical to learning a new programming language mentally. Where the notes are like the basic concepts (pseudo-language) and each instrument has it's own "syntax" (ie, same notes on guitar and keyboard, but totally different method of playing them). Learning to actually improvise a song is like being able to write solid code without having to copy/paste code from the net (similar to downloading tabs/sheet music, and playing other people's music).
- axl163, on 01/12/2008, -0/+5if a programmer is programming as a hobby...then you have found the one
- Totalchaos02, on 01/12/2008, -0/+1I suppose I am on the right track then. I am a first year college student but I learned a lot of programming on my own as a hobby. In fact I was just working on this simple calculator program I made in Java to help me learn GUI programming.
- fixty, on 01/12/2008, -4/+9My cousin always says "good programmers code, great programmers steal".
What he means is great programmers get the most bang for the buck by knowing how to find good pre-existing code as a jumping-off point rather than tending to start things from scratch, re-inventing the wheel etc.- UKsHaDoW, on 01/12/2008, -1/+3finding code of code project, then hacking togother is usally a no no because it won't fit your design, if you've planned one. Using libaries is best idea.
- Fordi, on 01/12/2008, -1/+3Your cousin is a hack. Sure, you can piece together something out of something else, but stealing code is a serious no no in professional work for several reasons: first, without writing (or at least auditing) the code yourself, you don't know how well it will work, whether it's optimized or a dirty kludge, etc. Second, other people's code almost always has an undocumented bit or two that will give you no end of headaches.
Libraries are a better choice; they're audited by many eyes. Still, interface code and business code should always be your own.- grumpyrain, on 01/12/2008, -0/+2It is an old saying, and 'steal' is not meant to be taken literally. Obviously that is unethical and probably illegal. The point (as fixty points out) is that the ability to generate code is no more important than the ability to source code that has already been written.
- fixty, on 01/12/2008, -0/+1Fordi, you don't get a cookie.
See grumpyrain's reply for the why.
- fluxion, on 01/12/2008, -1/+2steal ideas and build on them. not necessarily steal code....outside of utilizing libraries and whatnot
- greenmile, on 01/12/2008, -6/+3A good programmer gets their ***** done on time and without bugs.
- sulayman, on 01/12/2008, -0/+11After which he hides eggs in your back yard, leaves money under your pillow, and puts gifts in your stockings before returning to the North Pole.
- fluxion, on 01/12/2008, -0/+1interviewer: "do you get your ***** done on time and without bugs?"
interviewee: "uhh....*cough*...yes?"
interviewer: "are you lying to me?"
interviewee: "uhh...no?"
interviewer: "welcome aboard" - Kwipper, on 01/13/2008, -0/+1"A good programmer gets their ***** done on time and without bugs."
... in a fantasy world.
Now in the real world, that would never happen very often. - sg1fan, on 01/21/2008, -0/+1Ya, we had a manager for a while who thought that programmers could write things bug free the first time. Of course, he also thought sales people were glorified telemarketers who were overpaid and let go the testing department... then he wrote me up because he released a TEST version of our software to a client to use immediately before ANYONE had a chance to help me test.
- Spankenstein, on 01/12/2008, -1/+17I know how to recognize a good programmer. He writes a story about what it takes to be a good programmer--and the list he comes up with just happens to be a list of attributes he feels he possesses. Then, he submits his story to Digg.
- matu4251, on 01/12/2008, -0/+1well, we don't even know if the author is a good programmer. But like you said, he most likely think he is and described why he thought so :)
- TheBuzzKiller, on 01/12/2008, -1/+3This was a good read. It really hits home. Unfortunately, MOST people doing the hiring are under the mindset that a good programmer is one that learned Java in university.
On the point about bleeding-edge, while that is important, it's equally important that a programmer knows the foundations. There's lots of people that only know PHP or VB/ASB, etc, but have no idea about the fundamentals like OO, portability, and maintainability.
IMHO the best way to find a good programmer is to be a good programmer, then you know what you're looking for. The HR people shouldn't be conducting interviews for programmers. It's like getting a baker to hire a dentist.
my 2 cents- Mardala, on 01/12/2008, -0/+1I've never actually had an HR person conduct an interview that focused on my technical skills. They were usually present or were the person to talk to about filing out the forms, drug test (yeah the US sucks) , etc... but when it came to the actual interview I have always sat with the boss, manager and another developer or whatever ... I think a company would be shooting itself in the foot to have an HR person conduct an interview like this, and I wouldn't want ot work for one that did. Its less common, imo.
- anarchytv, on 01/12/2008, -12/+6A good programmer is a total fool, because he sacrafices a whole lot of things in life because he's blinded by passion for creating and building things that work. He's living the fantasy of being god and creating, turning thoughts into his reality. In the final analysis, none of what he will ever create will ever really much matter in the cosmic scheme of things.... he's just shuffling around thousands and thousands of bits which aren't even real, but transient fleeting states. I wrote so much software twenty years ago, that is so obsolete now I would cringe at the process of even loading it up in an emulator. Its all useless garbage, but back then, it seemed like I was creating the biggest project that would change the universe. Its all rot.
The best programmer, is the one, that turns off the computer, turns his back on it, and walks away. Forever. I never could do it, but when I do, I get amazing things done in REAL LIFE. I fix real things and build real things that have a physical reality and a permanence to them. I look at reality and see how even the most amazing virtual world, is a pale putrid shadow copy of the real deal, the real reality, with no real life to this virtual hack. Inside a computer, where a programmer lives, there is nothing but the empty existance of interacting with a souless machine. The only soul that colors the world there to be found is ones own, and living such a life is empty.
You could have a thousand programmers in a room glued to their video screens, and they would all be useless, because they are all video crack addicts. Would you hire someone who spent 8 hours a day staring at a TV set 1.5 feet away from their face. No, such a person would be catatonic mad, like some kind of mad little girl in the Exorcist. But thats what thousands of people do, thousands of programmers. They may as well be heroin addicts.- DephexTwin, on 01/12/2008, -0/+3Yeah, but our sun is still eventually going to go supernova regardless =(
- TheBuzzKiller, on 01/12/2008, -0/+4Wow, you seem jaded. .. and very expressive. You're mostly right though. I was thinking about that the other day. I've spent countless hours making programs no one will ever use and I don't even have copies of anymore. To someone besides myself, it seems like I've done nothing at all, which like you said, really you haven't.
I program to keep my mind busy, to come up with novel solutions to problems. I consider it more of a mental challenge than anything.
You are a little off with the comment about programming being the same as watching TV. Sure they both involve staring at a screen, but in reality it's the same difference as reading a book instead of a tabloid. - Mardala, on 01/12/2008, -1/+10and yet you sit in front of an lcd and take to time to write your dribble using, you guessed it, software written by a programmer on an OS written by a programmer and submitted over a protocol engineered by a programmer while in your easy chair using a remote for your tv, which has firmware written by programmers ...
- grumpyrain, on 01/12/2008, -0/+1> I fix real things and build real things that have a physical reality and a permanence to them.
You have an interesting perspective. I have a different one. In the grand scheme of things, there are very few buildings that are more than 200 years old (which have not had significant TLC in the meantime), and only a handful of structures that are thousands of years old, most of which are collapsing. If you are seeking to build something tangible, then writing software is probably not going to be your thing. - Osmose1000, on 01/12/2008, -1/+3So basically you're emo because you're not Gates or Torvalds or Jobs or Knuth or anyone I've ever heard of before. Boo ***** hoo. Grow up and enjoy what you do instead of bitching about how all your precious work isn't being used by anyone.
- angeldiggsit, on 01/12/2008, -0/+2That's funny - I left grad school for math to be a programmer because I wanted to create things that had some relevance to the rest of the world
Nothing is more arcane and isolating than the study of pure math. - solarpowered, on 01/12/2008, -0/+4Come on, it's a pleasant way to earn a bunch of money!!!
- specialK16, on 01/12/2008, -0/+1Do something that will actually help people. Writing software for medical computers, going into AI. Things like that. You have a very intersting point of view, you seem like you want to help, like you just want to leave a mark. Well, you can do that by programming, just make sure you do something that will help people.
- edwartica, on 01/12/2008, -4/+3You better RECOGNIZE!
- edwartica, on 01/12/2008, -0/+1Ok, ok, my joke failed.....big time. Just thought it was funny that they misspelled recognize.
- retspan, on 01/12/2008, -1/+5I know how to recognize a good programmer; He writes good programs.
Nothing speaks louder than code. - phrozted, on 01/12/2008, -0/+3He likes grammar?
- Rkstar, on 01/12/2008, -1/+3Ok... this article makes me feel really smart (I meet all of the recognitions of a good programmer), and stupid (what the hell is a CV?). Seriously... it's probably something super obvious that I just missed... but I do tons of computer programming and never heard of a CV. Anyone?
- Ellord, on 01/12/2008, -0/+4http://en.wikipedia.org/wiki/Curriculum_vitae
- chingy1788, on 01/12/2008, -2/+1how do you not know what a CV is...?
well now you do thanks to Ellord
have you heard of a resume`?- Mardala, on 01/12/2008, -0/+1 If you live in a box (or in front of a box in this case) in the US you probably never heard anyone refer to your resume as a cv.
- widgetmaker, on 01/13/2008, -0/+1Uh you either live in a very enclosed US world or you're about 15 a CV is a Resume
- ravage86, on 01/12/2008, -3/+4This looks an awful lot like some guy's resume, burried.
- Ottergoose, on 01/12/2008, -0/+5Dear Monster.com,
Please make all of my potential employers read this article.
Thanks -
- Nick "Please, Please, Somebody Hire Me" Benson -- AvengeX, on 01/12/2008, -0/+1Aw man, good luck with getting a job. If not, just become an entrepreneur out of a freelance project and kick some ass.
- sayagain, on 01/12/2008, -0/+5This is by far the most intelligent, truthful and best written list the Digg community has ever known.
Unfortunately, for the very same reasons, I expect it not to get as much Diggs as others.....- sg1fan, on 01/21/2008, -0/+1I agree with the list. Our company has gone through several programmers who just seemed to lack that certain quality... and I think that some were career programmers, just doing it because they figured it was an easy paycheck. Me... I am a huge computer geek. We have 3 computers at home (1 with dual monitors - one laptop - one hooked to the projector - and a 4th that needs some rebuilding so our kids can use it for games) plus a bunch of cool toys to go with them. I meet a lot of those items on that list, including programming for fun in Logo Writer when I was in elementary school. :>
- mateo60, on 01/12/2008, -0/+8two words: NECK BEARD.
- fotoman, on 01/12/2008, -1/+1Man, those things hurt. I'm 6 weeks into my winter beard and the neck part... has to stay clean!! Mine goes all the way to the upper chest hairs :0 and I'd scare most sasquatches away with it, let alone my wife :-D
- fuzzybad, on 01/12/2008, -2/+0Four words: Thank you Commodore 64!
Portfolio: See Fortune 500 - iamcool, on 01/12/2008, -0/+1Having been to countless interviews, the larger the corporation the less they care. They want certs and experience in the technologies they use. Essentially robots that use whatever software some sales guy dazzled them with.
If you don't have experience with it, they want nothing to do with you. - ConfirmedCynic, on 01/12/2008, -1/+6"Programming is a day job" to a poor programmer?
What about those who have discovered there is more to life than cranking out code? Is the rule here basically that, to be a "good" programmer, you must have no life?- natterca, on 01/12/2008, -0/+2Yes. You may be a competent programmer if it's a day job, but not a good one.
- TPHigginbotham, on 01/12/2008, -0/+4I think the point was that a good programmer actually _likes_ to program. If programming is just your day job, then you don't really have any interest in it, and most people aren't talented in areas they don't care about.
- fotoman, on 01/12/2008, -0/+1I consider programming my "day job", but come on, with a handle like fotoman how could I not? I also run a photography business, which ironically I have a software product that I pitch for photographers that I wrote and continue to work on.
I put in my hours at the "day job" (when I have to have one), and want to get home so I can spend time with the family, work on getting new business, play darts, take pictures, and oh yea code :)
- inkswamp, on 01/12/2008, -0/+6I almost skipped this article, expecting it to be a list of education requirements and certifications and whatnot, but it's remarkable how much of this is right on target. In particular, the comments about education. I have nothing against higher education (was a victim of it myself) but I saw too many fellow students on campuses who clearly saw the college experience as a parental mandate and lacked desire for learning, saw college as a stepping stone to whatever privilege lay ahead. From what I've seen, the best programmers (and technical people in general) are the ones who submerse themselves in it and gather experience in it even when they're not at work--and the best ones are very rarely the ones who received a formal education in it. I worry sometimes that we're overemphasizing education in our culture at the expense of experience and passion.
- motters, on 01/12/2008, -0/+1I think these are the traits of good programmers, but I'd also note that such people are very rare in the workplace. Most of the programmers I've ever worked with were of the "day job" variety.
- allengeer, on 01/12/2008, -0/+1its all and all a very good list, but I have to say just because you dont pro actively seek out new technologies to learn doesn't mean that you are a bad programmer. A great many good programmers understand the fundamental structure of computing and languages and can use that framework to understand any technology thrown at them with blazing speed and pinpoint accuracy.
- stockjones, on 01/12/2008, -0/+2Whats more fun then a room full of programmers arguing over coding standards and who's implementation is better. A good coder knows how to listen as much or less then he/she talks down to people.
The article is a bit off though. A lot of dot coms failed because of programmers thinking they understand business. - HalfGiraffe, on 01/12/2008, -0/+2The article is a bit on the romantic side. There are lots of guys out there who only work in COBOL, don't give a ***** about any other technology, don't touch a computer on the weekend and could still program your sorry ass into the ground as long as they're working in their domain. No, you wouldn't hire them for your .com startup, but they're still good programmers.
- CuddyBuddy, on 01/12/2008, -1/+2Wow! gr8 article...perhaps not a definitive article, but the inputs can be used by many folks like me who are in the business of recruiting tech guys for our startups...more importantly, I discovered the link on "18 Mistakes That Kill Startups" @ Paul Graham ( http://www.paulgraham.com/startupmistakes.html ) from this article, and man, what a treasure that article is!
- kainnation, on 01/12/2008, -0/+2Right on! Coding is what I do in my spare time... I need to start making something doing it instead of doing it for myself for free...
- bliz, on 01/12/2008, -0/+2I regret starting programming at university. =(
- brianez21, on 01/12/2008, -0/+6Coming out of lurk mode... I'm only sixteen and I have high aspirations of becoming a software developer (engineer?) when I get older. I was hoping that TFA (yes, I read it) would be able to give me some insight as to what I can do to make myself into a "better" programmer, but I was rather disappointed in the lack of actual good tips.
I've been playing around with computers since I was ten or so, and right now I am trying to learn a little bit of everything. I've played around with the innards of Linux, Windows, and Mac OS X. I have a basic understanding of how hardware and software work. I can write simple programs and shell scripts. I've written web applications on top of PHP and MySQL (and XHTML/CSS of course). And I try to keep up with the latest in tech news though /., digg and the like. I don't really have any thing that I would consider "official experience", since I'm almost totally self-taught. Everything I code seems rather insignificant or hackish to me, am usually I'm unsure about whether or not I'm coding something the "proper way".
My high school offers a "college level" AP computer science class that is taught in Java, however I'm not able to take it due to the lack of students registering for it. Because of this, I decided to try to teach myself a real-world OO language. I picked Python after doing some reacher online and coming across the book 'Dive into Python'.
Since it seems that everyone else on the internet seems to be more intelligent than I am, I would appreciate any advice you can give me. What can/should I do from here? How do I actually *become* a better programmer? It would be nice to go to college with a computer science major already knowing a handful about programming.
Thank you :)- CJChesterson, on 01/12/2008, -0/+8Trust me, you're going to be fine. Find a college that's fairly well known for their Computer Science program. It doesn't have to be one of the top three in the country, but the higher on the list, the better off you're going to be. The things is, there are a bunch of schools out there that will give you a ComSci degree, but they're run by bad programmers. They put over emphasis in learning a particular language or technology.
For now, continue doing what you're doing. Get exposure to everything you can find. Write code to solve your own problems. For example, write a web-based recipe database for your mom... or some application for helping your dad. Learning a language is the easy part. Gaining an intuitive sense of when it should be applied is mastery.
College will take all this random insignificant hackish stuff and give it discipline. College will teach you things about the interaction of hardware and software that will allow you to write things more efficiently. It will give you mathematical concepts that allow you to analyze and verify your algorithms.
Lastly, get experience. Try going for an internship at a software company. You will learn as much from real world experience as you do in college. Talk to your guidance counselors and friends, you never know who has a job at a software company that's looking for an intern!
Good luck, I'm certain you will do well.
PS- not more intelligent, just more experienced. - grumpyrain, on 01/12/2008, -0/+2One thing I will point out is that it will be a number of years before you will join the workforce. Don't focus your energy on learning a specific technology (by all means I encourage you to play around with whatever technology is available to you at the time). What I mean is that a significant number of changes will occur to the available technologies, but the underlying principles are still valid.
When I was 16, Java 1 had just been released. Relatively few people (outside business and research) had the Internet, and the speed was quite slow. .NET was still 5 years away. My point is that if I had invested my knowledge in a specific technology, I would be of limited programming value today.
Until PHP 5 (released 2004), PHP didn't have real OO support, and many of the guides and sample code are not written well. If you want to continue with PHP, then you will need to be extremely careful you don't pick up bad habits. I would suggest you take a look at Ruby on Rails, or at the very least a PHP framework derived from the model view controller architecture (eg Cake). RoR makes it much harder to write rubbish.
Borrow some books on OO and on database design. Get a good understanding of good design, and you can apply your knowledge to many technologies much faster.
- CJChesterson, on 01/12/2008, -0/+8Trust me, you're going to be fine. Find a college that's fairly well known for their Computer Science program. It doesn't have to be one of the top three in the country, but the higher on the list, the better off you're going to be. The things is, there are a bunch of schools out there that will give you a ComSci degree, but they're run by bad programmers. They put over emphasis in learning a particular language or technology.
- nicko68, on 01/12/2008, -0/+1It sounds like being a good programmer and having any sort of life (with family, etc) are inconsistent if you have to be coding/training at night too.
Some of us try to strike more of a balance between work and family. -
Show 51 - 63 of 63 discussions

Digg is coming to a city (and computer) near you! Check out all the details on our