513 Comments
- wikk!d, on 10/12/2007, -3/+178i actually can't write fizzbuzz... it's too complex. So instead, i wrote a scraping tool to search code.google.com for fizzbuzz solutions, pass it on to my proprietary debugging engine and then have it deliver the answers to an email processing daemon in a tarball'ed attachment that I will later untarball and post on my site.
programming is hard. - inactive, on 10/12/2007, -3/+126Heh I graduated with a Computer Science degree (average grades all around, but I passed everything), and at the time of my graduation realized that I was completely incapable of writing a fully functional program from scratch (one that's more advanced than some simple text-only number manipulation calculator). When I realized I was completely incompetent, I kind of gave up looking for a job in programming, assuming that my education was somehow not good enough for real world applications, and went off to do other things.
Now you're telling me that my programming ability is actually equivalent to that of the average Computer Science graduate? And that people can still get programming jobs like this!? Damn it! Where was this information when I needed it! - Scarblac, on 10/12/2007, -6/+116It's true, and this is a very interesting article.
I think _many_ so-called programmers never do anything but copy-and-paste and adapt, or use Google. They can't start with an empty file and start coding. _Especially_ not on paper. It's worrying. - MikeD606, on 10/12/2007, -0/+100@krellor
you thought you were all cool and 1337 by posting your C code, but guess what? you fail! haha! That algorithm prints 0-100, not 1-100. No job for you! - drinkGreen, on 10/12/2007, -8/+92I'd like to add that 3 out of 4 people interviewing job candidates have no clue about coding either.
I don't have a degree (yet). My 6 career years of programming experience came from hands-on. So it really irks me when I goto an interview, and get asked ***** book questions like "Define the difference...." or "Name the 5 layes of....". I can program and look at code and tell you what won't work and why, but don't ask me stupid questions from a college book you read 2 hours before the interview.
Also, while I agree about the "copy and pasting" programmers, don't knock Google as a very valuable resource. - dragongrrl, on 10/12/2007, -1/+82real programmers don't write in leetspeak. that ***** is for script kiddies, foo.
seriously. - ozziegt, on 10/12/2007, -4/+82We had an interviewee like this. We asked him to go to the board and write some code and he actually tried to get out of it. Crazy...
That being said, when you work on large software project you almost never have to start a project from scratch. On top of that big software projects are so complex many times you "forget" how to start a very basic program from scratch. I wouldn't say that is a sign of incompetency either. - BullTaco, on 10/12/2007, -1/+76>Why do programmers always start counting at zero?
It has to do with index relative machine instru.....
Wait, no, it is due to global warming. Starting at zero is more energy efficient. - tont0r, on 10/12/2007, -2/+70@ilyag
I also graduated with a CS degree, but i realized something 3 of the 4 years into it. I realized that CS is *NOT* training to you be a programmer. Its training you on how to think. How to solve problems. They are training you to come up with the next big algorithm. Its not a degree in 'how to use visual studio'. That stuff you need to learn on your own. I took it upon myself to do my own little projects and eventually get an internship.
Personally, if you dont get an internship as a CS major, you are pretty much dead in the water and you(or your scholarship) just tossed out about 15k+. - rodrigo74, on 10/12/2007, -3/+64The funniest part is to read people actually posting their fantastic FizzBuzz code in the comments section. Seriously.
- eric1, on 10/12/2007, -4/+63That's article is horribly over exaggerating. Yes, there are a lot of copy & paste programmers, but I don't know anyone who couldn't code the 'FizzBuzz' problem; that's like a first year problem, at best. Unless I'm on the of the magic 1 out of 100 programmers, this article is BS.
- stankyfish, on 10/12/2007, -5/+48I've met plenty of people who can write trivial programs who suck at software development, and others who might have even forgotten which one was mod and which one was div, but design very solid software.
I don't know that a simple program is always the truest way to tell whether the person you're interviewing would be an organized thinker and conscientious developer. Of course you can't ignore some of the most basic omissions (or glaring inclusions) on a resume, but I don't think the article is necessarily proving much of a point. - chrisgarrett, on 10/12/2007, -6/+49Yeah I think it is just so easy to copy and paste that a lot of "programmers" are losing some of their problem-solving abilities. That said I wouldnt be without Google now - how did we ever manage before? Heh
- brundlefly76, on 10/12/2007, -1/+35Anyone who has taken or given a timed paper coding test during a job interview knows it is WAY more difficult then it sounds.
I have certainly taken tests where I could have cranked out perfectly working code in half the time for every question with a debugger and some man pages in front of me, but in a suit on the 20th floor of a manhattan office building, in front of 3 developers looking at the clock on the other side of the desk, and no debugging or reference, it can seem like rocket science - especially if you have been AFK for a few months between heavy coding.
As a result, I am very careful about tests I give developers today, and I don't use pen and paper, but casually quiz them during the interview about specific language features and approaches in a casual conversation. I find it much more accurate, dynamic (I can focus on stuff they seem weak on on the fly), comfortable for the interviewee, but most importantly the *way* they answer tells me much more about their skill level then I could learn on pen and paper.
Also, many great coders cycle in the amount of code they write (some jobs I did mostly project management for months), which can put them out of practice for a while even though it would take them about 30 minutes to ramp back up with a computer.
Probably the toughest test I ever took was a written Perl regular expression exam I took when interviewing for Yahoo!
The person interviewing me was Jeff Friedl, author of "Mastering Regular Expressions".
No pressure ;) - krellor, on 10/12/2007, -9/+40@mikeD
lol. Yeah yeah, so many years of CS everything starts getting numbered at 0 for me. - PleaseJustDie, on 10/12/2007, -0/+31There's no point to a switch statement in the fizzbuzz problem, if elseif else works better than switch. If you were to use switch to test mod 3 and mod 5 you'd have to have 2 separate switch statements or put the switch inside its own loop. Its making more work for no purpose when an if elseif else statement works better.
- NSMike, on 10/12/2007, -1/+32This guy is surprised that people who apply for jobs can't actually do the work they claim to be able to do?
He must not have very much experience hiring people. - ProximaC, on 10/12/2007, -0/+29I remember last year we were hiring for a coder who knew SQL. So we asked them to write a SQL statement that would return TWO columns from a single table. No joins, no where clause, no nothing. Just "SELECT ColumnA, ColumnB FROM Table"...
1 out of 30 applicants got it right.
He turned out to be a complete dick and we fired him 6 months later. - frenetic3, on 10/12/2007, -5/+33oblig python one liner:
print 'n'.join(["%s %s%s" % (i, not (i % 3) and 'Fizz' or '', not (i % 5) and 'Buzz' or '') for i in range(1,101)])
:P - dougmc, on 10/12/2007, -0/+23There are a lot who who stumble on a simple problem like that.
But 199 out of 200? No.
(Of course, one thing that skews the results, is that if you're a good programmer, the odds are better that you're already employed and therefore probably not looking for a job, at least compared to somebody who can't program something simple like this.)
I've also been given programming problems and told to do it on paper or on the board -- that's MUCH harder than typing it into a computer. - bledbetter, on 10/12/2007, -2/+21This makes perfect sense to me. 99% of managers can't MANAGE, either.
What is this country coming to? - DunderMifflin, on 10/12/2007, -2/+21Why? If you've never had to use Sql Server you would have no reason to learn or know a single line of TSQL. I've used Oracle for 7 years now and know Pl/SQL inside and out, however, I know very little TSQL. That doesn't make me inferior.
Programmers should be gaged on their ability to understand common software problems and the ability to solve them using logic and elegant solutions, not what language or syntax they know. - digitalsin, on 10/12/2007, -4/+21It really all boils down to the fact that, as I see it, there are two types of us programmers.
Type 1: Career Programmer
This is the guy who, when asked what his job is, he says "programming". When you ask what he does in his spare time, he might reply with "I bungee jump, party, get drunk, party, etc etc". Programming is strictly a job, and when he comes home he might not even have a computer. Or he has a computer that is basically used for accessing MySpace. This is the guy FizzBuzz trips up, and he sees no value in it.
Type 2: The "Programming is an Art / Science" Programmer
When you ask this guy what his job is, he'll say "programming". Ask him what he does in his spare time, he might reply with "Well I just finished skimming through the Rails Recipes book. I use .NET at 'work', but I like to learn new languages and technologies when I have some extra time. Oh, I also spend my extra time keeping my blog on .NET Tips & Tricks up to date! By the way, have you read Getting Real by 37signals? It has some great ideas.".
You see, Type 2 is not just a programmer from 9 to 5, he really enjoys what he does and makes it his passion. He's also not simply a person who just likes to bang out code and go home. He takes the initiative to learn new languages. He reads books about the SDLC and methodologies.
This is the guy you want if you want quality. He excels in smaller environments. He's not simply a body filling a position. To find Type 2, ask the candidate what books he's read related to his profession in the last year or so. Ask what tech sites he visits, and why.
Even if Type 2 doesn't get fizzbuzz right off the bat, it's fine. Because he'll take the initiative to figure out the problem on his own time through his various forum resources. Most problems we, as developers, get are unique in some way and require detective work. Are you hiring someone who can be a detective and find a solution, or are you testing them to see if they're a walking reference book on a single framework but lacks the ability to think outside the box? - psylence, on 10/12/2007, -0/+16Shouldn't be hard to be the best you know, considering you sound like a total dick.
- bobzibub, on 10/12/2007, -4/+18Here's a reason:
Think back to the golden days of pre-8bit computers.
Now you have very few addresses to work with. Very few data lines.
For instance if you have a 4 wire dataline to describe a small bit of RAM, that is 16 positions. The first position would be where all the wires are off. Translate that into code and it would be 0000 in binary. The last position would be 1111. On a simple computer, there would be LEDs showing this address. It would be silly to waste electronics in this environment translating this zero to 1.
Lunch is over. Back to programming..... - aaronm67, on 10/12/2007, -1/+16@plumcrazy
Because in many programming languages arrays start at 0. - LocalScope, on 10/12/2007, -2/+17This doesn't really surprise me. I went to school with a lot of these type of people. How they were allowed to get a degree is beyond me. Group projects are painful when half of you know immediately how to solve a problem and the other half just doesn't get it even after explaining what the code base will look like (or even halfway into finishing it). Doing processes like requirements is a fast track to frustration hell.
- deabyss, on 10/12/2007, -5/+20If what you want to do with your life is be a programmer, do yourself a favor and don't get a Computer Science degree. Programming is not what a CS degree was meant for. Programming is merely a subset of computer science, and a very insignificant part at that. Go to a vocational school where they will teach you with a hands-on approach. You will also get real life experiences as a programmer by going the vocational route (and won't be as expensive). CS is more theory orientated. Computer Science is the bastard child of Mathematics and Electrical Engineering, and that is not going to change.
I can understand that in the old days CS is what you did to be a programmer, but luckily the times have changed and CS no longer fits the peg that is programming. - ell0bo, on 10/12/2007, -0/+14--- please beat me to it...
Explain to me why you would use a switch statement? Perhaps if you were going to set up some sort of binary system where Mod 3 gets 1 point and Mod 5 gets 2 and then switch of the combination ie (Switch (modres3 + modres5) {case0: case1: case2: case3:} )... but otherwise mister smarty pants (oh yeah, i broke it out) you would have to use two switch statements since there are two different possible values. No, in respect to memory and everything, two simple if statements are well enough sufficient for this problem. - blatherskite, on 10/12/2007, -1/+15@bpapa and @PLUMCRAZY
I believe the reason programmers count from 0 when dealing with arrays of data is that they are not so much counting the data in the array as providing an address to that data in memory. So the first element would be at ADDRESS+0, the second element is at ADDRESS+1 (the next door down) and so on. I'll grant you it makes less sense in some contexts now in the day of high level programming languages, but it's still a highly useful way of looking at it most of the time. - DenRoedeBaron, on 10/12/2007, -2/+16Someone please do it in *****... Maybe not?
- ghostlywind, on 10/12/2007, -3/+16This must be why EA games never seem to work that well.
- PedleZelnip, on 10/12/2007, -0/+13This is one of the most common misconceptions I hear all the time amongst collegues about programmers about what makes a "good" programmer. In my experience type 2 tends to be the stereotypical antisocial computer "geek" who is standoffish, and writes code that is wildly effecient but horribly difficult to maintain and that tends to be viewed as "good enough". They often have difficulty working with others, and just tend to "do things themselves". They have little balance in their lives. Often reacts with hostility to criticisms.
I think there's also a type #3: the programmer who enjoys being challenged with new problems, and while he/she doesn't read an O'Reilley book or learn a new programming language every week, he/she isn't afraid to broaden his/her horizons. He/she loves programming but often has varied interests away from computing (perhaps has a wife/husband and family). Because of the balance in his/her life, he/she is often able to interact well with others. Takes pride in his/her work, and often while not a prolific code writer, produces code of the highest quality and is always looking to improve his/her code even further. Is willing to accept criticism. Puts an emphasis on dividing a problem into smaller divisible tasks and has no reservations about handing them out to others.
I think it's type #3 that is the ideal programmer, yet it's type #3 that will tend to be hurt by the common types of obscure questions that are asked in programming job interviews (What's the operator in C++? What's call by value-result semantics? What's your favourite data structure?)
Programming skill has little to do with acquired knowledge, but rather the ability to problem solve and think critically. Yes you need familiarity with the language in question, but if you cannot break a problem into manageable chunks then you'll never come up with a great solution to it irregardless of how familiar you are with the language. - MasteRR, on 10/12/2007, -1/+14A lot of programmers are very bad and spelling and grammar in general, myself included. It is not uncommon at all.
Now leetspeak is out of the question for me, but I wouldn't deny misspelling variables and having poorly written output. - inactive, on 10/12/2007, -0/+12I have seen many computer science undergrads who can not program. The problem is the students are interested but not interested enough to work outside of the classroom. I feel that out of classroom work, thus independent, allows the student to grasp the language and remember how the structures and keywords work. Also, I have noticed some computer science curriculum focus highly on theory and thus, the students do not see much programming after their first year.
I say nuts to the theory and focus on practical knowledge! As you develop the practical knowledge, the theory will make sense and in search of answers to harder problems you can learn more theory than you ever could in a classroom. - Quaoar, on 10/12/2007, -0/+12The essential problem with programming is that the programmer must have intrinsic understanding of the algorithms, etc., that are involved. So, for a fluid mechanics program like Fluent, one must have a basic understanding of the physics and the gridding algorithms as well. For an accounting program, accounting is a prerequisite. For a gaming program - the most intensive knowledge-based systems - whatever subsystem the programmer is working on, the programmer must have a decent grounding in that subsystem.
Programmers cannot program well unless they know something about the systems for which they program. BTW, I do not believe that ALL PROGRAMMERS ARE DEFICIENT! A small percentage might be bozos, but that is the same with any profession. (I am not a coder, but a chemical engineer. I have no dog in this fight.)
Q - csfreakazoid, on 10/12/2007, -2/+12I have realized at my university that Computer Science majors who dont write code for fun and didnt know how to write code before college will never be able to write code. they always need help with the simplest of tasks. I still have to add semi-colons to people java code.
- digitalsin, on 10/12/2007, -1/+11I'm sure you're as good as you say you are. But honestly, if you'd have shown up in my office without the common courtesy of at least dressing up a little the interview would have ended the moment you walked through my door. What you'd be saying to me by bringing your wife and coming in with casual attire on is that you put your independence first and foremost. I could count you out on reporting to a team lead on anything. You brought your wife which is completely inappropriate, which also tells me you don't have any respect for formality.
Now, those are all reasonable assumptions, and they may very well be incorrect. However, that's why most of us take the 30 mins to dress up and leave our spouses/children/friends at home. - StarManta, on 10/12/2007, -0/+10I love everyone trying to write in the comments their code for fizzbuzz and getting owned by the less-than sign. :)
- rprouse, on 10/12/2007, -0/+10@simpleid
"don't people realize their own ignorance?"
The problem with stupid people is that they are too stupid to realize that they are stupid. ;-) - ostracize, on 10/12/2007, -1/+11@tradernet
No way in hell do I would want to hire someone who programs like you
:) - psylence, on 10/12/2007, -1/+11Yes I would like fries with that please, thanks.
- gkzhang, on 10/12/2007, -2/+11Half of those are wrong. They forget to even print out the numbers that are not multiples of 3 or 5.
- sprintmarathon, on 10/12/2007, -0/+9Depending on the methodology used to administer these tests, It's possible that the best programmers could even be weeded out by such practices. Not because they can't solve the problem, but because they're being placed in a hostile scenario that subjects them to evaluation in an overly harsh and simplistic way. Despite their highly developed abilities with software development, many are not psychologically equipped to deal with such a scenario and would simply freeze. The best programmers that I've ever known are all brilliant individuals, but each is so highly eccentric that when forced to perform other seemingly simple tasks – like interfacing with clients, or staying awake for an entire 8 hour day – they fall flat on their face.
While this testing methodology might work for weeding down the masses to one or two candidates that are worth their salt, it's asking too much to think that this is a suitable test for say, a PhD. - tont0r, on 10/12/2007, -0/+9Here is a nice programming lesson for web apps:
If you are allowing users to enter input, do not allow them to use the greater than sign or less than sign, along with a few choice others :P - psylence, on 10/12/2007, -0/+9Man, the great part about your post is that your code fails the case mentioned in the first damn sentence.
- chrisgarrett, on 10/12/2007, -3/+12As it says in the comments to the article, the people taking the time to read this stuff aren't the people being talked about. It's those who run on auto pilot, who never use the web for anything other than pr0n and cribbing code snippets, only turn up to get a paycheck and never spend any time educating their selves. I've met a ton of people like this unfortunately
- digduggler, on 10/12/2007, -1/+10I have a hard time believing even the worst programmer cant write something to count from one to ten.
- ABadInAlbany, on 10/12/2007, -0/+9@Korexz: bzzzz, wrong. As has already been explained, you'd have to use multiple switch statements -- you're not testing a single value, you're testing the output of 3 different modulus functions. Tell me how you're going to switch on imod3 imod5 imod15 with a single switch block? Go ahead, tell me ... waiting!
- PatrickX, on 10/12/2007, -1/+10The reason why we have great integrated development environments like Visual Studios is so you don't have to memorize a lot of syntax trivialities. Being good at software development is not about memorizing syntax, it's about coming up with efficient and clean solutions to problems. It can be hard writing things out on paper without the IDE giving you some snytax hints. That's the whole point of using them in the first place. If you want to judge someone's programming, have them actually program in the environment they use. If they can do that well, they will be able to adapt to a new environment.
-
Show 51 - 100 of 489 discussions



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