Slashdot Mirror


Hiring Programmers and The High Cost of Low Quality

An anonymous reader writes "Why is it so hard to find good programmers? And why should companies favor hiring fewer more senior developers rather than many junior ones? Frank Wiles discusses his thoughts in his article A Guide to Hiring Programmers: The High Cost of Low Quality"

572 comments

  1. Sigh. by SatanicPuppy · · Score: 5, Insightful

    FTA: ...Experience is key, but not necessarily in ways you might imagine. Time in the saddle, with a particular language is not as important as diversity of experience. Someone who has worked in several disparate industries, a generalist, is often a much better developer than one who has spent years in the same industry. There are exceptions to this, but in general I have found this to be the case. Bonus points if your developer was a systems administrator in a former life.

    Some of the best developers I know were originally trained as journalists, mathmaticians, linguists, and other professions not normally associated with software development...


    As a generalist programmer, originally trained in cognitive science, who has formerly worked in several disparate industries, was a systems administrator, programs in half a dozen languages (including perl), etc, etc...Apparently I'm supposed to be making twice my salary. Goddamnit!

    *stomps off in search of his boss*

    These days, being a programmer generalist (even worse, one with admin experience) just increases the types of shit that get dumped on you...Where they might have had to hire a person to do the front end GUI code, a person to do the database work, a person to set up the server, and a person to code all the services that need to constantly run in the back end, instead, since they've got you, you can do it all, while the specialists sit around drinking coffee and making catty comments about how much better they are at what they do than you are.

    My advice is specialize in something to the point where when you do any work on it, it's immediately out of the comprehension of a generalist or a less accomplished programmer...Sure, everyone will hate you, but they'll have to deal with you, and you'll be in a position to dictate terms. What's a generalist got? They're great employees. Big deal. Being a great employee is like being a great dog; at the end of the day, they'll still euthanize your ass when you're no longer of use.

    //Not bitter or anything.

    --
    ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    1. Re:Sigh. by Anonymous Coward · · Score: 1, Informative

      However, specializing to such great extent means that you will become virtually unemployable outside of your present position. Generalists here have an advantage of having a lot more opportunities that fit their resume. Which means that once e.g. corporate culture at the present employer changes to the worse, they can easily get another job.
      Besides, you'd want to specialize in your employer's business or a blend of business and technology rather than the technology itself for obvious reasons. That just might not be your cup of tea.

    2. Re:Sigh. by nurb432 · · Score: 4, Interesting

      But the advantage of being a talented generalist is you have a N+1 higher chance of remaining employed then someone that can only do one thing, no matter how well.

      --
      ---- Booth was a patriot ----
    3. Re:Sigh. by TheRealMindChild · · Score: 4, Funny

      My advice is specialize in something to the point where when you do any work on it, it's immediately out of the comprehension of a generalist or a less accomplished programmer

      Perl and Batch files it is!

      --

      "When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
    4. Re:Sigh. by djupedal · · Score: 2, Insightful

      "But the advantage of being a talented generalist is you have a N+1 higher chance of remaining employed then someone that can only do one thing, no matter how well."

      Tell me again? Just how is it you've managed to get this far in life having never fallen victim to office politics?

    5. Re:Sigh. by GuyverDH · · Score: 2, Insightful

      Being a specialist can have it's benefits - mostly to the person who is the specialist.

      However, being a specialist also has drawbacks.

      Let's see....

      #1 That's not my specialty, I don't know anything about it. This is used for 99.9% of any discussion that is outside the scope of their specialty.
      #2 How could I know that my application would do that? I don't know (xyz operating system), I only know (xyz language).
      #3 What do you mean I can't use all the resources on the box, I'm the only one using it right? (as you try to explain to the specialist that they are logged into a UNIX box with 40 other programmers)
      #4 Why can't I load up xyz app server and abc web server, that's what I'm used to using? (as you try to explain corporate standards)

      The list could go on and on...

      This is where generalists, or at least broader experience bases work the best. Specialists have their places, usually in an isolated system / network where they can do no damage.

      --
      Who is general failure, and why is he reading my hard drive?
    6. Re:Sigh. by Frumious+Wombat · · Score: 5, Insightful

      Every five years someone rediscovers, The Mythical Man Month and thinks they've had a great insight. People should be handed a copy of this when they start their tech jobs. Managers should have it inserted forcefully into appropriate orifices. Hardback copies for senior management.

      Basically, some people are just better coders, and adding sub-standard assistance just ensures late, sub-standard software. Adding people to late projects makes them later.

      --
      the more accurate the calculations became, the more the concepts tended to vanish into thin air. R. S. Mulliken
    7. Re:Sigh. by Bucc5062 · · Score: 1

      lol...I'm sorry, are you my clone? I think I could have written that word for word. As a "generalist" for (sigh) too many years I find the pat on the head quaint, but not comforting. On the plus side, us generalists can shift gears better, handle a downsize better and maybe see the light now and then.

      Specialists may rule, but generalists ROCK!

      --
      Life is a great ride, the vehicle doesn't matter
    8. Re:Sigh. by realthing02 · · Score: 5, Funny

      ^^ No kidding, it's like this guy just read about the Code team as surgical group. I'm a baby programmer (young, i don't actually program babies) and even i think this is old news.

    9. Re:Sigh. by tx_derf · · Score: 3, Insightful

      I'd say you've got it entirely backwards. It's been my experience that those who make themselves irreplaceable in any one pigeon hole make themselves unpromotable. The specialists get stuck doing the same thing forever until the technology evolves and they're left behind with no usable job skills. I've been developing software for 15 years. I've been in several industries doing many different things from real time safety critical embedded software to device drivers to building GUI interfaces and databases. And yes, I got my start doing IT while I was in college. I managed to dance around the office politics and change jobs at appropriate times and have landed in a very good situation, becoming a lead architect on a software project even though that wasn't why they hired me just 6 months ago. I'm the generalist with a diverse background, including IT, that the author talks about. I'm having great success making some very significant contributions because I learned a long time ago how to learn. I got here, knew what I had to grasp about the project to come up to speed quickly and what I could figure out later. And now I'm the lead planning our next big upgrade because I can do it. I've already directed one small upgrade since I arrived. You seem happy entrenching yourself so I say more power to you. But my experience says this guy hit the nail on the head.

    10. Re:Sigh. by Anonymous Coward · · Score: 0

      Every other week, a story is linked here that repeatedly references The Mythical Man Month and a flock of didn't-RTFA's rushes in to shout "The Mythical Man Month! The Mythical Man Month!"

    11. Re:Sigh. by Duhavid · · Score: 3, Funny

      Not specific enough. Just batch files!

      --
      emt 377 emt 4
    12. Re:Sigh. by misleb · · Score: 4, Insightful

      Tell me again? Just how is it you've managed to get this far in life having never fallen victim to office politics?


      Three possible methods... may be used in combination:

      1) Small companies/organizations
      2) Being completely oblivious to politics and not getting involved
      3) Consulting/contract work

      Note, I'm not the original person you were asking. I just thought I'd chime in.

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    13. Re:Sigh. by nurb432 · · Score: 1

      Office politics effect everyone of course, but if you have more skills you still have the advantage.

      --
      ---- Booth was a patriot ----
    14. Re:Sigh. by nurb432 · · Score: 1

      Unfortunately, all 3 can and often do involve politics. Especially the 3rd on your list. Thats how you get and keep your contracts, playing 'the game'.

      --
      ---- Booth was a patriot ----
    15. Re:Sigh. by jellomizer · · Score: 4, Insightful

      Avoiding being a victim to office politics is doable. It is about making yourself look good as well as the rest of the department. Politics come in when you are trying to make yourself look good either by focusing completely on yourself or at the expense of others. If there are other people trying trying to make themselves look you you help make them look good, if they are trying to make you look bad you make sure you still look good without making the other guy look bad. I work in a small company but I am one of those evil contractors who do work for bigger companies and there are always people want to see me fail but normally after I help them succeed then they are normally more welcoming to me.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    16. Re:Sigh. by misleb · · Score: 4, Insightful

      Well, the question wasn't how can anyone do it, the question was how did *I* do it. The first point, avoiding large corporations, is probably the most effective way that I have avoided office politics deciding the fate of my job. You can form more personal bonds in a small company and it is much more difficult for someone else to hide their incompetence.

      Another good strategy is simply to be good at what you do and don't give anyone any reason to doubt your sincerity or integrity. Always be upfront, frank, and honest. Never be afraid to say "I don't know" if you don't know something. If/when someone approaches your boss to complain about you (presumably for no good reason), your boss will take your side by default and you can therefore remain oblivious to the politics.

      Of course, if you're in management, too bad. Politics is pretty much your jobs then. ;-)

      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    17. Re:Sigh. by Anonymous Coward · · Score: 0

      One thing I find very wrong with this article is it continues to perpetuate the myth of the hero. First of all a hero is a double edge sword. The down side of the hero is that they usually have a very narrow domain of expertise. This might be fine in a mega-corp, but most shops need smart flexible jack-of-all-trades type to survive in a constantly shifting competitive world. In other words experts/heroes can be anchors tying you down to one approach or one technology.

      "Experts are lazy, they work smarter rather than harder."

      There's a mythical statement if I have ever seen one. I thought the whole "work smarter not harder" mantra went out of style when the buzzword "fruition" died 8 years ago. This author is so confused they don't know which way is up! Most of your "lazy experts" are just specialization whores. They have a very narrow band they work in. They are "all problems are solved by using X" types. They are NOT necessarily bright or talented. They live and thrive in a small pond.

      "Anyone who has been a developer or managed developers can tell you that an expert can accomplish as much as 10 average developers."

      Not the places I have worked. I would say an expert can at times generate up to 3 times a much output, but 10 times is ludicrous.

      I've worked in top 5 software companies and I can tell this author hasn't.

      There is a lot more to software economics than mythology. I hope some day industry professionals wake up and get serious.

    18. Re:Sigh. by jellomizer · · Score: 1

      As a generalist programmer myself I have found the opposite. I tend to outlast the specialist and the specialist are usually very afraid of me, because they know I could do their job too, if push comes to shove. In reality if you there sipping coffee you will not benefit over time, that is why the specialist tend to be first on the cutting block when it is a case of do we really need this specialist when a generalist can do the job 75% as well. And the specialist is only working 10% of the time... Working and having the bad jobs on your plate isn't really a bad thing it actually makes you look better then someone who is not working.

      --
      If something is so important that you feel the need to post it on the internet... It probably isn't that important.
    19. Re:Sigh. by abradsn · · Score: 1

      It's irritating that people are still holding onto some of the ideas that are irrelevant in an old book. Either that or they misinterpret them in the first place.

      Project Manager: Gosh, I wish I had known there was going to be so much extra work to do. We should have started with more people.
      CEO: Yep, me too, let's get some more people on this, so we don't make it even worse later.
      Project Manager: Good idea.

      Here is the basic idea. Yes, a project will be late if you don't start with enough people. But that does not necessarily mean that you don't add people when you figure out that you don't have enough. You just add them. You already know you are going to be late. At that point it is just mitigating the problem the best way possible.

    20. Re:Sigh. by GodfatherofSoul · · Score: 1

      My advice is specialize in something to the point where when you do any work on it, it's immediately out of the comprehension of a generalist or a less accomplished programmer...Sure, everyone will hate you, but they'll have to deal with you, and you'll be in a position to dictate terms. What's a generalist got? They're great employees. Big deal. Being a great employee is like being a great dog; at the end of the day, they'll still euthanize your ass when you're no longer of use.

      Tell that to the Dodo bird, sabre-toothed tiger, wooly mammoth, (soon to be joined by the Panda), or COBOL programmer.

      --
      I swear to God...I swear to God! That is NOT how you treat your human!
    21. Re:Sigh. by hardburn · · Score: 5, Insightful

      The first point, avoiding large corporations, is probably the most effective way that I have avoided office politics deciding the fate of my job. You can form more personal bonds in a small company and it is much more difficult for someone else to hide their incompetence.

      My personal experience (clearly being a statistically significant single datapoint . . . ) was in two small business (one around 20 employees, the other around 40 employees), and both were extremely cut throat. In particular, the second one had the employees forming close, almost family-like ties, but management was completely insane. That's where I discovered that being the guy that is considered absolutely invaluable doesn't actually insure job security, but rather makes you a target by people who consider you a threat to their own position.

      Now I work under a consulting company under a Fortune 500, where I'm almost completely insulated from the normal office politics. Whenever I have a bad day, I watch "Office Space" and remember why I'm so lucky.

      --
      Not a typewriter
    22. Re:Sigh. by Baddas · · Score: 5, Informative

      I would say an expert can at times generate up to 3 times a much output, but 10 times is ludicrous.


      Heh, quantity is not quality. Do you have any metrics? DeMarco and Lister do, and their data seems to show 10x. As in, not 'more code' but 'better code, fewer bugs, faster execution'
    23. Re:Sigh. by turbidostato · · Score: 3, Insightful

      "But the advantage of being a talented generalist is you have a N+1 higher chance of remaining employed then someone that can only do one thing, no matter how well."

      Not so true: say you are quite expert on A, B and C. On a mature or stressed market that only will mean that you won't get work neither on A, B nor C because those job positions will go for "real niche expert on A", "real niche expert on B" and "real niche expert on C", repectively.

    24. Re:Sigh. by jlarocco · · Score: 1

      But the advantage of being a talented generalist is you have a N+1 higher chance of remaining employed then someone that can only do one thing, no matter how well.

      That's an interesting idea, but it doesn't work like that.

      If you're a "generalist", it usually means you do a lot of stuff but don't do any of it very well.

      But if you're very specialized and good at your job, it might take N+1 people just to replace you, and they still won't do the job as well. You can't just replace a guy with 15-20 years experience in a specialized field and expect a few "general" guys to take over. A decent employer will know that.

    25. Re:Sigh. by Anonymous Coward · · Score: 0


      I've frequently said, "In this business, you don't have to be good, just good enough."

      I'll have to amend that because the book "Good to Great", has two easy things of note:

      1) "Good is the enemy of great."

      2) "Get the right people on the bus, then worry about which seat they are sitting in."

      I'd wager most -- those who do the hiring and managing the people, think #2 means (dealing with #2) think of "right people", as someone like this:
      {x} years experience with language {y}; {a} years of experience with OS{b}, etc.

      that's when they believe they are golden.

      Generalists are overlooked because they don't follow the warped version of #2.

      Businesses say they want someone who is talented in many areas and emphasize a particular setup. "Dynamic, challenging environment." "Dynamic" means they are changing staff in & out because the staff realizes they've been had. ".

      "Challenging environment" means "when a project is at or ahead of schedule, some moron figures the trend will continue and tells their direct report things will be done by . One could also think challenging means "Death Marches 'R Us". There are times a DM might come into play. But for the most part, a DM is avoidable. Most people with enough time in the trenches know how to spot the time the project has jumped the shark. The question is, will the project manager?

      Most people don't realize the number of DMs doesn't take long before the victims burn out and|or realize who is really to fault.

      And as far as leadership goes, there's the recent news about NOAA's head of hurricanes. The line in the sand is drawn by an incredible number of staff. What's the first thing the bureaucracy does? Put him on ice and see if there's anything which can be done to defuse the problem. How can he p-ss so many people off where a minor tweak will resolve the problem? (everything would make everyone happy if he "dressed" left instead of right?)

      Per the other comments about politics, there's an old, old adage which goes like this:

      Q: "What's the difference between a brown-noser and a sh-thead?"

      A: "Depth perception".

    26. Re:Sigh. by Prof.Phreak · · Score: 1

      ...immediately out of the comprehension of a generalist or a less accomplished programmer

      In other words, write everything in Perl :-)

      --

      "If anything can go wrong, it will." - Murphy

    27. Re:Sigh. by SatanicPuppy · · Score: 3, Insightful

      Ha! Trust me on this, COBOL programmers will take their goddamn jobs to the grave with them. Those S.O.Bs get called out of retirement and paid consultant money to fix things they arsed up decades before.

      Anything that sits on a financial system will be changed as seldom as possible, and COBOL is alive and well with people who maintain those damn ancient not-to-be-upgraded systems.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    28. Re:Sigh. by Heembo · · Score: 2, Interesting

      The problem is that you are a admin/script writer. You admit this clearly by touting your know-how of PERL of all things.

      When folks ask, what do I write in? I say, Java (since 1.0.2, I'm now into 6), HTML (really, XHTML 1.0) CSS/JavaScript (my AJAX runes on even IE 5), etc. I have Software Development experience ranging from big teams at GE to small elite teams. Right now, I can make around 150k easily/year. I know Perl, PHP, etc. But I admit to these last.

      The moment I'm not useful I know they will fire me that day. But right now, these specific skillz pay very well.

      --
      Horns are really just a broken halo.
    29. Re:Sigh. by Anonymous Coward · · Score: 0

      The only COBOL programmer I know makes around $175 an hour and has a house the size of my apartment complex.

    30. Re:Sigh. by Fulcrum+of+Evil · · Score: 1

      Congratulations - it's midway through the project, so the thing'll be later.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    31. Re:Sigh. by Ian_Bailey · · Score: 2, Insightful

      I've found in my experiences that the "small company" vibe that some people like doesn't necessarily grow in 20 people companies, and sometimes appears in larger companies as well (although I have far more experience with the former rather than the latter).

      I've worked for a smallish company with dozens of people, and it had the culture of a big company. Lots of politics, multiple performance tracking systems, and an admin guy with too much time on his hands to create new policies that makes your life more difficult.

      I agree with the idea of the post that smaller organizations tend to focus more on people rather than politics, but it is by no means a hard and fast rule.

    32. Re:Sigh. by PitaBred · · Score: 3, Insightful

      Says you. I'm a "generalist", but damned if I don't solve tons of problems around the office that stymie specialists because they don't know the full system, or how to think of it from any other angle than what they've been trained. As in, the Java interface programmer who keeps asking me how to use LDAP, which he hasn't had experience with, or why the 64bit version isn't working. Generalism still has a lot of place in a business.

    33. Re:Sigh. by Breakfast+Pants · · Score: 1

      This isn't really true; your boss could get your whole team fired through bad politics on his part, and there wouldn't be anything you could do about it.

      --

      --

      WHO ATE MY BREAKFAST PANTS?
    34. Re:Sigh. by ktappe · · Score: 2, Interesting

      the employees forming close, almost family-like ties, but management was completely insane. That's where I discovered that being the guy that is considered absolutely invaluable doesn't actually insure job security
      Wow, it's good to hear I wasn't the only one. In the 40-person company where I worked as the sole I.T. guy, the owners were also insane. I got booted after seven years of service because the owner's wife took a dislike to me (I couldn't fix the inherent problems with the horrid software she chose to buy without consulting anyone, she didn't understand why I had the desktop publishers using Macs, etc.) That's (micro)politics too, so it's dangerous to assume small companies don't have that problem. Now I'm at a Fortune 100 company where you essentially have to get arrested to get fired, though such job security is compensated for by the endless red tape required to get anything done. Everything is a tradeoff.
      --
      "We can categorically state we have not released man-eating badgers into the area." - UK military spokesman, July 2007
    35. Re:Sigh. by Anonymous Coward · · Score: 0

      I think you've misinterpreted the term "specialist". It doesn't mean that they're special

    36. Re:Sigh. by Anonymous Coward · · Score: 0

      15 years programming and your uid is > 1000000?

    37. Re:Sigh. by Metasquares · · Score: 1

      It is possible to do many things and do them all well. Granted, not everyone can do it, but it is possible nonetheless. In fact, if you can carry ideas from one discipline to another, you might do even better than an equivalent specialist. And even the most successful generalists usually have one primary skill that they tend to use often (da Vinci was a polymath, but he was still primarily an artist).

    38. Re:Sigh. by mini+me · · Score: 2, Insightful

      A decent employer will know that.

      A decent employer will realize that communication is where most productivity is lost. Because the generalist can do it all, they don't need to waste time telling the next guy what needs to be done. Even if they are slower to get a specific task done compared to a specialist, they will easily make up that, and more, over the entire job.

      Although, I must say that in my experience, the generalists usually display more skill across the entire gamut of their abilities when compared to a specialist in their area of expertise. There is a lot of hidden overlap between fields. Even if you're not focusing on a specific field, you're always learning more about it from other fields you are working in. Though perhaps only those "wired" to be generalists are able to pick up on this fact and why specialists seem to think it doesn't happen?
    39. Re:Sigh. by Yetihehe · · Score: 1

      On a mature or stressed market that only will mean that you won't get work neither on A, B nor C because those job positions will go for "real niche expert on A", "real niche expert on B" and "real niche expert on C", repectively.
      I would call it still market. If there is no job opportunities for newcomers, this one market is dying.
      --
      Extreme Programming - Redundant Array of Inexpensive Developers
    40. Re:Sigh. by ballwall · · Score: 1

      I think there are two sides to this. On my resume I put java first, on slashdot I put perl first. Java is a great way to make money because some PHB realized that if you force everyone to reuse the same design patterns all over the place you can treat programmers like cogs. This, though, isn't a fun way to write code. Plus, you can still write crap in java, it's just legible crap. There are instances where you want to make java do something that you just can't make it do [without a LOT of code that ends up approximating other languages anyway].

      That's why when I'm talking about what I /like/ to do I mention perl first. With perl a lot more of the language is in your control, and you can make it do all sorts of interesting things. Doing so in a maintainable way is tricky, but no more tricky than any other language.

      Somehow perl got pigeonholed into the same group as shell scripting (and earlier versions were probably very similar), but in reality the current iteration of perl is a lot closer to Lisp. Granted, the OO stuff was bolted on later, but now it's even more OO capable than java in that it's not constrained by someone elses notion of what perfect OO is. (Interfaces vs multiple inheritance, I'm looking at you). I haven't written a non-OO perl app in years (minus throw away stuff).

      Anyway, point is
      Resume: java
      Fun: perl
      That doesn't mean I'm a 'script writer'.

    41. Re:Sigh. by jlarocco · · Score: 3, Interesting

      I think we're talking about two different things.

      By "specialist" I wasn't talking about idiots who specialize in one part of a particular programming language. I was talking about the people who specialize in writing software for one part of a particular industry and know that part of their industry very, very well.

      For example, people who specialize in industrial robotic systems, telecom systems, automotive computer systems, avionics systems, etc.

      To put it another way: Do you want the avionics in the plane your flying in to be written by 10 specialists with 200 years combined experience writing avionics systems, or by 50 general programmers with 5 years combined experience writing avionics systems?

    42. Re:Sigh. by fusion9290991 · · Score: 2, Insightful

      I've got two kinds of programers:

      1. The guy who is always shitting himself over a deadline, is always going on about how busy he is, never gets anything done, and delivers consistently broken apps. He blames everyone else for either being stupid or lazy when his apps break. He consumes exceptions because he's embarrassed about them, rather than using them to determine what went wrong. He quotes best practices, but seldom uses them. He consistently reinvents the wheel. He's never wrong, and instantly knows the cause of every problem, tho he won't actually do anything constructive towards fixing it. He'll suggest lots of things, but won't be willing to try them in case he's wrong.

      2. The second guy (who is often the one accused of being lazy, coz he's "not stressing enough"), often seems to be doing things which are not related to the project, but always has his stuff done. On spec. On time. Working. And pretty much bug free. And he's solved a bunch of other problems along the way.

      Who would you rather hire?

      --
      remember to loot and pillage before you burn!
    43. Re:Sigh. by Nazlfrag · · Score: 1

      Wow, you're so awesome you don't even have a uid! I've been reading slashdot since the nineties, yet have a uid over 1,000,000. Should I end my career in IT now, or just take my uid off my resume?

    44. Re:Sigh. by Anonymous Coward · · Score: 0

      >Should I end my career in IT now, or just take my uid off my resume?
      Yes.

    45. Re:Sigh. by oliverthered · · Score: 1

      I've found that the best way to get and keep contacts is to be good.

      --
      thank God the internet isn't a human right.
    46. Re:Sigh. by MoeDrippins · · Score: 1

      > I'm a baby programmer (young, i don't actually program babies)

      You should; you could name your price. Retire in about 18 months.

      --
      Before you design for reuse, make sure to design it for use.
    47. Re:Sigh. by chaos.squirrel · · Score: 1

      Tell me again? Just how is it you've managed to get this far in life having never fallen victim to office politics? Easy: don't ever go to work, just sit around reading /. ;-)
    48. Re:Sigh. by MooseMuffin · · Score: 1

      Just thought I'd mention that "The Mythical Man Month" was required reading for my college software engineering class.

    49. Re:Sigh. by SatanicPuppy · · Score: 1

      I said I know perl; if you do unix/linux administration I'd say you have to know perl...You'll be seriously handicapped if you don't.

      As it happens, in fact, I'm a Java programmer as well; I've been doing it since 1998. I originally got into administration because I was working at windows shops, and I really needed to be able to install and configure Apache and Tomcat on Linux systems in order to deploy my applications.

      Since then I've worked in mostly corporate environments as a programmer. I program well in Java, C#, Perl, and Python. I can get by in COBOL, and I program well in javascript, but I don't enjoy it. I've been certified in administration of three different unix environments, and I've administered databases ranging from TurboIMAGE/XL legacy databases running on MPE/iX machines, all the way up to Oracle databases running on modern blade servers.

      And I would never, ever put HTML on my resume; that will get you designing forms for marketing. Don't think you know me because I said the word "Perl." I never claimed to be a script jockey, that's your prejudice leaping to the fore.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    50. Re:Sigh. by ichimunki · · Score: 1

      Thanks for the link. I have not read the book but it's on my list. One of the reviewers addresses the 10-to-1 issue and states that the more productive programmers had more private workspaces. So is it the people? Or the atmosphere?

      --
      I do not have a signature
    51. Re:Sigh. by Anonymous Coward · · Score: 0

      Then when performance is an issue tell them to speak to the specialists.

    52. Re:Sigh. by GodfatherofSoul · · Score: 1

      Maybe some guys are hanging in there, but the only one I know got way too comfortable in his job and never retooled. He was laid off in his fifties and couldn't find another gig for at least a year since I last spoke to him. I'm sure there are a handful of COBOL gurus out there benefiting from its obscurity, but what about the less fortunate who went down with the ship?

      --
      I swear to God...I swear to God! That is NOT how you treat your human!
    53. Re:Sigh. by mdarksbane · · Score: 1

      The biggest thing I've done is to make sure I'm evaluating their procedures and people when I'm interviewing for the job. Something as simple as how they deal with new people and how directly I'll be working with my boss can make a big difference, as can your own personal gut feeling about the boss and the people you meet.

      I'm working at a small company where all of this works pretty nicely :) But I know my wife turned down a position at a small consulting firm just because she didn't get a good vibe from the guy she would be working under. You can normally spot if someone is a tool pretty easily in an hour or so of talking to them.

    54. Re:Sigh. by SatanicPuppy · · Score: 1

      That's always going to be the case with some people; there isn't any foolproof way to perpetual employment.

      In some of the stuff I work with though, I see the same people over and over again. They get fired by one group that finally drops their obsolete system, and then immediately get picked up by a company that offers support contracts on that obsolete system. There are so few people left who understand it.

      COBOL is so obscure, and so seldom taught these days, that you can really clean up if you have good experience in it. There really isn't any new competition coming up through the ranks, and I'm not joking about the software...I do administration on a system that's more than 25 years old, and every time I mention upgrades around our CFO, he gets dizzy and has to be helped to a chair. So we keep paying for support, and those people keep their jobs.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    55. Re:Sigh. by enjerth · · Score: 1

      I thought it was higher ceilings. Higher ceilings produce expert programmers.

    56. Re:Sigh. by Baddas · · Score: 2, Informative

      According to them, both. It's useless to hire good people if you don't give them good space, and vice versa, though even poor performers do relatively better in good space.

    57. Re:Sigh. by Parasome · · Score: 1

      Funny you call this a "mythical" statement. I've read an assertion to that effect in the seminal book "The Mythical Man-Month" by Frederick Brooks, who apparently knows a thing or two about coders (having been development manager of OS/360, no less). Although, he didn't tie it to being an "expert", just stated that output and efficiency of programmers varies by orders of magnitude.

    58. Re:Sigh. by Anonymous Coward · · Score: 0

      You do realize: you're engaging in office politics. Forming personal relationships with your coworkers is part of office politics. Having your boss defend you is part of office politics.

    59. Re:Sigh. by roman_mir · · Score: 1

      Batch files, shmatch files. I'll specialize in loading drivers into high memory and loading DOS into upper memory block of high memory with config.sys

    60. Re:Sigh. by Anonymous Coward · · Score: 1, Interesting

      yea like when your 120k per year Oracle Certified Administrator(tm) can't install Oracle on a Sun box and doesn't know how to install java either, which is required by the Oracle Installer, which is written in java. How the fuck can you be an "Oracle Certified Administrator" and not be able to install and configure the product on the primary platform it runs on out in the world?

      Frightening isn't it? Certification 4tw! I stepped in and had his installer running in 7 minutes after he wasted 2 days on the phone with support. Keep in mind this was Oracle 10i and I'd never installed it on Sun before. I'd never been at a Sun prompt, but know BSD, Linux and Unix systems. ... Stupid ****'s I can't believe that guy has a job, period. Any time a developer has to step in and do an administrators job for them, be afraid, very afraid. A couple of years later the PM was wondering why the project he spent 1.2m on failed...

      It's almost as bad as the MCSE I worked with who didn't know what ftp was. She literally couldn't get to Microsoft's ftp server to download something (this was back when their patches, resource kit, etc. were available on ftp)

      If I'm ever in charge of hiring, there will be a system in my office when I interview people, where they get to show me what they know instead of telling me about what they know, or showing me a piece of paper. If it's an Oracle Admin, there will be a default install of Sun OS on the box, and the candidate will install it right there in the interview and get it up and running in front of me, or he'll look elsewhere for a job. Just take a sliver of their supposed skill set and spot check.

      Only takes 10 minutes right? It's not hard to see who the idiots are, just put a terminal in front of them and ask them to do something.

      -AC

    61. Re:Sigh. by Marxist+Hacker+42 · · Score: 1

      The difference between a junior developer and an expert programmer- having a large bag o' tricks to pull from in cases of short deadline.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    62. Re:Sigh. by djasbestos · · Score: 2, Interesting

      I work for a small company (~50 in the corporate office), and top management refuses to flat out fire our contractor despite mountains of incompetence because we've got too much money into them and their shit software that does not work very well, if at all.

      I'm somewhat of a generalist (minus pretty web GUI's...), and my boss and I agree we can outdo (performance- and time-wise) the contractor through the entire cycle.

      FTA: "Experts use better tools and care deeply about their craft. They aren't assembling bits on an assembly line, they are crafting a unique product to solve a unique problem. Experts are lazy, they work smarter rather than harder. Experts prefer the easiest solution that gets the job done. Experts aren't interested in creating complex solutions simply to have the complexity, that misguided egoism is the territory of more junior developers. They often get it right the first try and almost always on the second one."

      This is the sad truth of my job: replace "experts" with my name and "more junior developers" with "our off-shore developers led by an American" and you have a pretty solid description of our development story. Locally, I *am* the dev team, and that doesn't really bother me as we aren't an IT company. My boss and I agree with this article: we should axe the clowns overseas and get one more *good* developer in here.

      Then again, having these bozos arounds just makes me look even better, but it's not worth the headaches, and I'd frankly rather just write ALL the code and make it bulletproof and completely end-user configurable and operable. So in the words of the GGGGP: sigh.

    63. Re:Sigh. by Marxist+Hacker+42 · · Score: 1

      I want it written by ONE specialist and 5 generalists- the specialist to give the industry-specific inputs and outputs, the generalists to make sure that when you get a given input, the system will reliably give the expected output with 100% uptime.

      You need both, but you need fewer specialists than you do generalists. Oh, and the Fred Brooks Method says You Shalt Not Have A Software Development Team Greater Than Six.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    64. Re:Sigh. by jedidiah · · Score: 1

      The oracle installer doesn't require a separate jre. It uses one of it's own. The way Oracle is, this is pretty much a requirement. The same goes for perl too BTW.

      It's not a DBAs roll to muck around with things like java. If you think you needed to, then you're just as much of a menace as you think that OCA is. ...that and OCA is like the "tenderfoot" level of Oracle Certs.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    65. Re:Sigh. by Lodragandraoidh · · Score: 1

      I encounter this every day in my job.

      This is why I am a firm believer that you should either hold a computer science degree from an institution that provides a well rounded background so you understand these issues, or you come from another discipline and show that you understand those issues. Hiring should be geared to identify those candidates.

      Too many people with little interest or skills in computers and system development ended up overflowing the market place for programmers during the dot-com era. They were only in it for the money - and had no interest in the work - and it showed.

      Unfortunately most businesses have a very short term view - and focus on the stock price - at the peril of their good name (if they had one to begin with). For decades it has been common knowledge that programmers are not interchangeable, yet business continues to operate as if we are - in pursuit of a quick profit fix, at the expense of quality and customer satisfaction.

      The need to shake out the riff-raff from the job market is long overdue. We end up cleaning up behind them anyway - we might as well get paid for it.

      --

      Lodragan Draoidh
      The more you explain it, the more I don't understand it. - Mark Twain
    66. Re:Sigh. by misleb · · Score: 1

      You do realize: you're engaging in office politics. Forming personal relationships with your coworkers is part of office politics.


      Then what *isn't* office politics then? Is working with a coworker office politics? Writing email and communicating things? Come on. The bonds are just a natural part of working together. It isn't part of some scheme.

      Having your boss defend you is part of office politics.


      I don't "have" him defend me. He just does.

      -matthew
      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    67. Re:Sigh. by Anonymous Coward · · Score: 0

      Kinda sounds like sour grapes, eh?

      Are you the incompetent from a smaller company hiding amongst the IT department at a larger company?

    68. Re:Sigh. by Heembo · · Score: 1

      As it happens, in fact, I'm a Java programmer as well; I've been doing it since 1998. Then you might want to consider "selling" yourself as a Java programmer. Maybe consider getting the latest Java Programmer cert (it's easy). Good Java guys make excellent money.

      Since then I've worked in mostly corporate environments as a programmer. I program well in Java, C#, Perl, and Python. I can get by in COBOL, and I program well in javascript, but I don't enjoy it. I've been certified in administration of three different unix environments, and I've administered databases ranging from TurboIMAGE/XL legacy databases running on MPE/iX machines, all the way up to Oracle databases running on modern blade servers. You will not get a solid salary writing Perl, Python or especially Cobol. Java(php), XHTML, JavaScript and CSS and the skills that pay very well now. Especially if you understand stuff like MVC programming and design patterns. Generalists do not make a lot of money (what, you are around 75k now?) it's deep experts with hot skills that make the big bucks. Heck, if you know Java very well and can get over your dislike of JavaScript, I'd hire you myself. I just hired a 26 year old kid who is a PHP/JavaScript master for 70/hr (around 140k/year @ 2000 hours)
      --
      Horns are really just a broken halo.
    69. Re:Sigh. by Kazoo+the+Clown · · Score: 1

      It's been my experience that with smaller companies like this it's far better for them to be marketing driven, rather than engineering driven (and that's speaking as an engineer). What happens in engineering driven companies is the management quickly comes to realize the importance of marketing, but being engineers are fish out of water and go into panic mode trying to figure out how to keep it afloat. In a marketing driven company, the management are salespeople who are comfortable with marketing, which in a small company is the more critical function at least in the beginning, and the whole enterprise seems to be a lot "calmer" in it's operation. While either way there can be scheduling pressures, there tends to be more rewards, IMHO when there are solid marketeers at the top. While there may be downsides to marketing driven small companies, I haven't seen much of that, they've done very well for me...

    70. Re:Sigh. by GeckoX · · Score: 1

      I see your point, sort of...however that's like saying an engine mechanic shouldn't know where the fuel lines connect.

      If you're an Oracle admin, you'd damned well better be able to install Oracle, period.
      If you're an Oracle admin making 6 figures and you can't, you're a fraud, period.

      Heck, I'm a programmer, mostly relegated to MS environments for the past 10 years. Rarely had to work with Oracle in any fashion...and yet I've actually installed it on a sun box.

      Maybe this is something common to DBA's in general? At my last place of work, we never had a DBA until we hired one about a year ago. If something was sent to him to be done, we quickly learned not to bother as it would take at least 2 weeks to get that work done...typically work we would have done ourselves in minutes. Work which we quickly learned to continue to do ourselves if we wanted to continue being productive at all. Of course that is of limited anecdotal value, YMMV.

      --
      No Comment.
    71. Re:Sigh. by SatanicPuppy · · Score: 1

      Meh. It's more that I just don't like working with front-end applications all that much, and javascript is mostly useful there.

      Databases, servers, server jobs, server-side applications, etc...It's all clean and useful...No one even notices if it's working, and when you take over a task from someone and automate it, it's like christmas and they're never anything but happy (unless you screw it up, which I seldom do, thankfully).

      But move into GUI's and you're screwed...Nothing is ever clean again, no one is ever happy about it for long, and you're forever getting bothered by people who want to push push push the functionality of their web app or their swing app, and make this or that "minor" change which flies in the face of the whole design philosophy as it was conveyed to you by your boss. I guess I just like doing work that is impenetrable to most users...They know it's there, and they know it works, but they can't see it and there is nothing there for them to comment on.

      My type of work, you'd be surprised how people's eyes light up when you say "Cobol." It means they can write off calling their septuagenarian consultant who charges 500 dollars for picking up the phone, next time they have some minor issue. My worry about putting it on my resume is the same as my worry about putting javascript on my resume...It's that I'll apply for a job, and they'll see it and say to themselves, "This guy would be great for our ancient legacy server (cobol)" or "This guy would be a great web developer (javascript)" and that's just really not what I want to do.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    72. Re:Sigh. by Heembo · · Score: 1
      Yea, Generalists will ALWAYS get a job, but for industry standard salarys. That cool! It's a good living, and we should all be lucky to be in IT where the going is a lot better than any other industry (except for lawyers).

      But move into GUI's and you're screwed...Nothing is ever clean again, no one is ever happy about it for long Yea, but I work hourly. And I love working with client code. JavaScript is like working with Java back in the beginning - Write once, debug everywhere. Good luck, you seem really smart with a great skill set. Don't be afraid to look around for other work if you want more money - and focus on hourly, consulting work. You will make more money.
      --
      Horns are really just a broken halo.
    73. Re:Sigh. by SatanicPuppy · · Score: 1

      Yea, I've been salaried for a while, so I guess I'm instinctively averse to things I know will snowball into more headache than I want to deal with. GUI projects never get finished, and I've worked on a few that just traversed in circles after a while...Literally, I could pull version 1.19 and replace version 1.36 with it and give them all the changes they were requesting.

      I've got a few ugly projects to finish up where I am, and then I'll be looking again. A nice tenure here will look good on the old resume, and though it sucks in terms of work, the stuff I'm working with is big and sexy stuff.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    74. Re:Sigh. by Heembo · · Score: 1

      Cool man. When you are ready to move, toss me your resume, I'll see what I can do for you. We all work from home in my company.

      --
      Horns are really just a broken halo.
    75. Re:Sigh. by Doctor+Memory · · Score: 1

      You just add them. Uh, no. You're missing the whole point. Not adding more people to a project won't get it done earlier, but adding more people at the midway point will actually make it later. Instead of the original developers spending 100% of their time making progress, they'll have to spend 30-50% of their time bringing the new guys up to speed. And the new guys won't be productive for at least a month, maybe three (depending on the size of the project and the competence of the new developers). Especially when you consider what kind of developers are going to be available on short notice (hint: it won't be the experienced veterans, they're too busy leading other projects).
      --
      Just junk food for thought...
    76. Re:Sigh. by Shadowlore · · Score: 1

      "Baby programmer" == "Parent" ;)

      --
      My Suburban burns less gasoline than your Prius.
    77. Re:Sigh. by Sproggit · · Score: 1

      Absolutely
      For a good long while I specialised in performance testing of banking engines.
      Nice solid contracting income.
      I made a good living, not by being brilliant, but by always being right.
      If this meant I had to do 3x the work of the next guy to be sure of my facts, I did it (often at nominal extra charge).

      Doing 11th hour performance testing also means that you are always involved in politics, and very rarely in a positive way.
      My first line in virtually every take-on and every final debrief meeting was this:
      "I make friends over the weekends, I'm here to tell you the bad news, before your customers do. If you dont want this, tell me to leave now (at take ons) or dont hire me again".

      I have VERY few developer or admin friends.
      I have MANY more management friends / colleagues where a huge amount of mutual respect is present.

      Thems the breaks, in the middle ages they would pour boiling oil over carriers of bad news...

      The Sproggg

    78. Re:Sigh. by Anonymous Coward · · Score: 0

      YOUR company? Haha, you mean AUGUST'S company, vice prefect of $150K/year!

    79. Re:Sigh. by Heembo · · Score: 1

      Fuck off an Die.

      --
      Horns are really just a broken halo.
    80. Re:Sigh. by myroutine · · Score: 1

      I want it to be well tested.

    81. Re:Sigh. by kuleiana · · Score: 1

      I really don't think you want to be saying that... :-)

      --
      Thinkingman.com New Media
    82. Re:Sigh. by Heembo · · Score: 1

      Go away Adam Prall. Don't die, just fuck off.

      --
      Horns are really just a broken halo.
    83. Re:Sigh. by kuleiana · · Score: 1

      Wow so you fuck with me then tell me to fuck off huh?

      --
      Thinkingman.com New Media
    84. Re:Sigh. by Heembo · · Score: 1

      Maybe if you actually were online 1/2 the time when you promised to me, I would not have fired you. After rounds of being sick, missing promised dates, etc. We all agreed it was time to let you go. Adam, you are one of the most brilliant graphic designers/software people I know. Yes, software too. Yes, you are really good. But you do not have a strong case of business integrity. For example, you take every Monday off? Give me a break. We need someone we can depend on.

      --
      Horns are really just a broken halo.
    85. Re:Sigh. by kuleiana · · Score: 1

      You never fired me! Maybe if you weren't doing coke while working, miscommunicating project needs, and calling us in to work at 11pm at night on Sunday, we'd still be working together. Not to mention completely failing to communicate your issues, just disappearing off the face of the Earth for 3 weeks, and then never saying "you're fired" on top of it, Jim Manico, I hardly think you - or your company, for that matter - has a leg to stand on when talking about so-called "business integrity". If you had any of these problems before, you should have said something back in 2006 instead of mentioning them now three months later. Fucking lame! Business integrity, my ass.

      --
      Thinkingman.com New Media
    86. Re:Sigh. by kuleiana · · Score: 1

      And, no, I don't work Mondays, I work Saturday, when people like you aren't jumping in and messing up my work.

      --
      Thinkingman.com New Media
    87. Re:Sigh. by Heembo · · Score: 1

      Then why the fuck are you tracking my Slashdot posts and harassing me? I do not follow your activity.

      Yes, I do call people on Sunday nights, late, and pay people the moment they pick up the phone, if they pick up the phone. We were releasing a site as part of a very large internationally exposed project, dude.

      You are (still) an at-will employee. I never technically fired you, you are right. I wanted to keep you around for other projects . I did not speak to you for 3 weeks cause (1) I had a site to deploy and (2) I was furious with you to the point that I really had nothing to say. And when I did call you to offer you more work, you pissed in my face. So be it.

      Look Adam Prall, this is long over. You are the one who is trolling me on Slashdot. Not the other way around. Leave me alone and I will pay you the same respect.

      --
      Horns are really just a broken halo.
    88. Re:Sigh. by kuleiana · · Score: 1

      Fine with me, James Manico, but hopefully next time you hire someone to abuse, make sure that you (1) let them know what isn't working for you and (2) understand it when they think you're a creep for that same type of treatment. It's obvious we're never going to agree on what happened, you have your points and I have mine, but in my eyes I lost every iota I had of respect for you as a friend and professional from that project, and I did NOT appreciate your throwing me under the bus to make yourself look good, whatever your superficial reasoning tells you. I will never reply to a comment you make on this system again, not to you directly, nor am I interested in doing so now that I see where you're coming from. I'll pay you the respect I know you don't deserve and ignore you around town, that is the maximum courtesy I can offer, but don't expect me to like you.

      --
      Thinkingman.com New Media
    89. Re:Sigh. by Heembo · · Score: 1

      You think it made me feel good to throw you under a bus, metaphorically? You think it make me look good to hire you and then have you not show up for work multiple times? You are wrong. You made me look very bad. Adam, I went OUT OF MY WAY to get you multiple jobs - I sold you, I praised you, I was really on your team. When I was in a crunch, and had you in a place where we really depended on you, you let us down many times. You were either sick, or took money off to hit the beach - and Monday is a crunch time. It's just a matter of being a man of your word, and you could not simply do what YOU said you would do - over and over again. I don't want you to like me. I want you to stop responding to my Slashdot posts.

      --
      Horns are really just a broken halo.
    90. Re:Sigh. by kuleiana · · Score: 1

      OK, fine, last post: if you really want me to stop replying, then please stop replying too. Jim, you did throw me under a bus. There is no question about that. But if you're having problems with me, I want to hear them, I don't want you to say "hey you're just kicking ass" - and then not mean it in the slightest. I took time off - so did you! - and didn't take any more time off than you did! Anyway, next time I get meningitis (and continue to work throughout) - I'll remember what you said, be a man of my word, and continue to write functions in a way I don't like because it's a requirement to get the project launched. And please don't get into pitting my integrity - and doing what I said I'd do - against you - I WILL come out ahead, and can provide the examples, myself, by the dozens. It's not that I didn't appreciate the work we did together, but man - those were some weird projects. Anyway, I suggest we end this. If there's another forum you want to continue this on, for some reason, PM my account on Slashdot, otherwise, please don't respond to this if you don't want it responded to publicly.

      --
      Thinkingman.com New Media
    91. Re:Sigh. by Anonymous Coward · · Score: 0

      "Renaissance Man."

      A curious quirk of nature is that people who are good at one thing, tend to be good at it because they're just naturally talented. Those talents carry over to other endeavors. A distant second to just being naturally talented in many things is to work very hard in a focussed area.

      There are advantages and disadvantages, but I've never observed a specialist whose expert opinion could be trusted. They're so focussed, they can't tell when they've gone beyond their specialty, and are dangerous to put in any kind of strategic capacity. I personally don't find them useful technically either. I've seen them screw up project after project with their all-I-have-is-a-hammer mentality.

    92. Re:Sigh. by Weezul · · Score: 1

      Your better suited to being CTO at a start up.

      --
      The Christian religion has been and still is the principal enemy of moral progress in the world. -- Bertrand Russell
    93. Re:Sigh. by cruisah · · Score: 1

      Sounds interesting, where can I send my CV ? :-)

  2. an experienced crappy programmer still ... by El_Muerte_TDS · · Score: 2, Insightful

    ... produces crap. Good programmers are not cheap, people that want to hire them are.

    1. Re:an experienced crappy programmer still ... by ivanmarsh · · Score: 1

      Indeed... you get what you pay for... and sometimes not even that.

  3. Which perl programmer wrote this by BlackSnake112 · · Score: 0, Troll

    This article looks like it was written by a perl programmer.
    What to 'work' from home... check
    flexible working hour... check
    make sure perl is mentioned often... check
    higher better people for more money and you save money... check

    I like the last one but it has to be justified. The programmer better be worth the 90, 100, 120K a year to be paid it.

  4. mythical man month by Anonymous Coward · · Score: 3, Insightful

    that is all.

  5. "good enough" at less expense by Anonymous Coward · · Score: 0

    "Why is it so hard to find good programmers?
    They are not visiting Slashdot enough :) no seriously though, it might not be a lack of good programmers as it is a failure to find them/willingness to hire older programmers who are more experienced [more on this is a second]

    And why should companies favor hiring fewer more senior developers rather than many junior ones?
    younger/less experienced programmers like most fields have lower salaries, it could be that it is felt that hiring less experienced programmers is justified by the lower salary [if both are good enough for the job why bother paying more?]
    1. Re:"good enough" at less expense by SatanicPuppy · · Score: 1

      That's pretty much his point. In his opinion, you're far better off hiring a handful of senior guys than the slew of newbies who could do the same work because:

      1)The quality of work will be better, so less rewrite/bug costs.
      2)It's a lot cheaper to have 4 guys rather than 12 guys, just in terms of office costs.
      3)Senior guys aren't as mobile, so you're not going to have to be constantly filling holes and training new people.

      It's a "perfect world" situation, because it depends on your experts really being experts, and we all know how often a loser with experience is hired into a position they aren't qualified to fill.

      --
      ad logicam Claiming a proposition is false because it was presented as the conclusion of a fallacious argument.
    2. Re:"good enough" at less expense by Qzukk · · Score: 2, Insightful

      It's a "perfect world" situation, because it depends on your experts really being experts, and we all know how often a loser with experience is hired into a position they aren't qualified to fill.

      Not only that, in the absence of Junior programmers, you have nobody to promote to the Senior position. Which I guess is great if you want to whine to the government about how hard it is to find skilled workers that were magically endowed with their Senior-level prowess.

      --
      If I have been able to see further than others, it is because I bought a pair of binoculars.
  6. My own experience... by Schnoogs · · Score: 0, Insightful

    I'm a senior software developer in my company with roughyl 15 years worth of experience and a CS degree under my belt. The newer developers are either mechnical or electrical engineers who learned to program with a book in one hand and a keyboard in the other OR they're right out of college waiting for their CS diploma to be mailed. I find that although they have a great understanding of the languages we use they have very little grasp of design patterns and architectures. Stuff like that can only come from experience and knowing what works well given the scenerio. I find that when left on their own they simply are incapable of coming up with an effective architecture...or I should say anything beyond the obvious 3-Tiered approach. I'm at a point where I design our software systems and hand them off to the less experienced developers. I would prefer we trade in several of them for one more seasoned veteran since they will be in a better position to come up with simpler and more powerful designs that require less coding. My two cents

    1. Re:My own experience... by Anonymous Coward · · Score: 4, Interesting

      Instead of only hiring cs people with degrees in engineering and cs, broaden your horizons. You may be pleasantly surprised at what someone who has learned programming from a different background can bring to the table.

    2. Re:My own experience... by Schnoogs · · Score: 1, Interesting

      The thing is, is that 99% of the people who put in their resumes are CS graduates. I guess we're only as good as the pool of talent that expresses interest in our openings. I understand what you're saying though and you might be 100% correct.

    3. Re:My own experience... by Anonymous Coward · · Score: 0

      I'm a senior software developer in my company with roughyl 15 years worth of experience and a CS degree under my belt. The newer developers are either mechnical or electrical engineers who learned to program with a book in one hand and a keyboard in the other OR they're right out of college waiting for their CS diploma to be mailed. I find that although they have a great understanding of the languages we use they have very little grasp of design patterns and architectures. Stuff like that can only come from experience and knowing what works well given the scenerio. I find that when left on their own they simply are incapable of coming up with an effective architecture...or I should say anything beyond the obvious 3-Tiered approach. I'm at a point where I design our software systems and hand them off to the less experienced developers. I would prefer we trade in several of them for one more seasoned veteran since they will be in a better position to come up with simpler and more powerful designs that require less coding. My two cents Isn't it rather nave to expect that you can leave people alone and they will magically design things exactly they way you want? Typically a manager will lay the general lines to his team leaders, veterans who are in charge of the greenhorns to keep a closer eye on them and ensure they don't do anything stupid and that they learn the ropes? The military has known this for years. If you don't put an experienced sergeant in charge of a bunch of greenhorns they'll end up marching into a minefield in no time flat. The most painful lesson of being a leader has to be that you can't sit back, rest your legs on your desk and expect your employees to make you look good without putting in any effort yourself other than smoking a cigar. You have to supervise them and delegate leadership tasks that you don't have time for to competent veterans. A team is only as good as it's leader and being a leader is hard work.
    4. Re:My own experience... by RetroGeek · · Score: 1

      find that although they have a great understanding of the languages we use they have very little grasp of design patterns and architectures.
      We had a summer student in his third year. I handed him a task to parse through a text file to:
      - locate a date and time string (always in the same place)
      - calculate the difference between two adjecent date/times
      - store the highest difference, the lowest difference, and the average difference

      His choice of language.

      Four weeks later he was still floundering. His basic problem (which he FINALLY admitted to)?

      He did not know what high/low/average meant.
      --

      - - - - - - - - - - -
      I am a programmer. I am paid to produce syntax not grammar. Deal with it.
  7. Internal Inconsistency in his Argument by mosel-saar-ruwer · · Score: 1, Interesting


    Anyone who has been a developer or managed developers can tell you that an expert can accomplish as much as 10 average developers. However, companies typically pay only a 10-20% premium for an expert over the average programmer. Whether or not their title is Lead, Architect, Development Manager, Guru or whatever nomenclature the company uses. I am not saying that if your average developer is paid $50k/year that you should pony up $500k/year for an expert. The employer/employee relationship never works like that, but what employers don't seem to realize is that in the end paying more saves them more.

    This guy should be ready to put his money where his mouth is: If there really is such a thing as the über-programmer, who is literally 10 times more efficient than his average [median] colleague, THEN BY ALL MEANS he ought to be paid 10 times as much in salary - maybe even more.

    The very fact that such disparities in salary don't exist means that either the über-programmer does not exist, or else there is something so screwy about the internal politics of corporations that the suits in management won't stand for some dweeb hax0r making ten times their salaries.

    But I think that if the über-programmer really does exist, then eventually the free market will figure that out, and compensate him accordingly.

    1. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      The comments under the article suggest that the uber-programmer has to become a consultant, join a startup, or do something else to reach their 10x earnings potential. That's where some of these people go to make the big bucks.

    2. Re:Internal Inconsistency in his Argument by COMON$ · · Score: 2, Informative
      Sorry that is not the way the world works, at least not the commerce society. You get paid a general permium about what they mentioned, the real premium is beign so good at your job that you have no fear anymore. Getting fired is a perk meaning you get signing bonuses for your next job. Choosing your office to working is a perk as well, while at the lower end you spend your time just trying to be employed.

      Uber programers do exist, and yes they are paid very well, but it would be an HR nightmare to prove that Johnny X does the work of 10 people so he should be paid what 10 people are, thus the reason it is not done.

      --
      CS: It is all sink or swim...oh and did I mention there are sharks in that water?
    3. Re:Internal Inconsistency in his Argument by Joaz+Banbeck · · Score: 2, Insightful

      The problem is recognizing who the great programmers are. Sure, he may be worth an extra 100K a year, but it requires a tremendous expenditure of managerial time ( which, contrary to prevailing opinion on /., is worth something ) to monitor the situation closely enough to figure out that he is worth it.

      And this presumes that you indeed have an uber-programmer. It is quite possible for management to spend a lot of time ( ie:money ) and still not find that their programmer is any better. The net result of trying is a loss of money.

      This probably applies to a lot of other 'guru' type professions like lawyers and doctors. You can't understand it yourself, so you pay the going rate.

    4. Re:Internal Inconsistency in his Argument by AlexBirch · · Score: 1

      I'm not sure if there's a direct correlation between being an uber programmer and wealth. Unless you consider Bill Gates one of the best programmers of all times. Frequently Uber-programmers are at start ups that are purchased for $$$. Unfortunately I'm not an uber programmer, however, I have known uber-programmers and I would gladly pay them 100 or more dollars an hour for their work.

    5. Re:Internal Inconsistency in his Argument by networkBoy · · Score: 5, Interesting

      I worked for a company that got bought by a bigger company.
      We had an über programmer. He left because rather than exceptional pay, he wanted good enough pay and a small company style work life.

      We then got in a pickle where some kernel mode drivers for NT4 needed to be revised and SoftICD'd in. Even though he doc'd everything and gave training to our programming staff about gotchas and pitfalls as well as maintenance, it was something that only about 100 people in the world could really do. All we could get done is a widely variating series of BSODs. We hired him back at $12K/day + travel for 5 days of work. He did work his ass off, further document everything, and provide additional spot training to our two brightest. The job was done and he had a check for $60K. I suspect that the training and docs took the vast majority of his time. I asked him why so much (and why MegaCorp would pay that) and he said it was simple. They were a big company not interested in paying him either in lifestyle changes or money so he didn't stay, but for a short job he charged what it was worth.

      The free market did work. (considering his solution was cheaper than a contract with MS for the same work by $40K).
      -nB

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    6. Re:Internal Inconsistency in his Argument by Odin_Tiger · · Score: 4, Insightful

      But I think that if the über-programmer really does exist, then eventually the free market will figure that out, and compensate him accordingly.

      It has, and then some. These "über-programmers" are what you and I know as "wildly successful startup founders." Part of the reason it's so hard to hire them is because they are mostly already independently wealthy and / or personally invested in a project of love that no offer of cash and benefits will draw them away from. Most likely, if the former is not true, the latter will eventually cause it to be true. The best and most common way of hiring an über-programmer is to buy the company they currently work for.

      --
      Unpleasantries.
    7. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      Actually I think this has multiple causes:
        - Companies usually have limits as to what they will pay for any given position - reguardless of how good the person is
        - Managers measure their status by the number of people working for them, managing 10 people is 'better' than managing 1.
        - People rarely demand the actual amount they are worth. They know that most businesses would sooner go bankrupt than pay it.
        - No one really knows how to measure performance - so they can't actually prove someone is 10 times better than someone else.

    8. Re:Internal Inconsistency in his Argument by DavidHumus · · Score: 3, Interesting

      He's absolutely correct.

      There are numerous studies to support this. Taking about 20 seconds to look for one: http://www.joelonsoftware.com/articles/HighNotes.h tml.

      Also take a look at "Code Complete" by Steve McConnell and "Peopleware" by DeMarco and Lister. Actually, I've seen credible estimates of a factor of 25 times productivity between best and worst programmers. Given the negative productivity I've witnessed, even this may be an under-estimate.

      This should be a well-known fact but it isn't. A major part of the problem is cluelessness by the people doing the hiring. You probably can't scale salary by productivity but how about something like the square root of productivity? Of course, the hiring of Bob Nardelli, the mediocre CEO who did nothing at Home Depot, by Chrysler shows how unrelated salary and effectiveness can be.

    9. Re:Internal Inconsistency in his Argument by thePsychologist · · Score: 1

      The very fact that such disparities in salary don't exist means that either the über-programmer does not exist, or else there is something so screwy about the internal politics of corporations that the suits in management won't stand for some dweeb hax0r making ten times their salaries.


      Hah! Something so screwy? People rarely get paid proportionally according to their technical abilities. People get paid according to their management abilities and the ability to out-compete everyone else for the next position up. Some people spend their lives concentrating on how to get the next promotion without doing any actual work on their current job.

      --
      "What lies behind us, and what lies before us are tiny matters compared to what lies within us." Ralph Waldo Emerson
    10. Re:Internal Inconsistency in his Argument by dnoyeb · · Score: 1

      I think you are correct. If you hire fewer more valuable people, then what do you need management for in the first place?

      You only need management when there is non-technical work to be done which comes from having too many people working on the same project so they cant or don't have time to solve those problems themselves.

      You want 3 pawns or 1 knight?

    11. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      Err, I get paid 3 times the amount of the next programmer where I work and he makes nice bank. At the same time, I do all the architecture and spend more time teaching other programmers and stopping their architectural mistakes from entering our code base than I do actual programming. It frightens me that they are relatively decent programmers and yet can't see immediately what their problems are. They can't see the forest for the trees as it were. So I get my bucks so that in 5 years, my company will still be competitive and can build upon our code base rather than trying to re implement it every few years (as I've seen at some other software houses).

    12. Re:Internal Inconsistency in his Argument by pakar · · Score: 1

      The über-programmers do exist, but they prefer to do their own projects instead of working for some big company =)

      But i think he missed one thing in his article... The productivity is also affected by the co-workers.. If had a scale from 1 to 10 and you mix programmers (or any other type of work) from the lowest level to the highest level the fast ones will slow down and the slow ones will speed up (to a degree).. Why you ask? Well, the 'fast' ones will always have to wait for 'slow', and if you have a very minimal diff is salary the fast ones will feel under-compensated and don't have the same urge to perform to their maximum.. So there are allot of things to think about... Another thing is if you have a group of very good programmers that work together they can inspire each other with new ideas, while if you have a mix the ones on the lower end of the scale might have a problem to understand everything so you have a 'one way information-flow'...
      Some mix is always good, but try not to have to much skill-difference within one group of people...

      Another few things to keep über-technofreaks from running away are:
      - To much administrative tasks?.. (time-reporting in bad tools...)
      - Documentation... Always a tedious task.. Get one of the 'not so skilled' developers to do it. And it's also a good way to train him...
      - Strange statistics without a very clear connection to what they are doing.. Less statistics, that they will see, is ALWAYS good!
      - If you have 2 people that do the same work then they should have about the same salary, even if one has 10 more years in the field...
      - Aim for good hardware... A system that's just a bit slow can cause a lot more than just 5 minutes or worktime a day.. If something starts to cause problems during the wrong time the 'red thread' can be lost and cause lots of more lost time than the actual system 'lost' for the user.
      - If possible, don't lock people into a specific OS.. Lots of times it can be better to have the developers on whatever OS they prefer... And a bonus if doing os-independent development is that you get testing on multiple platforms.
      - Make sure that they always learn new stuff... If they start to think of them selves as 'code-slaves' they will switch away.. But make it their choice to switch!
      - Any type of frustration.... Fruit-basket empty all the time? Just get a bigger one! :D

      And the most important thing ever!!
      NEVER EVER have the manager decide what to do for fun on a team-building getaway.. Most programmers, at my age at least, don't like golf! :D

    13. Re:Internal Inconsistency in his Argument by ClosedSource · · Score: 1

      Once again the alleged evidence is not particularly convincing.

      To scientifically establish these claims of productivity we need a comprehensive definition of what productivity is, a way to measure it in the real world, and studies that follow standard scientific practices.

      Of course, if you're in the homework business, perhaps Joel's analysis has some value.

    14. Re:Internal Inconsistency in his Argument by tdelaney · · Score: 1

      The 25 times productivity difference is actually not at all credible - because it assumes that the worst programmer still has a net benefit. You yourself point out negative productivity.

      Instead, I think you should be looking at a -25 times productivity difference - a top programmer can boost productivity by 25 times as much as the worst programmer can drop it.

      Of course, this isn't credible either, as "the worst" programmer would get in and destroy your version control system, all backups, and remove the hard drives from your best programmers' machines and toss them into a blast furnace ...

    15. Re:Internal Inconsistency in his Argument by AuMatar · · Score: 5, Interesting

      Not really. The uber programmers rarely have the skill set needed to found a buisness. Those tend to require high people skills and financial skills, which are almost completely disjoint from the programming ones. Plus it would mean spending time doing all that bullshit, instead of programming.

      The real answer is that most uber programmers work for that small premium. They get to do what they want, get a few other perks like their choice of assignments, and are generally happy as is. Money isn't really the key motivator for them- if it was, they'd be in another field that pays more.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    16. Re:Internal Inconsistency in his Argument by iabervon · · Score: 5, Insightful

      There's no one programmer who does the work of ten other programmers. One uber-programmer does just as much work as one ordinary programmer. It's just that the results solve ten times as many problems. Programming is fundamentally a design problem. A great bridge designer doesn't do the work of ten lousy bridge designers; the great one designs one great bridge in the time it takes the ten lousy ones to design ten lousy bridges.

      The best approximation is that each problem has a certain complexity and a certain size. The size determines how long it will take, and it doesn't matter how good the developers are. The complexity determines how good a developer is needed to make progress at all. If you've got only easy problems, an uber-programmer doesn't help you much (unless the programmer can find a smaller, harder problem that replaces the big easy one). If you've got a hard problem, ten average programmers will work on it forever without getting any results.

      And there's one last thing specific to computers: the computer can solve easy problems for you, but making it do so is a hard problem. But solving that one hard problem (plus some processor time) resolves a lot of easy problems. Another type of hard problem is writing a magic library function that makes a range of moderately hard problems easy enough for average programmers to solve.

      If you've got ten people essentially doing data entry, an uber-programmer may be able to eliminate the need for them to do that at all. If you've got ten developers working on some problem, an uber-programmer may be able to double their productivity. In either of these cases, the uber-programmer directly produces something that isn't part of the actual project, but the benefit to the project is on the order of ten average programmers' work. And, if the uber-programmer reduces the complexity of the problem to put it in reach of the rest of the team, no amount of ordinary programmers' work would benefit the project as much as the uber-programmer's contribution. Of course, if you require an uber-programmer to literally do the work of average programmers, there's no benefit at all.

    17. Re:Internal Inconsistency in his Argument by rollingcalf · · Score: 1

      Superprogrammers might have the skills to start and run a business, but they can and often do partner with somebody who has the business skills.

      --
      ---------
      There is inferior bacteria on the interior of your posterior.
    18. Re:Internal Inconsistency in his Argument by rollingcalf · · Score: 1

      OOPS, I meant "Superprogrammers might NOT have the skills..."

      --
      ---------
      There is inferior bacteria on the interior of your posterior.
    19. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      The free market will drag down the exceptional. It is about averages. The 10x programmer will not get hired at a 10x rate because it is often better to hire 10 normals 1x porgrammers. With 10 programmers I can farm them out to 10 different jobs which may be in different locations. My individual 10x programmer will lose efficiency travelling between sites. Furthermore, if my contracts get a little thin I can cut 10% of my staff and lose only 10% of my productivity (morale issues not withstanding). It is very difficult to convince an employee to take a 10% pay cut. Even if successful, that employee would probably leave shortly. Turn-over becomes another issue. It is far easier to deal with a 10% loss in work force for a few weeks while seeking a new developer than to take a 100% loss in work for a few weeks (even if the 10x developer is 10x less likely to leave). Similar issues exist with vacation and sick time.

      All of this assumes that there is an objective metric to prove that the 10x programmer is actually 10x.

      It is more likely that the 10x programmer will be forced to accept a 3x salary because of the salary pressure of the 1x programmers. If the 10x programmer is put into a mentor-mentee relationship, then additionaly benefits may be gained. For example, the 0.5x mentee may perform at a 2x level under the instruction from the 10x programmer. Meanwhile the mentee most likely will be paid at the 0.5x level.

      Sometimes youjust need an expert. There will always be niche markets. There will always be people who get paid vast amounts for specialized expertise. But that does not mean that the pay is commensurate with their skill. That is why there are salary negotiations and interviews.

    20. Re:Internal Inconsistency in his Argument by elronxenu · · Score: 1
      My favourite über-programmer works for IBM, dammit!

      I already tried to buy him away but it can't be done.

    21. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      Or more likely he was actually a mediocre programmer who knew a couple of tricks and was selling himself as an "über programmer". He if code were really well done and well written, if would have been easy to maintain as well.

    22. Re:Internal Inconsistency in his Argument by ILongForDarkness · · Score: 1

      But I think that if the über-programmer really does exist, then eventually the free market will figure that out, and compensate him accordingly. There in lies the problem. It isn't a free economy. People with feelings make the pay scale in the company. Someone can have a lot of great references and such but you don't know he is a real winner until he's working on your projects and able to deliver. When the project manager gets asked for a raise, do you think he'll give him a large enough raise to make him make more than a project manager? No of course not, he is in the senior position. But say he realizes the guys worth and goes to HR with it, the HR guy isn't going to buck the system, his little book says an average developer in the area is making 60k, and there is no way in hell the guy will get bumped to 600k.

      Now the company might promote him to a position that can get significantly more money, but then they might shoot the cash cow, because is this star going to be a great project lead as well? Can they risk the code throughput and quality, on a chance this guy can deliver in a higher position? Some will try him out, but others will never promote him, and end up forcing him out into a better paying job elsewhere.

      P.S. There does seem to be some correlation between rarity of skills an salary. I'm right out of college with a physics degree. Working at a cancer center, which needed somebody that understanded radiation + computers (both sysadmin and development). Voila, I make 100k at my first job. Now there is no where to go within the center (except if I can convince someone to give me the CIO position in 10 years or so). Still a respectable salary. However, I had a hard time getting a development job elsewhere, so I guess the only guys willing to pay the premium are those needing the odd combination of skills (which makes sense economically, expected utility and all that jazz). Also, it is worth noting that my co-workers are all PhD's in medical physics making 90-150k a year, so I'm just making a normal starting salary, thus not the institutional issues I mention.

    23. Re:Internal Inconsistency in his Argument by networkBoy · · Score: 2, Informative

      If you consider his knowledge of the NT4 kernel that no one on our team had as mediocre then sure.
      If you consider that his documentation was approaching 4:1 against lines of code then sure.
      If you consider that even with the 1:1 coaching that he gave our resident programmers they could barely keep up then sure.
      And finally...
      If you consider that we bid this to MS and they conceded that it was a touchy application that required a team of at least three programmers, then sure he was a mediocre programmer.

      More likely he was light years ahead of anyone else we employed. I read his code and I fully understood the principle of the operation (with the help of the comments), but my capability of the execution would have been grossly lacking.

      Seeing as you're an AC I likely wasted my time on a troll, but whatever.
      -nB

      --
      whois gawk date unzip strip find touch finger mount join nice man top fsck grep eject more yes exit umount sleep dump
    24. Re:Internal Inconsistency in his Argument by AuMatar · · Score: 1

      In some cases. I didn't say no super programmers started businesses. But its the minority, just like in other groups.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    25. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      Unless you consider Bill Gates one of the best programmers of all times

      Well, if writing a basic interpreter with lots of help and pilfered source code counts. Gates is a lot of things but a stellar coder is likely not of them. Most likely all of us have worked on projects that would dwarf what he (personally) managed in both scope and complexity.

      Gates was a lucky guy working in a young industry a the right moment in time, who was a ruthless business man.

      So, if you feel the need to worship a guy that is even now trying to convince Congress to toss-away more American tech jobs, go ahead.

    26. Re:Internal Inconsistency in his Argument by SageMusings · · Score: 1

      Don't get upset with me but I seriously doubt the authenticity of this anecdote. If it is true, you have some serious deficiencies in management and development staff.

      Again, sorry.

      --
      -- Posted from my parent's basement
    27. Re:Internal Inconsistency in his Argument by Kjella · · Score: 1

      Programming is fundamentally a design problem. A great bridge designer doesn't do the work of ten lousy bridge designers; the great one designs one great bridge in the time it takes the ten lousy ones to design ten lousy bridges.

      I think you hit the nail on the head there. Or maybe even more accurately, a great bridge designer designs a great bridge, they build it, done. A poor bridge designer designs a poor bridge, they start building it, turns out the design isn't working, redesign. Some changes to the bridge specifications screw the whole design because it's so inflexible, redesign. The performance of the design is too poor, redesign. Between the extra design time, wasted implementation time, wasted management time, status meetings, plan revisions and generally inefficient panic actions, I could easily see that being 10x the great designer's time.

      --
      Live today, because you never know what tomorrow brings
    28. Re:Internal Inconsistency in his Argument by Jorgandar · · Score: 1

      I agree. I think the best way to think about is with a term called Value Added. 1 lousy programmer produces a produced of low Value Added. 1 uber programmer produces a high Value Added product, where:

      Value Added = price buyers are willing to pay for your product less cost to produce it. (It's not the same as margin)

      Anywho, 10 lousy programmers will still produce the same product, or one 10x as large, or perhaps the same product in half the time (no, not 1/10 the time as we all know), and the cost to produce of course it goes up.

      The value added actually _decreases_, however, because the price customers are willing to pay for it remains the same.

      Now fire a lousy programmer and add an uber programmer to the mix, and that person can solve the hard problems the lousy one's cant, and even make the lousy one's more productive as you mentioned. Therefore the price premium of the product increases, and the value added increases. This will lead to higher profits, assuming the rest of the organization is positioned well.

      Therefore it makes very good business sense to find the uber programmers and pay them more than enough to stay. (yes i'm an MBA, with computer science undergrad).

    29. Re:Internal Inconsistency in his Argument by Chase+Husky · · Score: 1
      To contribute two things to your comment, back when I was applying for work, I had a rather generous offer to work in designing and implementing both hardware and software solutions for short/medium range telemetry systems, along with some related pattern recognition work for UAVs. The the primary individual I interviewed with was impressed at my knowledge and work in the respective fields, and also graduated from my alma mater, and wanted to bring me in at a rather high starting salary. Of course, I was delighted about the prospects, and he jokingly chimed in how I'd be compensated better than most of the suits in middle to upper management. Fast forward a few days, when we were finalizing the deal, and some upper management guy comes down pitching a fit and throwing chairs, a la Steve Ballmer. Apparently, he was upset that the guy had decided to use the entire budget for my offer, as opposed to dividing it between an Electrical Engineer and a Computer Scientist position, despite my having a fair amount of experience and research in both fields. Granted, I don't fancy myself as an über-programmer, nor even an expert, but it was nice to know that all of those hours in graduate school, and slaving over research, paid off, even if all it did was give me that one chance to see a true Ballmer-esque performance.

      The second item I wanted to contribute was another story, though this is a recount of a true über-programmer. A few years back, I knew this one engineer who worked for a sizable company. This guy excelled at what he did, and would come in around 0900 hours each morning and leave at around 1500 hours in the afternoon, along with taking a lunch break. Although this guy worked, on average, 5 hours per day, he was paid as if he had worked 8 or 10 hours, depending on the project he was put on.

      One day, his immediate boss retired and the company filled the position with a new individual, who came in from outside of the company. After a few days of watching the über-programmer, the manager brought the guy into the office and chewed him out for all sorts of things, ranging from cheating the company out of money to ignoring the dress code (since this guy would come in with shorts/jeans and a t-shirt every day). Of course, the über-programmer sat there and smiled while the guy continued to chew him out, with the manager apparently making threats of terminating his contract for poor work, despite not seeing what the programmer did.

      The next day, the über-programmer left the company, and one of the bigwigs, who had worked with the programmer before, came down a few days after that to ask the manager why he had left suddenly after all of the years he'd been working for the company. Of course, the manager recounted what he had seen and told this individual, and the bigwig left nearly immediately to call up the über-programmer, offering him $20k/year more on top of his salary as a compensation for what had occurred, and to try and recruit him back. Come to find, after the über-programmer left, the company had to hire 5 engineers and 10 programmers to fill the void from the work and research this guy had been doing over a number of years. Soon after, the manager's position was terminated, though I'm sure it wasn't a coincidence. ;)

    30. Re:Internal Inconsistency in his Argument by Fulcrum+of+Evil · · Score: 1

      You want 3 pawns or 1 knight?

      Bad example. I'll take 1 pawn and a king vs your 1 knight and a king and I'll win.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    31. Re:Internal Inconsistency in his Argument by PinkyDead · · Score: 1

      I disagree(-ish), the UberProgrammer should be able to write the code and walk away. The bad programmer will do the same, however, the bad programmer will come back again again and again to fix the problems. So on paper, it appears that the two are much the same. Thereby justifying the poor hiring choice.

      However, if the accounting was done correctly, the truth would out.

      A pure example of this is that the Uber programmer will produce unit-tests. The bad programmer will not. The outcome is the same - apparently.

      --
      Genesis 1:32 And God typed :wq!
    32. Re:Internal Inconsistency in his Argument by mcvos · · Score: 1

      This guy should be ready to put his money where his mouth is: If there really is such a thing as the über-programmer, who is literally 10 times more efficient than his average [median] colleague, THEN BY ALL MEANS he ought to be paid 10 times as much in salary - maybe even more.

      What's inconsistent about his argument? He says that's not how it works, and he's right. Programmers don't decide their own salary, managers do. And managers are generally incapable of distinguishing between average and excellent programmers.

      The very fact that such disparities in salary don't exist means that either the über-programmer does not exist, or else there is something so screwy about the internal politics of corporations that the suits in management won't stand for some dweeb hax0r making ten times their salaries.

      And that's exactly it. Suits in management make more. Kings rule over peasants, the rich get richer while the poor get poorer, etc. That's simply how the world works.

      My dad started working in IT in the '70s, was great at his job, got a holiday to the US disguised as business trip because they couldn't raise his salary as fast as they wanted, but his boss (who recognised his talent) managed to price my dad out of the market, until my dad made more money than his boss. Then the old boss left, a new boss appeared, realised that one of his employees earned more than he did, and raised his own salary until everything was right in the world again. A couple of other managemennt changes, and my dad's salary stagnated.

    33. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      There's no one programmer who does the work of ten other programmers. One uber-programmer does just as much work as one ordinary programmer. It's just that the results solve ten times as many problems.

      I think "solving ten times as many problems" qualifies as doing ten times the work.

      Was anybody suggesting that über-programmers put in ten times the hours that other programmers do??

    34. Re:Internal Inconsistency in his Argument by coop247 · · Score: 1

      It's more than just identifying the uber programmer. You can't find one on paper or in an interview, the person has to work for you for a year to find them.

      At that point, what is the companies incentive to just walk up and give him a 25K raise. If you work for a company that just hands out 33% increases for working hard, let me send you my resume. The only way to get a nice raise is to force their hand.

      I've done it twice now and it sounds easier than it really is and you have to have the stones to go through with it. Interview quietly for a few jobs. DONT DONT DONT tell anyone. Made that mistake and it nearly burned me. Take your time and only go after jobs that you would actually take. Get someone to offer a good premium to what you make now. Go back and tell your current company the offer and make them pony up.

      Now there is an obvious risk here, if your current job tells you to shove off, well your stuck with a tough choice to stay and have management pissed at you or take the new job. It can be very hard emotionally, high level bosses having meetings titled "Your Name". It can be scary to leave the comfort of your current job. However, it usually pays off, if your group is too stupid/cheap to keep its best people then leaving is ultimately in your best interest.

      --
      //TODO: Insert catchy phrase
    35. Re:Internal Inconsistency in his Argument by boa13 · · Score: 1

      Your comment has been submitted to Reddit, and is currently at the top of its home page :

      http://programming.reddit.com/info/2d2e0/comments

    36. Re:Internal Inconsistency in his Argument by doublem · · Score: 1

      You argue that an uber programmer can increase the productivity of average programmers. A real world example of this would be high level programming languages. Groups of Uber programmers wrote C++, Perl, Visual Basic and the like, and because of it, the average programmers don't have to write everything in Assembly.

      Can you imagine the state of IT if everything was written in Assembly???

      --
      "Live Free or Die." Don't like it? Then keep out of the USA
    37. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      Paul Graham did it, and says the business part isn't all that hard. Check the essays at paulgraham.com. Another good source is Founders At Work, which has interviews with a bunch of different programmers/startup founders. I don't think any of them had especially "high people skills and financial skills." They weren't salespeople, or accountants. They just made stuff people wanted.

    38. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      I strongly disagree. My company (and I'm posting AC to make it harder for anyone to figure out which one it is) has developers in the US
      and developers in Malaysia. My boss asked for a developer here and was told that Malaysian developers cost 20% of US developers -- he could
      have four in Malaysia or nothing.

      The Malaysian team has been working on a simple Struts web-app rewrite. The estimate for doing the work in the US was one person, one month. Those 4
      Malaysians have been working on it for 3 months (and they're still not done). 4 X 3 X .2 = 2.4 compared to 1 X 1 X 1 = 1. But at least
      we're saving money...

      Had the work stayed here, it would have been done and we could have moved on to the next problem. Or, truth be told, onto the next two problems.
      I'm not paid to process oxygen into carbon dioxide and keep my chair warm, I'm paid to solve problems. Solving three problems in three months when
      a bunch of junior devs are struggling to solve one problem in three months means 3X the productivity.

      Please note that this is not a nationalistic dig at non-American programmers. Part of the reason Malaysian developers are so cheap is that
      longevity at a particular company is about 18 months and there are lots of junior developers. I've worked with some very capable people in Malaysia.
      I strongly suspect that those individuals come in higher than the 20% ratio.

    39. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      I disagree completely. Having been a programmer and worked with many, having one uber programmer can replace a team. Not only the amount of time taken to debug problems and time to come back and fix glitches with code that gone out but also the development time. A good programmer see everything as small problems instead the large one. The create code so that each little problem can be solved easier and the solution can be reused. So they never re-invent the wheel the reuse code to cut down dev time and debug time.

      I don't see codeing as designing bridges otherwise every time windows locked up people would die. Unlike a bridge it does not work or not there is alot of gray area in the middle. And that is what a uber programmer can do for you.

      Also having a glitch program out there can destroy a company when there is so much competition out there. A bad name can kill a development firm.

    40. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      Ive seen this sort of uber wana-be at work before. Yes they can write *VERY* good code. Code that *WORKS*. However, it is a nightmare to change. They built a fragle system.

      Device drivers are not *THAT* complex of a thing. Even in NT4 land. Is it easy to BSOD a box using one? Sure is. That is where the men from the boys comes into play.

      I dealt with one dude whos code was 'awsome'. And it does work (even to this day). However it is *NIGHTMARE* to change anything. I can debug it and change it. But to an 'average' programmer would be in over his head. You need a decent programmer to change it. He was good. I will give him that. But he was also dead lazy. Lots of sloppy coding. He could have done much better. In fact I expected it of him. And trust me the thing has stacks of documentation and only 4 people on the planet who know what it does. It was a giant toy for him. Not the wrench that was needed.

      I would be willing to bet cold hard cash that this driver had tons of 'side' effects. Change one thing and some other line in another module would start acting wonky. As it takes a good programmer to write a driver. It takes a awsome one to write one someone else can change. I deal with about 3 modules like this. 'Heroic efforts' as I like to call them. Where the badge of honor was not how well written it was, but how many weeks did they sleep in the office to make it work correctly.

      I for one like to write code that is easy to read. As the next time I come thru I may not exactly be as 'into the zone'. It may not even be me. The highest complement someone can give me about my code is 'damn thats easy to read and to change and it works perfectly' not 'we need to hire him back at 60k to fix something because the rest of the team cant figure it out'.

    41. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      (posting as Anon. Coward rather than spend more time fruitlessly attempting login creation)

      I love this line of thinking! It fits in with my own belief that lazy people are good programmers. They (I) will work very hard to not do (boring) work... will work through the night to imagine, capture and develop a way to solve the problem(s) with just the right amount of simplicity, elegance, occasional cleverness and so on.

      Keith C
      kcrossle@excellus.com

    42. Re:Internal Inconsistency in his Argument by englishpaulm · · Score: 1

      Yawn. Only an idiot would think that the value of a super programmer is their ability to do ten times as much code as a regular programmer. It is obvious that the role of a super programmer is to write ten times less code than a regular programmer. (Or at least write the same crappy code ten times faster.)

    43. Re:Internal Inconsistency in his Argument by Anonymous Coward · · Score: 0

      As a QA professional I can tell you, this is about planning.
      the uber-programmer is a myth. "Uber-programmer" is essentially good planning. Whether it be a single person or a team.

    44. Re:Internal Inconsistency in his Argument by willCode4Beer.com · · Score: 1

      Have you ever noticed that bridges are almost always over-budget and over-schedule? Usually by a factor of 2x or 3x

      --
      ----- If communism is a system where the government owns business, what do you call a system where business owns govern
    45. Re:Internal Inconsistency in his Argument by willCode4Beer.com · · Score: 1

      "One uber-programmer does just as much work as one ordinary programmer. It's just that the results solve ten times as many problems."

      This statement appears to contain an internal inconsistency.

      Isn't the job of a programmer to solve problems? The code is just an expression of the solution. If he/she solves 10x problems in the same amount of time as an average programmer, that programmer has 10x the productivity.

      Maybe the key word is "work". The expert does not have to "work" as hard to solve the same problem. With code, the expert will sove a problem with less code. Then again, anybody with experience knows, it is much more difficult to create a small simple solution for a problem.

      --
      ----- If communism is a system where the government owns business, what do you call a system where business owns govern
    46. Re:Internal Inconsistency in his Argument by Nomen.Scio · · Score: 1

      I might agree, but it all depends on your definition of ueber(*)-programmer

      I've met some great programmers over the past 20 years, but only two ueber (über) programmers... who both shared these traits:

      - They knew how to design, create, *share*, *teach* & *communicate* (without the latter, you're a liability to any company, not an asset).

      - They never wrote a single line of code before thinking through the entire 'problem' at hand (30% analysis, 40% coding, 30% testing)

      - They never decided on a single tool/language, but picked the best one for the job (languages were 'instruments', and like great musicians, they could 'play' many)

      - They were flexible, efficient, concise, complete, and *never* 'hacked a quick fix' for a problem they did not understand

      - They were *never* afraid to ask for help or elicit opinions of others, always considered and weighed external input, eager to learn & try new things, never afraid to admit their mistakes

      - They *documented* everything, including thought processes, reasons for their design choices, mistakes made, and *commented* all their code extensively (if only to avoid getting stuck in a single project)

      If that's your definition of an ueber programmers too, then YES, I wholeheartedly agree they can replace 10 others, or lift a merely mediocre bunch to great heights.
      I even believe that the value-add (very good point by a previous poster) can exceed that of a 'basic' programmers hundredfold, because the product is reusable and can be maintained by others.

      Ueber programmers create assets, not mere solutions.

      NS (my first slashdot post, the aforementioned was written in praise of Eric G. & Jos V.)

      (*) no mistake, the u needs an umlaut or needs to be followed by the letter e, pet peeve #2, it's *not* pronounced 'oober' as in goober...

  8. Best damn article in a while by COMON$ · · Score: 3, Informative
    While I am not a dev, Sysadmin here, this is probably the best article I have read on the subject in a long time. This idea of lets get someone in and train them up is assinine. Of course not every company can afford 120K a year but what about the lower end, midwest people get hit up with 45K a year jobs all the time, if the company would jump to 60-70K they would get 2X the dev and also get a much better product. I am currently with a company that made the mistake of hiring a below par employee to dev a site. Now they lucked out and got someone for the same price who doesnt care about salary but it a hell of a PHP developer, probably the best I have ever worked with. He spends 90% of his time fixing mistakes of the last dev and does things in minutes that took his predecessor days.

    Same concept goes with my job field, I spend a considerable amount of time consulting, fixing poorly configured networks and servers. You cant just grab a joe off the street and expect him to be a professional or put out professional work without having learned his/her lessons, they will make mistakes learning, do you want it to be on your buck and your network?

    --
    CS: It is all sink or swim...oh and did I mention there are sharks in that water?
    1. Re:Best damn article in a while by tehdaemon · · Score: 4, Insightful

      This idea of lets get someone in and train them up is assinine.

      Dumb question, but if nobody trains new developers, then where the heck are those more experienced developers supposed to come from? And of course the related question, where did the few that we now have come from?

      T

      --
      Laws are horrible moral guides, moral guides make even worse laws.
    2. Re:Best damn article in a while by lawpoop · · Score: 3, Insightful

      Some people are self-taught or learn on the job. Not everybody needs to learn from another person.

      --
      Computers are useless. They can only give you answers.
      -- Pablo Picasso
    3. Re:Best damn article in a while by Anonymous Coward · · Score: 0

      This idea of lets get someone in and train them up is assinine [sic].
      I disagree with this. However it's just important to hire the right person...someone who can solve abstract problems and think the way a programmer needs to think. Honestly, I've had better success with hiring incredibly bright new grads with almost no programming experience than I have hiring people with who've worked elsewhere. Too often the with experience have really bad programming habits, most likely learned because no one would train them properly.

      Meanwhile, if we've hired the right person, I can generally get them up-to-speed in about a month (requiring about half my time). If they're not contributing by that point, we realize that we hired the wrong person and let them go (we've only had to do this once). Meanwhile, for the cost of about 2 weeks of my time, we've gotten a productive developer for ~$50k/year less that if we'd spent a whole lot longer searching for an experienced developer who has learned the right way of doing things. It's also bonus that young 20-somethings can also slog through a hell-week or two with less complaining and less of a drop-off in productivity.

      IMNSHO, the important step is finding the right team lead and another somewhat senior developer for him/her to bounce ideas off of. Once you have those two pieces in place, the rest of the team can be built fairly easily.
    4. Re:Best damn article in a while by tehdaemon · · Score: 1

      If you learn on the job, then you had a job - which means that the employer hired someone who was not an expert already, exactly the opposite thing that the article, or the post I replied to, recommends.

      This is what I meant by 'train', hire someone who does not have lots of experience already and let him learn - either by learning from his mistakes or learning from a more senior programmer that is also on the job.

      Self-taught is somewhat less problematic, but where the heck am I supposed to get experience writing accounting web apps interfacing with old mainframes on my own? I don't have a mainframe, and I have only a vague idea what accounting apps need to do. There are lots of things that businesses need that almost nobody could/would ever learn on their own.

      T

      --
      Laws are horrible moral guides, moral guides make even worse laws.
    5. Re:Best damn article in a while by COMON$ · · Score: 3, Insightful
      welcome to the working world. The specialized knowledge you seek doesnt come from your first job. It comes from taking a thousand crap jobs and compiling information as you go. If you seek to be specialized in mainframe development then you have a long path in front of you, as there are many more experienced mainframe developers with a good 15 years of experience ahead of you.

      However if you are one of the aforementioned mainframe experts then you need to take a crap job or some side jobs as a web developer, starting off working for free for non-profits and the like, then as your skills progress you can start charging then work your way up from there. Then you can start looking for the mainframe web devs that you are aiming for. However if you are like most people you become a specialist because that is where the job field led you. You may see that there is a good paycheck in the area or it may interest you but that is exactly why those jobs pay well, because they are a rare person and unless a trade school offers a program you are SOL.

      The purpose of the article is to explain that a good dev can make up for some serious problems as a beginner programmer, or if your company is big enough you can hire the underlings to do the crap coding while the expert does all the engineering, planning and actual Development. Those entry level people pay their dues coding and recoding the same scripts over and over for the guru and after a while they move up, taking that knowledge with them. However if a company cannot afford a whole host of devs, they had better hire the good ones rather than the entry level employees.

      --
      CS: It is all sink or swim...oh and did I mention there are sharks in that water?
    6. Re:Best damn article in a while by Anonymous Coward · · Score: 0

      This idea of lets get someone in and train them up is assinine.

      My last boss actually told me, "we want a clone of you." He actually expected me to bring someone in and then get them up to my level. Of course he totally neglected the fact that I had been programming computers since I was five and that I had been doing syadmin work on UNIX systems for about fifteen years; that's on top of my formal C.S. training and experience as a software developer.

    7. Re:Best damn article in a while by Javagator · · Score: 1
      where the heck are those more experienced developers supposed to come from?

      The best programmer I ever worked with was right out of college. We had to show him some things, so that doesn't mean experience is worthless. On an ideally staffed project, you would want a mix of young and experienced developers (all of them talented). The young developers could work on the more straight forward parts of the project while the more experience ones would take on the more challenging tasks. That way the young guys could get experience and the older ones would not get bored.

    8. Re:Best damn article in a while by ralphdaugherty · · Score: 1

      Dumb question, but if nobody trains new developers, then where the heck are those more experienced developers supposed to come from? And of course the related question, where did the few that we now have come from?

            Consulting companies hire as many people that have necessary credentials as they can and bill them out same day.

            The comsulting companies make big bucks, rookies get experience, and Fred Brooks gets proven right over and over.

        rd

    9. Re:Best damn article in a while by kaizokuace · · Score: 1

      Nobody training anymore is an issue I deeply believe will be the downfall of industries. More and more companies these days don't want to train. I am an animator and from what I see in the games industry is that artists arent looked at on the same level as programmers when both jobs are equally important, one can't do their job without the other. So these companies dont want to train people, mostly because of the upfront costs. Businesses in the past decade I believe have stopped looking in the long term so much and just the right now bottom line. Its sad because animation and programming are the types of work a young newb could really use a great journeyman to apprentice. My friend who is a games programmer wishes he had someone to follow and learn from, too bad he is one of the best programmers at that small company so he feels he isnt learning much.

      --
      Balderdash!
    10. Re:Best damn article in a while by Brother+Seamus · · Score: 1

      Dumb question, but if nobody trains new developers, then where the heck are those more experienced developers supposed to come from? Isn't that OSS is for?
    11. Re:Best damn article in a while by daem0n1x · · Score: 1

      I don't believe in self-taught that much. Everybody absorbs knowledge from someone else, even unintentionally. Someone that tries to teach himself could spend months following the wrong paths when a more experienced person (or a book, by the way) could teach them how to do it in some days.

      I have come across quite a few people that work their ass off because they refuse to learn new methods or technologies. Without insightful managers it's very hard that things will change because a person like this appears to be a valuable employee, and if you try to go against his methods you're in trouble.

      I'm a strong believer in the free transmission of knowledge. I hate arrogant veterans that hold their knowledge like a treasure, and arrogant newbies that just like to be ignorant.

    12. Re:Best damn article in a while by Anonymous Coward · · Score: 0

      Not everyone needs too, but virtually everyone can.

    13. Re:Best damn article in a while by lawpoop · · Score: 1

      I don't believe in self-taught that much. Everybody absorbs knowledge from someone else, even unintentionally. Someone that tries to teach himself could spend months following the wrong paths when a more experienced person (or a book, by the way) could teach them how to do it in some days. I think we mostly agree. But what I was saying is that there are people who can learn on their own without someone explicitly teaching them and going over everything. It's a different think to interact with a book or a co-worker than with an instructor. Some people need the instructor, some don't.
      --
      Computers are useless. They can only give you answers.
      -- Pablo Picasso
    14. Re:Best damn article in a while by rukidding · · Score: 1

      Good point. If you want to have an advantage over your competitors you need to specialize in "something". If your company specializes in "something", then you need a workforce that also specializes in that same "something". If you don't need to train them to specialize in that "something" and you can just hire people who specialize in that "something" then so can your competitors. ...and there goes your competitive advantage.

      In other words, you need to train your employees or you will loose your competitive advantage.

      --
      ...
    15. Re:Best damn article in a while by Shadowlore · · Score: 1

      Better training programs, better universities. The kind that focus on understanding, not code churn. That's where better programmers come from if not being trained on the job.

      --
      My Suburban burns less gasoline than your Prius.
    16. Re:Best damn article in a while by $1uck · · Score: 1

      That doesn't answer the question. You still need a job to learn "on the job." Its quite difficult to be self taught if you aren't motivated by a project (not impossible just less likely). I know I've learned more in my 4 years of experience than I did in school and more often than not my "superiors" weren't much help in advancing my skills (often I think they were a hindrance). Still with out the jobs I wouldn't have learned much. Hell programming is pretty simple I think the problem is lack of engineering/design. It seems to often people are just given tasks to program and no one has thought of an overall design. Design ends up being and ad-hoc process given to programmers who are either out of their league or ill-prepared.

  9. They exist, but they don't know it. by Anonymous Coward · · Score: 5, Interesting
    Here's what Paul Graham had to say about Great Hackers:

    Because you can't tell a great hacker except by working with him, hackers themselves can't tell how good they are. This is true to a degree in most fields. I've found that people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent. http://www.paulgraham.com/gh.html
    1. Re:They exist, but they don't know it. by nomadic · · Score: 1, Interesting

      Here's what Paul Graham had to say about Great Hackers:

      Because you can't tell a great hacker except by working with him, hackers themselves can't tell how good they are. This is true to a degree in most fields. I've found that people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent.


      I've got to disagree; in my experience hackers tend to be pretty damn egotistical. Average hackers think they're good. Good hackers think they're great. Great hackers think they're on a higher plane of existence.

    2. Re:They exist, but they don't know it. by markk · · Score: 1

      Unfortunately people who are bad at programming, don't have an eye for the big picture, can't factor in that some things will be just barely functional, also think everyone else is incompetent. I think the people who think like that actually aren't the best. It is the ones who understand people are different in ability - even the same person over time, and that things that look like mistakes might have been judgement calls. They understand the tradeoffs. These are the people who actually really get the big projects done. they make mistakes and realize it. They deal with reality and can pick out what is really important. they can take the heat when some manager wants to blow off. When you've got millions on the line you don't want brilliance (not that you won't take it!), just competence.

    3. Re:They exist, but they don't know it. by faragon · · Score: 1

      Great hackers think they're on a higher plane of existence.

      Generalization is usually a quick path to the wrong way. There is many "mediocre pseudohacker" with "dive complex", e.g., John is an expert doing X, Peter it isn't, then John disqualifies Peter, not only as non expert in X, but also as incompetent. In my opinion, these extremes are usually more related to psychic problems rather than to expertise/excellence consequences (yes, I think that there is equilibrate/generous/fine people who reach excellence).

    4. Re:They exist, but they don't know it. by Anonymous Coward · · Score: 0

      Sorry, but no self-respecting expert would ever describe themselves as, or want to be labeled "Hacker"

    5. Re:They exist, but they don't know it. by Anonymous Coward · · Score: 0

      And both you and nomadic entirely missed the point of what he was saying. Graham is using the word "hacker" in a general sense to mean "someone who writes code". If you substitute "worker" you might get a better sense of what he's saying--primarily that highly competent people do things well and often wonder how everyone else around them can be so dysfunctional yet still get by.

    6. Re:They exist, but they don't know it. by Peter+La+Casse · · Score: 1

      Sorry, but no self-respecting expert would ever describe themselves as, or want to be labeled "Hacker"

      Hogwash. Self-respecting experts have the confidence to describe themselves however they'd like, and "hacker" has a specific non-negative meaning in some subcultures, including the one that Paul Graham is talking about.

    7. Re:They exist, but they don't know it. by marcosdumay · · Score: 1

      "Average hackers think they're good. Good hackers think they're great. Great hackers think they're on a higher plane of existence."

      Funny, I've been able to see both those categories of (average, good and great) and (think they are: good, great, gods). The only problem is that I've never saw any correlation within them.

    8. Re:They exist, but they don't know it. by cdf123 · · Score: 1

      I've got to disagree; in my experience hackers tend to be pretty damn egotistical. Average hackers think they're good. Good hackers think they're great. Great hackers think they're on a higher plane of existence.

      That's not true... I don't think I'm on a higher plane of existence.

      /It's funny, laugh
      //fark slashie

  10. Languages by PhilipMckrack · · Score: 2, Insightful

    You don't need to hire an expert in language X, you can and should look for expert programmers that are willing to learn language X. An expert can easily cross over from being a novice in any language in a matter of a few weeks.


    How I wish this were true. I consider myself to be a good programmer, I work in a small company that provides software to credit unions. We do the complete package, teller systems, ATM interfaces, online banking, etc. Three of us work here. Our entire system works well with two programmers and one tech support guy. We support 18 credit unions. Our problem is that with only 3 people it is based on a legacy code base that has grown over the years. It is all in COBOL with a little other stuff thrown in when COBOL won't work.

    I am ready for a change and work in a city with lots of bank and insurance headquarters. Everyone wants J2EE or .Net developers and I am interested in .Net but don't have any real experience in it. I understand it and have written several small programs, but nothing really complex. I have plenty of experience writing software for the financial industry that work, writing software that is delivered on time and on budget and recieving praise for the quality of software I write. I can't even get an interview.

    I am studying to get .net certified and hopefully that will help. I'm trying to better my situation, but at this point I can't even get anyone to talk to me. I would hope my resume doesn't suck that bad, when I graduated college 8 years ago I had plenty of offers and seemed to not interview like a slobbering moron, but everyone's mindset is "I need x years of this language experience before I'll talk to you".
    1. Re:Languages by jrumney · · Score: 5, Insightful

      The hardest part of finding a new job is getting past the recruiters, who are generally not capable of anything more than keyword matching against your experience. Use your contacts if you can to get in front of the technical managers who will understand that your domain knowledge and overall experience is more valuable than which languages you have been using for the past few years.

    2. Re:Languages by swimmar132 · · Score: 1

      While it may be possible to learn the syntax of language X in a few weeks (which would still cost a company thousands of dollars in training), it takes a lot longer to learn the idioms and the frameworks and the libraries of the new language.

      For example, while you can write C++-style code in Ruby, it will be ugly and slow. To use Ruby productively, you have to learn to take advantage of the dynamic typing. Just as in order to take advantage of C++, you need to take advantage of the static typing.

    3. Re:Languages by Anonymous Coward · · Score: 0

      You don't need to hire an expert in language X, you can and should look for expert programmers that are willing to learn language X. An expert can easily cross over from being a novice in any language in a matter of a few weeks.


      How I wish this were true. I consider myself to be a good programmer, I work in a small company that provides software to credit unions. We do the complete package, teller systems, ATM interfaces, online banking, etc. Three of us work here. Our entire system works well with two programmers and one tech support guy. We support 18 credit unions. Our problem is that with only 3 people it is based on a legacy code base that has grown over the years. It is all in COBOL with a little other stuff thrown in when COBOL won't work.

      I am ready for a change and work in a city with lots of bank and insurance headquarters. Everyone wants J2EE or .Net developers and I am interested in .Net but don't have any real experience in it. I understand it and have written several small programs, but nothing really complex. I have plenty of experience writing software for the financial industry that work, writing software that is delivered on time and on budget and recieving praise for the quality of software I write. I can't even get an interview.

      I am studying to get .net certified and hopefully that will help. I'm trying to better my situation, but at this point I can't even get anyone to talk to me. I would hope my resume doesn't suck that bad, when I graduated college 8 years ago I had plenty of offers and seemed to not interview like a slobbering moron, but everyone's mindset is "I need x years of this language experience before I'll talk to you".


      God, that sounds familiar. I've been interested in Eclipse RCP development. There isn't much of it going on around here. I know of three companies in the area doing it (counting ours... but I had foolishly made myself indispensable on my current project and didn't get tapped for that one). I'm contacted weekly by recruiters trying to fill RCP development jobs at the other two companies. They always come right out of the gate saying, "They understand that there aren't many people out there with that experience, so they'd like to talk to people who are really interested in learning about it."


      Dude, I work on an open source project implemented with the same technologies they're using. It's a pretty small project, and I wouldn't compare it to the kind of experience you get on a larger project 40 hours a week, but check out how into it I am. Right? Right?


      I've never even gotten a call for an interview, though. Could be my resume sucks, but it looks okay to me, and I've not had inordinate difficulty landing other interviews with it. One recruiter I've developed a pretty good working relationship with told me recently that the position's been open for more than a year, and they've turned down every candidate he's sent their way, though, so he doesn't think they really are willing to take someone with no paid experience in the API. His agency has given up trying to recruit for that position.


      But all's well that ends well, I suppose. RCP development has been pretty slow on the upswing here, and what I'm currently doing seems to be much more marketable. And I still work on that open source project so, hey... I get my fix anyway.

    4. Re:Languages by tmarthal · · Score: 1

      Just work on an open code base in the language of choice. It will teach you more than you are willing to admit, and also (more importantly) will allow you to have something to talk about during your technical interviews.

    5. Re:Languages by hondo77 · · Score: 1

      For example, while you can write C++-style code in Ruby, it will be ugly and slow. To use Ruby productively, you have to learn to take advantage of the dynamic typing. Just as in order to take advantage of C++, you need to take advantage of the static typing.

      Meanwhile the company looking for an experienced Ruby programmer will pass over the GP and wait months and months until they find someone with just the skillset they want. In that time, of course, they could have had the GP and had him learning Ruby AND how to use Ruby effectively from his co-workers AND been trained in how the company does things. Smart programmers that don't know Ruby are still smart and are easier to find than smart programmers that have a lot of Ruby experience.

      --
      I live ze unknown. I love ze unknown. I am ze unknown.
    6. Re:Languages by rmrmail · · Score: 1

      Very rightly said.. Language is independant of Experience. J2EE / .NEt is more of syntactical , approach difference , given the breadth of knowledge and experience language is hardly a barrier, it is all about getting basics right in what you are working.. Mostly all the interviewers not look for this aspect wherein try to project themselves better at the time of interview , pathetic

    7. Re:Languages by tcopeland · · Score: 1

      > To use Ruby productively, you have to learn to
      > take advantage of the dynamic typing.

      So true. I translated a bunch of little artificial intelligence example programs when I was first learning Ruby and now when I look back at that code there's a lot of stuff I'd do differently. Even little idioms like using x = [] vs x = Array.new... I was a Java/C guy doing Ruby, and it showed.

    8. Re:Languages by PPH · · Score: 1

      You don't need to hire an expert in language X, you can and should look for expert programmers that are willing to learn language X. An expert can easily cross over from being a novice in any language in a matter of a few weeks.
      The above statement is typically made by management when they've decided to switch to .NET (or some other garbage). Two weeks later, the PHB walks in and asks, "Where did all our über progammers go?"
      --
      Have gnu, will travel.
    9. Re:Languages by Anonymous Coward · · Score: 0

      I had this problem too. Right out of college I move and grab the first job I could to pay the bills. 3 years later I was still stuck at that job working on an awful archaic TISAM database.

      No one needs a TISAM database programmer and the job market was chock full of 5years Java 4years .Net.

      I have found the way out tho. Find a small company possibly nonprofit or possibly akin to your current that has some use for your current pile of unmarketable experience but that also has plenty of other tech. Small companies tend to love Jack of all trade programmers because they can handle whatever they have thrown at them and the co. doesn't have to hire a new specialist.

      In my case I found another Mental Health Org. that needed someone who could deal with medical data and was flexible enough to take care of a myrad of other problems. So now Im building much more marketable skills in .Net, SQL Server, and SharePoint.

      Yes my inner geek cries for perl and Java but M$ is what they use here so M$ will be my spring board into more marketable skills.

    10. Re:Languages by COMON$ · · Score: 1

      And this is the point that shows if you are really a good coder. It is easy to pick up a language and start typing it. But to really understand what it is doing and the architecture that it uses is when you really become good at it. So you can see the difference between an expert/guru by how they use their current language and what they can tell you about it. A good programmer can code and keep you out of trouble but a great programmer uses a language like a wrench, sounds a bit kung fu ish but that is the way it goes and it is the essential reason programming architecture classes are taught to BSCS students so that they are platform independent coders. A CS student uses the language to serve a purpose and will then pick what they need to best fit the need. Where as traditional programmers learned one language and make it fit the project. Of course I am biased to CS students but they just make damn good developers once they get their feet wet. I would hire a CS student with 3 years experience over a dev with 7 any day.

      --
      CS: It is all sink or swim...oh and did I mention there are sharks in that water?
    11. Re:Languages by Anonymous Coward · · Score: 0

      You're partly right. As one who's occasionally been called an überprogrammer myself, I had the good fortune (?) to get pulled into a Python-based project, after having most recently worked on J2EE. I wrote it like J2EE with a side order of Perl. It was horrible, though functional.

      The next pass, however I was producing better-quality code than the experienced Python programmers, thanks to having learned what not to do while under fire. Better quality in the sense that, unlike the existing staff, the stuff is externally configurable - rather than requiring source mods for every run, works with Python unit-testing frameworks, takes advantage of packages that maximize Python's power (DRY), and is better documented as well.

      Am I a python "expert"? Probably not for another 8 months. At which time, I'll approach the asymptotic limit where the language and runtime changes will require me to keep studying just to stay abreast. But one reason I came up to speed is because all the really good (and even not-so-good) language systems steal liberally from each other. As a generalist, I mainly had to figure out how the functionality mapped and what new powers I gained from this system to offset those that I had enjoyed in J2EE.

      I've talked to other high-quality people who've related similar experiences. They started out not even knowing the language and shortly ended up controlling mission-critical software systems - including in one or 2 cases, a mainframe OS.

      What I found even more amusing was an almost word-for-word quote of an observation I made many years ago: "Whenever I look at the slop I produce and how awful it is, someone ends up bringing me something they have that's even worse and asking for help to fix it. Then I don't feel quite so bad."

    12. Re:Languages by gatesvp · · Score: 2, Interesting

      I actually got a recruiter e-mail the other day for which I was basically a perfect match. I even had the soft skills they were looking for "bilingualism", training and support experience.

      So I replied with the resume and comments about salary range (which wasn't listed), experience range (also not listed) and how the job listing looked very "boilerplate" and looked like a request for "bodies" and not for talent.

      He replied with the list of 20 questions asking for further details. The first 8 questions were "how much experience have you had with technology XYZ"... So I replied by saying: you didn't answer my question about salary range and you asked really stupid questions, clearly this is not a job for me.

      End of the day, recruiter just cost them an opportunity and never addressed any of my issues.

    13. Re:Languages by 19061969 · · Score: 1

      It's difficult to say exactly what I mean, but I get the impression that some recruiters think that employees should be grateful for even being considered for a post. Even though a job is a contract (ie, mutual agreement) between employee and employer, it's treated more like a prize or honour and the employees concerns are the last thing to be considered (like in your example, you should be lucky that they have lowered themselves to offer you a post)

      That's a shame because the really good programmers I know of (not myself of course) have very low opinions of the recruitment industry. Many completely refuse to work with them in any way at all. It could be a useful industry if the recruiters spent some time learning about IT beyond a superficial categorisation of skills. I've yet to meet someone here in the UK who considers open source work to be of any value: the only valid work is commercial. Academic work is okay but only as a starting point because it's not real knowledge; voluntary work (like OSS) is worth nothing here.

      --
      bang goes my karma... again...
    14. Re:Languages by richieb · · Score: 1
      I've been working as a programmer for nearly 30 years. In all those years I only used a recruiter once to find a job. Most jobs came to me via connections (including my very first job).

      --
      ...richie - It is a good day to code.
    15. Re:Languages by mcvos · · Score: 1

      Everyone wants J2EE or .Net developers and I am interested in .Net but don't have any real experience in it. I understand it and have written several small programs, but nothing really complex. I have plenty of experience writing software for the financial industry that work, writing software that is delivered on time and on budget and recieving praise for the quality of software I write. I can't even get an interview.

      I am studying to get .net certified and hopefully that will help. I'm trying to better my situation, but at this point I can't even get anyone to talk to me. I would hope my resume doesn't suck that bad, when I graduated college 8 years ago I had plenty of offers and seemed to not interview like a slobbering moron, but everyone's mindset is "I need x years of this language experience before I'll talk to you".

      Employers shouldn't look just at how many years of experience you have with their favourite language, because that's meaningless. You can be bad for 15 years and remain bad. You can understand all the intricacies of the language, but not grasp the basic principles of good programming. There are a lot of programmers like that, and the HR people of big companies love hiring those people, because they have tons of experience in the skills they need.

      But that's not how it should be. Smart companies want people who know what they're doing, no matter what the language or how many years they've worked with it. When I started at my current company, I didn't know a thing about XSL, Javascript or CSS, and very little about HTML and XML. I knew a bit about Java, my previous job was entirely Visual C++. Yet I was hired, because they trusted that with my background I could easily learn all I need to know.

      Even so, I'd be hesitant to hire someone with only COBOL experience. I'd certainly want to make sure he's aware of the principles of OOP, the various programming paradigms, design patterns and the advantages and disadvantages of various programming languages. I'd definitely want to see some code in order to see how he solves various problems, how he deals with exceptions, and that sort of thing. (In fact, everybody at my current job had to show some of those skills before being hired.)

    16. Re:Languages by vigmeister · · Score: 1

      I get the impression that some recruiters think that employees should be grateful for even being considered for a post. Especially true of HR folk hiring from colleges. They think that all college students are desperate for an internship/entry level without realizing that some of us already have jobs lined up or have other options (grad school)

      This is also very true when you are trying to switch job roles or look into another industry. They waste your time at the interview and try to convince you that you actually want a different role in their company. I'd rather they reject me outright.

      Cheers!
      --
      Vig
      --
      Atheist: Buddhist in a Prius
  11. close your browser now boss by s0c0 · · Score: 2, Insightful

    Hope my boss doesn't read this article and get any crazy ideas. I'm one of those newb developers, we deserve a shot...right?

    1. Re:close your browser now boss by Usquebaugh · · Score: 1

      Of course you do,

      now run along and make the tea.

    2. Re:close your browser now boss by Anonymous Coward · · Score: 0

      I'm new to it all also. I've worked at this company a few months and have designed two separate applications, while maintaining/improving a third. All I can say is it seems that I'm a better developer than the people that came before.. The project I've had to maintain is garbage spaghetti code that was said to have been developed over a few years, and would take me 6 months tops to write from scratch. I'm not saying I'm good at what I do but I am saying whoever came before was terrible at what they do. This boggles my mind considering that it was written by 'Senior' developers, who probably make double what I do.

    3. Re:close your browser now boss by phoenixwade · · Score: 5, Insightful

      I'm new to it all also. I've worked at this company a few months and have designed two separate applications, while maintaining/improving a third. All I can say is it seems that I'm a better developer than the people that came before.. The project I've had to maintain is garbage spaghetti code that was said to have been developed over a few years, and would take me 6 months tops to write from scratch. I'm not saying I'm good at what I do but I am saying whoever came before was terrible at what they do. This boggles my mind considering that it was written by 'Senior' developers, who probably make double what I do. I obviously haven't seen the code you're talking about and hove no opinion of it. However, I've heard this crap from new programmers for years. So let me through some ideas your way.

      1. it isn't garbage and spaghetti because you have difficulty following the technique, there are a thousand ways to do anything. It's garbage and spaghetti when it doesn't work well, and when it's under documented.
      2. Could you really write it in six months without referencing the code you are talking about? It's one thing to write code when the problems have been solved, quite another to solve the problems.
      3. the scope of a job changes over time. For a new programmer, start looking for scope creep, it's a friend and an enemy.
      4. code changes over time because languages change over time. Look for those situations in the spaghetti code where those guys that you are better than wrote functions that were not available in the language. You may get a surprise that they did something really elegant to overcome something missing in the language originally that exists now.
      5. lets say that there were five programmers on the code before you, one after another. The first four might have been gods gift to programming, it only takes one pretentious newbie in the chain to really screw up pretty code.

      certainly none of these apply to your project, but it's something to think about as you are exposed to projects in your career.

      --
      A positive attitude may not solve all your problems, but it will annoy enough people to make it worth the effort.
    4. Re:close your browser now boss by bit+trollent · · Score: 1

      Personally, I'm tired of watching people take something that should take few lines of simple code and make an elaborate mess out of it giving up flexibilty and introducing bugs every step of the way.

      Then you end up writing code that looks correct but doesn't work because of some bizzare bug that was introduced by some obnoxious framework that gets in the way of everything you want to do. This leads to you spending hours trying to get some crazy thing to work that you would already be done with if you didn't have some framework in the way.

      Code that that gets in the way more than it helps is a scourge on programming.

    5. Re:close your browser now boss by Anonymous Coward · · Score: 0

      I understand your points and I'm all for constructive criticism. I ask for it from our current senior developer all the time. However, with this project those things just aren't the case.

      1. The only difficulty following the code is that functions are repeated throughout each page. I guess they couldn't be bothered writing a couple utility classes and decided copy/pasting was a better idea. They purchased a user management suite and then completely broke it by only ever checking for the first role in an array of roles (this has caused multiple problems). There is approaching zero server side validation for...anything. There are pages with thousands of lines of code which could be summed up in 2-3 hundred.

      2. None of the "problems" are very difficult ones. It's mostly just a bunch of forms that get posted back and saved in the database(which shockingly has no relationships or primary keys).

      3. I can see where a lot of this has happened.

      4. It's asp.net it began as 1.1 and is now 2.0, I've seen two things I thought were done elegantly in the entire project. So...

      5. This one may be 100% true, I never got to meet any of the developers that came before.

    6. Re:close your browser now boss by pxc · · Score: 1

      But maybe the workplace isn't where you should take that shot from. I don't mean to troll, but there are lots of opportunities for you to learn a language, practice theory, and play with a better developer's source code. I'm not even through with high school yet, but I know that development is something I want to do and I want to do well, so after I took a class or two and picked up a "teach yourself C++" book, I realized that stopping there wouldn't really get me anywhere. I decided to grab the Amarok source and start picking through for some small part of it that I think I could rewrite or some large part of it that I could learn from and do those things for practice.

      Maybe after I familiarize myself with some of that code I can start doing some real work on the project. By the time I'm looking for a job in development, I can say "I've been contributing to an open source music playing and management system called Amarok for x years. I wrote the code that does x, y, z." /And/ I'll have the potential benefit of learning from the code of an "uber programmer" or two.

    7. Re:close your browser now boss by MBCook · · Score: 1

      I'm relatively new to it all, and I've worked on a horrid spaghetti-code application that can fall apart easily, has tons of hard-coded config values strewn about, and some code that could really make you scratch your head. My boss and the others who have worked on it all agree. I could write something better in about 6 months. That said...

      • I have the experience of maintaining that app, so I know things that they ran into (things you would never think of)
      • I know the first version was written in something like 3 months because they needed it quick
      • I know that features (both large and small) have been tacked on since the beginning, and the app now encompasses much more that its original scope
      • I know I've had formal training is some of this stuff (the first guy was self-taught in DB design, I think)

      There are things we have that I could do better than in some areas. Some of our applications have come a LONG way from their beginnings and would take a very long time for me to rewrite (years to catch up to how fast and stable it is now). So remember that when someone complains "I could do better in 6 months", that might refer to 1 of the 6 systems they've seen.

      Hubris seems common in our field, especially if you are good compared to your classmates (who can be poor and still graduate). However, it often doesn't take too long get humbled by someone or some amazing system.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    8. Re:close your browser now boss by Unnngh! · · Score: 1

      I have worked on projects where this is true, and the code was really fine and it was just not the way I would have done it in my wildest dreams, so that was cool because I learned something and didn't have to rewrite everything just to make a simple change work. Usually though when it looks like crap, guess what...

    9. Re:close your browser now boss by leabre · · Score: 1

      No matter how much experience I get in writing large and flexible systems, I find myself at a point where I can both agree with you and dissagree with you at the same time. I suppose it depends on factors. Having too many developers on a project means it has to be ultra-flexible so it can accomodate everyone easily. Having fewer people on the project means it can be whatever it is because those few people will know it inside and out.

      As an architect for a large company working on a system that must scale to more than a few hundred million transactions daily, I can tell you, I have great enthusiam for building/understanding super-complex systems/ecosystem-of-architecture that have extreme degrees of flexibility and I also have great hatred for them simultaneously because they are haneious to understand and any XML configuration bured 5 layers deep interacting against an assumption that is no longer valid this year (or this decade, for that matter) is nearly impossible to find.

      In any case, frameworks are fine. Sure, there's bugs, and sometimes they trap you in a box with their own limitations. If you have to source code (or if you or your predacessor built it) you can fix it. But how it applies to the domain to solve the domain problem is key. My experience, in all the different places I've been, whether insurance agency automation, insurance accounting, large scale warehousing and inventory management or high-volume financial transaction institutions, the under-pinnings of the framework (or lack thereof) that forms the foundation of the project is rarely a major issue, but its almost always because the way the "legos" were put together to solve the business problem that is the problem.

      Why would that be? Well, no matter how perfect software is when originally implemented, over time the business rules change, the industry dynamics change, and even sometimes the language itself changes (java, C++, .NET, ruby, etc.) such that technical problems that needed solving two years ago are built into the language or base class libraries (other langauges like VB and COBOL don't change so certain problems always need solving or are already solved once and for all)...

      Code rarely has ever got in my way nor has someone elses bad coding styles. While I might have been more likely to complain about how everyone else sucks and I'm the only person that can do anything right, the fact is, I'm beyond that now. We all think differently and solve the same problem rather uniquely but in the end, solve it. What does it mean: easy to maintain? I've never seen anything that's easy to maintain unless I wrote it myself within 30 days of when I'm looking at it. Anything else and it takes time to re-learn and is no longer easy to maintain.

      Just my 2 cents.

      Thanks,
      Leabre

    10. Re:close your browser now boss by tknd · · Score: 1

      I used to think like that, that I could always rewrite things in a shorter amount of time than it would take for me to keep maintaining it in the long run. I was right, to a degree, but in the end I was more wrong than right.

      The issue came up when I actually took software engineering courses and when I was forced to go back to my own code and fix it years later. Even stuff I thought was beautifully documented at the time wasn't. Sure, it was designed well enough, could easily be fixed, but there was always a missing step before getting to that fix which was understanding why, how, and what cause me to write that code.

      So I've given up on the, "I'll just rewrite everything" mentality only when I encounter something that either, is not finished or is too broken. In most cases, the application is working to a degree, therefore the choice is always to maintain it even if the code quality isn't very high.

      The only project I have a lot of confidence in my entire career is the very first project I worked on when I started my full time software engineer position more than 2 years ago. And the reason isn't because the code is perfect, in fact it could be better. The reason is because the documentation is complete. And I don't mean documentation as in commenting every method and class (though it has that as well), but up to date requirements documentation, design documentation (no code), and testing documentation and test cases. The reason I'm so confident in that project is because I know for a fact that if I leave tomorrow, the next guy can pick up the documents (not the code) and know exactly why that project was create, what it was intended to solve, and how it solves that problem without reading a single line of code.

      So going back to the "I can rewrite that in 6 months" idea: you may think you can rewrite it in 6 months, but you can't. All you're doing is reimplementing the same code and when the next guy comes around, he's just going to think the same because your 6 month estimate didn't include adequate requirements, design, and testing documentation. Instead, if you think "I can write the documentation in 6 months" then you're thinking on the right track. The documentation is independent of the implementation and will help any developer later more than a billion comments will in the source. You'll even find that the "spaghetti code" isn't so much spaghetti anymore because you actually understand the problem better. Suddenly, even if the code disappeared and you were forced to rewrite it, the reimplementation would take a very short amount of time because the surrounding documents were already prepared. But as long as you understand that the problem, it won't be necessary because it has very little benefit.

      So whenever you get the bright idea of "rewriting code" don't rewrite it. Investigate and document it. That is more useful than throwing more new code at the problem.

      I find that all of the projects I have low confidence in now are the projects that lack adequate requirements, design, and testing documentation. That's because the quality of the code is very trivial compared to if in plain English or diagrams it is explained how the software is intended to behave and why. As you might wonder, why haven't I had more confidence in any of my recent projects since I started? Well that's because documentation doesn't produce a working solution therefore it is skipped in the event of short time frames. Recently I've been pressured a lot to get things done even faster than they actually require. As such I can't document them as well. I still try, but it's never complete. I don't have a good solution (and I don't think a good one exists) other than to tell my boss that quality will suffer if adequate time isn't allocated to doing these things correctly.

    11. Re:close your browser now boss by kobaz · · Score: 1

      I obviously haven't seen the code you're talking about and hove no opinion of it. However, I've heard this crap from new programmers for years. So let me through some ideas your way.

      1. it isn't garbage and spaghetti because you have difficulty following the technique, there are a thousand ways to do anything. It's garbage and spaghetti when it doesn't work well, and when it's under documented. While I do agree with this, I also will say that a large percentage of code in big companies is actually garbage and spaghetti. My current company being no exception.

      5. lets say that there were five programmers on the code before you, one after another. The first four might have been gods gift to programming, it only takes one pretentious newbie in the chain to really screw up pretty code. This is the golden statement. This seems to happen more often than not with large companies and big projects.

      I had a project come up recently where we were given the task of doing a rewrite of an old web interface to our system. The team was three guys, myself, a new guy, and the guy who wrote the original web interface. There was a rewrite of the backend daemon. I was looking at the code before I actually knew the daemon was also being rewritten. The code looked worse than the first version, and it was new spaghetti code by a senior guy. The guy just can't code. The new guy was much worse. He wrote the initial version of the new web interface. I found a series of scripts handling displaying code tables. Five different scripts for handling five types of code tables with 100 lines copied and pasted between each script and a one line difference between then.

      In conclusion, sometimes there just isn't any difference between a "senior" and a "junior" programmer. Crap code is crap code no matter who writes it.
      --

      The goal of computer science is to build something that will last at least until we've finished building it.
  12. Sales is looking at demand and driving supply by hellfire · · Score: 3, Insightful

    One aspect not discussed: Programmers are in short supply because demand for code and new features is limitless.

    My company right now has huge demands for new features and new software. While development is desperately trying to fight the urge to pump out more and more features, they fail miserably each cycle. This is coupled with the fact that we have tons of work to do cleaning up bugs. No one can stop and catch their breath, the work keeps piling on.

    This cycle will continue until a customer realizes they can't get something on time, or the quality is so bad the software won't sell any more. Customers think the software just materializes because they see it on the shelf. It took years to get it that way.

    Salesreps do and say anything to get the contract signed, and the details get ironed out later. As long as the cash rolls in, large companies aren't going to change this.

    --

    "All great wisdom is contained in .signature files"

    1. Re:Sales is looking at demand and driving supply by Skapare · · Score: 1

      Programmers are in short supply because demand for code and new features is limitless.

      If you truly mean limitless, then sure, there is a supply shortage. But there is a surplus, too, because the hiring is not being done to meet the demand for code. In too many cases the hiring is being done with restrictions specified that really don't need to be, as the article points to. For example, if the shop language is FOO, a good programmer who has X years experience doing all kinds of different development in a few languages, and is willing to program in FOO, can do better than the average programmer who has X years experience in FOO. But HR too often gets in the way and prevents some people's resumes from even being considered.

      Too many businesses want to hire some idea of "programmer" (or "engineer", etc) that the management has in mind, that isn't really the kind of person who could get the real work done. They figure if the candidate understands business they will have a good programmer. Such managers don't know how to actually get things done besides a P&L statement (and they will end up with more on the L side as a result).

      --
      now we need to go OSS in diesel cars
  13. The most interesting link in the whole thing by Marxist+Hacker+42 · · Score: 2, Insightful

    Was to the 400 disc CD Changer.

    Seriously, we knew ALL of this a long time ago. HR just has yet to catch up- they'd rather hire 100 slightly-less-than-competent people who have the right keywords on their resume than a single lazy generalist who will figure out the right way to code it the first time regardless of how new they are to the language. And it's the second one you want. The real bottleneck isn't finding expert programmers- it's finding HR people who understand this industry.

    --
    SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    1. Re:The most interesting link in the whole thing by Spazmania · · Score: 1

      generalist who will figure out the right way to code it the first time

      Maybe not "the right way." That's a conceit common to our profession: that our way is "right." But at least a GOOD way to code it.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
    2. Re:The most interesting link in the whole thing by Marxist+Hacker+42 · · Score: 2, Insightful

      Maybe not "the right way." That's a conceit common to our profession: that our way is "right." But at least a GOOD way to code it.

      In the case of dealing with any customer "the right way" is the way that can be commented for future maintenance & works without bugs. If your code can do that, then it is most certainly "the right way"- the right way for the conditions of the job.

      --
      SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
    3. Re:The most interesting link in the whole thing by asc99c · · Score: 1

      I think the idea of getting things right the first time isn't such a big deal. The problem is once you've reported it as done if you realise it's not right, deadlines will pressure you into going onto something else - a degree of experience and conviction is required to say it needs re-doing. Generally, the best people will not only see things that are wrong, but will also fix the things that are just not right. But this is a bit of a catch-22. Most commercial software is done to timescales and so only recognised experts can get the freedom to fix things that aren't wrong - but half the time you can't tell who the experts are until they've rewritten stuff you hadn't realised needed rewriting.

      The balance to strike is between getting things right and getting things done, and this is the biggest area that 'experts' tend to be best at and one where experience is valuable. Some bits of the code need to be done right so the rest can simply fall into place. I work on custom one-off pieces of software that are loosely based around core modules. These are frequently re-used so they need to be done properly. Most of the application specific stuff just needs to be done. Getting the balance just right on all the different bits of the system is what really makes the huge differences to productivity between developers.

    4. Re:The most interesting link in the whole thing by Spazmania · · Score: 1

      And if my way does all that, it will doubtless remain wrong for some other reason because your way is right and there can't be two opposing right answers.

      Like I said, its a conceit. Its more likely to reflect some combination of inexperience and inability to distinguish between opposing ideas that are in error versus opposing ideas that are merely inconvenient to your way of thought.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  14. hireing more people is better then over working... by Joe+The+Dragon · · Score: 1, Insightful

    hiring more people is better then over working the people that you have.
    Having 2 people working 40h a week each is better then one person working 80h a week.

  15. Have to do it, sorry by COMON$ · · Score: 1

    COBOL is not really a programming language, thus the reason it is dying. I know I am being a snob, but the quality that makes COBOL great (eg anyone can write and become an expert), is also the quality that makes the devs go back to college to learn the complexities of PHP or another object orientated language. I learned C++ initially and ended up moving to Java and Perl and indeed it was a simple switch. Of course now I have discarded all and become a SysAdmin :)

    --
    CS: It is all sink or swim...oh and did I mention there are sharks in that water?
    1. Re:Have to do it, sorry by misleb · · Score: 0, Troll

      OBOL is not really a programming language, thus the reason it is dying. I know I am being a snob, but the quality that makes COBOL great (eg anyone can write and become an expert), is also the quality that makes the devs go back to college to learn the complexities of PHP or another object orientated language.


      Complexities of PHP? You've GOT to be kidding me. Who goes back to college to learn PHP??

      -matthew
      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    2. Re:Have to do it, sorry by PhilipMckrack · · Score: 1

      Well, your wrong there. Anyone can't do it and you can do anything with a modern COBOL compiler that you can do with any number of other languages. There are also lots of COBOL jobs in my town, mostly on mainframe, but my experience is PC related. I also want to get out of it because you are correct in saying that it is becoming less and less marketable as a skill as demand for it drops.

      There is a reason that most of the backend code for banks and insurance companies are written in COBOL.

    3. Re:Have to do it, sorry by COMON$ · · Score: 1

      you would be suprised what people go back to college to learn....I saw some people drop a couple grand to learn perl just the other day :)

      --
      CS: It is all sink or swim...oh and did I mention there are sharks in that water?
    4. Re:Have to do it, sorry by COMON$ · · Score: 1
      There is a reason that most of the backend code for banks and insurance companies are written in COBOL. Yes I remember reading about it in history classes :) It was an elegant solution for a more civilized age. But as languages evolved so did the arcitectures that evolved from them. You dont use BASIC for much anymore but it served as a hell of a platform not too long ago. But then again any middle schooler can pick up BASIC. it is a great entry level language.

      As for your comment that you can do anything with a modern COBOL compiler you can do the same thing with assembler, but there are better ways now. The reason the banks are sticking with COBOL is mainly the cost to migrate. If I were in your shoes with a ton of COBOL experience, I would do research on what COBOL is being migrated to with companies that have made the switch and i would become as familliar as possible with those and you will be a highly desirable person very very soon.

      --
      CS: It is all sink or swim...oh and did I mention there are sharks in that water?
  16. What? by ScrewMaster · · Score: 1

    Why is it so hard to find good programmers?

    Who says it is? If that is true, maybe the flood of H1B visas isn't having the positive effect that proponents insisted that it would. Gee, maybe we should stop the ongoing decimation of our domestic workforce by corrupt trade practices. That would be a start.

    More to the point, why should software developers be any different than, say, car mechanics, doctors, scientists, lawyers, musicians or anyone else? Being truly competent (much less exceptional) in any complex field is a fortuitous combination of training, experience and talent. Time and money provide the first two, and can produce at best a merely competent worker. Being the very best requires actual talent, but talent is a rarity in any area of human endeavor. That's why the top people in any sophisticated profession command top dollar.

    Or used to, at any rate.

    --
    The higher the technology, the sharper that two-edged sword.
    1. Re:What? by megaditto · · Score: 1

      Current supply of H1B candidates does not satisfy the demand for good programmes, you say?
      Then perhaps we need to provide more visas for good programmers.

      --
      Obama likes poor people so much, he wants to make more of them.
    2. Re:What? by ScrewMaster · · Score: 1

      Then perhaps we need to provide more visas for good programmers.

      More short term thinking, which unfortunately is proving to be very popular nowadays (to our detriment.) What we need to do is train more people from our own population. You know ... like every other country does, at least the ones that need programmers. Having a temporary shortage of trained talent is not unusual in any field, but simply opening the floodgates to foreign workers is not a good solution. It sure as hell didn't work for medicine, and it sure as hell isn't working for software. Look, if there's a demand, the supply will take care of itself. That's the way it has always been. However, that takes time, time that American corporations (many of which are no longer run by or for Americans) is unwilling to invest. Nor are they willing to pay competitive wages to domestic professionals. So, not only are they sell-outs, but they're cheapass sell-outs as well.

      There's a reason that nations (all of them) have limits placed upon immigration. It's because those governments are pledged to put their own people first. Ours has forgotten that.

      --
      The higher the technology, the sharper that two-edged sword.
    3. Re:What? by jgarra23 · · Score: 1


      Who says it is? If that is true, maybe the flood of H1B visas isn't having the positive effect that proponents insisted that it would. Gee, maybe we should stop the ongoing decimation of our domestic workforce by corrupt trade practices. That would be a start.


      Maybe these programmers suck at what they do and the language barrier between American culture and cultures X and Y is so great that even if they were good programmers, they will never release a product that is aesthetically pleasing to Americans... but would flourish in their own country... ?

    4. Re:What? by megaditto · · Score: 1
      Didn't you just yourself say in the GP post that we should look for talented people? Here:

      Being truly competent (much less exceptional) in any complex field is a fortuitous combination of training, experience and talent. Time and money provide the first two, and can produce at best a merely competent worker. Being the very best requires actual talent, but talent is a rarity in any area of human endeavor.

      And just minutes later you are proposing forget looking for the "rare" talent and focus on race. Do you see an inconsistency here?
      --
      Obama likes poor people so much, he wants to make more of them.
    5. Re:What? by mutterc · · Score: 1

      I know. One of the many many things that bothers me these days is how companies just shrug off obscene executive compensation: "B-b-but it's the only way we can retain quality executives!". However, when you get the same problem with working-shmoe developers: "We have trouble retaining quality developers. Increasing compensation is not an option, let's try to convince the government there's a 'shortage'".

    6. Re:What? by ScrewMaster · · Score: 1

      I'm not focusing on race and if you want to have a reasonable discussion on this subject, don't try to make this a racist issue. It's not and I'm not. What I am focusing on is nationality. That's a big difference, believe it or not. I believe in putting the citizens of my own country before the citizens of other countries. The ethnic background of my fellow Americans is irrelevant, but their nationality is not.

      And yes, you're right, America has always drawn upon those people from other nations that have useful skills and talents ... if they are valuable and are willing to become good citizens of this country, we put them through the immigration wringer. If they come out the other side, great. If they don't, then we don't want them and they're welcome to return home. That attitude is hardly limited to the United States, in fact as nations go we're more generous when it comes to immigration than many others. But we do have to right to decide who comes to live and work here, and compete with us for what work is available. All peoples have that right.

      The point is, immigration was never intended to foster the wholesale destruction of our domestic workforce, which in certain crucial areas is exactly what is happening.

      --
      The higher the technology, the sharper that two-edged sword.
  17. Inverted meritocracy by Anonymous Coward · · Score: 0

    It's simple. They don't pay enough. They can't. If a programmer at my age, qualification and expertise was paid a proportionately
    fitting aount I would earn 5 to 10 times that of senior management. No company will ever allow an employee to earn more than the guy that 'manages' him. Therefore the only career development path for most very good programmers and computer scientists is to move into management, at which point
    their brains stagnate and they lose their killer skills.

    Being an excellent programmer isn't just about learning a bunch of stuff once. It's about living and breathing your art, reading new material every day and constantly bettering yourself. It's knowing software and hardware engineeing inside out, from transistor to register to pointer to array to
    network packet to distributed system. After about 15 or 20 years you have surpassed everyone you will ever hope to work for. You must accept some kind of 'revolution of lower expectations' where you know you will never be paid what you are worth. Unfortunately some people take the attitude that guys who are approaching 40 and still programing as losers, because why would anybody *choose* to remain a programmer and not move up to management?

    There is simply no widespread understanding of how far a person can take a career in programming and how deep the rabbit hole goes. After the first 20 languages and reading all three volumes of Knuth from cover to cover, maybe you write a few of your own compilers and maybe write another little 'hobby' language. By that time the only peers you can hope to meet are other older programmers who have taken the same path. Nobody within a company/corporation is even qualified to judge your capabilities.

    Yet you can find yourself applying for 'entry level' positions in companies because you don't have specific experience of some shitty little proprietry tool that you could write yourself if you were bothered to.

    There is no shortage of good programmers. It is bullshit put about by industry who can't express what they really mean. What they want to say is "there aren't enough young cheap programmers around, and all the good guys we had became managers and cant code to save their lives any more because we couldn't actually pay them what they are worth to us".

    Industry is a inverted meritocracy. It's frankly how embarrasing how much more valuable a good programmer is than a good manager. Until the corporations can get over their snobbery and stop clinging to a 20th century worker/management model that encourages the best programmers to abandon their field at the moment of greatest maturity they will always be losing out on having the best and brightest actualy realise their potential.

    1. Re:Inverted meritocracy by AKAImBatman · · Score: 1

      It's frankly how embarrasing how much more valuable a good programmer is than a good manager.

      I was with you, right up until this point. A really great manager is part teacher, part mentor, part boss, part friend, and part Solomon. A great manager will make sure you have the exact tools and resources you need, know exactly who can take on a given task, know when to dish out tasks that will help improve the skills of those (s)he manages, somehow manage to get whatever is needed out of higher management, and be able to identify and combat issues with a project before they become a problem.

      Good management is just as much of an art as programming is. Just like in programming, there aren't that many people who are true naturals at it. Those that are can make a company run about 1000x smoother than anyone else could. Thus I don't begrudge them any high wages they may earn.

      Funny thing, though. These same managers are also the ones who are often stuck at the lower rungs of the totem pole making only slightly more than you or I. (Sometimes less.) Like programmers, they like the "hands-on" experience of direct management. This tends to make them uninterested in moving to the top. Combined with their willingness to step on toes in order to get the job done, they're unlikely to get promoted very far, very fast. Thus they also can be found pining for the small-company environment. :-)
    2. Re:Inverted meritocracy by wurp · · Score: 1

      I'm pretty sure that I've made more than the people who manage me for the last 5 or 6 years... not a lot more, but more. (Well, for one year I probably didn't, but otherwise...)

      Become a contractor.

      There is a lot more to being a great programmer than knowing the hardware, network architecture, and algorithms, too. You have to know how to write tests, how to document, how to design, and know when & how much to do those things. A good process helps a lot, but you also have to have experience.

      Of course, you also have to know the low level stuff.

      I'm not saying that you don't have those things, just pointing out the important stuff that you didn't focus on.

    3. Re:Inverted meritocracy by abigor · · Score: 1

      "Become a contractor."

      Absolutely correct. And if you hate the whole business side of things, like bidding on contracts and stuff like that, join a contracting company and become a subcontractor. They find the work and contract you out, and take a cut of what they charge the client. You'll still make more - a lot more - than a salaried position. And you have the option of taking a lot more time off too.

  18. Surprised by Anonymous Coward · · Score: 0

    Am I the only one who is surprised that the author didn't leave a link to his resume at the end of the article? I see the entire article as flamebait. Or maybe I'm just biased because I'm one of those "junior programmers" fresh out of college who uses "less agile" languages such as C++ and Java. Only difference is that I didn't receive my diploma in the mail...

    1. Re:Surprised by CompMD · · Score: 1

      Its an article on his blog. His resume is available there as well, and not hard to find. Frank is exceptionally well qualified to write this article.

    2. Re:Surprised by stephanruby · · Score: 1

      Its an article on his blog. His resume is available there as well, and not hard to find. Frank is exceptionally well qualified to write this article.
      No, Frank may be an uber sysop, but he's certainly not an uber programmer. He praises the generalist programmer and alludes to the Mythical Month book, but if you look at his blog and the technical articles (code samples) he wrote, Frank is only a language expert and a very specialized programmer. He may know how to use mod_perl on apache, and may even have contributed a patch or two, and apparently he knows how send email with Perl (yes, the guy is a god I tell you), but his blog is entirely devoid of any higher level programming concepts.

      And I'm not asking for much here, an article on testing (any kind of testing) would have been nice. His views on OO programming would also have been good. Version control is good, and I'm glad he praises/uses it, but since he seems to think this is the best thing that happened to him since sliced bread -- I sincerely hope he has something else up his sleeve. Not everything can be done with Perl, although technically it can -- it just would be a really-really bad idea.
  19. Re:hireing more people is better then over working by Anonymous Coward · · Score: 0

    Congratulations, you have completely missed the point.

  20. How to find them? by Mike1024 · · Score: 1

    If you fill your shop with 15 average Java developers, paying an average of $60k per developer you have an approximate labor cost of $900k/year for your development staff. Not considering any non-salary benefits.

    Suppose you instead took the time to find 5 expert, or at least above average, Perl developers at $120k each per year. That seems to be the gist of the article, and it's a pretty reasonable conclusion: Experts can be very much more productive than non-experts.

    However, it is also my experience that it isn't always easy to tell highly capable people from the merely capable; that is, I've worked with people who seemed very good initially, but in the fullness of time I realised they were not. And that, of course, is a benefit for having 15 developers instead of five: Any given hiring mistake costs half as much, and reduces your workforce by a fifteenth instead of a fifth.

    So how are you supposed to find these expert programmers, and how can you tell a $60k developer from a $120k developer? By asking brain teasers like Microsoft and Google are reputed to do?

    Just my $0.02
    --
    "Goodness me, how unlike the FBI to abuse the trust of the American public." -- The Onion
    1. Re:How to find them? by Anonymous Coward · · Score: 0

      and how can you tell a $60k developer from a $120k developer? By asking brain teasers like Microsoft and Google are reputed to do?
      Actually, yes. Programmers have a mean IQ of about +1 standard deviation, and in my experience each standard deviation of IQ yields about a 2-3x difference in programming ability. If you use brain teasers to help weed out those under 130 IQ, you will be hiring the developers that are generally worth more twice as much as the average programmer (~115 IQ).
    2. Re:How to find them? by Anonymous Coward · · Score: 0

      Very simple: have a solid interview developed by the good programmers that you already have.

      At my last job, over several years we hired close to a dozen programmers, and every last one was a good hire. We put them all through a group interview, with a standard set of interview questions. Here is a sample question:

      "Our boss is a big baseball fan. He wants us to build a series of reports to help him play fantasy baseball. Here is how we are going to divide the job. I'm going to be responsible for going out to websites and downloading weekly stats into the database. It will be your job to design the database layout and generate some simple reports. Try to get started, and feel free to ask any questions that you need."

      The candidate then to come up with outlines of tables for teams, players, and statistics. As the design begins to firm up, we'd point out things that the player has missed. (Sample points might include, "Players are traded between teams." "How am I supposed to handle a download that only partially succeeds?" etc.)

      The goal is not to get a perfect answer. The goal is to have developers see what the candidate's design skills look like, how the candidate handles changing requirements, and what questions the candidate will ask.

      Once the candidate has a schema that we're happy enough with, we ask for some simple piece of actual SQL. Like generating a report of who had the most home runs in a given year.

      If you're one of the many people who looks at this question and says that you'd be filtered out even though you're good, I have three things to say to you. First, you might be wrong about your skill level compared to what we were looking for. Second even if you're right about your skills, remember that the primary job of an interview process is to find only good people. That inevitably means that you'll wrongly turn away some capable people, but that is preferable to risking hiring the wrong ones. And third, the skills tested are exactly the skills required for building a CRUD application. If you can't demonstrate that you have the skills we need in the interview, why should we assume you'll be able to demonstrate them on the job?

      If you're one of the many people who looks at this question and says that it favours people who are extroverts and good presenters, I have to say that our experience doesn't bear this out. Most of our hires were people who are introverted and hate to present stuff in front of others. We were more than willing to ignore a good show - we were looking for content. However our ability to look for content is due to the fact that the interviewers were all technical people who could recognize the difference. Our manager was NOT part of this interview, because he wouldn't have been able to understand the reason for our choices.

    3. Re:How to find them? by TheRaven64 · · Score: 1

      If you're one of the many people who looks at this question and says that you'd be filtered out even though you're good If the process is exactly as you've described it, then I would be filtered out for not knowing anything about baseball (I couldn't even tell you how many are on a team, let alone the kind of statistics a match generates).
      --
      I am TheRaven on Soylent News
    4. Re:How to find them? by Anonymous Coward · · Score: 0

      All the better. The interviewer would then be able to see how good you are at requirements elicitation. You will never have expert knowledge of every domain you write software for.

    5. Re:How to find them? by jc42 · · Score: 1

      So how are you supposed to find these expert programmers, and how can you tell a $60k developer from a $120k developer? By asking brain teasers like Microsoft and Google are reputed to do?

      My favorite anecdote on this topic is about one of the interviews I've been to where they did that. They gave me a programming problem, and left me alone for maybe 10 minutes to solve it.

      The guy who examined my answer rejected it as invalid. I asked why. The answer was that it wasn't the correct answer, which he had on a page of paper. So I looked at it, and then proved that my answer was not only correct, but faster and used less memory than his.

      It was obvious that he was quite taken aback by my arrogance at 1) finding a better solution than the one he had, and 2) proving that mine was better. They didn't make me an offer. I wasn't disappointed by this.

      It's not obvious how I could have given his "correct" answer, since their statement of the problem didn't give any clue that their approach was to be used. It's sorta like several other cases part of a programming problem was "Use any language you like", and my solution was rejected because it wasn't written in the correct language. I wasn't unhappy at being rejected in those cases, either, because it's obvious how I would have been treated there.

      I wonder what sort of puzzles Google uses. I've seen some of the ones used in Microsoft interviews.

      --
      Those who do study history are doomed to stand helplessly by while everyone else repeats it.
    6. Re:How to find them? by @madeus · · Score: 1

      So how are you supposed to find these expert programmers, and how can you tell a $60k developer from a $120k developer? By asking brain teasers like Microsoft and Google are reputed to do? Personally I think those are bad ideas. It tells you more about what they are like at solving brain teasers (which usually involve red-herrings or bizarre / arbitrary clauses and are abstracted away from any 'real world' scenario), it's also a poor judge because during an interview they are likely to be far more stressed than they would be in a normal office environment.

      To make matter worse, most people are lousy at interpreting answers to those questions IME. I haven't really ever been asked any of those in an interview, but I've been interviews where they have been asked, and discussed that sort of thing with quite a few coworkers and managers and I've often disagreed (even appalled) at how they interpret answers.

      To me it seems simpler to ask people for an example of their work, about any projects they might have contributed to and to just hire them with a 3 month short-term notice period (where if they don't work out, they can leave / you can let them go with a week's notice).
    7. Re:How to find them? by marcosdumay · · Score: 1

      "And that, of course, is a benefit for having 15 developers instead of five: Any given hiring mistake costs half as much, and reduces your workforce by a fifteenth instead of a fifth."

      Unless you put them on a team, then any hiring mistake will delay the entire team and no level of excelence will put your developers even on par with the average.

      And, by the way, to hire good developers and exploit their entire potential you need to create several factors:

      1. The payment is hight enough, so they will apply.
      2. Cluefull HR people. Otherwise they'll put the good developers' resumee away and call just good politicians to interview (you'll need a lot of luck to one of the rare intersections apply).
      3. A good work environment, both pleasant and chalenging. Pleasant because otherwise people will run away from it, and chalenging so you can see if you make a hiring mistake.
      4. Competent management, so if you make a mistake you'll be able to notice it. Yes, that opens another (and bigger) can of worms: How to hire good managers.
      5. Sane office politics. If you have an incompetent developer you'll need to fire him. Not to relocate him, neither to put him on that team that is doing well (so it won't create delays), but fire him. Alternatively, if you have a good developer, you need to keep him and pay him well. Not to create uneeded lay-offs, neither to force him into management (you don't need that amount of managers).

      That is hard to do, and I've never saw a big company that has all of the above factors, nor a small company that keeps all of them for a lot of time. That is probably why most good developers don't stay a lot of time as developers.

  21. There's a reason programmers don't need a degree.. by Anonymous Coward · · Score: 0

    most coding/programming tasks are menial and don't require much creativity. in fact I would say the vast majority of programming work is maintenance type works/simple things that doesn't require that much skill. thats why anyone with a HS diploma can pickup a programming book and learn how to program in a couple of days. i think what makes the difference is the architect of the project--the guy who lays out the foundation of a project. maybe if the task is like writing a 3d engine from scratch you need and uber-programmer but even at game companies (where I've worked before) we just license the engine and even avg programmers can make a cool game.

  22. no inconsistency by Anonymous Coward · · Score: 0

    If there really is such a thing as the über-programmer, who is literally 10 times more efficient than his average [median] colleague, THEN BY ALL MEANS he ought to be paid 10 times as much in salary - maybe even more.

    That's not how free markets work. Most importantly, compensation isn't proportional to value. In addition, there are plenty of inefficiencies in the labor market, including incomplete information, as well as other risks and costs that limit compensation.

    In the presence of perfect information, all you can really say is that a better programmer should get paid more, but it may just be a small amount. In the absence of perfect information, it's impossible even to say that: more skilled or valuable programmers may end up getting paid less than less skilled or valuable ones.

    In fact, I have worked at companies where clearly compensation was inversely related to experience. How do I know? Because the economy was such that starting salaries were rising faster than senior developer salaries. Yet, senior developers stayed because the cost of switching jobs (retirement plan, stock options, etc.) was higher than the difference in compensation.

  23. Amazing people out there by MBCook · · Score: 1

    The people out in the market place can be amazing. We were recently looking for more people, but watching the people come through was kinda fun. We are a small shop, now at 4 programmers. As you can guess, we don't get the high end people applying directly to us like they might to MS or Google or whatever. We have to go find people and attract them. We do get some submissions, but they tend to be.... interesting.

    We have seen... the passable, those who are rediculously overqualified (if you read their resume, but you can tell they are lying about 90% of it), the guy who (as a programmer for 5+ years) didn't know what an array was, the people who's last job shoved them into one tiny area for years and years so they have lost skills outside of that small set (which is often esoteric). We've seen those just out of school that need more experience, and those with great experience who just want too much (salaries the larger companies around would have paid a few years ago when the market was better, but they have no chance with in our company for the position they are being hired for).

    It can be hard to find good people when you aren't a Google or MS.

    --
    Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    1. Re:Amazing people out there by zigamorph · · Score: 1

      and those with great experience who just want too much

      In other words, you're looking for great programmers but are only willing to pay for mediocre?

    2. Re:Amazing people out there by MBCook · · Score: 1

      No. But we were not looking for a senior programmer, someone middling would have been nice. But we had people applying for this job (again, not a high up job) and having them ask for up to 2x what my boss (the department head) makes. Now a small company may not pay as well as a big company, but what these people were looking to be paid compared to the job responsibilities could be really out of whack sometimes.

      They were applying to be the most experienced sales guy at Best Buy and asking for a salary that the full store manager makes.

      They may have deserved that salary in a bigger position, but not for what they were applying for. That wasn't what we were after.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    3. Re:Amazing people out there by tftp · · Score: 1
      "too much" != "mediocre"

      For example, when an average salary was $80K one guy showed up with $200K request. He could be good, but not that good. Besides, putting all eggs in one basket is foolish.

    4. Re:Amazing people out there by Fulcrum+of+Evil · · Score: 1

      They were applying to be the most experienced sales guy at Best Buy and asking for a salary that the full store manager makes.

      Which would be fine. An effective salesguy is worth more than a retail manager.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  24. We all have to start somewhere... by p4rri11iz3r · · Score: 5, Insightful

    As a recently graduated CS student, I find this type of thinking to be incredibly infuriating at times. Companies only want to hire people with experience. Yet to gain this experience, I need a job. The circular logic goes round and round until you have a brain aneurism.

    My college never stressed learning any one language well. Rather, it taught us the tools and techniques we would need to survive in the ever-changing world of software development. Yet none of this seems to count for anything. No past experience with a company? Goodbye. The fact of the matter is, I need to start somewhere. Right now I'm sitting at a job that I feel doesn't tap my abilities, yet I put up with it for the "experience." The number of opportunities for fresh graduates are few and far between, and you have to take what you can get.

    --
    "Now I'm seriously serious!" - Serious Sam
    1. Re:We all have to start somewhere... by Anonymous Coward · · Score: 1, Insightful

      That's why as a student, you want to get an internship.
      The money's not great, but the experience is invaluable.

    2. Re:We all have to start somewhere... by Datasage · · Score: 1

      You don't necessarily need a job to get experience. Freelancing, open source projects, or internships are all good ways to get work experience. Plus it helps you network, which makes it easier to get the really good jobs.

      --
      In America we are imprisoned by our fear of them.
    3. Re:We all have to start somewhere... by Cornelius+the+Great · · Score: 2, Insightful

      Don't let the job listings get you down. The jobs usually listed on Monster, Careerbuilder or (name your favorite job website) usually shoot higher than what they're asking in the descriptions. The job I'm currently at said 5+ years of experience and settled on me with my 2 years (+6 month co-op) because I had a good interview and I knew what I was talking about.

      Also, having your resume public allows recruiters and jobs to find you. My first job out of college (3 years ago) found me. Granted, you may find as a contractor for a few years before you find yourself a permanent job, but you'll get some valuable experience doing those short 6-12 month "gigs".

      Luckily for you, the CS job market seems to be better than when I graduated. I considered myself lucky to have one job offer within weeks of graduation- many of my classmates couldn't find CS jobs within the year. Anyway, good luck!

      --
      Sigs are for losers
    4. Re:We all have to start somewhere... by linguae · · Score: 2, Insightful

      As a recently graduated CS student, I find this type of thinking to be incredibly infuriating at times. Companies only want to hire people with experience. Yet to gain this experience, I need a job. The circular logic goes round and round until you have a brain aneurism.

      There is a way for CS students to gain experience while in school: internships. Apple, Microsoft, Google, and many of the other big companies have summer internship programs. Students can also try to find a small company in their area. Sometimes a professor may have a research project that needs to be implemented during the summer; that counts as development experience, also.

      Yes, it is tough to obtain such internships at times. But this it what it takes to get started on the experience treadmill in industry. If you can't get an internship, try contributing to a open-source project, particularly a high-profile one. Many companies like open source projects, and they will also count this as development experience.

    5. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      The reason I want to hire people with experience is that you are a terrible programmer without experience. It might be tough to hear, but it is true. So, if I hired you, you would cost my company more money than you make in fixing your screw ups. So, I don't hire you. Now, come at me with experience that isn't job experience (ie MAME work or something) and I'll look at you. Not all experience is job experience. So you don't 'need a job' to get experience, you need to program a lot on something that is beyond your 2nd semester web page project that updates a row in a database.

    6. Re:We all have to start somewhere... by Control+Group · · Score: 1

      No, companies only want to hire people who will be worth the money they're going to pay them. That's not the same thing. Granted, experience turns out to be one reasonably good indicator (not infallible, of course) that a given person is capable of doing whatever it is they're experienced with. What you need to do is demonstrate to a prospective employer how you're going to be worth the money you're making, no more, no less.

      After all, companies aren't in the business of bringing along promising youths into stellar careers, they're in the business of building widgets (or servicing widgets, or accepting contracts for the outsourced maintenance of widgets, or whatever) in the interests of making money. Demanding they do something else in the interests of being fair to you is useless at best, and counterproductive at worst.

      You need to find a company who's willing to take a flier on someone whom they've got no reason to believe is capable of doing the job they need done. Part of that is demonstrating that you can, in fact, hold down a job and get done what you're assigned to do. Whether or not it's experience in the specific technology you're interested in less important than whether you can get people to serve as good references for you when you decide to move on.

      And then, in fifteen years' time, after you've had your good job for a while, you'll be on the other side of the fence: tired of shepherding ignorant new grads who are convinced they're hot shit, but who don't know thing one about whatever it is that you actually need done. Better yet, you can get laid off in favor of a cheap college grad, and then complain on slashdot about how your employer doesn't respect the skills and talents your experience gives you...

      --

      Reality has a conservative bias: it conserves mass, energy, momentum...
    7. Re:We all have to start somewhere... by mveloso · · Score: 4, Insightful

      Your tools and techniques are probably bad, especially if you learned them in school. Do you know how to:

      * use source control?
      * analyze someone else's code (multiple people's code), figure out what it's doing, and map that to what it's supposed to be doing?
      * can you understand the bug at all (what is is supposed to be doing)?
      * can you figure out how to verify that your fix actually worked?
      * do you understand how to configure and use the product you're working on?
      * explain what you're about to do, and justify why it should be done like that?
      * be focused enough to fix one (1) bug, and not go off and rewrite a whole lot of stuff that looks like cr*p?
      * not break the build?

      In real life, doing architecture and writing stuff from scratch rarely happens...but that's all they teach you in school. In real life, you're working on some big pile of code that you're stuck with, can't change, and don't understand. You can fix #3, but usually #1 and #2 are immutable...until the magical day when they need a new feature (hey, we need to redo a whole chunk of that thing to get the new feature to work).

      Do you need experience? Write something. Nothing sells your coding skills like code. The downside is that people will be able to see how your code is. If the programmers in your target company are good, they'll be able tell the difference between someone who's new and someone who just sucks. If they aren't so great, then your code is still a plus, because they won't know how bad it is.

    8. Re:We all have to start somewhere... by Rakishi · · Score: 1

      Repeat after me. CS is not programming. College isn't there to spoon feed you everything, you need to learn things on your own. You apparently can't program. Oh sure you know things about programming but in the end you can't program. Welcome to reality, you don't know the practices or the libraries or the methods used in the real world.

      If you want to be a programmer then you need all that knowledge which in many cases only experience can bring. Now if you learn on your own, talk to people, read books, code things on your own time and look at lots of code then you don't need as much experience to teach you it all.

      If you don't want to be a "programmer" in that strict sense then that's fine as well. That's why graduate degrees and non-production coding CS jobs exist. However if you want your code to go into actual software used by others then you need to bite the bullet and get the experience. More importantly you need to LEARN from that experience and understand why tis valuable beyond being a lien on your resume.

    9. Re:We all have to start somewhere... by MBCook · · Score: 1

      No kidding. I graduated a little over a year ago, and will have had my job for a year later this month. I had a hard time even getting an interview at anywhere that had positions that even began to interest me. There was tons of stuff I would love to do but wasn't qualified for. Everything else seemed like the lowest level of grunt work available. There had to be something a little above that. I got some interviews that went really well, and even got callbacks, but in the end I lost the positions to people more qualified.

      Getting in is tough. In the end I interviewed with a small company that had a job that seemed just fine (but not my really interesting to me). But because it's small I like the atmosphere, and I ended up getting lots of experience on lots of things. At this point (do to my work, company growth, and other personnel changes, not necessarily in that order) I have far more responsibility that I thought I would at this point and I'm really enjoying my job and working on things that are far more interesting that I thought I would.

      While I still don't have that 5 years of professional whatever experience, I'm in a much better position now should I have to go look for a job again.

      But getting my foot in the door of my first job was very though. I figured I'd have to end up working some dinky little job that I wouldn't like doing work anyone who managed to get a CS degree should be able to do until I got that experience and could get a "good" job, but things worked out pretty well.

      Good luck. Maybe if you find a small company that is wiling to overlook that if you can demonstrate your skills some (the fact I had a senior project REALLY helped me) you'll have an easier time. Many big companies have so many options that getting in could be really tough.

      --
      Comment forecast: Bits of genius surrounded by a sea of mediocrity.
    10. Re:We all have to start somewhere... by scribblej · · Score: 4, Insightful

      As a recently graduated CS student, I find this type of thinking to be incredibly infuriating at times. Companies only want to hire people with experience. Yet to gain this experience, I need a job. The circular logic goes round and round until you have a brain aneurism.

      As someone with experience I'd just like to suggest that maybe they aren't stuck in a logical loop. Maybe you aren't the person they want, they want someone with experience.

      Here's an idea: As a computer programmer, you are in a unique position to make your own experience. I got started in "the business" by developing a totally crappy (seriously, I'm ashamed) graphing calculator for the HPC. I have an HPC, I needed a graphing calculator, and I'm cheap, so I really wrote it for myself. Then I put it up on the web and people liked it, so that became the first point on what is now a long programming resume.

      My point is, you don't have to get hired by anyone to get experience. If you don't have an idea or an itch to scratch of your own, pitch in on some open-source projects.

      When I am hiring junior programmers, the guy who is fresh out of school I'm going to overlook. The guy who's fresh out of school AND has some projects of his own he's worked on is EXACTLY the guy I want, though -- not only do I know he's knowledgable and capable, I also know he's a self-starter who's not going to wait around and whine and bitch that no one is giving him an opportunity. The opportunities are out there, you can't wait for someone to give them to you... you have to go take them.

      Seriously, go *do* something. It'll take your mind off being out of a job and if you do it right it will be the thing that gets you a job. It's win-win.

    11. Re:We all have to start somewhere... by scribblej · · Score: 1

      yes, I'm guilty of nto reading your post carefull enough. I hope my advice can help someone else. Or maybe you'll decide to put together your own "experience" in the evenings/weekends away from your job (assuming you didn't accept some contract that makes every bit of coding you do belong to them regardless of scope... lots of kids get suckered into signing that one).

    12. Re:We all have to start somewhere... by Svet-Am · · Score: 1

      and how exactly do you suggest that these recent grads pay the bills, afford food, etc. while they're "making their own experience?" they're certainly not going to get hired at Wal-Mart or Target as a make-ends-meet job because now that they've got a college degree, they're going to get passed over as over-qualified and down the road, the programming company they really want to work for is going to wonder what the hell they were doing working at Wal-Mart with a CS degree.

      --
      [move .sig! for great justice, take off every .sig!]
    13. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      Freelance work. There's tons of it out there, and it pays utter crap, but if you really want to gain experience, then work your day job and do freelance work at night.

      There's also the art of getting a job on top of all of this. As others have mentioned, HR generally sucks really bad at hiring good technology anything positions. You need to network and let someone who has knowledge of your field and influence in the hiring process (i.e. the IT department manager, or his go-to guy, etc.). That's how you get into the good positions, show someone who matters that you have what it takes. The guy reading that application the very first time is generally NOT someone who is going to know jack squat about why you should be hired even though you don't have 20 years experience.

    14. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      Don't feel bad - I went thru the same shit. I started out in QA (testing software) - I absorbed all I could and moved on to another job doing real development - solving challenging problems. Now 2.5 years out of school I make 82K + bonus in a leading financial corp.

      Just hang in there, absorb all you can and keep your knife (skills) sharp.

      I suggest you spend some of your own time learning J2EE/.net. It might be boring boilerplate stuff, but that kind of stuff bring home the beacon.

    15. Re:We all have to start somewhere... by SETIGuy · · Score: 1

      As a recently graduated CS student, I find this type of thinking to be incredibly infuriating at times. Companies only want to hire people with experience. Yet to gain this experience, I need a job. The circular logic goes round and round until you have a brain aneurism.
      Don't forget that they are also looking for 10 years of experience with a tech that has only existed for 3 years. They also don't want anyone older than 40, because someone that old wouldn't know about new shit and might want to get paid more than ten cents on the dollar.

      Your best bet, and possibly your only bet, is networking. Find a friend who graduated two years ago ask what might be available at their company. Sending in a resume for an advertised position almost never works. Knowing someone on the inside does.

      If that doesn't work you can always move to India and work at a call center.

    16. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      Don't like it? Quit your job and start working for yourself, not somebody else ... 10 Reasons You Should Never Get a Job.

    17. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      I know some people that became frustrated with that cycle (having talent yet not
      able to get a decent job due to lack of "experience years") and setup several
      company websites (made sure the domain purchaser was anonymous of course), making
      sure they get the look'n'feel of the site correct. All the essential links like
      products, services, about us, even a careers section in the about us page. The contact
      page is populated by a mail drop address and a redirected tel and fax number.

      A few of these websites later, a resume stating you've worked at these places and most
      people are in the door with an offer. Mind you its not the most honest thing to do,
      but if you get stuck in that cycle, or are trying to get out of a bad work environment
      where you know your supervisor will probably give you a bad reference out of spite
      then sometimes it does seem like the only way to go. The only thing you should be
      weary of is that you need to show the skills you represent.

    18. Re:We all have to start somewhere... by Bluesman · · Score: 1

      Paying for food and housing is an orthogonal problem to getting a job in software development.

      Obviously, by virtue of the fact that this grad is posting to Slashdot, we can conclude he's alive and has a computer, so he has living expenses taken care of somehow. The guy's obviously not working 24 hours a day. In his free time, he could develop his own software. How he pays the bills in the meantime is irrelevant to the question of how will he become more employable in the software development field.

      --
      If moderation could change anything, it would be illegal.
    19. Re:We all have to start somewhere... by Bluesman · · Score: 1

      I wish I were you. If you're just out of school and are single, there's no reason not to start your own company. You can live on Ramen if you want to, you have no wife, kids, or anyone depending on you for anything.

      If you fail, you'll be no worse off than when you started, and you'll have that experience you need.

      --
      If moderation could change anything, it would be illegal.
    20. Re:We all have to start somewhere... by Travoltus · · Score: 1

      You need to find a company who's willing to take a flier on someone whom they've got no reason to believe is capable of doing the job they need done. Part of that is demonstrating that you can, in fact, hold down a job and get done what you're assigned to do. Whether or not it's experience in the specific technology you're interested in less important than whether you can get people to serve as good references for you when you decide to move on.

      That mentality is why fresh pools of uber programmers are now so hard to find.

      New programmers can't easily find companies willing to "take a flier on someone whom they've got no reason to believe is capable of doing the job they need done" (translation: someone with years and years of experience). New programmers thus don't get the job experience that shapes them into tres uber programmers. And this is why you have to put up with BSOD in Windows.

      Of course they could hire Linux programmers who are known for better quality software, but why pay them much? I mean they do it now for free.

      No, really, they should be paid a king's ransom, but a corporation looks at a Linux coder and says "You have no paid experience and you've been doing this for free. Why should we pay you much more than minimum wage yet we have 2500 other resumes here from other experienced free coders who will take the scraps we throw at them?"
      --
      --- Grow a pair, liberals... stop letting the Republicans bully you!
    21. Re:We all have to start somewhere... by symbolic · · Score: 1

      I'm inclined to believe that your approach also tends to separate those who are merely in it for the paycheck, from those who are in it because they love doing it.

    22. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      Hahahahaha!!

                When I was in college, in fact, there were no classes involving debugging existing code, source control, etc... But I did get experience.. one professor had an "OS Simulator" for an Advanced Operating Systems class. That thing was a piece! Basically piles and piles of Java code written over 6 or 8 years by successive years of students, usually late at night and near deadline. The two things I remember... there was an important variable called "JobbyJob" so it'd be "new Job JobbyJob=" and the comment on some code that was like "This works, but I don't know how.. I wrote it when I was drunk."

                I have asked, the professor retired, so people now are not having to deal with 15 years of accumulated code 8-).

    23. Re:We all have to start somewhere... by syousef · · Score: 1

      Funnily enough I learnt all you mentioned - from the source control to analysis of other people's code - in a University at Bachelor's level almost 10 years ago now. I didn't learn it _all_ formally but I did learn most of it in the process of doing my coursework.

      I think it depends on the university and the course.

      --
      These posts express my own personal views, not those of my employer
    24. Re:We all have to start somewhere... by JNighthawk · · Score: 1

      As everyone else mentioned, intern.

      Now here's my own advice: be good at what you do. I got hired straight out of school making good money at a good company working on great stuff. Work on side projects. Choose a specialty. Hone your skills.

      Yes, the circular logic *sucks,* but try harder. Sometimes you succeed, sometimes you don't.

      --
      Wheel in the sky keeps on turnin'.
    25. Re:We all have to start somewhere... by ciggieposeur · · Score: 1

      "You have no paid experience and you've been doing this for free. Why should we pay you much more than minimum wage yet we have 2500 other resumes here from other experienced free coders who will take the scraps we throw at them?"

      Really? Where have you heard this?

      I find in my circles that my Linux experience is a huge plus. Currently I do research on large clustered "supercomputers" and routinely write little snippets to transform data as I need to; before this was an embedded system running Linux; before that I was the main Linux person on a Java J2EE team who ensured that the product would actually run on customer's large systems (it's amazing how many Windows/Mac developers write code that breaks on case-sensitive filesystems).

    26. Re:We all have to start somewhere... by Travoltus · · Score: 1

      I fired half an HR department almost 16 years ago who was doing that: the half that was doing the tech hiring.

      The problem I then encountered was, I needed tech savvy people to do HR. I even asked my existing staff to take time off to moonlight as interviewers and gatewayers. Good luck with that - all the tech people were hired out of the market and all there was to hire were the ten thousand rank newbs who sent in resumes.

      On a side note, that means employers aren't seeing a dearth of employees - they're seeing a dearth of qualified people willing to do the job they want. In my case, it was a lack of experienced network admins, programmers and such, that would be willing to be hired on or do 4 hours a day once in a while as part time hiring managers.

      A combination of hiring rank newbs and (forcibly) drafting 1 or 2 employees over to be HR people for the day, plugged the holes; now they're more comfortable with rotating. We have a full time HR staff that has nothing to do with hiring techies, but they manage the HR stuff and they interview/gateway financial reps applicants (which is more their forte).

      --
      --- Grow a pair, liberals... stop letting the Republicans bully you!
    27. Re:We all have to start somewhere... by Urzumph · · Score: 1

      Wow, if you can graduate without doing all the things on that list at least a couple of times you must have gone to a pretty terrible school.

      I am a final year IT student and I can name at least 2 *compulsory* courses for every bullet point above.

    28. Re:We all have to start somewhere... by prockcore · · Score: 1

      Freelancing, open source projects, or internships are all good ways to get work experience.


      Exactly. I can't imagine a programmer, even one still in college, who doesn't program pet projects in his own time.

      If you aren't writing code for fun on the weekends, you're not the type of person I want to work with.
    29. Re:We all have to start somewhere... by SLOGEN · · Score: 1

      Your tools and techniques are probably bad, especially if you learned them in school.


      That's rather a blanket statement.

      I learned many usefull techniques at school, and they are usefull even if *other* things are also usefull.

      I don't think any of the things i learned had a negative impact on any of the items in your list. Some were even helpfull.
      --
      SLOGEN [ http://ungdomshus.nu : Sebastian cover music]
    30. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      Java has only really been publically available for about 12 years now. So I think what you're saying about "15 years of accumulated code" written in Java is pure bullshit.

    31. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      Everyone does have to start somewhere. However, as I've interviewed kids just out of college, they expect to get salaries of seasoned programmers who've been on the job for years. I interviewed one programmer just out of school who turned down the job for a $5k a year difference in salary. What he doesn't know, is that if we hired him and he performed well, he would've made up the salary difference in a year. We are a small company right now and can't afford to hire unseasoned programmers at higher salaries.

      As an employer of programmers, there is NO WAY to tell in an interview if a recent college graduate will be worth his salary or not, especially with no work experience. My advice is to take a job in the field to get experience, and don't let pay be a hinderance. If you do well and don't get a salary bump, then go somewhere else. Then you'll actually have some real experience to put on your resume.

    32. Re:We all have to start somewhere... by DavidHumus · · Score: 1

      The flip side of this is when you're an old guy like me and have too much experience: then it's just hard to get paid enough.

    33. Re:We all have to start somewhere... by Maximum+Prophet · · Score: 1

      Shortly after graduation, I sent my resume to several local companies. One of the hiring managers called a few days later and said, "I want to hire you."

      What was on my resume that made him call me? I had held several jobs while in High School, and College, and had written several programs for real money. The manger was calling from a database company, and I had written a database management system for the Amiga home computer, and had sold a few copies.

      If you have real experience, or anything that approximates it, make sure it's on your resume. I was interviewing one student, who had told me about some volunteer programming work he had done, and received school credit for, but it wasn't on his resume. He asked me how to get experience, and I told him, "You have it, document it".

      One other piece of advise. If you list a volunteer project on your resume, include results. Don't just write "Wrote attendance records database for local church.", write "Wrote attendance records database for local church, reducing the time needed to compile records from 20 hours to 30 minutes." Results are important and stand out.

      --
      All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
    34. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      Work for a small company and you'll get to do a lot more new projects and architecture. I work on brand-new stuff all the time.

    35. Re:We all have to start somewhere... by microbox · · Score: 1
      I agree with much of what you said except...

      Your tools and techniques are probably bad, especially if you learned them in school.

      I often wish that the people I worked with actually learnt something at school. They can do everything on your "uber"-list, however, the people on my project do not understand:
      • Any form on concurrency - threading or record locking
      • get confused by the notion of "encoding" - I tried to stop my team leader from pumping a binary file (in binary) into the CDATA section of an Xml document
      • have no understanding of data structures and algorithms - often storing data in delimited strings to pass to methods
      • do not know any design patterns - not even the singleton
      • do not learn new language features such as generics
      • do not understand how to manage resources or clean up after themselves
      • boiler-plate comment instead of using comments to actually describe the logic and reasoning of the code
      • writing complex code with unnecessary configuration options

      Don't get me wrong - they're a great bunch of people, and very good at the things you listed - my grip is that they don't understand what I consider to be the "important-stuff" when it comes to actually writing computer programs.

      The truth is that most of your "uber"-list can be learned by doing, however, writing concurrent programs requires *theory* and experience. Using data structures and algorithms correctly means understanding *theory*. Coming up with elegant and simple solutions means understanding how to make your language squeak, which means lots of practise experimenting with and learning different techniques - and understanding what you're doing.

      In real life, doing architecture and writing stuff from scratch rarely happens...but that's all they teach you in school. In real life, you're working on some big pile of code that you're stuck with, can't change, and don't understand. You can fix #3, but usually #1 and #2 are immutable...until the magical day when they need a new feature (hey, we need to redo a whole chunk of that thing to get the new feature to work).

      Working well with an existing code-base is one of two things that I feel wasn't properly taught at my university. (The other is some rudimentary design patterns.)

      That being said - I work with people who cruised through university, and now they cruise through their job. Mediocrity is highly acceptable.
      --

      Like all pain, suffering is a signal that something isn't right
    36. Re:We all have to start somewhere... by zarqman · · Score: 1

      let me throw a few things out. most people have no clue what managers are looking for when they go to hire. i didn't either until i became a manager myself.

      here in the states (and many other countries from what i've heard) it's really hard to fire people--even people who are terrible at their jobs. so managers are looking for confidence that you can actually do what they need. you need to convince them you can do the work. how you convince them of that really doesn't matter.

      needs vary too--most of those needs require someone who has experience. but don't lose heart, many managers are also not given the resources to hire people with sufficient experience. today's tech job market is pretty good and this makes it all the harder.

      it's the first two years that are the toughest. managers want at least two years of experience, preferably in the same job. some make noise for five years, but most of the time they'll settle for as little as two anyway. staying at the same job matters because managers don't want to go through the hiring again. if you can't stay somewhere for a while, you're not likely to stay put with them. field doesn't matter for this, though. any way you can demonstrate some capacity to stick with things is good. this is also one of the reasons college degrees are wanted: it represents four (or more!) years of tackling one goal.

      it's really hard to show a manager that you are able to write code--even when changing jobs. most code is private and shouldn't be shared with someone other than whom it was written for. for me at least, had someone come in and shown me code from a previous job without permission to do so, i would have assumed they'd share anything they wrote for me to someone else and that'd be a strike against them.

      so, contribute to an open source project. start your own. do something where you can show what you can do. even if it's not great (and it may not be straight out of school -- as others have noted, writing code for school and for an employer are fairly different) the hiring manager will know what they are getting. often this becomes an asset for you, even over more experience if the more experienced candidate(s) can't prove what they've done.

      if you're confident of your own abilities, take contract-to-hire gigs or even offer that to the potential employer. again, you goal is to minimize risk for the potential employer. you'll do that differently fresh out of school then you will in a couple years with more experience to back your resume/claims up.

      resumes are a whole different game. find some managers who actually hire people and get them to review your resume and tell you how it strikes them. don't trust the folks at your university who help with resumes. sometimes they're sharp folks--other times they produce the most dreadful resumes ever.

      get written references from anybody you've done related work for in the past. do a pro-bono project for a non-profit to get one if necessary. include them with your resume -- this will stand out (if it's a good reference of course).

      you might even consider including code samples when emailing a resume -- or at least put them on a website and include a note about it in your cover letter. if it's a web programming job, point to a working demo of your code too. or downloadable code if that's relevant and possible.

      find outfits that are notorious for lousy salaries but who still have big needs. often these are places with entry level (or worse) salaries for experienced positions. non-profits are good for this. work for them for a couple of years. you may get a chance to do much more than you'd get to elsewhere. it can be a great chance to build a resume.

      always tailor your cover letter to the position. if you're applying to more than one type of job, keep a different resume on hand for each job or focus.

      if you feel underutilized at work, use that mental energy to do your own project at home on your own time. for me at least, i give high preference to candidates with perso

      --
      geek friendly VPS's and free API enabled DNS : zerigo.com
    37. Re:We all have to start somewhere... by Anonymous Coward · · Score: 0

      You went to the wrong school if that's all they taught you. The place I went didn't just teach me how to do things, but rather to understand them.

    38. Re:We all have to start somewhere... by Shadowlore · · Score: 1

      Experience is more than ability churn out code of a given quality. It is about *knowing* things. For example, you feel your job doesn't "tap your abilities", so you are just phoning it in. This is precisely why you need to deal with "lower" jobs. First, I am certain that your opinion of your abilities is well above your actual abilities. This is one of the things taught by "experience". We all just learned that you will phone it in. That's something that a good employer doesn't want.

      In theory there is no difference between theory and practice. In reality there is.

      Further, how you work is also something you will only learn by experience. From phoning it in to how you handle a sudden pressure change, a sudden deadline shift, or an unexpected change in priorities or demands. These are not things the world of academia teaches. What we need is a master-apprentice system. What we get is this farce of college. Sure you learn valuable theory and rules, but you have no idea what really works in the real world, or how to deal with things that are not pristine. In the real world all things are not equal, friction exists, and time has meaning and value.

      Your time to get "experience" was before graduation. From volunteer work to internships, you should have sought the opportunities out. It demonstrates dedication, focus, and discipline in addition to "experience".

      The fact that you think "experience" means "hours put in at a job" proves that you are not worthy of the higher responsibility (and paying) jobs. Your degree quite frankly doesn't mean spit when the code hits the compiler. Programming is about more than "assembling API calls". Experience teaches you intuition. It's like the difference between spending a year getting a black belt, and someone who has been doing the same discipline for 3,5, or 10 years without getting a belt. Go up against one of them and you'll find yourself staring at the sky as they walk off. Experience teaches you when not to do things like that.

      Experience for companies also means the ability to put up with the crap we have to put up with in companies. Most academia coddles you - even if you don't think it did. One day you'll look back and realize that. You will realize that you didn't know what you thought you did. And when putting together the request for a position, you'll list experience as a requirement.

      --
      My Suburban burns less gasoline than your Prius.
    39. Re:We all have to start somewhere... by mati · · Score: 1

      I worked on the same platform in school (NachOS). It was originally in C++, then moved or branched to Java, so it is possible that the code is that ancient (although I imagine the OP was just exaggurating for rhetorical effect).

      I learned more about reading, understanding, debugging, and extending real-life code in that class than any other; learning operating system fundamentals was just an added bonus. Unfortunately I took a compilers course using Haskell the next term, forever impairing my ability to enjoy working in Java.

    40. Re:We all have to start somewhere... by Mathonwy · · Score: 1

      As someone who has been in that exact same situation, let me share my findings:

      I went through college wanting to get into computer game programming. Unfortunately, writing computer games is like most entertainment media: Everyone thinks "I like playing games - therefore, writing them must be fun!" And so the field is crowded and difficult to get into. Nearly every job posting asked for a minimum of 2 years of experience, or 1-2 shipped titles under your belt. I know EXACTLY what you're going through.

      Also, much like you, I ended up settling for a crappy job that didn't fully tap my abilities. (QA, in my case, which, in spite of what you've heard, is NOT a good way to get your foot in the door as a programmer.) (Although as a side observation, it is a good way if you want to be a producer...)

      During my boring lunch breaks, I eventually started writing a game of my own. Later, after my contract ran out, and I was sitting around thinking "huh, now what", I decided, hey! Since I have this free time, I might as well keep working on my game. I keep saying I want to be a game programmer... what's stopping me? It wasn't always easy convincing myself to sit and program instead of going out and having some fun while unemployed, but I put in a lot of time and got it polished up. I "finished" it, and got it to a point where I was happy with it. Sure, I cringe at parts of it, when I look back at it today. But if nothing else, it's a fairly complicated piece of code, that is fairly fun to play in places.

      BEST DECISION I EVER MADE.

      That code got me my first break. I was able to go into interviews, and say "Oh, and check out this sample game I made." That little game I put together over the course of a few months did more to sell me in interviews than hours of keyword matching. The main questions they asked when I got the job, in fact, were "are you sure you wrote ALL of this? You didn't copy large portions of it from a book, or a website, or maybe work on it as part of a team?"

      I've had some time to think about it, and I've realized the reason it worked so well: When you just have a resume and cover letter, the HR people can deal with it without even blinking. They're trained to wade through paperwork like that. But when you have some code, some example of "here is what I am capable of", then it is no longer something that HR can evaluate as easily. So they are more likely to send it on to the people who CAN evaluate it - the engineers that you're trying to join. And they're much more likely to be interested in what you can do than what's on your resume.

      So - Advice: If you're feeling stuck in the "I can't get experience without a job, and I can't get a job without experience" trap... Try writing something on your own. Spend some real time on making it nice, and make sure it's something significant enough to be noteworthy (i. e. more than just something you hacked together in a weekend) and start submitting it as a work sample with your applications. If you get called in to an interview, make sure you bring a copy along, preferably on a laptop, so you don't have to go through the trouble of setting it up on someone else's machine. Also, bring some source code along (that you've gone over to make sure is presentable) that you can show off, if they want to see how readable your code is. Make it relevant to your field, and run with it.

      You might be surprised at what happens next. Because anyone can claim "yes, I'm an awesome programmer, and you should hire me even though I have no experience to prove it." But it's a lot harder to write you off when you have some evidence of your competence sitting right there in front of them.

      Good luck!

  25. I Thought.... by JamesRose · · Score: 2, Insightful

    Everyone knew that programmers are unique. Each programmer has his own style and own way of solving problems- which invariably have several solutions. As a result, if you hire lots of people working on the same thing, unless they are experienced as working as a team with the particular people they are working with, there will be lots of translation problems and it'll take a long time to get that understanding. If you hire a few people and they work closely together they can work as a team, understand each other, and over time develop understanding.

  26. Re:hireing more people is better then over working by chicagotypewriter · · Score: 2, Interesting

    Your comparison seems to be of people of the same level. Two new grads vs. one new grad, or two seniors vs. one senior. To change your original scenario, would you rather hire two recent grads at $50k, or one senior level worker at $125k? It is $25k cheaper to hire two recent grads...but when you put them together, do you get the quality of a senior level worker with say 8 years of experience? Probably not. The one senior level guy might work 50 hours a week, but he probably does more than two recent grads 3 months out of college working 40 hours.

    Then again, I didn't RTFA, just other comments.

  27. Ask the Yankees if this works. by Anonymous Coward · · Score: 1, Interesting

    The New York Yankees have the highest payroll in baseball by far. $195,229,045 according to ESPN. $52,105,331 more than second place (Boston) and $112,176,945 higher than average. Yet their current record is 62-50, 6.5 games back from Boston. Even the lowly Arizona Diamondbacks have a better record of 63-50 with a payroll of only $52,067,546.

    Baseball and programming might not be exactly alike. But look at it this way: The most "talented" individuals in baseball get the most money - yet all that talent pooled doesn't result in the super team that this guy is dreaming about. In baseball, it's fairly easy to measure past performance. Stats up the wazoo, in addition to recordings of their job performance that are easily available. But programmers aren't that way at all. Even if you try your best, filter like crazy, do interview after interview after interview, test after test, you may be getting a complete dud - shows up to work day #1 drunk and starts to watch graphic pr0n.

    HR could work from now until the end of time trying to find the perfect fit. They could spend a billion dollars per employee trying to find the best. But that's still no guarantee that you'll get what you're looking for. Usually, you can't know the quality of the service until at least the start of when it's being rendered - and often times not until many years later.

    1. Re:Ask the Yankees if this works. by ErikZ · · Score: 1

      Or maybe the cost of living in NY is higher. So they have to pay their players more if they actually want them living anywhere near the field.

      --
      Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
    2. Re:Ask the Yankees if this works. by Anonymous Coward · · Score: 0

      The Yankees have gone to six of the last ten World Series, and won four.

  28. It's the colleges by kellyb9 · · Score: 1

    The reason good programmers are so hard to come by is because colleges aren't really putting out good programmers. In the past, colleges were much more concerned with teaching the elements of one particular language, and then allowing you to transition between different languages. Nowadays, schools don't want to teach one particular language for fear of their students being labeled and losing opportunities because they went to a "Java" or a "C++" school. When I went to school (which I only graduated a few months ago), the professors refused to go in depth about any particular language so, in essence, we learned overall generalization about programming, data structures, algorithms, etc., but we never really learned any one language thoroughly. Many of my friends from other schools experienced the exact same thing.

    1. Re:It's the colleges by donpeyote · · Score: 1

      all you need is basics, good basics get you everywhere, and Will to learn even more, and have luck with 1st jobs, someone good beside you and teach those best practices you dont learn in school, will make miracles, if you got thrown into the dogs, not knowing well what you are doing thats not going to be good. sometimes companies say we'll need 10 for this project and then, they hire you to make those 10, just to get more money from the costumer...it will be bad for you, the company and the client...i thk 1st jobs are very important english isnt my mother language sorry for any mistakes ;)

      --
      sorry for eventual bad english, not my mother language
  29. Want some cheese? by DerekLyons · · Score: 0, Flamebait

    The article would be interesting it if weren't an extended whine about how programmers should be paid more and treated like prima donnas.

  30. the secret to cheap programming by mozkill · · Score: 1

    When someone truly figures out how to take a group of beginning programmers and make them able to create something that a complex single programmer could create, then that will be the end of high paying jobs for computer science. At that point, programming jobs will be kinda like jobs at Taco Bell.

    --

    -- Betting on the survival of the media industry is a serious risk. I advise investing elsewhere.
    1. Re:the secret to cheap programming by heli_flyer · · Score: 1

      When someone truly figures out how to take a group of beginning artists and make them able to create something like a masterpiece, then that will be the end of high paying jobs for artists. At that point, art jobs will be kinda like jobs at Taco Bell.

    2. Re:the secret to cheap programming by mozkill · · Score: 1

      good point but there is a difference between programming "artistically" verses programming "procedurally". i think that if a complex problem is just a bunch of procedures that it would be possible for a group of persons to create something more complicated than a single person ever could create.

      the main difference is that artists solve a problem (or show an idea) by the quickest method possible; so quick a method in fact that we might call them a "magician" or "genius".

      on the other hand, problems or ideas can also be discovered using brute force and a massive number of persons.

      what i mean is that it is possible that 10 average intelligent persons working independently could accidentally discover something that a genius could figure out on their own. statistically, this could be probable enough to make it affordable.

      --

      -- Betting on the survival of the media industry is a serious risk. I advise investing elsewhere.
  31. Isn't this called... by mshurpik · · Score: 2, Insightful

    ...the mythical man-month?

    >why should companies favor hiring fewer more senior developers rather than many junior ones?

    *swish*

  32. Re:hireing more people is better then over working by Blobule · · Score: 1

    Hiring 1 person that works 40 hrs/week is better than hiring 5 people that work 40 hrs/week and produce the same results.

  33. Re:hireing more people is better then over working by poohneat · · Score: 1

    Actually Hiring two people who enjoy development and do work well is way better than having 10 non interested developers.
    // i thinks

  34. How do you tell the difference??? by EmbeddedJanitor · · Score: 5, Insightful
    While many people have an intuitive feeling as to what constitues a Good Programmer from a Bad Programmer, there are very few quantitative measures. Bad software does not look vastly different from Good Software.

    By some estimates, Good Programmers can be a factor of ten or more productive than Bad Programmers, yet they are seldom paid more than a few tens of % higher. It would be far better for most companies to pay double the going salary to attract only the best, but unfortunately business thinking does not seem to be structured that way.

    Most organisations base their planning on some convenient notions like programmer-months etc, using some standardised measure for programmer capability. These measures are great because they make the spreadsheets look neat and tidy. They also make all the outsourcing logic work: "I can get programmers in country xxx for $10 per hour". Untimately they are flawed because you get what you measure. If you don't pay a premium for good programmers you won't get them. You end up spending mucch more on crappy programmers.

    --
    Engineering is the art of compromise.
    1. Re:How do you tell the difference??? by Anonymous Coward · · Score: 0

      Good Programmers can be a factor of ten or more productive than Bad Programmers, yet they are seldom paid more than a few tens of % higher. It would be far better for most companies to pay double the going salary to attract only the best, but unfortunately business thinking does not seem to be structured that way.

      Of course not. Actually paying a person based on their value to the company would be against everything that capitalism stands for, that is, producing high-priced goods using the least amount of input cost possible. Same goes for the goods... price has nothing to do with value.

    2. Re:How do you tell the difference??? by BShive · · Score: 4, Insightful

      Yeah, being able to tell which programmers are the good/great/uber is HARD. It's much easier for companies to go on metrics as above instead of attempting to filter through for the excellent people, or even the most relevant person for the position.
      Compounding that, it's rare that a coder will admit to being subpar. Chances are even if you're dailywtf material they think they are great programmers! I've been doing code in one form or another for over a fifteen years and consider myself pretty good, great sometimes. I've worked with one uber programmer in my entire career (John Kichury of SGI), maybe 2 or 3 others that came close, but have met many that act and talk like they are. Following on their projects always has a common thread of being overly clever, loosely documented and hard to maintain.

    3. Re:How do you tell the difference??? by turbidostato · · Score: 4, Insightful

      "It would be far better for most companies to pay double the going salary to attract only the best"

      1) Everybody knows that some horses run faster than anothers. The problem, my friend, is telling appart *which* one will run fastest this evening's race.

      2) Do you really think that by paying double bad programmers will be repeled and won't try to apply for your job offer?

    4. Re:How do you tell the difference??? by nelsonal · · Score: 2, Interesting

      My field is finance where you have the same problems (it's very difficult to tell the excellent from the good (and even sometimes the average). One tool used is a very bonus loaded compensation structure. You pay everyone decently well (higher than average but low for the good and excellent) but with the common knowledge that the very good will receive a bonus that is many times their salary (after the race). It's expensive (big banks pay out half of their revenue in employee costs) but they seem to continue to attract and retain (although it bounces from firm to firm pretty regularly).

      The trouble might be that it's more difficult in coding to tell who really won the race, even after the fact.

      --
      Degaussing scares the bad magnetism out of the monitor and fills it with good karma.
    5. Re:How do you tell the difference??? by BeBoxer · · Score: 1

      It would be far better for most companies to pay double the going salary to attract only the best, but unfortunately business thinking does not seem to be structured that way.

      Oh, corporations seem quite comfortable thinking that way when it comes to upper management. And judging by the performance of some 'star' CEO's, methods for distinguishing good CEO's from bad CEO's are just as difficult to find as methods of distinguishing good programmers from bad.

    6. Re:How do you tell the difference??? by eison · · Score: 1

      The problem is, first you say that there is no good way to tell who the better programmers are, then you say you should pay these people who you just admitted you can't readily identify more.
      All that ends up happening if you try it is that the bad programmers make more money too. Paying more simply doesn't ensure quality. If you had a good reliable way to measure it and tell, sure, you could pay those people more. But nothing like that exists.

      --
      is competition good, or is duplication of effort bad?
    7. Re:How do you tell the difference??? by TheLink · · Score: 1

      Actually, the main problem is most companies don't know how to find people who know how to pick the fastest horses :).

      The founders of a good small company might know how to pick the fastest horses, but the company cannot grow AND remain good, if the founders can't find people who can pick good people.

      --
    8. Re:How do you tell the difference??? by turbidostato · · Score: 1

      "Actually, the main problem is most companies don't know how to find people who know how to pick the fastest horses :)."

      No one knows how to consistenly pick the fastest horse; that was my point.

      "the company cannot grow AND remain good, if the founders can't find people who can pick good people."

      Well, I'd say it's just the opposite: no company can grow and remain good if the founders can't maintain it good *even* hiring average people. For a company to grow and still be good, it must rely on good proceses and strategies, not on above average people. It's obvious that the bigger the company, the more "average" its employees will be just by taking the example to the extreme: how a company that hired everybody in the world could be anything but "average"? Now, how a company with 20.000 employees can expect its average employee to be anything but... average? Its strategists *must* understand this and act in consecuence: if a big company relied to be successful on its employees to be excelent, it's obvious it would be doomed; and that explains why most of its structures are in place more to avoid dumb employees to ruin the company than to allow excellent ones to bring the company all their potential. On a side note, the company that managed to find a way to get their brilliant employees the freedom of action to offer their whole potential while somehow tie their dumb ones so they can't be a danger (in the optimal situation to tie them out of the company), would be an immediate and unavoidable success.

    9. Re:How do you tell the difference??? by l0b0 · · Score: 1

      2) Do you really think that by paying double bad programmers will be repeled and won't try to apply for your job offer?

      How about this: You only need a good programmer, but advertise two jobs, "Developer" and "Senior developer". The jobs have the same description, but different salary. Then generalize from the applicants: Those who applied to both are probably applying for tons of jobs, since they didn't realize the jobs were identical, or are willing to work for less since they deep down realize that they are not wizards.

    10. Re:How do you tell the difference??? by gbjbaanb · · Score: 1

      In fact, I'd say the programmer who thinks he's the best is most likely to be the worst. The programmer who will say he doesn't know is most likely to be the best. They say ignorance is bliss, the more you know the more you realise there is even more to learn.

    11. Re:How do you tell the difference??? by Tesen · · Score: 1

      What is a good programmer?

      1) A person that is willing to learn, work to improve their code.

      2) A person that is capable of learning; i.e. their knowledge of the business they are working for increases as their time at said business increases. I.e. an "Expert" programmer may be able to walk into a business, understand all the code they put before him/her, but that does not mean they are going to be productive at said business until they understand the business processes of that business.

      3) A person that is capable of learning from their mistakes, is able to determine what weaknesses they have in their field and a) improve their skills in that area b) prioritize their project, giving themselves a little more time on that specific area to get development done.

      An expert that can tell you exactly what is going on in a compiler, or write obfuscated code in a particular language is useless if they cannot understand your business practices and cannot work with other more junior programmers. If you're an "expert" and my junior programmers can't learn from you, then you're out on your ass, I don't care about hiring elite programmers, I care about hiring a team that can help each other build and grow.

      Any one can learn to use debugging tools, learn how to bench mark their code. There is unit testing applications that help improve the chances of writing bug-free code, that improve productivity and can help reduce testing time. If I were writing an application that controlled a rocket ship heading to Mars, or a nuclear reactor, yes I'll want an expert (I hate the world expert, lets call them a seasoned programmer or specialist) programmer to help write the software, but damn sure if they are a contractor or even internal, they will be training other programmers to maintain the code they have written and instruct them on why they wrote their code in a particular way etc.

      Bottom line is, if you're writing business applications and you have a team environment, having a bunch of junior to mid level programmers with no "specialists" isn't bad. I bet your tophat, that each of those programmers has strengths that others maybe lacking, in a team environment they "help" each other to work through the project and learn from one another.

      I started as a desktop guy, moved into server administration (IMHO, desktop analysts make some of the best sys admins); my education is programming, so a couple years ago I moved back into programming (was not my choice to head into desktop world right off the bat, just needed the cash). I've worked in fortune 500's at energy companies, worked in college environments and worked in manufacturing (where I am still are atm). The different industries has helped me a lot, but more so the different people I've worked with. It all comes down to experience, it all comes down to wanting to learn and improve your craft.

      Tes

    12. Re:How do you tell the difference??? by abhi_beckert · · Score: 1

      If I look around my (fairly small) circle of colleagues & friends who program, I can't find many people who's idea of their own skill-set is inaccurate.

      Maybe I'm just lucky to work with the people I'm around, but certainly your rule doesn't apply in my office.

    13. Re:How do you tell the difference??? by Bloke+down+the+pub · · Score: 1

      Bad software does not look vastly different from Good Software.
      Perhaps not, but terrible software certainly does.
      --
      It's true I tell you, feller at work's next door neighbour read it in the paper.
    14. Re:How do you tell the difference??? by wikinerd · · Score: 1

      what constitues a Good Programmer from a Bad Programmer, there are very few quantitative measures

      Perhaps the problem is that often only a Good Programmer can recognise another Good Programmer. Because few companies have Good Programmers at their disposal, they rely on quantitative measures to evaluate programmers.

    15. Re:How do you tell the difference??? by jgrahn · · Score: 1

      In fact, I'd say the programmer who thinks he's the best is most likely to be the worst. The programmer who will say he doesn't know is most likely to be the best.

      No ... Rather, it's hard for the programmer himself to know how good he is. You can observe things like "I'm better at producing solid code than that guy" or "that guy botched that task which I found simple" or "people seem to trust my abilities" or "I failed to understand the Linux networking code" but you can't get meaningful measurements.

      (You can get meaningless measurements; those are the ones which end up on your CV.)

    16. Re:How do you tell the difference??? by Shadowlore · · Score: 1

      Who says pay them up front? WHat happened to getting raises after demonstrating ability? What happened to looking at a track record?

      I'll tell you what happened: Wall Street and Incorporation. The larger corporations are not about producing a good product so much anymore, as the management is focused so much on what the stock price is. And of course they are, they get paid more for it being higher. It's one of the reasons any company of mine will never sell stock.

      --
      My Suburban burns less gasoline than your Prius.
    17. Re:How do you tell the difference??? by TheLink · · Score: 1

      1) Usually in practice you don't have to pick the fastest horse. You want fast ones, and you don't want lame ones.
      2) If you can't tell which horses are faster even after a few months, you should be doing other stuff.
      3) The trouble is many companies put people who don't know which horses are faster (even after _years_) in charge of horse picking, and Horse Racing.

      "Now, how a company with 20.000 employees can expect its average employee to be anything but... average?"

      You don't need to fill the company with good people. You put the good humans where a good human makes a big difference, and it is critical that you have those where they are.

      The average humans can do other stuff. Just like in the military ;).

      "it must rely on good proceses and strategies, not on above average people"

      While I know you're not saying good processes and strategies are sufficient, and I agree that they are important, whenever I see the process word I just have to say:

      "Many scientists believe given a sufficiently good process you will get AI".

      Corollary:

      "Since we don't have AI yet, our processes aren't sufficiently good and we still need humans to do some work".

      You add good people and you get the good processes for free. Whereas if you just get a good process from a consultant... :p

      --
    18. Re:How do you tell the difference??? by gbjbaanb · · Score: 1

      those are the ones which end up on your CV Lol, like one I had the pleasure of interviewing recently - "an expert in C# involved and using it from its inception in 2001".

      me: "so, just describe a few things about the garbage collector to me"
      expert: "umm. that's dispose isn't it"
    19. Re:How do you tell the difference??? by turbidostato · · Score: 1

      "Who says pay them up front?"

      Do you think you will get "best of breed" by paying substandard on the promise to rise salary afterwards? Best of breed already have a good salary (let's think about the average on their work niche), only not excellent (since we are talking about excellent people you still can hire: people absolutly amazed with their current position and wages are out of the market for practical purpouses). By paying substandards you are *guaranteed* to get substandards, no matter your promises about tomorrow.

  35. What's with perl? by MobyDisk · · Score: 1
    The article starts off language-agnostic:

    Finding good programmers is hard in any language...You don't need to hire an expert in language X, you can and should look for expert programmers that are willing to learn language X. An expert can easily cross over... Then he turns on the PERL advocacy:

    We love Perl and think it's a great language that you graduate to after you have been forced to use less agile languages such as Java, C/C++/C#, etc. Not necessarily a first language you get your feet wet with and then move onto a *cough* "real" language. It is annoying when smart people write an intelligent article on a subject, then decide to throw in a "oh, and while I'm sounding wise, my OS can beat your OS sux0rs!!!!" Excuse me while I go write an article on the relative efficiency of sorting algorithms, then insert why C++ is the language that everyone graduates too after they've wasted time on Perl. Sheesh.

    Other that that, this looks like some decent advice.
    1. Re:What's with perl? by CompMD · · Score: 1

      In his defense, the author is a perl guru, and has written at least one book on the language and several articles.

    2. Re:What's with perl? by Anonymous Coward · · Score: 0

      That's what threw me on the article. Why promote Perl? I don't know how much he lost on the article because of that. The greatest programmers are C++ and Java programmers, in that order, but he is looking for a great Perl programmer. It defies logic.

    3. Re:What's with perl? by @madeus · · Score: 1

      The problem is lots of people in management think that scripting languages are 'not as good as "compiled" languages' (note the quotes) by which they mean "Java, C/C++/C#".

  36. This is kinda sad by systems · · Score: 1

    Why I was still in university, I used to read stuff like from this article and be impressed!
    Now that I've worked for a while, I am thinking ... well, it just something that sound nice
    probably help few ppl feel better about themselves but ... it just soooo misleading!
    Of course it better to hire few experienced (probably senior) workers, that few inexperienced ones! why should it be otherwise, its not like its a job of waiting tables ... its a job like many that required education and experience, how odd? and all this time I thought that any one who read "thinking in java" can truely think in java, just like that, no work experience required!
    now I am enlightened!
    and why is it hard to hire programmers! i mean is it to assume that someone like Linus Torvald or Larry Wall or Audrey Tang... or anyone who got a real work experience working for any of the many real companies that created real software that you could try urself would be at least good enough!
    can't u formulate a decent C# or Java exam to filter your candidate, would 3 or 4 interviews expose the wannabes, I mean comme on! Just ask him to explain the code of a real application he wrote, how hard is that!!!

  37. Easy answer. by Estanislao+Mart�nez · · Score: 5, Interesting

    As a generalist programmer, originally trained in cognitive science, who has formerly worked in several disparate industries, was a systems administrator, programs in half a dozen languages (including perl), etc, etc...Apparently I'm supposed to be making twice my salary. Goddamnit!

    See The Market for Lemons. The existence of tons of bad programmers, and the inability of employers to tell them apart from good ones, drives the salaries of all programmers towards that of the average programmer.

  38. Uber Programmers Don't Exist by dircha · · Score: 3, Insightful

    Domain knowledge is the primary difference between a 1 day LOE and a 1 week LOE, not programming "skill".

    There is no class of general "uber" programmer that can be brought on to an arbitrary company's internal development project and hit the ground running at a pace 10 or even 2 times that of the standard-fare developers already on the project. This is a complete myth.

    However, the domain knowledge gap can in most cases be narrowed very cost effectively through knowledge transfer, training, and tools.

    If you skimp on resourcing and experience anywhere in your development organization, it should be on programmers. Inexperienced and unskilled programmers can be compensated for effectively through targeted specification, management, and quality assurance processes. The key is to have processes in place to identify and rectify programmer failure early and often.

    Computer programming isn't rocket science, it's bridge building. You have planners and you have builders. Builders pour cement and put rivets in place, and there are processes in place to identify, rectify, and robustly handle individual builder error. Bridges do not arbitrarily drop cars off into the river below due to individual builder error, and neither should software programs crash due to individual programmer error.

    1. Re:Uber Programmers Don't Exist by BiggestPOS · · Score: 1
      I hate to burst your bubble, but writing software, especially large complicated packages is *nothing* like building a bridge. Sure you can have quality control in place, testers and QA and all that non-sense.

      Just because a program *appears* to be doing what it is supposed to do does not mean it is doing so in a correct and easily maintainable fashion. I think its still important to hire Expert Programmers (TM) to oversee the work of the "builder monkeys" to review their code and architecture, point out their shortcomings, and help them to someday become *gasp* Expert Programmers (TM) themselves.

      Anyone who can't learn from their mistakes after they've been pointed out and a better way explained shouldn't be working in any industry.

      --
      What, me worry?
    2. Re:Uber Programmers Don't Exist by Anonymous Coward · · Score: 0

      >> Bridges do not arbitrarily drop cars off into the
      >> river below due to individual builder error,

      You could not have picked a worse time to use that metaphor.

    3. Re:Uber Programmers Don't Exist by PPH · · Score: 1

      Domain knowledge is the primary difference between a 1 day LOE and a 1 week LOE, not programming "skill".
      I'll have to agree with this. But management often refuses to buy into this.

      Where does domain knowledge reside? In the heads of the domain experts in the given business. Often, these are the 5 to 10 percent of the engineers (in engineering firms) or accountants (in financial firms) that actually understand the job at hand. These aren't the sorts of people management likes to cut loose for an extended period of time. Their solution is to send in members of the second string, typically mamagement wanna-bes that enjoy meetings aand other such nonsense anyway. Then, the plan is for them to spend some minimal amount of time putting together a requirements document and handing it off to some generic s/w development group. The sort of group that wrote the employee benefits web page last month can write the missile avionics s/w this month. After all, its all software.

      --
      Have gnu, will travel.
    4. Re:Uber Programmers Don't Exist by DamnStupidElf · · Score: 4, Insightful

      Computer programming isn't rocket science, it's bridge building. You have planners and you have builders. Builders pour cement and put rivets in place, and there are processes in place to identify, rectify, and robustly handle individual builder error. Bridges do not arbitrarily drop cars off into the river below due to individual builder error, and neither should software programs crash due to individual programmer error.

      When you separate the planners from the builders like that, you get the Twin Cities bridge that was a load of under-engineered shit because planners built it to look good on paper, and the builders made it work, but overall it was a disaster waiting to happen.

      I mean honestly, you shouldn't have overall architects who haven't actually written code before. They will absolutely fudge the software requirements because they really don't know what they need to get the job done. Likewise you can't get an infinite number of stupid programmers to implement a perfect specification because it takes too long and is too error prone.

      Ultimately the question is where do you get your perfect software architects, and why can't you just get programmers from the same place? Without good programmers, how do you know that your software architects aren't full of shit?

    5. Re:Uber Programmers Don't Exist by Prof.Phreak · · Score: 3, Insightful

      There is no class of general "uber" programmer that can be brought on to an arbitrary company's internal development project and hit the ground running at a pace 10 or even 2 times that of the standard-fare developers already on the project.

      Possibly not on day one. But definitely a few weeks afterwards (ie: domain knowledge). Experienced programmers tend to see subtle things that most people gloss over. Even stupid little things. Those things make one developer more productive than a whole department team combined (especially if those other programmers were primarily hired by HR).

      Most projects at most corps have 1 (or maybe 2) developers doing about 90% of the work, and a dozen or so folks on the payroll for the project.

      --

      "If anything can go wrong, it will." - Murphy

    6. Re:Uber Programmers Don't Exist by smellotron · · Score: 1

      I mean honestly, you shouldn't have overall architects who haven't actually written code before. They will absolutely fudge the software requirements because they really don't know what they need to get the job done.
      That's why I never understood why the Architecture group at Lockheed Martin was actively pursuing people who have neither any programming experience nor any desire to learn algorithm fundamentals. Federal tax dollars paying for designs that are being created by people who don't have the foggiest idea of how to implement those designs :(
    7. Re:Uber Programmers Don't Exist by Anonymous Coward · · Score: 0

      There is no class of general "uber" programmer that can be brought on to an arbitrary company's internal development project and hit the ground running at a pace 10 or even 2 times that of the standard-fare developers already on the project. This is a complete myth.

      Damn, looks like I don't exist. I wonder who's been cashing my salary checks.

    8. Re:Uber Programmers Don't Exist by Edgewize · · Score: 2, Insightful

      I can't tell if you're being earnest or sarcastic. Your bridge metaphor is either unfortunately timed, or brilliantly placed.

      Differences in programmer skill do exist, and it has nothing to do with their grasp of domain-specific knowledge. Rather, it has to do with the ability to hold a lot of knowledge at once, such that the appropriate knowledge springs to mind without needing to look it up.

      The difference between a "decent" programmer and a "great" one is that the decent programmer will think of an approach, start coding it, come up against a wall where it collides with some other code, examine the other code, mull it over, and rework his approach accordingly. The great programmer will think about the task for a moment, the roadblock will be obvious to him, and he will get the right approach on the first try. (If he's really great, he'll even leave a comment explaining why the straightforward approach has a roadblock.)

      No matter how much training you give the first programmer, his recall capacity is not going to increase dramatically. He can understand the design well enough to know where to look, or who to ask, but his working set is just not large enough to encompass the entire design.

      If your systems are small enough that anyone can recall all aspects of them at all times, you don't need programmers. You just need monkeys who can write C/Java/Ruby/whatever. But if you work on any reasonably large project, the great programmers always stand out as "the people who get asked questions".

    9. Re:Uber Programmers Don't Exist by SLOGEN · · Score: 1
      You have *got* to be kidding me.

      Inexperienced and unskilled programmers can be compensated for effectively through targeted specification, management, and quality assurance processes


      Specification, Management, and Quality assurance processes does not *produce* anything. You cannot "declare" applications into existance.

      Why not just use monkeys and a really clear spec, an extra manger and some really rigid QA :)
      --
      SLOGEN [ http://ungdomshus.nu : Sebastian cover music]
    10. Re:Uber Programmers Don't Exist by hauntingthunder · · Score: 1

      Bridges do not arbitrarily drop cars off into the river below due to individual builder error
      Ever seen the tacoma narows bridge film :-) ok that was a deisign error not sure what caused the Mississippi bridge colapse might be contractor mees up. Btw I used to work for a big consulting engineer and one time the contractors droped a bridge we designed off of the supports - cue lots of finger pointing - i did a special analysis program to cover our ass.
      --
      You will never get to heaven with an Ak 47... But A Zu 30 is good for Low Flying Cherubim
    11. Re:Uber Programmers Don't Exist by Anonymous Coward · · Score: 0

      There are only two ways to combat an ineffective programmer.

      1. Give them an effective mentor and train them.
      2. Remove them from the team.

      Adding reams of process slows down and complicates the efforts of your net positive programmers to prevent your net negative programmers from destroying quality. If you can't tell the productivity difference between a master programmer and an apprentice you are ignorant of software development skill.

  39. Yeah, right by Elias+Israel · · Score: 4, Insightful

    I'm going to take advice on hiring programmers from a Perl cool-aid drinker. Sure, just the very minute I get my brain replaced with a cauliflower. Perl is an horrifically bad language. It's called "write-only" for a reason. It makes great programmers produce merely adequate code, makes good programmers produce bad code, and makes bad programmers think they're great. Feh. A properly trained, incentivized and provisioned Java team can run rings around a Perl team in terms of working code produced, as well as (more importantly) cost to develop and cost to maintain.

    1. Re:Yeah, right by Anonymous Coward · · Score: 2, Insightful

      > Perl is an horrifically bad language.

      Yes. This is how I knew the article was complete bunk. Kudos to the author for putting this signal near the top of the article (that way I didn't need to read further)...

    2. Re:Yeah, right by Anonymous Coward · · Score: 0

      There's a problem with your analysis - Perl doesn't lend itself to working on teams.

    3. Re:Yeah, right by DoofusOfDeath · · Score: 3, Funny

      A properly trained, incentivized and provisioned Java team can run rings around a Perl team in terms of working code produced,

      If measured in terms of number of lines of code written, absolutely ;)

    4. Re:Yeah, right by Anonymous Coward · · Score: 0

      A properly trained, incentivized, provisioned and large Java team can barely run rings around a single Perl coder in terms of working code produced There, fixed it for you.

    5. Re:Yeah, right by rla3rd · · Score: 4, Funny

      A properly trained, incentivized and provisioned Java team can run rings around a Perl team in terms of working code produced, as well as (more importantly) cost to develop and cost to maintain. and a python team can do it in half the time, and half the code

    6. Re:Yeah, right by dbIII · · Score: 1

      Perl, logo, lisp, fortran, cobol - it doesn't matter - there's useful stuff you can do in specific cases in any language so there's no point going after somebody for advocating any specific one.

    7. Re:Yeah, right by SanityInAnarchy · · Score: 1

      The question is whether there is anything useful you can do in a particular language that you can't do much better, simpler, cleaner, faster in another language.

      Cobol, in particular, is obsolete for a good reason -- just about anything you can do in Cobol, you can do better in -- well -- anything else, even C. The only advantage of learning Cobol is people will now pay you large sums of money to deal with their ridiculously huge libraries of legacy code, which just keep getting bigger because they keep hiring more people like you to make it do that one little thing they need.

      I believe you're right about a significant number of other languages, because most languages suck in some way or another. But I don't think I would ever start a new project in logo, fortran, or cobol, ever.

      --
      Don't thank God, thank a doctor!
    8. Re:Yeah, right by Anonymous Coward · · Score: 0

      "A properly trained, incentivized and provisioned Java team can run rings around a Perl team in terms of working code produced, as well as (more importantly) cost to develop and cost to maintain."

      What's wrong with "motivated" or "eager"? Just a pet peeve of mine regarding these new-fangled words.

    9. Re:Yeah, right by Anonymous Coward · · Score: 0

      That must be why successful companies like Amazon.com, Yahoo.com, TicketMaster.com, CitySearch.com, and yes, Slashdot.com, use Perl all over the place.

    10. Re:Yeah, right by sohp · · Score: 0, Redundant

      You used the non-word "incentivized". You fail.

    11. Re:Yeah, right by Anonymous Coward · · Score: 1, Informative

      ...which means that Perl doesn't lend itself to software projects of the scope that require teams. IE, most of them.

    12. Re:Yeah, right by Anonymous Coward · · Score: 0

      Python. Seriously. And if you need to access SQL databases like Oracle, go the Jython path (which will allow you to access the DBM via JDBC).

      I used to be a Perl geek, fell in love with Perl in the mid Nineties. Finally got fed up with the poor Windows implementation (sometimes compiling from source is NOT an option), picked up on Python and never, never looked back. Almost as powerfull as Perl (REs are a tiny bit more awkward to use), but wonderfully clean and compact source code.

    13. Re:Yeah, right by AbbyNormal · · Score: 1

      Eh. Your argument does not hold any value. A properly trained X team can run rings around a Y team in terms of working code produced.

      --
      Sig it.
    14. Re:Yeah, right by marcosdumay · · Score: 1

      Perl gives you enough freedom to do things, Java don't. That is why on Perl bad developers write bad code, wile on Java bad developers write passable code.

      Now, if you have a team of good developers, they are much more productive on Perl than on Java. But if you hire a single bad code, your Perl team won't be able to get anything done. (You can compare Lisp or Prolog with Java for a more extreme result.)

      Saying that Java is better then Perl because almost no one is able to write bad code on it is as trolish as saying that Perl is better than Java because a good developer is a lot more productive on it.

    15. Re:Yeah, right by cerberusss · · Score: 1

      WTF has your opinion of language X to do with hiring programmers? -1 offtopic.

      --
      8 of 13 people found this answer helpful. Did you?
    16. Re:Yeah, right by Maximum+Prophet · · Score: 1

      Back in the day, I picked up a two year old Java book, typed in the "Hello World" example, and the compliler wouldn't even compile it. In two years the language had transmogrified enough that "Hello World" wouldn't even compile. I knew right then that this wasn't the language for me.

      For the record, later I needed a better grep than what the OS came with, so I found a 10 year old copy of GNU grep written in C. It compiled and linked with few or no errors.

      --
      All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
    17. Re:Yeah, right by Anonymous Coward · · Score: 0

      Perl, in and of itself, is not a bad language. It is perfectly possible to write bad, unmaintainable, spaghetti code in any language. Your complaints about Perl sound like the language offers constructs that you are not used to (such as map()).

      Each language is good for something. Just because you don't see a value does not mean there is no value. For example, Perl is very nice for text processing. It's not so nice for recursion or OOP (yes, I know that Perl offers it's own version of objects, but they're not as nice as objects in other languages).

      Again, Perl does not have to be bad, unmaintainable, spaghetti code. It's up to the individual programmer to decide what his/her code will look like.

    18. Re:Yeah, right by IkeTo · · Score: 1

      > Perl is an horrifically bad language. It's called "write-only" for a reason.

      The reason is that there are more people create write-only script on Perl than other language. I've worked in a company which keep half their code in Perl, and I do find much of their code "write-only". But then, when I actually write my own code, and then read it after months, I can no longer justify calling Perl write only, at all. It's just the improperly trained people who make the whole thing that bad.

      Why Perl had been so "write-only"? There can be many different reasons. Some of them are (1) they allow very terse code, (2) they do not promote OOP as hard as other languages (and has a strange way to do OOP), (3) they use so many different operators, some at strange precedence (at the first glance), (4) Perl promote using implicit stuff, (5) all the $@%*& hurts, etc.

      But when I actually do it myself for some time, I learnt that (1) is actually helpful when you want to write readable code, (2) requires just that you do it your own way (and also is good in the sense that you don't write something which is really procedural to OO), (3) just means you will limit the use of operators in your own programs to those which really makes sense to you (and I use both && and "and", and both || and "or"), (4) just means you do it your own way except for really trivial ones, (5) really just need some time to get accustomed to, etc.

      The more important thing is what a menu that the "Perl buffet" provides you with. You get all the convenient things: from running a shell command and catch the result using just a single line of backticks, to reading an XML config file by use a single line of XML::Simple call and doing memoization with just a single line of Memoize, to a built-in way to write lists and hashes so easily that you don't can create one without thinking (and to read one without thinking as well!), to the convenience of writing a simple for loop without any braces (using modifiers), to the power of a real closure facility, to the removal from the need to cater for managing memory in most cases, and to the whole CPAN experience using cpan2rpm. All those are big plus when you want to make your program both readable and maintainable!

      At the beginning of that job I start out thinking that "we should move to Python but the pile of old code is in our way". After a few months it is clear to me that "any step trying to move away from Perl is a big wrong step because it just takes away the most important too for us to maintain readability and maintainability". And I've concluded that the only reason why our code had been so horrible is not because of the language. It's instead because of the environment and the improperly trained people.

      About the only thing that I think Perl really need fixing is: there really need to be a usable Perl threading environment. Currently Perl threads are even more expensive than processes and thus is not usable at all. That's my only big complain about Perl, nothing more.

      Different people of course have different tastes, and different programmers of course have different choice of language. But I think most people complaining about Perl do not taste good Perl, but instead they taste junk Perl and think that's the only taste of Perl. The problem is, there is junk Java, junk Python, junk C++, junk C# and junk Haskell out there. Comparing them makes no sense, they are not what we want. Instead we need to find some premium Perl, premium Python, premium C++, premium C# and premium Haskell to try before we can comment on the language. And if anyone do, and when tasting, taste deeply enough, I think most people will find premium Perl to taste just as good if not supreme.

    19. Re:Yeah, right by Nicolay77 · · Score: 1

      I agree with you.
      The writer was talking about graduating from Java/C# to more dynamic/powerful programming languages. I immediately though about Lisp.

      Then he says Perl. All I could think was 'WTF?'

      --
      We are Turing O-Machines. The Oracle is out there.
    20. Re:Yeah, right by Anonymous Coward · · Score: 0

      I was wondering when we'd hear from the java fanatics.
      Welcome, my resource hogging, slowly executing, looks like a fart from a badger's ass while being ridiculously overrated and overvalued friend!

    21. Re:Yeah, right by tknd · · Score: 1

      I'm going to take advice on hiring programmers from a Perl cool-aid drinker. Sure, just the very minute I get my brain replaced with a cauliflower. Perl is an horrifically bad language. It's called "write-only" for a reason. It makes great programmers produce merely adequate code, makes good programmers produce bad code, and makes bad programmers think they're great. Feh. A properly trained, incentivized and provisioned Java team can run rings around a Perl team in terms of working code produced, as well as (more importantly) cost to develop and cost to maintain.

      If you need a language to keep you from doing bad things, that already suggests that you're a bad programmer. However, I won't deny that there exist bad programmers and as such the language should try to prevent them from doing bad things.

      However, on the flame-bait portion of the post: I have experience in both Java and Perl and a number of other things. In the early days yes, Perl was a very bad language and encouraged bad practices. As time went on, things were implemented to help prevent these things. For example everything now has scope and if used correctly, it is actually a little tricky to mix bad code that ignores scope rules and good code that does follow scope rules. Things like the use strict; pragma and my declarations make Perl much more usable and maintainable. Somethings could be better, but it is quite obvious that Perl people are getting it, even more so than some Java people. There are actually a number of benefits to using Perl but obvious you with your closed mind and lack of knowledge refuse to accept that.

      Now on to Java. I've worked with Java lot as well. One of the best laid out languages in terms of built-in classes that are ready to use. But it comes at a cost: things get deprecated and now your code won't work if you move to the next version. Instead you're stuck trying to hack a way to get multiple VMs to play nicely on people's machines or you're forced to upgrade the code. Then there's J2EE and all sorts of technologies built on top of Java. Java while organized and has some really good clean syntax, fails miserably at compatibility and packaging of libraries and software. For example if I want to use any specific technology beyond the basic servlet and jsp, I better be prepared to read and read some more about configuring my IDE, classpath and such to use the correct JARs. Then once I've gotten my head over that, the community will start working on the next whiz-bang stuff and now everything I currently use is obsolete. That's because the Java world seems to love building rather than maintaining. If something new comes along, they'd rather deprecate the existing "old" solution and add a new one rather than fix the old. The result is you're always outdated and there's too much documentation to read. I don't mind learning new things, but in the Java world the lifetime of each technology is simply too short to be useful for anyone.

      Perl on the other hand has adopted a better model in my opinion. All packages and libraries are installed to the host system and often being some sort of unix, you work directly on the server. Each module on cpan.org is expected to: configure itself, test itself, and install itself. That means when I find a module that can help me or I'd like to use, I do the following:

      perl Makefile.PL
      make
      make test
      make install

      If a dependency doesn't exist, I will be told. If a test fails I will be told. If I don't care about a couple of test cases failing, I can still install the module. It is very clear to me what is missing and to what degree something is failing (failed test cases). It doesn't get any simpler than that. In Java, you might need an additional JAR but you won't be told until you compile/run where you'll get a nasty message that something is missing. So much for automated testi

    22. Re:Yeah, right by Anonymous Coward · · Score: 0

      lol
      modded funny is damned right
      oops, is my white space correct for you to parse this statement?

    23. Re:Yeah, right by sohp · · Score: 1

      A properly trained, incentivized and provisioned Java team can run rings around a Perl team in terms of working code produced, as well as (more importantly) cost to develop and cost to maintain. and a python team can do it in half the time, and half the code.

      And the LISP team already did it, back in the 60s.

    24. Re:Yeah, right by bro1 · · Score: 1

      These days, using proper IDEs (Eclipse for example) you do no really have to worry about Java's verbosity. I bet I can write most of the things with approximately similar number of keystrokes in Java with Eclipse as Perl programmers can in Perl.

    25. Re:Yeah, right by Peaker · · Score: 1

      Lisp code is unreadable.

      Its hard to explain the theory behind why Lisp code is unreadable, so a lot of rational people who like to believe only what they can prove theoretically have a dissonance about it. Nevertheless, many Lisp hackers prefer Python for their daily work :-)

      "Yeah, Lisp is better, but I'm using Python for this and that" :-)

      Here are my thoughts on Lisp: A critique of Lisp.

  40. Ability vs experience - they're not the same thing by kbob88 · · Score: 2, Insightful

    Companies only want to hire people with experience.

    We want to hire ability. That's not necessarily experience. There may be some relationship between the two, but it's lazy hiring to rely on experience. As we all know, there are plenty of people who have been programming for 20 years but still can't code for shit.

    I'd hire you as a fairly inexperienced developer if you could demonstrate that you had great ability. You wouldn't get that huge salary at first however - sorry, you need experience and ability for that!

    Unfortunately, it's very difficult to hire based on ability. How do you test for it? We've tried all sorts of stuff. In the end it comes down to good questioning, having the candidate hack out pseudo-code on the spot, and having them participate in a small design workshop. But we find that candidates don't really want to go through a long hiring process with us as we're a small company. It's still an error-prone process.

    But I agree with TFA. I'd rather have 4 great programmers at $160K than 8 mediocre ones at $80K, or even less. The two major problems to hiring this way are:
    • Getting HR and top management to buy into it - their philosophy seems to be "we want above average software using slightly below average people"
    • Figuring out who the great developers are

  41. Other side of the fence by architimmy · · Score: 1

    Having worked in IT, as a programmer, and now as an architect I think pretty much any field is the same, not just programming. Some people are just worth a lot more because in general, the average person spends more time avoiding work than doing work. I don't think the premise of the article applies just to developers.

    1. Re:Other side of the fence by dbIII · · Score: 1

      Having worked in IT, as a programmer, and now as an architect I think pretty much any field is the same, not just programming.

      Mod this poster up - shifting jobs from writing code to designing buildings would have given them wide experience :)

  42. Markets with impefect information; risk by Estanislao+Mart�nez · · Score: 1

    If there really is such a thing as the über-programmer, who is literally 10 times more efficient than his average [median] colleague, THEN BY ALL MEANS he ought to be paid 10 times as much in salary - maybe even more.

    In a market with perfect information, by all means, yes. In a market where buyers don't have perfect information, however, irrational stuff happens.

    There's also another potential flaw in your logic: failing to account for risk. If you hire one über-developer to do all your work, you're screwed if a bus hits the guy. Hiring 10 mediocre guys instead diversifies away a number of risks. A riskier asset must sell at a steeper discount of the profit that you hope to make out of it, compared to a safer one. (None of this is to imply that the IT jobs market is pricing risks correctly, however.)

    1. Re:Markets with impefect information; risk by Dan+Ost · · Score: 1

      Then hire three uberdevelopers instead of 10 mediocre developers. The salary cost will be about the same, the project will be completed faster, and the resulting product will be better designed and less error-prone.

      --

      *sigh* back to work...
  43. F*&^%$# Management by Anonymous Coward · · Score: 0
    I used to be internationally well known as an Oracle DBA, but I quit and went into Geology. Why?
    1) I got bored. Too may clients were happy to give me 4-8hrs of work per week because (and this is an _EXACT_ quite) "you do more work in 2 to 3 hours than most of my team does in a week"
    2) Being on-call 24x7 with no additional pay. Plus, being written up for not answering a page at 2am -- after I emailed my manager warning her that I had a tendency to sleep through everything. That email prevented me from being fired on the spot!
    3) Having a manager that was so threatened by me that he tried to get me fired. 4) Hey, If I do more work in 1/2 day than others do in a week, why don't I get paid AT LEAST 2x the rate of those idiots?!?
    5) Too many hours of (unpaid) overtime because others on the team aren't performing (see #1). And then getting criticized for working overtime (see #1)
    6) ....

    Enough complaining. I'm going OUTSIDE with my GIRLFRIEND to play with rocks.

  44. Perl? For big jobs? by Animats · · Score: 1

    The surprising thing about this is the Perl mania. Perl is OK for little stuff. But if you're writing stuff in Perl that's complex enough to require hiring multiple programmers, you're probably using the wrong language. Maintainability in Perl is a big problem. The language is hard to read, and the "there's more than one way to do it" philosophy means that code written by different programmers tends to use different subsets of the language. I have three Perl books, including Larry Wall's, each of which describes a different subset of the language, which gives a sense of how bad that problem is. On the other hand, Perl comes closer to "write once, run everywhere" than anything else around. Your Perl web app will probably work the same on almost all hosting providers.

    I once wrote a sizable app in object-oriented Perl, and wouldn't do that again. Python scales better.

    Python as a language is quite good, especially if you need roughly Perl's function set. The main problem with Python is that the C libraries for key functions (SSL, databases) are maintained by different groups, often by a single person, aren't part of the main Python distro, and don't sync well with Python releases. You may have to explain to your manager that the Windows distribution of the SSL library for Python is maintained by a World of Warcraft guild and they can't fix it this week because they have a big raid coming up.

    1. Re:Perl? For big jobs? by lorenzino · · Score: 1

      Sooner or later that will be merged in upstream.In Python. At least that is what tend to happen lately in most OSS. For my little experience with both I've liked much more Python too rather than Perl, but it is indeed sometimes required and I do feel as a generalist a need for this tool in my toolbox.

    2. Re:Perl? For big jobs? by dbIII · · Score: 1

      I use python occasionally but don't like it - but call me old fashioned or something but there is something about whitespace having meaning that really makes me expect impending doom around the corner for any bit of code.

  45. Wrong WAS:Re:We all have to start somewhere... by jgarra23 · · Score: 2, Insightful


    As a recently graduated CS student, I find this type of thinking to be incredibly infuriating at times. Companies only want to hire people with experience. Yet to gain this experience, I need a job. The circular logic goes round and round until you have a brain aneurism.


    You need to pay your dues after college. You need to work some crappy job and when someone asks for some code you produce it! You need to work for some crappy mom n' pop store and write them a better inventory system. you need to write a program to make something easier in your life and give it to other people. You need to get your name out there. There are a million things you need to do before you become successful and complacent in your chosen career field. I worked at a bank as a teller all through college and scrownged around for code jobs until I got fed up with a lot of processes we had so I wrote better ones over a couple nights & presented them to my boss... who passed them along until one day I got noticed.

    If you want something you have to devote some genuine time and effort to it. Show people you want it. Don't just expect it.

  46. Not again. by Anonymous Coward · · Score: 0

    [...] rediculously overqualified [...] *sigh*

    Please. The word is ridiculously. With an "i".

    Perhaps remembering the root - "ridicule" - will help?

  47. Ant farm engineer by Anonymous Coward · · Score: 0

    How I wish I could find a link to the Dilbert strip about being an ant farm engineer.

    1. Re:Ant farm engineer by Surt · · Score: 3, Funny
      --
      "Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
  48. What 'free market' do you speak of? by FatSean · · Score: 0, Offtopic

    I'm confused...no modern nation in the world has anything even close to a 'free market'. Government subsidies?!

    --
    Blar.
  49. Hike by Joebert · · Score: 1

    All of this pays huge dividends when the next developer has to pick up where they left off. Especially if the next person isn't an expert.

    Yeah, that 25% tax you see there on the bottom, is to cover outsourcing insurance.
    --
    Wanna fight ? Bend over, stick your head up your ass, and fight for air.
  50. HR ... by PPH · · Score: 4, Funny

    ... is still looking for a senior programmer with 15 years of .NET experience.

    --
    Have gnu, will travel.
    1. Re:HR ... by setagllib · · Score: 1

      They say time passes slowly when you're suffering, so I expect many people have racked up much more than 15 years of .NET experience. And they're also the ones who do not want to apply for a job that requires such a level of soul-crushing endurance.

      --
      Sam ty sig.
  51. I don't get the analogy? by oyenstikker · · Score: 1

    What is wrong with the 400 disc changer? I'd much rather have a 400 disc changer than an iPod? Or are they just not keeping the order consistent?

    --
    The masses are the crack whores of religion.
    1. Re:I don't get the analogy? by dbIII · · Score: 1

      What is wrong with the 400 disc changer?

      No wireless? More desk space than a Nomad? Lame.

    2. Re:I don't get the analogy? by oyenstikker · · Score: 1

      No wireless? That is okay, it would go in my stereo cabinet, where it would plug directly into the wall and directly into my preamplifier.

      More desk space than a Nomad? That is okay, it would go in my stereo cabinet, not on my desk.

      Lame? Sounds like a great idea to me. I could put all of my CDs in there, and never have to worry about my children using them to teeth on.

      Sounds to me like a good CD changer. Oh, but you are comparing it to a completely different product. Yeah, my extra large GE oven sucks too, because I can't carry it with me camping and hook it up to a propane tank. And what is the deal with those lame 64 processor servers? No wireless, no bluetooth, and they won't even get chicks to notice me.

      --
      The masses are the crack whores of religion.
    3. Re:I don't get the analogy? by dbIII · · Score: 1

      Sorry - an old joke based on the editoral on Slashdot when the iPod came out (no wireless, less space than a nomad, lame).

    4. Re:I don't get the analogy? by Anonymous Coward · · Score: 0

      If you just want a jukebox with 400 CDs worth of music, an iPod is a far cheaper and easier to use solution than a 400 disc changer.

  52. Re:hireing more people is better then over working by cavehobbit · · Score: 1

    Not to a corporation!

    You sir, are specifically listed in the exempt from overtime statutes in the federal code, as am I.

    They can work our asses until we quit or die from stress and not pay a penny in overtime, extra salary, benefits or anything.

    So far as HR goes we are just that, Human RESOURCES. THINGS, piles of coal to be burned until we are used up, with nothing but dust left to sweep out the door.

    Hiring quality will never happen until IT people are paid hourly, with overtime protections.

    And that will happen when the average coder is getting somewhere around minimum wage.
    The big consulting companies, and companies with big IT departments pay too much to politicians to allow that to happen.

    So, to turn a phrase: Suffer, code-bitch.

  53. Not bad, except by Mycroft_514 · · Score: 1

    "Some of the best developers I know were originally trained as journalists, mathmaticians, linguists, and other professions not normally associated with software development."

    Sorry, don't agree with this statement, nor the one about Perl being some great language. Every language has it's place, and you need to use the right one for the job, which a whole course was dedicated to in my BSCS.

    One way to identify these develpers is to ask them what tools THEY have created to save time and effort.

  54. Expert Programmers easy to find! by Anonymous Coward · · Score: 0
    Of the programmers I've worked with, at least 90% rate themselves "above average!"

    Your chances of finding an expert in such an accomplished population should be very good indeed!

  55. Now, I didn't RTFA, but... by r_jensen11 · · Score: 1

    my intution is that there are a LOT of people out there that only have 2-year degrees and get picked up for the low-end stuff. Meanwhile, the number of people going to 4-year programs for Computer Science or getting a Masters is shrinking because, well, the stereotypes aren't too appealing and many have heard plenty of rumors about work environments like Initech. Also, managers are becoming more concerned about costs rather than quality, and hence created waves like the pandemic outsourcing trend.

  56. I've had a different experience... by geeknado · · Score: 1
    I'd say that I also fall in the generalist category(degree? english. languages programmed professionally? 7), and I have to disagree with you strongly...It's been good for my career.

    First, being a generalist has meant that I have been steadily employed through several minibursts in the local tech economy. I've always found something that suited /me/ when more specialized friends have not.

    Second, being a "generalist" has allowed me to keep well ahead on many learning curves than my "specialist" colleagues. Very rarely does any single technology, language, or platform remain en vogue for more than a year or two. As the next big thing comes along, I have been able to adapt faster due to my broader perspective, typically being responsible for instruction of more static peers.

    The reason this is possible isn't some innate superiority-- it's simply by virtue of my generalized experience. I've programmed in various managed and unmanaged languages on various platforms and in various industries. Back when I was a consultant, frequently many of each at once. "New" is rarely new unless it's a specialized platform.

    The thing is, that fellow who "does a little bit of everything" seems to be rising more consistently towards the technical lead level at my organization. "Matrixing" is the new buzzword of the moment, which really just means flexible resource allocation. Since seniority is generally preserved, such leads generally can't be specialists...One week, you may be leading a team of web developers, the next designing the schema for a database.

    My suggestion is that you analyze your work environment and see if, perhaps, there is some other limiting factor on your career. Are you a "dump" for any problem that "doesn't quite fit the box" on your team rather than a valued asset? Are you in a top heavy organization? Do your immediate superiors appreciate your ability to make their lives easier?

  57. I'm 1337 too!? by Anonymous Coward · · Score: 0

    The best programmers realize everything they do sucks, is *fundamentally* flawed and never anywhere near approaching good enough. They don't reflect on their careers or tout their own achivements as this just conjures memories of how much they suck at what they do.

    The best programmers must also strive to be as lazy as possible in the context of their contributions entire product lifecycle.

    And for crying out loud..the best programmers *DO NOT* waste their time reading/posting on Slashdot!!

  58. Mastering a whole language ecosystem takes months by Phouk · · Score: 2, Insightful

    You don't need to hire an expert in language X, you can and should look for expert programmers that are willing to learn language X. An expert can easily cross over from being a novice in any language in a matter of a few weeks.

    I read this a lot, but it's misleading, and raises wrong expectations. While learning a new syntax and grammar can be done in hours, it doesn't buy you much. To get to that 10x productivity level on a real-world project, you have to master the whole ecosystem surrounding a language - standard libraries, open-source libraries, tools, idiomatic use, patterns, conventions, best practices, common architectures etc.

    As an example, coming from Java, if I switch to Ruby, how long before my code truly follows "the ruby way"? How long before I know the ins and outs of Ruby on Rails and the standard libraries including their gotchas? How long before I can architect a serious ruby application that makes good use of its meta programming facilities, instead of one that looks as if it was ported from Java?

    Or, as another example, if you switch from Ruby to Java, let's say on a web project: How long before you can make a informed choice which web framework to pick? How long before you know the architecture implications of picking Hibernate, and when iBatis would be a better match? To know what Spring can do for you, and what you are giving up by not using it? Until you know even a standard set of tools like Eclipse plus which plugins to use, FindBugs, Ant, Cruise Control, Emma, ..., plus another dozen or more libraries typically used even on a small Java web project.

    Of course, you can be productive even when you don't yet know all these things, and are still learning - but you won't be productive on the expert / 10x level we are talking about. By all means, become an expert in as many languages as you can - but don't plan on getting there in 24 hours, days or even weeks.

    (Disclaimer: Switching between fairly similar environments, e.g. Java C#, is of course much easier).

    --
    Stupidity is mis-underestimated.
  59. I, Uberprogrammer by Anonymous Coward · · Score: 0

    Yes, Virginia, we do exist.

    I am an uberprogrammer.

    I am (at least) 10 times as productive as the average programmer, write good, highly performing, well documented code and designs the very first time (and yes, I was once a sys admin too). And I'm compensated $200K/year for my efforts. I can work in any domain or language and come up to speed faster than any "average" employee of any experience level.

    (New and inexperienced programmers can be very valuable under the oversight of excellent technical leadership and mentors. Good tech managers are, however, as rare as us uberprogrammers. You're better off with a few of us.)

    It still doesn't make much difference.

    The mediocrity of Fortune 500 management, misguided technical leadership, utter failure to understand the underlying principles of component based development, SOA and the Mythical Man Month prevent me from carrying otherwise large and complex projects by myself. (I would just make them simple and then lots of people would be out of work.) Unfortunately divisions of incompetent designers, architects and managers can so badly mess up the simplest projects, that often the best I can do is to save my projects from utter failure instead of making them the shining successes they could easily be.

    Really, though, that's my job.

    There have been a few times I've met other uberprogrammers and we have created beautiful code together, in a very short time. Those projects are so successful they're hardly noticed and quickly forgotten. Then, after some other project begins to fail horribly, I'm back to work fixing broken projects enough so that management can get their bonuses. Afterwards, management immediately goes back to their old ways of technical incompetence and poor development processes that caused the failures in the first place.

    And I'll be there, waiting, reading slashdot, until the next time I'm called.

    Uberprogrammer

  60. Read Joel's book by AxelTorvalds · · Score: 5, Interesting
    Smart and Gets Things Done.

    I'm a little dismissive of the mystique around the required "super hackers" that never need to look for work but there is a ton of great advice on just hiring people.

    I'm an engineer. Been there and done a lot of that. I'm not going to say I'm one of the greatest but not too shabby, I've built some stuff and made some good money, you, know left a few marks.. As a more senior guy I've been taking on more and more leadership and to be completely honest, I like to think there are things I know to look for and catch, but I suck at hiring and team building. At the end of the day it's about building products, selling them and making money and the balance between people you think are a good personality match vs. the people that are technically good enough vs. people that are actually motivated and want to work and be successful is hard. We've hired folks we though were good personality matches for the team and turned out to be terrible technically and completely unmotivated, as much as you might want to like them, you simply won't when they are trying to play big business "CYA" games and not actually contributing to the team.

    I'm kind of dealing with a situation now, we're a small team, 4 or 5 developers and 2 testers. We hired the 5th developer based largely upon a recommendation from one of the testers. He's a marginal tester to be honest, good guy, just not super motivated, why we hired his recommendation is looking more and more stupid by the day, we value recommendations. After reading Joel's book I've found like 6 or 7 indicators that probably would have flagged this guy that we simply didn't think about. We were in a hurry, we thought the req would go away, etc.. Honestly, I'd rather have one fewer people and better morale that this guy, seriously in 6-8 months of having him, I cannot point to a single substantial contribution. Now we get to go through the process of firing him which sucks for every one involved also.

    Basically, you always want smart people, you want motivated people, people that do a good job, people that have some passion, good communicators, strong team people that know what it is to be on a team, you want all of that stuff, all of the time and it's hard to find. We pretend that parts don't matter or don't matter as much. Having shitty people on your team just flat out sucks, doesn't matter how good everything else is.

    1. Re:Read Joel's book by Anonymous Coward · · Score: 0
      I'm kind of dealing with a situation now, we're a small team, 4 or 5 developers and 2 testers

      How did you get a budget for testers?

    2. Re:Read Joel's book by Hillgiant · · Score: 1

      If developer #5 is as worthless as you are hinting, your other team members have most likely already noticed and will rejoice when you drop the axe on the little shit. You might hurt the feelings of the tester who gave the recommendation, but I feel that morale as a whole will go up.

      --
      -
    3. Re:Read Joel's book by Anonymous Coward · · Score: 0

      You have enough time to get your project out to FIRE people? Wow!!

    4. Re:Read Joel's book by GWBasic · · Score: 1

      Smart and Gets Things Done. I'm a little dismissive of the mystique around the required "super hackers" that never need to look for work but there is a ton of great advice on just hiring people.

      I read Joel's book as a way to prepare for job interviews, so I could see what kind of techniques good companies would use.

      Don't be dismissive of the mystique about "super hackers". I'm pretty close to his description; I used Monster straight out of college, but now I only take jobs from people I know or meet through networking. For example, I met a recruiter from a major tech company at a local SDForum; this is allowing me to leave a job where the hiring manager PERSONALLY knew me and stole me from a job that I got from another connection... Publicly posting my resume just nets me SPAM and bad companies that will waste my time because I'm not a cheap ass-kissing coder-slave.

      Basically, Joel really is right about how to find good talent; you need to go to industry events, intern parties, conventions, ect. Encourage your HR person to drop into an SDForum, or an old computers show, DEFCON, OOPSLA, Google Developer Day, ect. You'll find people like me.

  61. "Uber" Programmers Don't Scale by dircha · · Score: 1

    Another reason to prefer many junior developers is that junior developers scale much more cost effectively. On many large internal projects, there is a large amount of work that is both not technically very challenging and yet not automatable. Coding data collection screens, implementing batch processing routines, specifying reports. All of these tasks are time consuming, but none of them are substantially skill-dependent; they are busy work.

    This has the effect that "uber" (highly skilled) programmers do not complete the tasks in substantially less time than standard-fare programmers. However, if you follow the author's suggestions, you will still be paying your uber programmers uber salaries to perform this work. But even though they are completing the work only 5-10% faster than standard-fare programmers, you are still paying them 20-50% more.

    Had you instead built your organization around a large, dynamic, pluggable pool of junior or standard-fare programmers, you would be able to complete the work at a significant cost savings.

    1. Re:"Uber" Programmers Don't Scale by Rakishi · · Score: 1

      Had you instead built your organization around a large, dynamic, pluggable pool of junior or standard-fare programmers, you would be able to complete the work at a significant cost savings. Since we all know that group decisions by lots of idiots are great ways to organize and run things. A million monkeys on a million typewriters may create Shakespeare one day but the other days they'll just give you giberish.

      Your uber programmers do the interesting things and the DESIGN of the project which is probably most of the true work. Your managers then help assign grunt work to various moderately skilled programmers. Truly junior programmers would just create an utterly unmanageable mess of code in most cases so they get whatever crap is left over.
    2. Re:"Uber" Programmers Don't Scale by damacus · · Score: 1

      Not really. If you have some killers on your team who can hack out a nice generalized engine which takes care of validation, checking, storage, processing, whatever. Then you can have a lot of nublets coding against the engine via an API and using tidy metadata, never to see some of the tricky stuff in the back-end. Something like 2 or 3 people maintaining the engine, and 10 - 15 people coding against a standard interface, only having to write specific application code for the nuances of a given task.

      Compare that to 15 n00bites coding out the same busy work.. writing very specific checking, processing, etc code in each program. Then you're at the mercy of the skills of your individual coders. Some may be good.. others, not so much. Either way, there's a lot of wasted overlapping effort.

      Both may be scaled using warm bodies. However, one will lead to a very consistent system, with very rapid development, centralized maintainability, and with a low cost of entry for new coders. (Get them to an average proficiency with your language, get them up to speed on your internal APIs, then assign them to a small team for 6 months to make sure they can be integrated.) In the other situation, you're scaling, sure, but the cost of entry is higher. Each programmer would have to be much more proficient when dealing with the manual process. Designs would be rather inconsistent for important things. Maintainability? Not centralized, for sure.

      This post is getting long-winded. To conclude, I agree that it's generally fine to prefer junior programmers, but you must not discount what someone who knows their stuff may bring to the table. These people, when engaged properly, can turn a herd of junior devs into a force to be reckoned with. Then we can talk about significant cost savings. :-)

  62. More to it than skillz by Caerdwyn · · Score: 4, Insightful

    There are other issues besides technical skills. The higher you rise in the food chain, the more the "soft skills" matter. Organizational skills, people skills, communication skills. All the elegant code in the world doesn't make up for a prima donna who won't show up for a critical meeting or who openly disrespects "lesser" members of the team. The last thing in the world most people want is to hire the developer equivalent of Terrel Owens... because, just like Owens, they will leave damaged teams in their wake. Morale counts. The reason that leads get paid more than individual contributors is not just because of technical skills. It's because they can herd cats. It's because they can recognize that business reality sometimes has to trump "ideal" elegance or philosophy-of-the-week. It's because they can convince Dev to talk to QA to talk to Product Management to talk to Sales. It's because they can somehow get a clear functional spec from the marketing guy. It's because they can get by with existing equipment instead of demanding an Intel Core 31337 for their desktop. It's because they don't have to have an HR apologist in tow smoothing ruffled feathers everywhere they go. "Senior" implies so much more than "technical guru".

    --
    Everybody gets what the majority deserves.
    1. Re:More to it than skillz by Echolima · · Score: 1, Interesting

      Girls like guys with skillz.....nunchuck skills....computer hacking skills...you know, guys with skills...

    2. Re:More to it than skillz by Anonymous Coward · · Score: 0

      Amen.

  63. Pay them $120K - What utter cr@p! by gabrieltss · · Score: 1

    Companies won't pay that kind of money. They will tell you, you cost to much and will ship your job overseas to India! "You cost us $52/HR, they only cost us $27/HR." If the company needs to cut costs the jobs that aren't out right cut will be outsourced overseas. Programmers are the biggest target as they can pay Indians less. This is FACT! But companies ALWAYS fail to realize that many times the quality is in the toilet of what you get. You get what you pay for!


    Experts use better tools and care deeply about their craft. They aren't assembling bits on an assembly line, they are crafting a unique product to solve a unique problem. Experts are lazy, they work smarter rather than harder. Experts prefer the easiest solution that gets the job done. Experts aren't interested in creating complex solutions simply to have the complexity, that misguided egoism is the territory of more junior developers. They often get it right the first try and almost always on the second one.

    Simply put, experts write readable code. They comment and document it appropriately based on the complexity and criticality of that particular piece of code.

    All of this pays huge dividends when the next developer has to pick up where they left off. Especially if the next person isn't an expert.


    From these statements I consider myslef an "expert" then. I like to think I fit into everyone of these items.

    I have worked with way to many developers that fit this bill:


    Sub-standard programmers drag down the efficiency of your other developers with beginner questions, poor comments/documentation, and bad code that someone else will later be forced to spend time fixing.


    I can't count how many times I have had to re-write stuff that was such bad code it should have never been written in the FIRST place! I wish I got paid $120K (I make quite a lot less that) for being an expert - instead I'm being outsourced to India eventually (as soon as they take over all our projects) - because I and my fellow developers "cost too much".

    Show me a company that -wants- a developre with 21+ years experience and has done it all in IT and -wants- an expert and will pay $100K - $120K for that expertise and not just outsource it. Good luck, I doubt you will find one.

    --
    The Truth is a Virus!!!
    1. Re:Pay them $120K - What utter cr@p! by Anonymous Coward · · Score: 0

      You're wrong. I'm an expert in what I do. I have 10 years experience. I make $115K/year. The companies you work for may not be willing to pay it, but there are some out there that are willing to put their money where their mouth is. We farm out the grunt work to India. That's fine by me. There are plenty of more interesting tasks to do beyond 'we need session management in Apache' or 'how about another ASP page to collect user info."

      I'm guessing you're simply not the 'expert' you think you are.

    2. Re:Pay them $120K - What utter cr@p! by TheTempest · · Score: 1

      You are kidding, right? $120K is nothing for a consultant. There's no way I'd even consider working for that kind of money and I've worked in just about every sector there is for fifteen years (though admittedly I've only been working for more than $120K for the past ten years).

      The market for $250K+ programmers is small, but it does exist.

      -Dave

      --
      -Dave
  64. the problem with every bigger software company by Uksi · · Score: 1

    Sub-standard programmers drag down the efficiency of your other developers with beginner questions, poor comments/documentation, and bad code that someone else will later be forced to spend time fixing.

    That is exactly correct. This article is exactly right.

    The number of poor developers out there is staggering. I left a previous team not because the work wasn't particularly appealing, but because the people on the team were poor and I didn't want to deal with crappy code anymore.

    This is also why software goes to die at companies like CA or other large software companies. Developers who have developed for 20+ years are set in their ways and are unwilling to learn new techniques. We have developers that completely disregard the notion of unit testing (and are unwilling to recognize the value). Sheeit, we have devs who we couldn't convince to use smart pointers on a regular basis in our C++ code. Yet, these are principal-level software engineers getting paid in excess of 100K a year, just because they have the "industry experience".

    The actual contribution of these software engineers' skills has decreased over time (and much more so in comparison with the state of the art), yet their salaries keep increasing over time.

    One company I know hired devs with a certain keyword on their resume, passing over another candidate with a lot less experience. I guarantee 5000 that the person they passed over would've learned all the material related to that keyword and would've put out higher quality software in less time.
  65. Re:Ability vs experience - they're not the same th by Anonymous Coward · · Score: 0

    You guys pay $80k even for mediocre programmers?
    Wow, am I underpaid...

  66. The good ones may have 20 years of experience ... by garyebickford · · Score: 1

    ... while the others have 1 year of experience 20 times. (source? - I forget).

    Seriously, I used to teach a workshop on software quality assurance. An earlier poster said that some programmers are 10 times more productive than others, and it turns out it's true. From the data I found researching for the class (this predates the web, so sorry, no URL!), a study of programmers within the big corporate/government real found that within one standard deviation programmer productivity varied by more than an order of magnitude - IIRC it was about 20 times. I don't recall the measure, but it was reasonable at the time.

    Having seen how much worse/slower some are than I, and how much more some other people manage to accomplish than I, I'd say it's at least 5x each way, so 25x is a reasonable number to my mind.

    I had one consultant that worked for us for six months, then we fired him. A year later not a single line of his code still existed in the system. I figured this was a testimony to the quality of his work.

    --
    It's easier to be a result of the past, but more fun to be a cause of the future! http://www.spacefinancegroup.com/
  67. Re:Ability vs experience - they're not the same th by kbob88 · · Score: 1

    No, we don't, but plenty of people do out here in the Bay Area. Even more actually. But then again, a 3BR/2BA house in a good neighborhood with good schools will set you back $1.5 million!

  68. Finding Perl programmer by hotfireball · · Score: 2, Funny

    Finding decent Perl programmer is really hard thing, if ever possible... :-)

  69. since when is quality up to the programmer? by Uzik2 · · Score: 1

    Very seldom has quality been under my control. I'm told what language to use, how to design it, etc.
    All the choices that directly control the worth of the final product are already chosen for me.

    --
    -- Programming with boost is like building a house with lego. It's a cool but I wouldn't want to live in it
  70. What's old is new again. by w3woody · · Score: 1

    I'm amazed how every five years someone realizes what people knew 40 years ago, only to promptly forget it for the next wave of people to figure out five years from now.

  71. Unfortunate reality by ravyne · · Score: 4, Interesting

    On the flip side, why is there such an excess of not-so-great programmers out there? The answer is simple: The higher education system is turning out not-so-great graduates. In an ideal world they would not, but we live in a world where there are "CS Graduates" who have never seen anything more than pseudo-code and java. There are some great programs and great graduates to be found for sure, but I think the writing on the wall is apparent -- the average graduate is a below-average programmer. There needs to be more hands-on exposure to real, complex code, or better yet, production code.

    In the interim, unfortunately, we realistically need to take in some of the graduates that we have and finish the education they apparantly never received in full. If we don't -- if we let a bubble form between now and when the educational system corrects itself, then we will effectively lose much of the "tribal knowledge" that is passed down through the generations of the workforce.

    You cannot sustain a class of experts in any endeavor simply by surrounding them with other experts. At some point they must mentor or pass down their knowledge to the next generation -- but the best way to ensure the next generation is to make sure that they're at least on-par as a developer.

    I say all this as a relatively young developer who graduated in Computer Science in 2002.

    1. Re:Unfortunate reality by archen · · Score: 1

      On the flip side, why is there such an excess of not-so-great programmers out there?

      While true, you're only looking at one side of the coin. Maybe only a portion thereof. First of all there is a decline in programmers for the same reason that math teachers suck. If I were so smart and good at math I'd be doing something OTHER than being a math teacher. Being a programmer isn't a fun job for most, but even for those who do enjoy it they may recognize that they can get a lot more out of life by doing something else as a career.

      Second problem as is often mentioned is that you graduate with a CS degree but no one will hire you without experience. Obviously there is a method to the madness but I've seen this myself with people I graduated with. Eventually they just got sick of the "2 years experience required" garbage and took up something else. We're literally dropping programmers who never got a chance because companies are unwilling to invest in them.

      Third problem is the biggest - burnout. In order to become a good program you need experience. A few years at least. So many programmers never make it this far because they get tired of what they do. Either they don't enjoy what they program. They don't get paid enough. They get sick of trying to implement projects with unrealistic time tables, etc. When the average life expectancy of a programmer is around a decade before they move on (a statistic I completely made up), the tier of seniority is very small.

      So we put all this together.. Need employees with some sort of experience, won't be around for long, probably medeochre at best when they graduated. Don't want to pay them much... Hey, we can get these people from India! Now we demoralize existing programmers good and bad by having this eternal looming doom hanging over them.

      Why do we want to be programmers again? If you're good at programming you're probably smart enough to be good at something else. Can't say I disagree with those with the sense to get out when they can.

    2. Re:Unfortunate reality by ErikZ · · Score: 1

      Really? And here I thought there would be a bell curve applied to programmers. With the bulk of them being ok, and maybe 10% being great.

      --
      Democrats or Republicans. They are both taking us to the same place and they are not afraid of us anymore.
    3. Re:Unfortunate reality by Anonymous Coward · · Score: 0

      | On the flip side, why is there such an excess of not-so-great programmers out there?

      Because even with India to help out, there is such a shortage of truly qualified talent out there that the Powers that Hire have assumed that it's normal and acceptable for even the largest and best-funded of employers to have rotten software. Ever attempted to pay a major credit card bill and found that their payment site was down day after day? Ever attempted to apply a job via a web-only system that choked and went off to la-la-land? Or had page not found and database errors pumped back to your browser?

      The bar is so low for software development that chimpanzees could qualify. Many employers think of software the same way they think of hamburger - something that can be ground out predictably, and the more resources and/or longer hors, the more software comes out the grinder. But what comes out of a hamburger grinder is hamburger, and everyone can tell it's hamburger. Instead of demanding (and paying for) something better, we just say "that's how computers are".

    4. Re:Unfortunate reality by Fred+Ferrigno · · Score: 1

      I think the writing on the wall is apparent -- the average graduate is a below-average programmer. Are there other disciplines where college graduates can realistically be expected to contribute on par with a seasoned veteran? Your statement strikes me as flatly absurd: of course new programmers are going to be below average, because we all acknowledge that the quality of a programmer is highly correlated with his experience. The average programmer has experience that the average college graduate doesn't. Even if we changed the system to better prepare college students, they're always going to be lagging behind someone who's been doing it for several years. To expect anything else is ludicrous.
    5. Re:Unfortunate reality by SLOGEN · · Score: 1

      There needs to be more hands-on exposure to real, complex code, or better yet, production code.


      I don't think so.

      Exposing people to "real-world" code in a teaching siutuation kills focus on the subject. It also bogs down people in all of the bugs and problems that are not related to the subject of study.

      It may well be that education is getting worse, but complexity from the real world does not make for a better education. I hear this often by people wishing for "ready-made" people from the education systems.

      In the courses I took where we integrated with existing stuff (changing compilers, using modelling tools for state-spaces, partial evaluation), most of the time was spent on integrating. That time spent in integration taught me a lot about the product integrated with, but next to nothing usefull outside the context of integration with the product.

      Education is a statistical invenstment in rather abstract knowledge, some of which you will apply -- with a bit of adaption, and some you may never use.

      Apprenticeship can be applied to areas where knowledge is hard to quantify to abstract rules. It relies on the brain to "pick up" on things by trying to do them, getting a bit of help along the way.

      You seem to suggest that the education-system should be able to solve problems that the apprenticeship model is much more suited for? Perhaps driven by a wish for "ready-made" employees from the education system?
      --
      SLOGEN [ http://ungdomshus.nu : Sebastian cover music]
    6. Re:Unfortunate reality by ravyne · · Score: 1

      I agree entirely, however you have misinterpreted my statement. A seasoned veteran is not an "average programmer" I would hope that a seasoned veteran is a "good" programmer, or better yet, a "great" one. I don't expect a fresh grad to perform on-par with someone who's already been in the workplace, but they should be at a basic level of competancy, and I assert that most CS graduates are falling short of that, for whatever reason.

    7. Re:Unfortunate reality by ravyne · · Score: 1

      Actually, required apprenticeships are exactly the type of thing I'm talking about. Large group projects overseen by professionals are also good (This is what my school did.)

      The thing is that, in the states, apprenticeships and even internships are not required or even all that common. They're not always required, so many simply don't do them. Only the good students who want to go the extra mile. I'm not saying that school should try to emulate the "real world" but it is their responsibility to prepare their students for it -- if that means requiring internships/apprenticeships before someone is allowed to graduate, then so be it. Required internships/apprenticeships are much more common in other parts of the world.

    8. Re:Unfortunate reality by Fred+Ferrigno · · Score: 1

      No offense, but I didn't misinterpret your statement. You may have meant to say that college graduates don't meet your personal expectations, but it came out as college students are below-average programmers.

      Regardless, the average programmer, the seasoned veteran, and even the god-like expert all started as new programmers at some point. There's nothing wrong with hiring a recent grad as long as you understand what you're getting and you're willing to be patient. Quite obviously, that's not going to work in some environments and you wouldn't pay the same as you would for a more experienced programmer. If the grad wants too much money for the skills he brings to the table, go hire someone else. It's that simple really.

    9. Re:Unfortunate reality by ravyne · · Score: 1

      I think you've missed my gist again. This has nothing to do with my particular expectations, it has to do with a lot of grads not having all the skills that the workforce needs them to in order to hit the ground running -- I fully expect that they should have to learn the details of their new position(just as I did, and just as I will in any new field), but I *do* assert that they should not have to be brought up to speed on basics, or to the realities of working on a team or on large code-bases. Most grads do not have these skills, even though they are an essential part of the profession they are entering. I'm saying that their education most likely failed to provide them with these skills, and that they did not seek them out themselves. The program I attended spent a significant amount of time building these team skills by developing several complex applications in groups (2 semester-long projects in the first year, and 1 year-long project for each of the subsequent years) under the guidance of professionals.

      This isn't about some superiority complex, or necessarily blaming the grads, what I'm really trying to get across is that there is a gap between the skills that the workplace needs new entrants to posses and the skill-set that much of the higher education system here in the States seems to provide. The expectations of the industry at large should really set the gold standard for what and "average" programmer should be, and in turn, that is what the higher education system should strive to meet, if not exceed.

      This isn't me looking down from my perch, I've only been in the workforce for about 18 months now and I just turned 24 in June. Every manager and HR person I've spoken with laments the state of the typical CS graduate; I've observed this to be a common thread through each of the fields within the industry that I've been exposed to.

      Perhaps this argument is all semantics though. I might have been better off avoiding the term "average." In hindsight its too open to interpretation and not really descriptive of the concept I'm attempting to convey.

    10. Re:Unfortunate reality by Anonymous Coward · · Score: 0

      Silly rabbit. I don't think a single person considered an "uber-programmer" would test out with an IQ below 130. the average IQ is ~100. So no amount of education and training (or even experience) can make everyone an uber-programmer, they just aren't bright enough.
      Some people were simply born more capable of solving new problems.
      -anonymous coward

    11. Re:Unfortunate reality by Fred+Ferrigno · · Score: 1

      This time it was more or less deliberate. I used "your personal expectations" as a way of rephrasing "all the skills that the workforce needs them to in order to hit the ground running". I said that because there is no universal set of "basics" that all people can agree upon. You can better prepare a student if you're willing to limit the scope and cut out some breadth for the sake of depth, but obviously there are problems with that. Universities have to walk a tight rope in this regard, which is not easy.

    12. Re:Unfortunate reality by ravyne · · Score: 1

      And to that I again agree. School cannot prepare a student for every possible situation they may meet. But there are Core Skills, such as teamwork and a certain amount of experience with largish/complex code, that all positions require and that all graduates should leave school with -- and we are falling short of that to an extent that no one should be comfortable with. These core skills are just as necessary as all the theory (which gives them the tools to become proficient in all the possibilities that school simply can't account for.) It definitely is a tough balance.

      At any rate, I think we would all agree in principal that the higher-ed (and even down into the k-12 system, in regards to our generally lack-luster reading/math/science skills) could be doing more to better prepare graduates.

    13. Re:Unfortunate reality by GWBasic · · Score: 1

      On the flip side, why is there such an excess of not-so-great programmers out there? The answer is simple: The higher education system is turning out not-so-great graduates.

      Not really... There's too many people who chose CS because they want the paychecks from the bubble...

  72. Re:hireing more people is better then over working by complete+loony · · Score: 1

    But having 80 people work for 1 hour a week is not any better. You need the right number of people for the tasks you are working on. There aren't very many types of programming tasks can be split easily among a large group.

    --
    09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
  73. This article has no value by Anonymous Coward · · Score: 1, Interesting

    I disagree with the premise of this article. This article assumes that it's easy to determine who is and who isn't a good programmer and then goes on to discuss the benefits of choosing a good programmer over an average programmer... I find this discussion meritless because its first assumption is, in my view, plain wrong. It's difficult to hire good to great programmers because generally, it is virtually impossible to determine how good a programmer really is based on an interview, a resume, the person's current salary at his/her existing job, or references. It is this fact that it's so hard to tell who is good and who is not that makes hiring difficult. Hence, you get the statistical mix of good and bad programmers after you've hired enough people. If it was easy to determine the quality of each programmer, don't you think everyone would prefer to hire the better programmer? Hence, I think the rest of this article is rather moot. Maybe a more interesting article would be an exploration of how we can reduce the costs of trying to figure out who is good and who is average to assist those who are in the market to hire programmers.

  74. Re:Which perl programmer wrote this by Anonymous Coward · · Score: 0

    This article looks like it was written by a perl programmer. No, if it had been written by a Perl programmer, it would resemble one long string of the kind of censored swearing that appears in cartoon strips (^_^)
  75. Re:hireing more people is better then over working by bigtangringo · · Score: 1

    If a business treats you with the same concern as they do a laptop computer, don't work there in the first place, or leave.

    I don't mind working overtime if something needs to get done occasionally, or if I'm really in the zone. However, I'm not going to work myself to death every single week; people who do are either masochists, or they don't know any better.

    --
    Yes, I am a smart ass; it's better than the alternative.
  76. Re:hireing more people is better then over working by antdude · · Score: 1

    Yep, but it costs more. That is why companies refuse to hire more people.

    --
    Ant(Dude) @ Quality Foraged Links (AQFL.net) & The Ant Farm (antfarm.ma.cx / antfarm.home.dhs.org).
  77. Education is only a foundation. You must love it. by cryfreedomlove · · Score: 4, Insightful

    I've been a software engineering manager for a long time. I don't blame the higher education system. Nearly all CS programs cover enough of the basics to form a foundation for lifetime learning in CS. The rest is up to the student and their own innate passion. If they have a passion for the technology and chose CS as a labor of love, then they'll do fine. There have been many graduates of CS programs who declared CS majors when counseled to 'get into computers' by a high school guidance counselor. I always look for the passion players when I hire people. I avoid the people who chose CS as a 'sensible career in computers'. I've seen some passionate lovers of CS that come from tiny state universities run circles around graduates of Stanford, MIT, and Berkely.

  78. Design by Management by Mutatis+Mutandis · · Score: 2, Insightful

    I think the biggest stumbling block for above-average developers is the attitude of managers who indeed think of programmers as 'cogs in the machine'. And a sausage-machine at that. I have seen too many projects without a serious design phase at all. Typically they start with a team of managers and tutti quanti dreaming up a specification (usually to vague to be useful, but still specific enough to be unworkable) and then expecting that the software will simply be written.

    When you try to explain to them that actually, there is nobody in the IT department who is actually capable of designing and building such a system of the required complexity, you meet blank stares and incredulity. How is that possible, when that place is filled with programmers? Trying to explain the difference between routine GUI programming, systems administration, database administration, and designing a company-wide system of interlinked applications is no use. Managers would apparently trust any competent car mechanic to design a Formula-1 car. Well, they must, because they are not willing to pay for the skilled engineers that it takes to do the real job, or to invest in serious training for the people that they have.

    Of course, if they don't have the people, managers are willing to contract them. So they pay to bring in programmers from consultancy firms, and expect them to hit the ground running, seamlessly integrating in teams with people they have never met before, and writing business logic for a business they don't understand. You would need to be really lucky to find all the right people right away, more often you need to get rid of about half the consultants you hired at first, because they are no good or because they experience is too far removed from the needs of the projects.

    So far, I've met just one or two really highly skilled and creative developers. Flexible thinkers who quickly grasp problems, readily adopt to whatever technology they need, plan realistically, and deliver quality work. They are a delight to work with, and you can achieve as much with them in one hour as you would else do in whole month of meetings and deliberations. But they are usually self-employed or running their own little firms, and they can afford to pick and choose the projects they are interested in. If they don't want to do it, or don't have the time, they won't. Management regards often them as 'difficult' and expensive, considering that other programmers are a dime a dozen... So the pleasure is rare.

    The normal condition is to have a mix of more or less skilled people who will learn on the job and might be quite competent at the end of the project, and inevitably a few idiots you have to entrust parts of the project to with appropriate feelings of resignation and foreboding. (When in IT waters, I live on my wits. I have no authority there.)

    1. Re:Design by Management by Tiny+Elvis · · Score: 1

      Mod parent up please

  79. Testing.... by lysine · · Score: 4, Interesting

    I work for a small game developer. We recently announced we are developing a pretty big title, and some fanboys of the game said that we'd make a lousy product because our Programmer Job description on our job page reads like this :

    If programming games is your dream, we're the place for you. Please send in examples of your work, no matter how trivial. Websites are acceptable as well. You can't always work in one language long enough to know the syntax by heart. But the concepts are reusable, that is what we look for. C/C++ knowledge is an advantage but not necessary.

    The comment went along the lines of, how can a company make any good games if they hire just anyone off the street? Well, we do. But everyone has to pass a test. We basically hand them a copy of the engine and give them the instruction of. "Complete it" It's their job to read the code, figure out what it does, and add their own code to extend functionality. The test basically tests their ability to grok it. To get it to compile. Then to extend the code while following proper standards and naming conventions( As long as you follow the style of the rest of the code, we're happy ). Finally, their creativity. We don't tell them how to complete it. So some people do the bare minimum which shows competence, and some go all out. But usually you can tell what they like. Some are AI heavy, some do a lot with player mechanics, and some start extending the engine when they want to do more (Warning : Not Invented Here Syndrome Probably Present).

    So we've got some older guys from the VIC-20 days, some young college grads and some non-traditionally trained programmers. I'm a tools and build process guy myself. Engine is another set of people that hate muddling with gameplay because you can only spec so much, the rest is up to...testing and feel, and they hate repetitive work like that. The gameplay guys that love to noodle and pull magic numbers out of the air and test until it feels "just right".

    We also do products in staggerred teams. Several experienced developers, several inexperienced. Let the experienced funnel the knowledge down. Rotating R&D cycles, so everyones fingers is in the engine at least a little bit. Really experienced outside developers have their issues sometimes as well. They are very set in their ways, and it's hard to mold them to your system. Which is why Microsoft prefers hiring physics and math majors. They haven't learned any bad habits yet. Sure when it comes to crunch time, we do neglect the juniors, but that is when the smart one's start to shine.

    1. Re:Testing.... by Chysn · · Score: 2, Funny

      > So we've got some older guys from the VIC-20 days

      Ouch. OUCH!

      (He runs his hands through his graying hair)

      --
      --I'm so big, my sig has its own sig.
      -- See?
    2. Re:Testing.... by Anonymous Coward · · Score: 0

      Which company. Inquiring minds want to know.

    3. Re:Testing.... by kellererik · · Score: 1

      Based on my experience on the subject, people who were able to make a VIC-20 dance, are the best to iron out slow stuff which crept in the engine-design. (Sometimes placed there by the 'let's make a super-class and derive from there'-faction of programmers, but that's IMHO, of course.)

    4. Re:Testing.... by lejerdemayn · · Score: 1

      yes, I'd like to get my hands on a copy of the engine :p

  80. Also by COMON$ · · Score: 1
    first you said: It is all in COBOL with a little other stuff thrown in when COBOL won't work.

    Then you said: you can do anything with a modern COBOL compiler that you can do with any number of other languages. couldn't help but notice the discrepencies....unless you are either admitting that A: You don't know that much about COBOL and are just regurgitating what some old COBOL programmer told you or B: You understand that certain things can be done much better in certain languages.

    --
    CS: It is all sink or swim...oh and did I mention there are sharks in that water?
    1. Re:Also by PhilipMckrack · · Score: 1

      Well, our compiler won't interface with .net assemblies although there are COBOL compilers that will. In that case I have had to write wrappers in c++ in order to interface with 3rd party .net assemblies. There have been occasions where parameter passing didn't work when invoking dll's, again a wrapper was needed. It is difficult to create an email from a web app with our compiler without implementing it at the TCP level. No need to put yourself through that when a simple aspx page will do it in a few lines of code.

      Of course some things can be done better in certain languages. Languages are tools and there is always a best tool for the job. I don't disagree with your statement that COBOL is dying. I do disagree with your insinuation of COBOL being a "toy" language and not a "real programming language". It was every bit as real as C and C++ in it's time, it just had different strengths and weaknesses. You can use it to write complex business applications. You really don't want to use it to create a new compiler. Eventually it will be gone as will most languages of it's time and most languages that are being used today. That is the nature of software.

      Our current compiler vendor wants in the tens of thousands of dollars for the newest version of thier compiler plus they have seat licenses for anyone using any program written with it. There are other COBOL compilers that are less expensive than that and more capable than ours, but it is time for the little guys to migrate to something else. It is really priced for the big guys now.

      I love my job, where I work and the hours I work. I am fairly content with how much I make, but I don't get the perks (read benefits) of working for a large company. I have a 5 year old and 1 year old twins that need better health insurance than what is available to me. Private health insurance is exhorbitantly expensive. I realize my skills will not translate very well to a new company. I want to update my skills and be more marketable, which was the reason for my original post.

    2. Re:Also by Danga · · Score: 1

      First, I just want to say that COBOL definitely is not a "toy" langauge and it is actually still being used in some classes in the Computer Science department at Northern Illinois University (companies still using COBOL heavily recruit graduates from NIU). Like you said you can use it to write complex business applications very well and a lot of companies still have many applications in use originally written in COBOL. Anyone who has real experience with it will find out fast that it is far from a "toy" language. In fact I would say PHP is much more of a "toy" language than COBOL since PHP is basically just a simple web scripting language.

      Anyway, I just thought I would take a second stand up for the language even though I am very happy I don't use it professionally and instead mainly stick to C/C++ and Perl every once in a while. I too work for a smaller company and while I do miss out on perks just like you do I think I enjoy it more than I would being at a bigger company plus I get much more experience (since I have to wear many hats and also do more on my own) and since I am only now on my 3rd year in the "real world" the more experience I can get the better.

      Good luck if and when you start the search for another job!

      --
      Hey, there is only one Return and it's not of the King, it's of the Jedi.
    3. Re:Also by COMON$ · · Score: 1
      Private health insurance is exhorbitantly expensive.

      Amen to that, I did the math of being a consultant and private health care for my family was the number 1 reason not to do it. Although I have found that in my job search, smaller companies have better perks than corporations a lot of the time, at least here in the midwest. With the exception of Conagra, who have sweet benefits.

      As for COBOL, yes it has been a powerful language as many have been and many will be. However in today's market the syntax and the algorithms used in COBOL just dont translate to current languages. A java programmer can leap to C++ or .NET easily and vice versa because the language is current and similar styles. COBOL is so different from pretty much everything and (here is a matter of religious debate) IMHO not nearly as powerful/Useful as the object orientated languages of today. Thus the great migration that you will probably be a part of and retire with your millions, because those 20K compilers have nothing on the multi million dollar migration costs.

      --
      CS: It is all sink or swim...oh and did I mention there are sharks in that water?
    4. Re:Also by COMON$ · · Score: 1
      Well said, as long as COBOL is being used in the production environment it will not be a toy language especially when you can earn those nice salaries that come with being a cobol geek. PHP has had a problem with being treated as a toy language, I simply tinker with it because it is easy to understand but with PHP4 finally being kicked out the door and PHP5 enforcing stricter rules it is becoming a more serious language. It is still a big contender with .net in many shops but I think eventually what we know as PHP of the last 10 years will be like cobol by 2015 unless it picks up the pace (which it shows it is doing). But then again I know little about PHP compared to C++ and perl.

      I like smaller companies exactly for the reason that you are mentioning, much more personable people. A real "do what you can to get the company going" mentality. I came from gov't work and the freedom of not working in a corporate environment is great, I make 15% more get to wear shorts and sandals to work, a benefits package to die for, and I work with highly trained professionals rather than glorified secretaries.

      --
      CS: It is all sink or swim...oh and did I mention there are sharks in that water?
  81. Missing the point. by Estanislao+Mart�nez · · Score: 1

    Then hire three uberdevelopers instead of 10 mediocre developers.

    Then your three guys go out for lunch in the same car one day, and they get hit by a bus.

    You're missing the point. GP proposed a reductio of the claim that an überdeveloper is really 10 times as productive as a mediocre developer, based on the logic that if this were really so, they would command 10 times as much pay. However, there are sound reasons why the productivity might be 10x, but the pay less than that--higher risks inherent in hiring fewer people, and imperfect information about how good developers actually are.

    No matter how you do the math, as you add more developers with no unique or rare skills, you tend to reduce the risks associated with the loss of any one of them. The real questions here what is the business' capacity and taste for risk, and which staffing decisions meet the desired risk profile. Saying "get 3 good guys instead of 10 mediocre ones" doesn't even begin to address the issue.

  82. Written Languages by Anonymous Coward · · Score: 0

    You're selling the wrong thing. Your languages aren't really what you need to be selling but what you told us already. i.e "experience writing software for the financial industry that work, writing software that is delivered on time and on budget and recieving praise for the quality of software I write." I hope you also hanged onto your performance reviews were some of this is documented?

    "but everyone's mindset is "I need x years of this language experience before I'll talk to you"."

    That's really no different than any other job in other professions. What you have to convince them of isn't that you have "x years". But that you're reasonably proficient (leave the "for dummies" books at home) in what they're asking for and that you have the demonstrated ability to learn.

    You may not get the job, but then if there already was someone with "x" this and "y" that. Then there wouldn't even be an ad.*

    *And yes I know what the slashcynics are going to say. Don't worry about it. It doesn't hurt to try and if you get an interview and fail? Turn it into a learning experience so you'll do better next time. BTW don't forget the cover letters. Too many forget those. And follow up!! That will make you stick out over most.

    1. Re:Written Languages by PhilipMckrack · · Score: 1

      Yeah, I think I do need to downplay COBOL even more and play up the financial applications side of it. I already did that, but maybe not enough. Maybe I'll take the word COBOL completely out heh.

      It has been a few years since I have interviewed, but I'm not so bad at it. I had 4 or 5 interviews I targeted for after college and had 3 or 4 offers. Acedemically I did well and socially I can hold a conversation. I did (do) cover letters and follow up so I'm all good there. I picked where I am because I really liked the company and it has been fun to work there, at the expense of my marketable technical skills I guess. That will be a definite "learning experience" I take with me.

  83. Re:hireing more people is better then over working by watomb · · Score: 1

    Ok we need to get real it's not 50k and 125k. We live in a global market it's really 125K and 10.9K so you can hire 11 senior programmers in china (and they work 90hours a week) an one system programmer in US. Think I am full of BS?? I only wish I was my wife's father owns a software outsourcing company. You can't put trade tariffs on lines of code baby. Sucks to be a programmer including myself we are just task driven people (i.e. Light bulbs). Ya that's what the idiot with an MBA thinks of you. You're just programming slave that has to be given tasks. Programmers are just worthless scum bags that get paid more than some production guy. An you both do the same thing build a product. People that work with tools are ruled and people that think rule. So everyone reading this little small thought go start your own company the money will come just give it some time. Cheers, WAT

  84. Joel on Software by merlinokos · · Score: 1
    I'm surprised nobody's mentioned Joel On Software's coverage of this from July 2005. He has the best explanation for why a company that wants to have great software can't settle for good developers.

    "So, why isn't there room in the software industry for a low cost provider, someone who uses the cheapest programmers available? (Remind me to ask Quark how that whole fire-everybody-and-hire-low-cost-replacements plan is working.)

    Here's why: duplication of software is free. That means that the cost of programmers is spread out over all the copies of the software you sell. With software, you can improve quality without adding to the incremental cost of each unit sold.

    Essentially, design adds value faster than it adds cost.

    Or, roughly speaking, if you try to skimp on programmers, you'll make crappy software, and you won't even save that much money."

    ...

    "The real trouble with using a lot of mediocre programmers instead of a couple of good ones is that no matter how long they work, they never produce something as good as what the great programmers can produce.

    Five Antonio Salieris won't produce Mozart's Requiem. Ever. Not if they work for 100 years.

    Five Jim Davis's -- creator of that unfunny cartoon cat, where 20% of the jokes are about how Monday sucks and the rest are about how much the cat likes lasagna (and those are the punchlines!) ... five Jim Davis's could spend the rest of their lives writing comedy and never, ever produce the Soup Nazi episode of Seinfeld."

  85. Uhh, I think someone nearly has by Anonymous Coward · · Score: 0

    When someone truly figures out how to take a group of beginning artists and make them able to create something like a masterpiece, then that will be the end of high paying jobs for artists. At that point, art jobs will be kinda like jobs at Taco Bell.


    Yeah, the closest thing we have so far is Electronic Arts.
    [same applies to the GP post]
  86. I hate responding to ACs but by COMON$ · · Score: 1
    2 weeks will never replace the difference in 50K of salary. If it does the 50K more a year person is a fraud. The difference comes in the quality of development that comes out of the individual. If it only takes 2 weeks to train someone up to your level I would strongly suggest that you may be overpaid or your job is much simpler than a programmer worth 50K more would ever even think of applying for. I am no where near the top of the chain of what I did at my last job and it took me 2 weeks alone to just give a brief overview and 120 page document for my sucessor and in no way was the documentation complete.

    As for your 20something workhorses you as a manager need to learn that there is a difference between a workhorse putting in hours and a workhorse that can get a weeks worth of 20 something work done in a day. I know a couple programmers who can for a fraction of the price punch out what the 20 somethings in half the time and a product that you will not recode when you learn the crap mistakes the 20 somethings are learning on your buck.

    Case and point, think of when you first started coding, go back and look at the code, how much better are you now than then?

    --
    CS: It is all sink or swim...oh and did I mention there are sharks in that water?
  87. ...Java? by SanityInAnarchy · · Score: 2, Informative

    You blast Perl, and then go on to suggest Java, of all things?

    The reason there is bad code in Perl is, it doesn't actually "force" you to do anything. There are so many ways to do it that it's very easy to write crap -- but it's also very easy to write good stuff.

    It makes great programmers produce merely adequate code, makes good programmers produce bad code, and makes bad programmers think they're great.

    That works even better if you apply it to Java.

    Java has things like static type checking -- to the point where you must explicitly declare what exceptions you might run into. Before templates, I was actually forced to typecast to and from Object...

    This is flatly retarded, by the way -- if Java can give me a compile-time error that my method didn't declare a particular exception, why can't I simply omit all such declarations and let the compiler add them back in?

    But then, managers like to see Java as a good thing precisely because it's so limiting. It forces everything to some level of mediocrity and sameness, meaning horrible programmers are just slightly bad because Java keeps them from shooting themselves in the foot. It also means you can hire a team of horrible programmers, and replace any one of them with another at any time, and the project will continue moving forward. And it's great for programmers, because they can look busy all day writing interfaces, typing ridiculously long method declarations, and dealing with the complexities and limitations of things like single inheritance, without having to get much actual work done (or do much thinking).

    But what people are finding out is, flexibility like Perl's is really useful. Look at Ruby. The syntax looks OK on the surface, but get into even marginally complex programs and it can look as ugly as Perl. But it's also amazingly flexible, quick to code in, and makes a bright programmer into a brilliant programmer -- whereas Java will take your bright programmers and beat them down into codemonkeys.

    You can point to all the Java in the world, but when Ruby runs probably 10 or 100 times as slow as Java, and people STILL use it to run websites, and simply buy more hardware? I'd say that proves we have some damned good languages. Obviously better than Java -- pick any site that's written in Perl or Ruby (even Python), and not Java, and ask yourself why.

    Now, PHP is an horrifically bad language...

    --
    Don't thank God, thank a doctor!
    1. Re:...Java? by Anonymous Coward · · Score: 0

      but it's also very easy to write good stuff.

      That's the promise we keep hearing, but have you ever actually seen any perl that doesn't make your stomach turn?

    2. Re:...Java? by SanityInAnarchy · · Score: 1

      I have.

      What makes my stomach turn is the underlying mechanisms used for it. For example, a typical object in Perl is a hash tied to a namespace, which is kind of a bizarre way of doing it. But once you get past the syntactic ugliness of it, there are quite a lot of programs that look good. Even the syntactic ugliness itself starts to look good, once you understand the rationale behind it -- which requires actually getting familiar with the language.

      I find perl to actually be quite beautiful in how it works, not in how the code looks. And I find Java to be the opposite -- no matter how good it looks, it still bothers me how much work I have to do, and every now and then, the very concepts are just disturbing. (Typecasting to Object and back because we don't have templates, for example -- and the template system isn't great, either.)

      If we want to talk about superficial ugliness, though, Java loses:

      class Hello {
          public static void main(String [] args) {
              System.out.println("Hello, world!");
          }
      }


      Oh, forgot to mention -- it won't work unless the file is called Hello.java, and the resulting class file must be Hello.class, unless you want to mess around with the java/javac commandline.

      Now, the following works about the same in Perl, Python, or Ruby:

      #!/usr/bin/perl
      print "Hello, world!\n";


      The only difference is, it can actually get simpler:

      #!/usr/bin/ruby
      puts 'Hello, world!'


      Now, you know more about Java than I do, so I challenge you to come up with a Java equivalent of this, and tell me your version isn't uglier:

      #!/usr/bin/perl
      use strict; use warnings;

      while (my $line = ) {
          chomp $line;
          last if $line =~ /^q(uit)?$/i;
          $line = reverse $line;
          print "$line\n";
      }


      Now, I admit, I could have done this:

      while(<>){chomp;last if /^q(uit)?$/i;$_=reverse;print;print "\n"}

      But I can't even read that, and the only reason to write that way is if you're trying to win an Obfuscated Perl contest. (Yes, there is such a thing, but the above example isn't even close to what you see in those.)

      The reason I made an exception for PHP is, it's actually a case of, anything PHP can do, Perl can do better. Almost all of the features that originally made PHP so great have been found to be very, very bad practices if you're doing more than, say, a webcomic page. About the only sort of unique one left is the <?php insert code here ?> syntax, and that's a bad idea in the middle of a webpage (though in response, there's now an engine to embed Perl in HTML), but maybe OK in reverse (by doing "?> <p>insert HTML content here</p> <?php" in the middle of a program), but Perl has multi-line MIME-like literals which make that easy enough, for the very rare instances where it's even close to a good idea.

      The ONLY reason PHP is good is that there is so much written for it, and that so many people just getting into web development have the mistaken assumption that web backend == PHP, or that PHP is somehow easier than other backend languages. As wrong as that assumption is, it means that there's an army of people who know PHP -- which may or may not be a good thing. I like to think of it as Linux/Apache's Visual Basic, and I know I never learned Visual Basic.

      --
      Don't thank God, thank a doctor!
    3. Re:...Java? by SanityInAnarchy · · Score: 1

      Oops, got clipped by Slashdot assuming it was HTML. That should be:

      while (my $line = <STDIN>) { ...

      --
      Don't thank God, thank a doctor!
    4. Re:...Java? by DougWebb · · Score: 1

      This line:

      while (my $line = <STDIN>) {

      Should be:

      while (my $line = <>) {

      Now, not only can the program echo in reverse from the command line, but it can do so from a file, a list of files, a pipe (ie: the output of another program), or a socket... pretty much anything that can produce a list of string lines.

      Do that a similarly short Java program.

    5. Re:...Java? by LionMage · · Score: 1

      Java has things like static type checking -- to the point where you must explicitly declare what exceptions you might run into.

      Unless you're dealing with exceptions that subclass RuntimeException -- those don't need to be declared in a method signature, because they're unchecked exceptions. If you are trapping a condition that's truly exceptional and might not be recoverable, an unchecked exception makes sense (and saves you from a lot of try/catch blocks in your code).

      But then, managers like to see Java as a good thing precisely because it's so limiting. It forces everything to some level of mediocrity and sameness, meaning horrible programmers are just slightly bad because Java keeps them from shooting themselves in the foot. It also means you can hire a team of horrible programmers, and replace any one of them with another at any time, and the project will continue moving forward. And it's great for programmers, because they can look busy all day writing interfaces, typing ridiculously long method declarations, and dealing with the complexities and limitations of things like single inheritance, without having to get much actual work done (or do much thinking).

      Actually, I've worked with a number of horrible and mediocre programmers (some of them ex-Motorola people), and I can tell you definitively that Java does not save them from themselves. It doesn't even do a good job of protecting the good programmers from dealing with the messes made by bad programmers. Judging from the rest of what you wrote, it sounds like an academic laundry list of complaints about Java, and not a set of complaints written by someone who's ever had to write a nontrivial piece of code in Java.

      But what people are finding out is, flexibility like Perl's is really useful. Look at Ruby. The syntax looks OK on the surface, but get into even marginally complex programs and it can look as ugly as Perl. But it's also amazingly flexible, quick to code in, and makes a bright programmer into a brilliant programmer -- whereas Java will take your bright programmers and beat them down into codemonkeys.

      Totally unsubstantiated posturing. Also totally ignores one of the real problems with Perl (and even Ruby, to a lesser extent) -- code maintainability. Production Perl code I've seen is almost uniformly hairy and impossible to maintain -- sometimes even by the person who wrote it originally. Java enforces standards and conventions which improve productivity and maintainability. When you consider that 80% of the cost of any software project is in the maintenance, that's a major factor. That's the real reason why people who manage IT like Java and C#, not because they're trying to oppress you.

      Viewed that way, Perl and Ruby become great languages to do prototyping, or to do quick, one-off programs that accomplish something that you wouldn't want to do in some lesser shell scripting language. The flexibility you cite becomes an advantage in these cases. But I would not want to revisit Perl code for a utility that's going to be in use for any length of time; hence, I would say Ruby is the superior tool in this instance. I still wouldn't want to use either for any kind of substantial enterprise application development.

      Before templates, I was actually forced to typecast to and from Object...

      They're called "generics" in Java. They also don't work quite the same way as C++ templates. In fact, Java generics basically take care of the casting behind the scenes for you; they just help insure that everything is typesafe at compile time, so you don't have to deal with ClassCastExceptions at runtime.

      This is flatly retarded, by the way -- if Java can give me a compile-time error that my method didn't declare a particular exception, why can't I simply omit all such declarations and let the compiler add them back in?

      Well, I know laziness is considered one of the car

    6. Re:...Java? by SanityInAnarchy · · Score: 1

      No, that just makes it less readable. <> is equivalent to in that program.

      If you want to talk about a file, a list of files, a pipe, etc, most of that can be accomplished with shell redirections outside of Perl itself.

      --
      Don't thank God, thank a doctor!
    7. Re:...Java? by SanityInAnarchy · · Score: 1

      If you are trapping a condition that's truly exceptional and might not be recoverable, an unchecked exception makes sense (and saves you from a lot of try/catch blocks in your code).

      Shouldn't that be my decision to make, not the library author's? Why do checked exceptions exist?

      Actually, I've worked with a number of horrible and mediocre programmers (some of them ex-Motorola people), and I can tell you definitively that Java does not save them from themselves.

      No language can. But it comes a lot closer than other languages do.

      not a set of complaints written by someone who's ever had to write a nontrivial piece of code in Java.

      True enough. It's difficult to get around the fact that even the simplest things take 2-3x the code that they would in almost any other language. Including C++/C#, and that's sad.

      Totally unsubstantiated posturing.

      No less substantiated than the GP's post, which has a +5 insightful, for some reason. Mine is 50% insightful, 50% troll.

      Java enforces standards and conventions which improve productivity and maintainability.

      I'd debate that about some of them, at least. Maintainability, maybe. Productivity, probably not.

      In any case, I don't see why the language itself should enforce those standards. Perl has a few I can choose to enable -- use strict, for example -- and I can definitely say they improve maintainability. But I can turn them off.

      I still wouldn't want to use either for any kind of substantial enterprise application development.

      Even if you could enforce similar restrictions on them? I'd say I'd much rather have some of Python's more interesting features, along with its cleaner syntax, even if I had some of the stricter Java things along with it.

      Point is, I can develop a substantial enterprise application in Perl or Ruby. I really can't easily develop a quick prototype in Java.

      On a less snarky note, let's just say that some people (the people who believe in programming by contract, for example) like a visual summary of what things a method consumes and what it produces -- and exceptions are something that can be produced.

      Again, something you could do with a development suite. You could have it insert comments for you, or provide some sort of simple way of finding that information out even if nothing is actually stored in the code.

      The difference is, Java forces a methodology on you. Perl (and Ruby, etc) let you do whatever you want -- including force a methodology on yourself.

      But considering the deficiencies of the language, including a lack of real threading support (and the ugly kludges this entails for Rails web apps), I don't see how it wins as a panacea.

      I agree, actually. I'm kind of disappointed that none of the really good languages do real threading. Python comes closest, but the GIL kills it.

      I also agree that we shouldn't be so lazy, and that sometimes it's better to just go ahead and use Java, or even C. But now we're back in the sane realm of "best tool for the job", instead of talking about "Perl zealots", and I'm OK with that.

      Although I do believe a dynamic language can, ultimately, be made to perform at least as well as Java, it hasn't been done yet.

      --
      Don't thank God, thank a doctor!
    8. Re:...Java? by DougWebb · · Score: 1

      Nope, you're wrong. There's lots of special behavior that you get with the empty <> that you don't get with <STDIN>. The special behaviors are particularly useful for writing filters (programs that read from and write to other programs via pipes) but they can be useful for standalone programs too. In fact, <STDIN> is particularly bad for writing filters.

      See perlop - I/O Operators, scrolling down a bit to "The null filehandle <> is special...", and Perl Best Practices #135, Avoid using *STDIN unless you really mean it.

    9. Re:...Java? by SanityInAnarchy · · Score: 1

      I said "in that program."

      As a general practice, it may be better to use <>, but I don't see what more it would accomplish without changing the rest of the file as well.

      --
      Don't thank God, thank a doctor!
  88. Thta is the way CS programs usually work by sirwired · · Score: 1

    Your experience was not unique. If you wanted to learn to specialize in one language, you didn't need to get a 4-yr CS degree to do it. Most decent 2-yr colleges with a program in programming (or, for that matter, your local bookstore) can teach you the syntax for the Language-of-the-month.

    Instead, you probably chose a Computer Science degree. The name alone should tell you something, namely that your degree is going to be in science. Of course it is going to be theory-intensive! You were being given the tools you need to learn quickly just about any computer language, and solve a wide range of problems with them. If you concentrated in a single language, it is doubtful you would have been able to learn as much as to how computer languages work. Nothing gets you thinking about data structures, algorithms, methods, etc. like having to translate complex problems into a different language each semester.

    That is what separates a quality degreed programmer from a self-taught programmer similar intelligence without the same training. That is not to say that all degree holders are good programmers, or that all non-degreed programmers are bad ones...

    In fact, it is highly likely none of your professors even knew Ruby, or the LAMP stack. The job of a college professor is to perform original research work to advance the state-of-the-art, and to pass on the accumulated knowledge of the ages to students. If the students are any good whatsoever, they will be able to figure out for themselves how to apply it to practical work, if that is their chosen career path.

    However, if all you did in college is take and pass your classes, you will indeed have a tough time "hitting the ground running" in most jobs. This would be the case even if your school did specialize in a single language, because there is a heck of a lot more to programming proficiency than the language itself. For myself, I had several school-year and summer jobs doing "front-lines" IT work, programming, and even a low-end retail mgmt. job. I learned things there that could not have been taught in any class, and conversely my classes taught me things that would have been difficult or impossible to pick up as part of on-the-job training.

    Immediate employability is not the job or goal of college curriculums, nor should it be. It has always been my impression that it is a student's responsibility, via self-learning, personal programming projects and relevant part-time and summer work, to pick up where their theoretical classes left off.

    SirWired

  89. Oh god, they never get this right. by John+Sokol · · Score: 4, Insightful

    For 100's of years you have the senior crafts man and his apprentices.
    You can't get good quality with just Senior crafts man, or just junior apprentice types.

    The Junior ones just don't know how to make the trade offs or the how and why things are done a certain way and end up painting then selves into a corner or making a mess for the next guy to deal with. But they are young and full of energy.

    The Senior ones, just don't have the patients or excitement about over all of the stupid little details. They just can't get excited about doing the same thing over and over. But they think ahead for the next guy, they know how to avoid problems and usually know how to fix problem when they arise.
    Also they have usually have a long list of other senior developers they can call on for help and advice.
    Often on a really difficult problem the phone and E-mail are your best tools.

    As my former partner the infamous Jesus Monroy used to say, on a boat you need rower and captains. Too many of either doesn't work.

    As a senior developer, I find I am best at working the really difficult problems, but lack the patients for the more mundane bulk coding.
    Also like doing architecture work.
    But thing work best when there a Junior programmer that will get stuck on a problem and usually hide in the cube for weeks trying to solve it. Where when I am around I usually can take one look and tell then exactly how to fix it. As a result they tend to get 10x or more work done when I am around.

    Also junior programmer usually just start writing code when giving a project with little consideration on design. The end result tends to be large, slow and almost impossible to debug.
    As someone experienced, I find that laying out the design, the foundation, if you will that everything else is to be built of from is critical.
    Once designed correctly, the code is much smaller, simpler, is easy to work on and debug. It also less code means it runs faster, loads faster and uses less resources.
    Also less code, means it faster to implement. So I'll spend more then 1/2 of the development time on research and testing, and design, before I ever type the first line of code in. But in the end, I get done faster and almost never have any logical bugs, memory leaks and have never needed a debugger, just type-o's as mostly, of only I could spell...

    I hate nothing worse the Bloated code.

    --
    I am always doing that which I can not do, in order that I may learn how to do it. - Pablo Picasso
    1. Re:Oh god, they never get this right. by Anonymous Coward · · Score: 0

      I think this is plain wrong, like meeting a self-described "great chef" who "lacks patience" for endlessly chopping onions and measuring ingredients in the kitchen.

      Then he's probably not a great chef! Greatness requires mastery of craft, and mastery requires decades-long commitment to doing thing right and then learning how to do them even better.

    2. Re:Oh god, they never get this right. by John+Sokol · · Score: 1

      This almost isn't even worth replying to.

        "great chef" almost alway have apprentices to chop onions and peel potatoes.
          It's not that the chef can't cut onions but on a larger cooking project has more important things to do and in a sense "lacks patience"
          I actually know several great chef in real life that tell me when the go home, don't feel like cooking.

          So, Dude your proving my point in your effort to debunk me.

      --
      I am always doing that which I can not do, in order that I may learn how to do it. - Pablo Picasso
    3. Re:Oh god, they never get this right. by anomalous+cohort · · Score: 1

      Mod parent up as I agree with him. Not only is it senior versus junior, it's specialist versus generalist.

    4. Re:Oh god, they never get this right. by allanj · · Score: 3, Interesting

      This is *exactly* what I think is best. Let the experienced hands create the design and let them solve the difficult stuff. Then have the juniors "fill in the blank" and help them along the way. Occasionally have them participate in design tasks to give them some experience and a little more of the "why" part about the design - this will reduce the number of annoying questions tremendously afterwards.

      As you can probably tell, this is what I do - design and difficult stuff. I really enjoy that. Others do GUI, build process, configuration, and what-have-you. Some of them like their work because they get to go home and not think about their work until next morning. They will stay "junior" forever, but are perfectly happy with that. They don't have a passion for their work, so they should never ever be allowed to do the design or solve the difficult problems, and most of the time they don't even want to.

      Now management, that's another issue. They simply fail to understand that there can easily be a factor of 5 or 10 difference in the total time it takes for any two of us to complete a certain task with any reasonable measure of quality. This works both ways - I end up spending more time doing GUI work than those who like that work, simply because it is a kind of work that does not motivate me. Likewise, solving that OS and transport-independent highspeed failover service protocol was my work, because that is what I do 10 times faster and better.

      --
      Black holes are where God divided by zero
    5. Re:Oh god, they never get this right. by emurphy42 · · Score: 1

      This makes sense if you're creating new software. My current company mostly customizes existing software on a consulting basis, and its feeling has long been that the "fill in the blank" portions are small enough that any gain from handing them off would be outweighed by the communication overhead. Never mind the difficulty of finding competent juniors. Instead, we hired a senior that I knew from my last job, and handed off a number of whole projects.

  90. Since when is forcing exception handling retarded? by Anonymous Coward · · Score: 1, Insightful

    Making you actually handle the exceptions your code is declared to produce is "retarded"? You haven't really thought about that, now have you?

    Why do I get the impression you can't handle Java? Why do I get the impression I'd never hire you because you'd never get past the question, "So, what practices, procedures, and habits have you developed in your years of coding that are intended to prevent the introduction of bugs?"

  91. Programms =! Engineers by Anonymous Coward · · Score: 0

    Programmers these days, are on about the same level as typists.

    Given Problem A, Apply generic Java Cookbook Solution A
    Given Problem X, Apply generic Java Cookbook Solution X

    and so on and so on

    Don't worry about code quality, JavaDoc, PerlDoc will do it FOR you.
    Don't worry about memory management / leaks, let java do it FOR you.
    Don't worry about which algorithm to use, let Java do it FOR you.

    You are not getting a person that can solve problems and analyze data, you are getting someone who can cut,copy,paste and 'resue' code by altering the hell out of some java example problem.

    Experience doesn't mean anything in this field anymore. You pay your money, you take your chances with some 'learn Java in 24 hours' person.

    Software Engineers on the otherhand, that is 'Real' Software Engineers (a generic B.Eng in Canada anyway), are taught a mix of CS/Math and a Electrical/Mech/Civil/Chemical background. They can solve problems, and apply an engineering discipline to solving a problem. Not just sit down and produce steaming mounds of code.

    As an added bonus, if hired as an Engineer, they can be licensed by the PEO, to produce mission or safety critical software. They FSCK up, and their licence can be revoked, and they can be sued. What happens when code money #44 FSCK's up and the voting machine fails...pretty much nothing, he gets fired, and moves to another code monkey pounding out steaming mounds of code job.

    a Distinction has to be made re, the 'run of the mill programmer' suitable for working say at Microsoft, etc, and a qualified Engineer, who can work just about anywhere.

  92. Re:hireing more people is better then over working by Anonymous Coward · · Score: 0

    so you can hire 11 senior programmers in china

    Not if you have a secure project, you can't.

    Reason #1 to get a security clearance: you can't be outsourced.

  93. the real question by drfireman · · Score: 2, Insightful

    Who's hiring these recruiters? I may have all the qualities of an expert developer, but I'll never in a million years get even a sniff if I don't have all the checkboxes in order. Recruiters don't care if your resume screams out that you can be idiomatic in a new language or system within a few weeks. They'd far prefer you have a ten year history of making the same pinhead mistakes over and over. The attitudes of recruiters reflect the desires of the company, whether they're implicit or explicit. Companies that have trouble finding expert programmers are just lazy.

  94. The problem with Java is ... by Skapare · · Score: 2, Insightful

    The problem with Java is there is no built-in filter to keep out the bad programmers. I agree that Java is better than Perl. But I've seen probably more bad programmers doing a Java than bad programmers doing Perl. This doesn't mean one should stop using Java by any means. It just means you better select your programmers very very carefully. And their experience in other languages should count.

    --
    now we need to go OSS in diesel cars
  95. College is not programmer training by Skapare · · Score: 1

    College is not programmer training. It's building a foundation upon which one learns new things for the rest of their life ... or at least for the rest of their career. There will be good programmers and bad programmers coming out of CS programs at every GPA level. You have to figure out which is which because that was not what colleges are there to do. One of the best programmers I ever had working for me had no college at all and had only done some code hacking at home. In other cases it's real world experience that counts more than compuetr experience.

    --
    now we need to go OSS in diesel cars
  96. Recruitment agents versus contacts by jesterzog · · Score: 1

    I definitely agree with this -- contacts can be very useful. My biggest let-down was that I spent several extra years working towards a Masters' degree while most of my friends went out to get jobs with the companies that actively recruited finishing undergraduates. I got it in the end, but also decided I'd had enough of academia and just wanted a job.

    Getting past the recruitment agents was awful, because there was absolutely zero understanding beyond keyword searches of buzzwords that were related to Java and DotNet, especially when my only formal commercial experience had been a couple of years of ASP web development. (yuck) Years of experience programming and scripting in a zillion languages in NetBSD, Solaris and Linux systems in academia didn't really count for much.

    In the end, I emailed someone who I'd worked with in a temp job at Christmas a few years before, to ask if there was anything going. I was very fortunate that there was, and that he already had a lot of respect for my abilities, and now I've landed a nice job which is right now is primarily working with DotNet, but which also gives me a lot of opportunities to play in other things. I'm also hoping that the commercial experience I get here might actually count for something in the future.

    I think that part of it can be finding the right recruitment agent. For the ones who don't properly understand the industry, it's a risk presenting someone to an employer when they don't necessarily have the specifics that were asked for, especially if the agent doesn't really understand the industry. I did manage to find a couple of agents who actually seemed to understand a lot more and were really enthusiastic, but I was only discovering them at about the time I already found a new job. Those are the agents I recommend to friends, and next time I'm searching they'll be the first I go back to.

  97. re the 10x salary by cinnamon+colbert · · Score: 1

    you have probably heard of Ross Perot
    as a kid, he was a salesman for IBM on comission, no cap
    he made more then the VP levels above him
    as a result, IBM changed the whole comission structure so that a sales person could not make more then a VP

    moral: companies will cut off their noses to spite themselves

    beyond this, we are hiringin, and how do you tell if someone is really 5x or whatever better ?
    it is worse then useless to say that there exists a special class of super programmers if you cant identify them during the hiring process.

    1. Re:re the 10x salary by Anonymous Coward · · Score: 0

      > he made more then the VP levels above him
      ---------------^^^^

      Ross Perot probably made more money than you
      because he knows the difference between THEN
      and THAN.

      It's not hard.

      Then -- temporal
      Than -- comparative

  98. mmm flaming cheese.. by tempest69 · · Score: 1
    The whole point is that a high end coder can do way more than a regular shmoe coder. who can do a whole lot more than a novice...


    developing code that can do something simple like print 0..1999 excluding numbers not divisible by 5 or 2 and excluding any number divisible by 3.
    a novice might screw up some of the semantics and wind up including 15 in the printout,
    the high end and the regular should be able to code it in under a cup of cofee.


    on a harder task.. calculate all primes under 32 bits and populate a vector with the results.
    A novice is going to have code that is slow as sin. O(n^2) (2^64 ops)


    a regular shmoe coder will manage to find a few tricks that will make the process a bit faster. O(n * sqrt n) (around 2^48 ops)


    A high end coder can pull off an O(n) result (less than 2^32 ops)



    They might all pull it off in the same time but high end coding makes all the difference in performance.



    Some programmers are paid correctly, but quite a few are overpaid for their lack of skill, and some are underpaid for a brutal level of skill. And some uber-hackers just produce at regular hacker levels because they can get away with it.


    Storm

    1. Re:mmm flaming cheese.. by DerekLyons · · Score: 1

      The whole point is that a high end coder can do way more than a regular shmoe coder. who can do a whole lot more than a novice...

      That's an assumption - not a fact. (And your 'demonstrations' of that are nothing short of ludicrous.)
    2. Re:mmm flaming cheese.. by 91degrees · · Score: 1

      on a harder task.. calculate all primes under 32 bits and populate a vector with the results.

      Yes, but a simpler task e.g. determine if a handful of 16 bit values are prime can afford this sort of inefficiency. Attempting to divide by every value from 0 to 256 isn't going to take long. The code may take several hundred times as long to run for the novice but if that means it takes a second rather than 10 milliseconds, which for a lot of cases will be good enough. You might have lost very little by doing things cheaply.

    3. Re:mmm flaming cheese.. by tempest69 · · Score: 1

      um your on slashdot...... where monkey posts are the norm.

  99. Cauliflower would be an upgrade by megaditto · · Score: 1

    In real world people get paid by using the right tools to get the job done.

    In some cases, Perl is the right tool.

    --
    Obama likes poor people so much, he wants to make more of them.
    1. Re:Cauliflower would be an upgrade by freedom_india · · Score: 1

      for what? to commit professional suicide?

      --
      "Doing what i can, with what i have." ~ Burt Gummer
  100. Re:Since when is forcing exception handling retard by Anonymous Coward · · Score: 0

    Oh mate, if I only had some mod-points you'd be up there. I nearly choked on my coffee when I read the GP...

  101. Re:Since when is forcing exception handling retard by SanityInAnarchy · · Score: 1

    Making you actually handle the exceptions your code is declared to produce is "retarded"?

    No, making you actually declare every single exception that might possibly happen, even if you don't intend to catch all of them, is retarded.

    Let's say I've extended "Hello, World" to ask you for your name, so it can then say "Hello, <name>!"

    class Hello {
    public static void main(String [] args) throws IOException...

    Obviously, "Hello, World" is a simple enough program that IOException doesn't need to be caught. I'd much rather just leave that off, and let the program crash with an exception error. And I can do that, but I still have to declare it, for no good reason.

    For that matter, there are plenty of cases where you might want to handle the exception, but at a lower level. Why should the intermediate levels all have to know about IOException?

    For example, I might be five calls in before I hit the exception. Could be five separate methods that now need to have "throws IOException", even though all I really intend to do is catch it somewhere out in the main program loop and throw up an error dialog, then either quit or try to restart the program. (Re-initializing all data structures might be faster than starting the program from scratch -- remember, this is Java, and Java can take a LONG time to start.) But that means there's maybe one method doing IO, and one method which catches the exception, and three methods in between that have to know about the exception for no good reason.

    Sure, there are runtime exceptions. But I have no control over what libraries use them or don't, and I distinctly remember that there were disadvantages, though I can't remember what they are. (I haven't used Java for years, on purpose.)

    From a technical point of view, I can sort of see why it might make sense for the generated code to contain information about what exceptions to expect. It might even be a best practice to provide some comment stating what exceptions might be thrown, maybe even to have some system which watches for this kind of comment, the way Eclipse can automatically generate your documentation for you, and warn you if you don't have properly formatted comments for every method.

    But it shouldn't be required any more than documentation is required. You can always write a third-party tool to audit your code, you don't have to throw up a compiler error if not everyone wants to conform to your precise coding style.

    "So, what practices, procedures, and habits have you developed in your years of coding that are intended to prevent the introduction of bugs?"

    Unit testing. Tight development cycle. Avoid global variables, and use namespaces where possible. Comment more than you think you'll need to. Turn on warnings in the language during development. Use stubs and prototypes so you can get something that sort-of works, so that you can keep it sort-of working as you fill in the details (see Unit testing and Tight development cycle).

    Also, modularity is good. A chunk of code shouldn't have to know about more than what it absolutely needs to. And my Hello World program has no need to even know that an exception exists.

    --
    Don't thank God, thank a doctor!
  102. Good coder, bad coder by billcopc · · Score: 1

    At the end of the day, what matters the most is whether your team fits well together or not. I've recently found myself in a situation where my extensive coding skills are going to waste, just because the shop I work for, like to do things differently (read: fast and cheap, to stay competitive). Now there's nothing inherently wrong with that, because that's how the customers like it. I find myself struggling with what should be trivial work, simply because I haven't written such spaghetti code in oh, 20 years! It doesn't matter that I could probably code an operating system in Javascript (a very shitty operating system, indeed!), my daily challenge is to set aside my pattern-rich design style, and settle for the quickest solution that fits the requirements.

    I guess my point is, no matter how specialized you are, 90% of the work out there is simple generic crap. Just because we're brilliant designers doesn't mean there's a client to appreciate our artful code. What the user sees is "I type stuff in, and click a button", whether you coded 4 levels of abstraction, or you're some half-brained VB 2.0 "developer"... it's all the same to their eyes, and the only thing that matters beyond that is the bottom line. This means we'll be seeing more and more junior (low wage) developers churning out garbage code that usually does what the client wants, that's simply the product of a competitive market.

    --
    -Billco, Fnarg.com
  103. mod parent underrated by Anonymous Coward · · Score: 0

    Yeah "retarded" maybe wasn't the best wording, otherwise it's a pretty good post.

    Java feels like a very restrictive language; for example, as parent pointed out it forces you to spend a lot of time coding exception handling clauses, until a fair percentage of your code base consists of boilerplate exception handling. Now it's great that it forces attention to be paid to error handling, but that's not the only way to do it, and maybe not even the best way.

    Also, Sun (and IBM, etc) has defined such a wide range of standard classes that it seems like the art of being a Java programmer is find and superficially learning all the APIs you need for a given project as quickly as possible, instead of developing infrastructure code of your own (incidentally the latter is where programmers develop mastery of their art, not gluing together stuff into an application). Similar remarks can be made about .NET programming.

    Perl is a very loose language by comparison, not at all suitable for mission-critical code but terrific for many small tasks that need to be tweaked as requirements change, as for web applications and system administration.

    1. Re:mod parent underrated by SanityInAnarchy · · Score: 1

      Also, Sun (and IBM, etc) has defined such a wide range of standard classes that it seems like the art of being a Java programmer is find and superficially learning all the APIs you need for a given project as quickly as possible, instead of developing infrastructure code of your own

      This is actually a good thing, and quite true of Perl also -- see CPAN.

      In other words, let's say my project is to read an Excel document and produce a chart for the Web -- or something similarly simple. The actual logic of the program is close to nil, it's just a conversion -- but there are so many similar problems to be solved.

      If I can go on CPAN and find a module to read Excel (or even just CSV), and another module that can generate charts, and maybe a third module that handles image formats, I can stick them together like legos and my program is done. Why would I want to waste my time duplicating all the effort that went into those modules?

      That's why I use Perl, actually -- the #1 reason is CPAN.

      But it's nice to have a decently powerful language ready, too, for when you actually have to write a significant amount of logic. I think Perl can hold up well, but it's ugly. It's fucking hideous.

      Unfortunately, I haven't really found anything better, yet. Ruby and JavaScript are my two favorites right now, and I hate both of them almost as much.

      Perl is a very loose language by comparison, not at all suitable for mission-critical code

      I'll just say this:

      In Perl, I can: use strict; use warnings;

      It may not be enough, but it's there, at least. One can certainly imagine writing filters that make the language more restrictive. Basically, if you use a restrictive enough subset of Perl, you may as well be writing Java, so all you need is a tool to force that restriction on you.

      It's much more difficult and kludgy, though, to make a loose language out of a tight, anally-retentive one like Java. That's why, if I was going to write a language (and I keep meaning to), I'd start with something extremely loose and simple, and let people extend it and restrict it to make whatever language they want out of it.

      --
      Don't thank God, thank a doctor!
  104. Re:Education is only a foundation. You must love i by Anonymous Coward · · Score: 0

    I LOVE CS and IS, but I cannot locate a position - I worked in industry for 12 years, I build hardware and am studying verilog, I write assy, C, C++ w/STL, Java, perl and sh, among other things designed and built software to dump function vectors from RAM to hardware EEPROM for a computing platform, that is, I have bit-level knowledge. I have professional sys admin and security experience for NT, Solaris, Linux, and returned to finish a M.Sc. in Information Systems specializing in Software Engineering, we spent a lot of time on testing - professor is the author of one of the IEEE recommended textbooks. I still cannot get any call back for even an entry level job in my area. Any advice for an unsuccessful job seeker?

    Thank you in advance

  105. It's the hiring process by sfjoe · · Score: 2, Insightful


    I think the real problem is that people don't know how to interview to find talented programmers. The best predictor of future performance is past behavior. 90% of an interview should be about past projects or academic work. Instead many people seem to have this weird notion that asking how many socks you need to pull from a drawer to get a matching pair gives insight into an engineer's talent.

    --
    It's simple: I demand prosecution for torture.
  106. Re:hireing more people is better then over working by jc42 · · Score: 1

    But having 80 people work for 1 hour a week is not any better.

    Heh. It reminds me of a clever version that I've heard a few times:

    If one woman can make one baby in nine months, how many babies can twelve women make in three months?

    Unfortunately, many managers wouldn't understand why you would ask such a silly question ...

    --
    Those who do study history are doomed to stand helplessly by while everyone else repeats it.
  107. Most programmers are not good by goldox · · Score: 1

    Good programmers are not cheap. Most programmers are not good.

  108. once in his place by tkavanaugh · · Score: 1

    I can tell you that when i graduated in the great job vacuum that was spring/summer/fall of 2003 I was desperate for a job, the previous spring/summer i had sent out hundreds of resume's and used every friend of a friend contact i could, it was all for not, when i did actually talk to HR people they would say "we're firing 5 people this month, i doubt we'll have any interns this summer" so of course this led to no intern experience for me... I wish at the time open source projects where as available as they are now, but I didn't know anything about it... so there i was with a degree and no job, no insurance no experience and no way to gain it, i was working 12-14 hours a day as a handy man for my future in-laws(two sets) and filling out job applications for maybe another 2-3 hours a day, there was no time to join open source projects or program my ti-89 to do cool stuff, i went to sleep, so i could get up the next day and work for 10 dollars an hour to pay off the student loans, car insurance, food, internet, rent etc... It must be so nice to say get experience... when you already have it.

    1. Re:once in his place by Bluesman · · Score: 1

      Eh. There's always an excuse. If you love it, you'll find time to do it. If not, then it's no great tragedy if you can't find a job doing it.

      My primary job (not software development) is demanding, I have a wife and two kids, and I find time for my projects.

      You don't need to work on something for years to make something good or useful. A couple weekends should be plenty.

      --
      If moderation could change anything, it would be illegal.
    2. Re:once in his place by pjrc · · Score: 1

      Yep, it is nice... to say anyway.

      Ultimately, such advise pretty much only applies to those who don't need it anyway. I mean, in reality, only really inspired and motivated and usually quite talented individuals will go to such effort to create a useful project in their spare time. Or if they aren't initially so talented, they quickly build up experiences doing such.

      Others simply don't.

    3. Re:once in his place by Fulcrum+of+Evil · · Score: 1

      I bet you say that to the chemical engineers - seriously, why is it only acceptable to tell that to programmers? Sure some people are passionate, but we also need the ones that aren't very passionate, but do want to do a good job and make decent money.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
    4. Re:once in his place by Bluesman · · Score: 1

      It's acceptable because the barrier of entry to programming is so low. Most people have a computer, or at least access to one. Hardly anyone has a fully stocked chem lab at home.

      If you're doing the job just to make money, then you're no better than any other guy just doing the job to make money, and you shouldn't expect to be treated as such.

      Nobody owes you a job, you have to have something to offer. "I just want to do a good job and make money at it" isn't going to set you apart. EVERYONE wants to do a good job and make money.

      --
      If moderation could change anything, it would be illegal.
    5. Re:once in his place by Fulcrum+of+Evil · · Score: 1

      Way to miss the point. You can't expect that every programmer is doing it for love - most likely, the majority are doing it because it's a job. Just wanting to make money isn't sinful, and you still have to address the rather screwed up attitude we have towards fresh grads.

      --
      "We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
  109. Re:Since when is forcing exception handling retard by Anonymous Coward · · Score: 0

    Checked exceptions (the ones you are forced to catch) totally suck and I completely agree with you. Fortunately this is a common opinion in the Java community and a lot of the open source third party libraries (Spring for example) agree and strictly use unchecked exceptions (those that derive from RuntimeException). There aren't really any disadvantages to unchecked exceptions. There are major disadvantages to checked exceptions. You can at least wrap checked exceptions in unchecked exceptions, for example, Spring wraps SQLExceptions in its own unchecked exception class.

    After using Java for quite a while, I'm comfortable with it, it works well despite its few problems (some of which can be worked around), but I'm starting to feel the limits of it, and want to move on to something less restrictive. Java 1.5 was a nice improvement and makes Java a good enough language, but lately the ways I've been using it have almost been stretching it to do things dynamic languages are better designed for. Seems the open source Java community is pushing it in similar directions.

    I'm going to try to improve my Python and/or Ruby skills and see how it compares. At least there are dynamic languages that run in the JVM (Jython, JRuby, Groovy, etc) so I can interface with existing Java projects if I have to.

  110. Re:Education is only a foundation. You must love i by darkstar949 · · Score: 1

    I hate to say it - but odds are you aren't getting call backs because you are applying to entry level jobs. Start applying for mid and upper level jobs and odds are you will start getting call backs.

  111. The problem is that... by ringm000 · · Score: 1

    bad (i.e. incapable of doing any real production development) but talented programmers can easily disguise as good ones. That's what I do all the time.

  112. Go to a place that hires graduates... by javabandit · · Score: 1

    Its not circular logic. I was in your shoes a lot of years ago. And I thought the same thing. Then I learned.

    You need to go to a big company. Period. Several companies will hire new graduates, train them, give a decent wage and benefits. Companies like Cisco, IBM, et cetera. All of them hire new graduates. But smaller companies don't have the capability, training, and infrastructure to support the care and feeding of new graduate.

    After two or three years at a company, you will be able to get a job a most places, and off you go. But you need to earn your stripes, man. Right out of school, you just aren't going to get into the places that the good programmers go to.

    So go to the big boys, apply, earn your stripes, pay those dues... and we'll see you in the workforce in a few years.

  113. Mixing good programmers with average programmers by Amitz+Sekali · · Score: 1

    As parent stated, when the problem to be solved is too easy, having uber programmer is useless since the works quality of average programmer and uber programmer is similar. At easy problems, you can throw many average programmers (with some consideration to mythical month effect) to speed up the work. At difficult problems, you must use uber programmers since 10 average programmers might not be able to progress at all

    Therefore an efficient company should consider the problem on hand and employ a mix between uber programmer and average programmer. Morale will goes up. Nobody do extremely boring or difficult stuff for too long. Total of salary paid will be lower although it will commensurate to performance. Everybody's happy.

    --
    If you delay pleasure infinitely, the pleasure will be infinite. (YM)
  114. Stupid question by Anonymous Coward · · Score: 0

    Ok, so if everyone is only hiring senior developers, what happens when the last of them dies? This is the shepherds vs sheep equation. A lot of academies (including military) for example like to say that they produce leaders. Well, if they don't produce proportionate numbers of rank-and-file also, then who are these leaders leading?

    The fact is, big projects encompassing a variety of specialties and disciplines do need a critical mass of programmers to fill those roles. And rarely do you ever get to pick and choose the perfect set of candidates. Some you win, some you lose. This is reality. It has nothing to do with software and everything to do with the law of averages.

    And the fact is, if the newbies don't cut their teeth on real projects then they'll never become experienced veterans. That's part of the whole "experience" thing. Today's senior developers were juniors once. And that's how it always will be. Convincing people not to hire new blood is like saying no one should ever be treated by a new doctor. Which in principle has some validity, because everyone prefers the more experienced person, but this is precisely why hospitals regulate handing off patients and cases to new doctors -- they have to be sure that a doctor with 10 years experience actually has 10 years of experience and not 10 years of watching other people do stuff.

    So sure, if you are a small, elite company go ahead and siphon off the best talent you can at any price, in exchange for not having to do any training. The larger and more willing companies who are willing to invest time in their employees are the lifeblood of the industry, and without them you wouldn't have any senior developers to hire.

  115. Because... by kruhft · · Score: 1

    ...we won't work for them anymore.

  116. "Why is it so hard to find good programmers?" by KlaymenDK · · Score: 1

    Um, 'cos Joel's got 'em all?

    Sorry, couldn't resist...

  117. Thanks! by zolf13 · · Score: 1

    Thanks for mood improving article. :D

  118. ueber programmers do exist! by Anonymous Coward · · Score: 4, Funny

    >There's no one programmer who does the work of ten other programmers

    Oh there is, I am one. I've had several occasions where I solved problems in a few days (or 4 hours once) that others were struggling at for months; some of these others were plain incompetent, others were pretty good.

    I find that I'm pretty unique in fitting the right tool to the problem at hand, as well as in general overview. I've never met anyone as productive as myself.

    I'm posting this anonymously, because I have to work with others, and one of the things you cannot do is alienate everyone around you; one sure way of doing that is being more skilled than them in all job related aspects.

    1. Re:ueber programmers do exist! by MECC · · Score: 1

      Yes, ueber programmers do exist. I knew one once, who wanted to fix a mainframe OS problem. Unable to get the source code, he dumped the assembly code, walked through it, and fixed the problem.

      Pretty cool, actually.

      --
      "We are all geniuses when we dream"
      - E.M. Cioran
    2. Re:ueber programmers do exist! by boa13 · · Score: 1

      I did that a few weeks ago, to get Ecstatica II to play its music under Windows XP. I am not an über programmer, and spent way too much time on this task (but it was fun, and instructive!). Actually, had the creators of the game not left the debugging info in the executable, I would not have been able to do it.

      So, even though it sounds impressive, I don't think the ability to dump assembly code and correct binary images is a good indicator of überness. Actually, this is what crackers do all day long. This is so common that great tools have been developed (by über programmers? ;-)) to help people do just that.

      Überness is mostly about how you solve a problem, and mostly not about the problems you solve.

    3. Re:ueber programmers do exist! by MECC · · Score: 1

      This individual had no tools other than a paper printout of the assembler code, and an assembler. It was also a mainframe operating system - very different from a pc operating system both in size and complexity (while not as true these days). Also all the os in question ran in fielddata, making the task somewhat more difficult.

      The change itself wasn't really terribly radical - just changing the exception handler from a reload to a flush.

      --
      "We are all geniuses when we dream"
      - E.M. Cioran
    4. Re:ueber programmers do exist! by Anonymous Coward · · Score: 0

      That's not uber, that's just older than you. We all used to work that way, as recently as the early- to mid-90s.

    5. Re:ueber programmers do exist! by iabervon · · Score: 1

      As I said, there are cases where a great programmer can do things that no quantity of average programmers can do at all. It's not even that uncommon. But if the company had a problem that 10 average programmers could do reasonably, you probably couldn't do it in the same amount of time, unless there was some clever shortcut, so you're not exactly doing the work of ten programmers. Sometimes better, sometimes not as good, but different in either case.

    6. Re:ueber programmers do exist! by Anonymous Coward · · Score: 0

      > Überness is mostly about how you solve a problem, and mostly not about the problems you solve.

      Exactly! Good programmers know how to leverage their time.

      If you've ever spent an hour writing a script to save you 90 minutes of data entry, you know what I'm talking about.

      Smart time usage + knowledge/experience + creativity make good programmers into über-programmers.

  119. Not just CS Education by QuestorTapes · · Score: 1

    It's not just computer science, the schools aren't training people to -think-.

    I just spoke to a friend of mine, a trucker, about this. A majority of office workers and people in support jobs have exactly one reaction to minor obstacles: stop dead and wait for teacher to come around and lead them through how to solve the problem.

    Office workers he deals with think he's some kind of super-genius because he can walk into their office and work an unfamiliar fax machine. One gal asked, "How did you DO that?" He answered, "There's a LCD screen on the front that tells you exactly what to do; you READ it."

    He's helped his grandson move from being a D average math student to an A+ average in one year by teaching him how to solve math problems in general, rather than how to solve THIS specific type of problem.

  120. Re:hireing more people is better then over working by watomb · · Score: 1

    "Not if you have a secure project, you can't. Reason #1 to get a security clearance: you can't be outsourced." Depends on what's classified and how you partition the design off. It's like the movie CUBE give every programmer a little task and nobody understands whole system. So you have the US guys do all the classified stuff usually a couple .h files and give everything else to overseas programmers. Ya all those GUI wrappers and functional blocks that do some task. System integration is painful but it can be done.

  121. code has to be perfect by oliverthered · · Score: 1

    I think this guys got part of the argument, but the real argument is that code has to perfectly describe the job it has to do without being overly complex or to slugish. Juniors are great, but you should always have their code reviewed at least twice by senior programmers and you should always have a senior programmers code reviewed once, you could even go the whole hog and use XP as a development process and get continuous review by lots of different people.

    You need to do all of this because if the code isn't "perfect" then your going to have bugs and bugs mean bad data coming through, unreliable software and never ending maintenance of the software.

    A lot of software also need to be future proofed to some extent so that new features can be added for the next release and that required practices and disciplines that junior developers won't have.

    But in the end a good programmers a good programmer, you'll get a lot more out of a junior whose a good programmer than you would out of someone with years of experience in many different fields who couldn't program a good solid application to save their life. And probably the only way of finding out if someones a good programmer is talking to them in an interview and putting them on a few months probationary period. (of course a good mix of jobs that have been held for a reasonable length of time mixed with a reasonable amount of open source development should give you a pointer in the right direction) and if they've done open source work then at least there's some code you can look at!

    --
    thank God the internet isn't a human right.
  122. Hiring good people is hard by Envy+Life · · Score: 3, Insightful

    Is it surprising that finding good people is the hard part? Is it any different than the effort it takes lure a world-class CEO to run your company in hopes of making many times his salary/bonus/stock options in return?

    Most companies are lazy, and don't try to measure the value of any employee in a company, just hire people to fit a job description and cross their fingers. To make matters worse, after hiring the wrong person they don't know how to get rid of them. Is all this really a revelation? People are lazy, and as implied all over the article and the comments to it, not enough companies seem to try hard enough. Is it not like buying a lotto ticket and hoping your numbers are drawn to be rich? Finding the right people vastly improve the odds of the company's success. That's what it's all about. End of story.

  123. Rise & Fall by Anonymous Coward · · Score: 0

    Good, but not as good as "The Rise and Fall of the American Programmer".

  124. Let's see... by marcosdumay · · Score: 1

    "use source control?

    "not break the build?"

    Probably. People also have synchronization problems at school (althoug I used to solve mine with a bit more of engeneering and didn't touch version control untill last year). It is not that hard either, that shouldn't be at a interview questionary.

    "analyze someone else's code (multiple people's code), figure out what it's doing, and map that to what it's supposed to be doing?

    That is normaly mandatory. And several times. How do you think people learn to write operational systems or device drivers? By looking into Linux and BSD code. How do you think people learns how to write compilers? By looking at other compilers' code...

    "can you understand the bug at all (what is is supposed to be doing)?"

    You mean testing (a fomral discipline), (reverse)engeneering (both formal disciplines) or simply understanding the code (like above)?

    "can you figure out how to verify that your fix actually worked?"

    Now you mean testing. That is a formal discipline, people normaly learn those at scholl.

    "explain what you're about to do, and justify why it should be done like that?"

    You mean knowing theory, not just practice? It is people that didn't go to scholl that have problems here.

    "do you understand how to configure and use the product you're working on?"

    "be focused enough to fix one (1) bug, and not go off and rewrite a whole lot of stuff that looks like cr*p?"

    Those you don't learn at scholl. To be honest, the last one doesn't seem to be aquired with practice either (at least work practice). But people with experience on a lot of dfferent systems (that you normaly get from school) have a easier path toward the first.

  125. Being a generalist, ups and downs by FuzzyDaddy · · Score: 2, Insightful
    I'm an engineer, not a programmer, but I'm very familiar with the generalist/specialist phenomena. My degree is in Physics, not engineering, and every job I've had has been in a very different field then the previous one. This has made my job searches somewhat slow and frustrating, but I've found that once I get to a job, I'm well appreciated because I do all sorts of useful things.

    I've hit the downside too. Our company's in a financially tight period, so we've reduced are headcount. As a result, I'm back in the production area building and testing product. (Somewhat high end, we're talking $30K a piece). I'm back there, despite being the number two technical guy who actually designed the stuff, because I'm the only one who can do it at this point. Yes, if our volume was a bit higher we could higher technicians to do it, whom I could train, but we're not there now.

    However, despite being a fairly unpleasant time to be working here, the last few months have been very educational. I had the epiphany that employees assume management knows a lot more about what's going on then is actually the case. I'm not talking about internal politics. Do you think you know where your company's revenue is going to come from in the next three months? In most tech businesses, nobody has a clue. We all groan about PHBs, but most of us assume someone is watching the store. It ain't necessarily so.

    So I'm doing things I think are unpleasant because they need to get done, and I'm doing them well enough. I'm keeping it up because there's a possible payout, and they continue to pay me on time. I don't think I can stand it past the end of the year, but as I grit my teeth through it, and watch other people grit their teeth, I'm getting a terrific lesson in what an organization needs to do to survive, and how to make sure those things get done.

    --
    It's not wasting time, I'm educating myself.
  126. Why would I hire you? by Anonymous Coward · · Score: 0

    I may be abnormal, but I always ask for code when I get job applicants.

    I'd would rather read a chunk of 5,000 lines of code (obviously, spread out in multiple files or projects as applicable) before I read the details of your college degree.

    With a reasonably large chunk of code, you can get a good feel for how they code, what style, what level of sophistication (php html+code mix vs mvc setup type stuff) are they at, do they comment, do they test, did they give me the code in the form of a URI to their personal SVN repository, etc etc. Once you've read enough code, you can tell a lot from it.

    Assuming you wrote it and it's not outright fraud, that says more to me than most of the rest of your resume.

    Code you wrote at another job, generally I'm not going to be allowed to see it.

    So it needs to be YOUR code!

    Wrote a web-based tracker for your share-house expenses? Show me that?

    If you write Perl, do you have any CPAN modules? HUGE indicator you "get" mature Perl development.

    In short, I don't particularly CARE if your experience if commercial or not. I just want to see some evidence you know what you are doing.

    1. Re:Why would I hire you? by lonechicken · · Score: 1

      I'd would rather read a chunk of 5,000 lines of code (obviously, spread out in multiple files or projects as applicable) before I read the details of your college degree. Yeah, when I left my last job, my successor had a degree from a top 25 college, but it was for English! They dragged on the hiring process so long that I didn't get a chance to test the later candidates, because I'd already left. It has turned out that the guy is one expensive disaster.

      By testing, I don't mean giving people a verbal quiz of what the hell they've memorized. God I hate it when companies do that! Yeah, try doing some programming without the internet, help files, books, or other people as references. Anyway, instead of asking for code, I tell them ahead of time that they'd be in for an extra half hour of a written test during the interview process. They could use the web or any books on the shelf at the office. Then give them a couple of problems that might show their thought process more than their ability to find sample code online.

      Man, why do all the topics I want to reply to always show up late in the day ET?
  127. Re:Education is only a foundation. You must love i by cryfreedomlove · · Score: 1

    Focus on the 12 years you worked in the industry. Make a list of everyone you worked with. Don't be cautious with the list. Include even the most junior people because some of them are now hiring managers and they will remember you. Track everyone of them down and make contact. Let them know you are looking. They may not hire you directly but they will know someone who is looking.

  128. Re:Mixing good programmers with average programmer by Anonymous Coward · · Score: 0

    That's actually wrong.

    A lot of the estimates of 100 fold productivity estimates in Peopleware etc come from coding competitions in which different programmers were given fairly straightforward projects and measured on how quickly they did them, the quality of the product, etc. So even on apparently simple problems, there is a huge difference.

    Furthermore your advice suggests that you should have a lot of people in the organization. In large organizations, that may be unavoidable. However research on team size says that for medium sized businesss projects (10K-100K lines) the calendar time to complete a project hits a minimum with 5-7 developers, then doesn't recover to the same level until you have 15-20 developers. (Note that the 15-20 developers spent a lot longer developing, and are bound to have more frustrations.) I know of no published comparison available on quality or functionality, but I have to think that 20 people developing a 50K line project won't have the same internal consistency in the result as the output of 5 people. So I bet the small teams actually accomplished more in their projects, and I suspect they encountered less frustration while doing it.

    That strongly suggests that for most business projects you should aim for small teams of at most 5-7 people. When you put highly productive people in those teams and use languages intended for rapid development, the result can be quite astonishing to people who aren't expecting it.

  129. fix your business first by wikinerd · · Score: 1

    I have seen this many times: Companies often have a toxic culture and no one in their sane mind would ever want to work for them unless they were desparate for a salary. Unfortunately these companies prefer to hire desparate below-average developers rather than fix their culture and seek to create an environment that attracts top talent.

    What companies ought to is to design a healthy corporate environment first and make sure it gets a good reputation. The right people can then be found and attracted easily.

    So, if you are a manager and you can see that your corporate environment sucks, do not be tempted to hire desparate people just to fill some empty seats. Try to fix your culture as much as you can before seeking to hire, and focus on finding quality people.

  130. Spaghetti Code by Maximum+Prophet · · Score: 1

    The term "Spaghetti Code" doesn't refer to whether the code works or not, it's code who's path of execution looks like a plate of spaghetti. i.e. lots of gotos.

    You can also get spaghetti code with stuff like shell script A calls B, which might call A, B, or C.

    I've see some real spaghetti code in my life, but thankfully unless it's written in BASIC or assembler, I don't see a lot of it anymore. (Garbage code, on the other hand, is everywhere, and in any language)

    --
    All ideas^H^H^H^H^Hprocesses in this post are Patent Pending. (as well as the process of patenting all postings)
  131. Programming != development of applications by master_p · · Score: 1

    Programming is 10% knowing the programming languages at hand and 90% being able to design algorithms, knowing the problem domain and knowing some form of development procedure. It is no wonder that inexperienced people are not preferred by companies.

    I was once part of an interviewing team, so I saw the other side of the coin. Surprisingly, 95% of the people that came for an interview were very sort of knowing anything truly significant about development. I then came to the conclusion that what we are taught in college is almost irrelevant (with the exception of hard CS stuff, like how to make compilers). I learned the principles of Pascal when I was in college, but that has nothing to do with development of applications. I did not learn the thought process of development, how to recognize the problems, how to co-operate with others, how to handle errors, how to see through what the customer says, how to break down problems, etc.

  132. Not that hard by Nicolay77 · · Score: 1

    I think any good programmer can easily tell which programmers are good/great/uber. In your case just try to see which ones ask the right questions, rather than focusing on what they assert.

    It is for the average manager without any meaningful programming experience that is hard to tell. Probably hard for mediocre programmers too.

    --
    We are Turing O-Machines. The Oracle is out there.
    1. Re:Not that hard by BShive · · Score: 1

      I agree that good programmers should be able to tell if another one is at least good with a tech interview. That's kind of skipping the larger picture though, since we all know there are many more factors that go into a hire than ability. The programmer is rarely the one that makes the actual hire/don't hire call - if they are, they could feel threatened by someone who is better or just as good (for less money). The boss could say 'we can't offer more than $X', they might not be able to offer relocation, and so on. It ends up coming down to the person with at least basic capability and is available for the least amount of fuss. If there is effort spent on getting a better fit, it's much further up the chain for 'senior' positions.

    2. Re:Not that hard by Nicolay77 · · Score: 1

      Totally agree.

      I guess Paul Graham was really spot on when he said: 'hiring is obsolete'.

      Any smart people should start a startup instead of getting a job. That's the only way to get the deserved recognition, and money.

      --
      We are Turing O-Machines. The Oracle is out there.
  133. overhead and diminishing return by Tungbo · · Score: 1

    The more people you put on a project, the more overhead there exist in communication, coordination, etc. The per person produtivity inevitably goes down. This overhead could easily be half the effort when you get to a 10 person team. So the uber programmer could be only 5x more effective and still match a 10 person team.

  134. Use the right tool.. by Tungbo · · Score: 1

    for the right job. These languages are optimized for different kinds of problems. It's futile to compare them.

    Furthermore, this reinforces the point of the article that the most important aspect of software production is NOT implementation languages. Architecture, process, testing, interface, etc. matter much more. You're looking in the wrong place for productivity.

  135. the article sides a bit with the developer by sonoronos · · Score: 1

    This is understandable, considering that the person who wrote the article is/was a programmer him/herself. This is my non-technical, management-level summary of his points:

    1. "Expert" programmers want managers to recognize them as good, and all other programmers that do not generate as much code as them as bad programmers.
    2. "Expert" programmers want managers to recognize that they deserve more money than all the programmers that do not generate as much code as they do.
    3. "Expert" programmers do not like to communicate. They view communication as a waste of time and think of less communication as a pro.
    4. "Expert" programmers do not want to acknowledge the existence of anyone who is better than they are. Because if there was someone better than them, then they wouldn't be "Experts" anymore.
    5. Despite viewing communication as inefficiency, actively wanting isolation from each other, "Expert" programmers promise that "things will just flow."
    6. People should be judged on the quality of their work.

    Am I wrong in thinking that maybe the article is...a bit obvious? He ends with the following aphorism:

    "As with many things in life, sometimes you get what you pay for."

    I don't mean to be rude, but can I please put a "duh" tag on this?

    1. Re:the article sides a bit with the developer by Tiny+Elvis · · Score: 1

      It sounds like you were a crappy developer who is now a manager. First of all you seem to equate volume of code generated with 'expert' programmer. That alone tells me you are clueless.

    2. Re:the article sides a bit with the developer by lkeagle · · Score: 1

      You're confusing "Expert" programmers with egotistical programmers. Expert programmers are skilled craftsmen with excellent communication skills.

      Real experts are looked up to by management and by other programmers as a role model for knowledge and productivity, and they increase morale by getting the entire team out of scary binds and quagmires.

      There is nothing about an expert programmer that you should ever be able to place a negative point on except for their cost. Your confusion on the issue makes it obvious that you don't care to have people working for you that are smarter than yourself.

      Please do not hire me. You won't like it.

  136. The Generalizing Specialist by remitaylor · · Score: 1

    In the agile world, the best teams are supposed to be made up of "generalizing specialists." These are folks who have one or more specializations, but who also have a working knowledge of many systems / technologies / business domains.

    For instance, not everyone on the team might design a database as well as Joe, the database savvy guy, but everyone on the team has a working knowledge of databases and could design one. Not everyone on the team might be able to easily write our deployment/automation scripts, but everyone on the team is familiar with how these work and could modify them. Not everyone knows exactly how our server clusters are configured, but everyone knows enough to safely work with the servers.

    Scott Ambler has a good article about "generalizing specialists" here: http://www.agilemodeling.com/essays/generalizingSp ecialists.htm

    To begin with, it might sound like it doesn't leave you with much job security if everyone knows a good bit about everything, so you could lose any member of the team and the project would survive. That's potentially good for the project as "Joe could get hit by a bus," but it's also not true, when it comes to job security. Those who learn the business model and the ins-and-outs of our system become huge assets to the team, and to the company. We would be far more likely to lay off someone who isn't willing to learn new things. What's the point of someone like that?

  137. find the enthusiasts by kpharmer · · Score: 3, Insightful

    I think the single best way to find good programmers is to find enthusiasts.

    The reason is that it's easier to determine how enthusiastic someone is than how good a product they develop:
        - enthusiasts usually have side projects
        - enthusiasts often create libraries of code that can be reused
        - enthusiasts will have a variety of favorite tools - and can explain why they like them
        - enthusiasts will likewise have a variety of favorite methods - and can explain why they like them
        - enthusiasts read widely in their field
        - enthusiasts know the names of those who have made impacts on their field
        - enthusiasts often find themselves putting in too many hours - because they *enjoy* the work
        - enthusiasts gravitate together - put them in a room together and you'll have a lively conversation

    And there are technologies, methods and tools that attract enthusiasts. For example, I've found that even if python and ruby aren't the most marketable languages out there - they are great ways to find the enthusiasts.

    Of course, this won't help a manager that lacks enthusiasts on his team. But a technical manager who is himself an enthusiast, and builds such a team should be able to easy find more. At least in my humble opinion. :-)

  138. Re:Mastering a whole language ecosystem takes mont by mcvos · · Score: 1

    Or, as another example, if you switch from Ruby to Java, let's say on a web project: How long before you can make a informed choice which web framework to pick? How long before you know the architecture implications of picking Hibernate, and when iBatis would be a better match? To know what Spring can do for you, and what you are giving up by not using it? Until you know even a standard set of tools like Eclipse plus which plugins to use, FindBugs, Ant, Cruise Control, Emma, ..., plus another dozen or more libraries typically used even on a small Java web project.

    Someone with tons of Java experience may not know all of that either. The thing is, a great programmer will be albe to learn them, appreciate their value and understand their shortcomings, while a mediocre programmer won't. A good programmer with no Java experience will be able to learn the basics of Java in two weeks, and will then be able to learn the basics of various libraries and frameworks. In a couple of months he may understand the intricacies of various J2EE implementations, when to use hibernate, the advantages and disadvantages of various web frameworks, etc. Experience with a few existing frameworks won't help you if you're unable to understand why a new one might be better.

    Of course, you can be productive even when you don't yet know all these things, and are still learning - but you won't be productive on the expert / 10x level we are talking about. By all means, become an expert in as many languages as you can - but don't plan on getting there in 24 hours, days or even weeks.

    When hiring a temp or a consultant, you're better off hiring someone with the experience you're looking for, but when you're hiring a new employee, I really hope you're planning to keep him for longer than a few weeks. Ability pays off in the long run.

  139. Thank you by Anonymous Coward · · Score: 0


    "Are you an ASP.net programmer?" I am asked often.

    I will follow your advice; Thank You all.

  140. Re:HR ... and Getting Your Big Break by clintp · · Score: 1

    I have almost 15 years of .NET experience. Back then we called it Win32. :)

    To the GG[*]P:

    Kids these days. Bah.

    Pay your dues: spend years debugging shitty code, written by stoned company founders, in obsolete languages, on hardware that can only be repaired by buying parts on eBay, on obsolete architectures, for companies that nobody's heard of, in financial trouble, in cities you'd be hard-pressed to find on a map. Don't forget to spend your weekends and holidays learning the system top to bottom. From microcode to reporting. Everything. Learn the business model too. And do it for cut-rate rates just to get the break.

    And be happy for it, goddammit.

    (My break? Sales tracking, "Mr. R", CADOL, Tiger-8's, minicomputers, Contel, bankrupt 1993, Burton MI, for $17,500/year in 1989. Not much, even then.)

    Before that? Data entry clerk at a different company. I punched freight bills all day long. 8 hours/day in a room full of middle aged gossipy women, keying bills of lading. Evenings spent reading the system manuals, learning it inside out, doing whatever I could to optimize my job. When not doing that? Hacking code on whatever computers I could lay hands on. Writing plug-ins for BBS's. Modules for the newly installed local library computers. Laying cable. Assembling desk-side computers.

    If you're any good, I'd give you the break.

    Don't expect good money and you will get the shittiest jobs I can find. Only become a programmer if it's what you really want to do. Do it for free. If you're in it for the money and a desk job keep moving, boy.

    Impress me, and we'll talk.

    --
    Get off my lawn.
  141. Dump Away! by RailGunSally · · Score: 2, Insightful

    > These days, being a programmer generalist (even worse, one with admin experience) just increases the types of shit that get dumped on you..

        I would love nothing more than to have management give me the whole works and get the hell out of my way while I complete the project. I am a Unix System Admin at a fortune 150. I specialize in system programming. Every so often we get a wish list from the generalist admins and danged if it doesn't have some real good ideas on it. This is a source of project ideas, but most of our programs start as band-aids.

        Here's the deal. Trench admins are outstanding triage people and they can write a mean quick & dirty shell script which will fix the immediate problem. If the problem was interesting enough, they'll email the details of the cause and solution to the group along with the {box}:/path/to/script that they just wrote to fix it. We in coder land monitor the use of these scripts and if one of them is used a lot and/or manages to get itself into an automonitor program that starts generating a lot of false negatives (or, in theory, positives) we will review it and add all of the invariably missing return checks, usage functions, man pages, additional functionality, &etc. Some of these puppies grow to behemoth proportions and require a far more sophisticated user interface than we can easily manage in the shell. At this point there is a terrible danger that one of our managers will discover the thing and "help" us out by trying to raise money for a formal Internal Systems development project. God forbid he actually gets funded. Now we can't just pick the tool for the job and knock it out. We have to wade with these sorry people through months of requirements gathering, use case analysis, prototyping, alpha- and beta-testing, and all of the other horseshit that happens to occur to whatever utterly superfluous project manager is assigned to the thing. In the end the "developers" in IS will puke forth a .NET solution that runs right only on IE. Unix admins work on the command line. Internal Systems developers know exactly fuck all about Unix. Nobody uses the "solution" and we get blamed by association for its egregious nastiness.

        I have determined quite conclusively that these fucking IS morons have never heard of a finte state machine, cannot process CSV files (buggy .dll in their BillyWare), do not know what a linked list is... They are, in brief, incompetent morons. I have theorized about the cause and effect of this putrid situation at incredible length. It just seems to be the case that some folks are compelled by nature to work from first principles, and some are content to accumulate seemingly random senseless facts about systems that will be for them forever completely opaque. The first principle people become your theoretical physicists and top gun *nix admins and the like. The fact accumulators, who are just flat out intellectually inferior, are best suited to the help desk or project management or some such. The fact accululators invariably arrive at "development" by making office apps out of Excel macros and Access crap. Management, in all its abject stupidity, cannot differentiate this from real software. Voila! The lowly fact accumulator is thus Peter principled into "development" and is now officially the hell in my way.

        The sorry fact is that all of the decent software coming out of my little group is manufactured by stealth. We develop very solid software in spite of our "helpers." Unfortunately, the only way to change this mess is to go into management and spend enough years playing petty political games and garnering good relations with stupid people to start to make a difference. First principle people simply can't do it. We'd vomit explosively at the first opportunity to compromise technical elegance for expediency. We can just write a book exposing the whole process, but The Mythical Man Month is already there. Management can't learn from it. They are not incented to learn from it. They are incented to find more shit to manage. And more shitheads. And the cycle of poo continues.

        Hope this helps!

  142. All about team programming. by Dareth · · Score: 2, Funny

    I want to be the guy who gets to type the ; at the end of all the code lines!

    Now that is specialization!

    --

    I only look human.
    My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
  143. I choose 3. by jellomizer · · Score: 1

    3. The third guy who keeps busy but is not stressed out about it, once he is done with his work he actively goes find more work to do. Does his job gets things done on time, on spec...

    Guy Number 1 is not efficient and has emotional connection to his work on a level that he feels threatened when he makes a mistake, any success is greatly exaggerated their login passwords normally have the word god in it. Because it is all about Ego and not about getting stuff done.

    Guy Number 2 is a good programmer but he is lazy in the fact that because he is a good programmer he could be more efficient. If that guy is working on a project 25% of the time and doing nothing the rest vs. say #3 who may be half the programmer he is but works all the time and if he finishes he finds himself more work... So for the sum of work done #3 will get twice as much done over #2 just because he is willing to go that extra step and try to give himself more productive work.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  144. Sales is looking at supply and driving ulcers by Anonymous Coward · · Score: 0

    "For example, if the shop language is FOO, a good programmer who has X years experience doing all kinds of different development in a few languages, and is willing to program in FOO, can do better than the average programmer who has X years experience in FOO."

    And you base this conclusion on what? Gut feeling?

  145. As the old joke goes... by mariox19 · · Score: 1

    After failing to fix the heating system at a factory, management called an old-timer out of retirement to repair it. The old-timer went into the boiler room and returned an hour later. The problem was fixed and the system worked beautifully. A week later, he sent in his bill: $16,000.00.

    Management balked and demanded an itemized invoice. A week later they got it:

    1. One screw: $1.00
    2. Knowing where to put the screw: $15,999.00
    --

    quiquid id est, timeo puellas et oscula dantes.

  146. Most Recruiters Suck by drewzhrodague · · Score: 1

    I also have the similar experience -- in a place where I match a job description perfectly, the HR person will not quite understand what s/he's hiring for, and disqualify me, and possibly other candidates. I've also seen many many many many recruiters who are 'playing the numbers' with candidates -- they will blast out an email to 500 people that show-up in a Monster search, and not really put all that much effort into filling their req. Lots of this and other kinds of treatment from the recruiting and HR sides, forced me to put together a web-based list of recruiters, Recruiter-Rater.

    --
    Zhrodague.net - I do projects and stuff too.
    1. Re:Most Recruiters Suck by phorm · · Score: 1

      From a quick look at your site, it mostly seems to be a message/bulletin-board type list. The search didn't turn up any of the recruiters I've had experience with either (albeit this is limited to only about 3-5, and Canadian ones at that).

      How about something that lets you add a recruiter name with some comments, and a x/10 rating? Put that with an alphabetized master-list of recruiters, and then a search capability, and it might be a much more powerful tool than just something forum-like? I do notice a star-rating on some of the comments, but I think that's tied to the individual comments rather than the recruiter themselves.

  147. Re:HR ... and Getting Your Big Break by PPH · · Score: 1

    Only become a programmer if it's what you really want to do.

    I'm a programmer (of sorts) because I want to build tools to get my job done.


    I'm an EE by training, but I got my s/w feet wet about 20 years ago when I joined a project to build automated test systems. A couple of mechanical engineers got tired of writing test specs, sending them to a coding group who coded test routines, reviewing the results (since s/w people have no clue as to what was actually being accomplished), marking them up with a big red pen and sending them back. So we sat down and wrote some natural language processing tools. System requirements documents in ---> ATE instructions out. Simple. We saved the company about $20 million a year by cutting huge test coding groups out of the middle of the process. We also made the IT department's 'most wanted' list.


    Eventually, IT took the project over. After all, it was software. This first thing they did was insist that everything get ported to Windows. The second thing they did was to throw out all the natural language processing tools, since 1) they were written by MEs and EEs, 2) they dont't run on Windows, 3) they couldn't have a bunch of *NIX machines sitting around and risk not getting invited to Bill Gates' CIO dinner, and 3) they didn't understand how to they worked. That they actually worked wasn't an issue.


    Fortunately, when one saves the company a few hundred million dollars over the years, one is quite well rewarded. I retired and do some consulting work in the EE field. I still get the opportunity to do a little coding, but when the contract specifies implementing {insert buzzword here} technology instead of actually getting work done, I can afford to walk away.


    Writing code for the sake of writing code is like becoming a mechanic so you can play with the tools but you don't want to learn how diesel engines work.
     

    --
    Have gnu, will travel.
  148. I completely agree by Krishnoid · · Score: 2, Funny
    In the style of a previous rant of mine:

    I'm going to take advice on hiring writers from an English cool-aid drinker. Sure, just the very minute I get my brain replaced with a cauliflower. English is an horrifically bad language. It's full of pronunciation and grammar exceptions and idioms. It enables great writers to write nuanced texts, but can make good writers produce unintelligible documentation, and makes bad writers think they r the 1337. Feh. A properly trained, incentivized and provisioned Esperanto team can run rings around an English team in terms of clean text produced, as well as (more importantly) cost to develop and cost to maintain, since it's so uniform in its phonetics and syntax.

    Expressiveness in a language can be used for good (see Perl::Critic) or evil (obfuscation).

  149. That's actually really cheap by tknd · · Score: 1

    For having all the documentation and tools available to you to actually fix the problem, he didn't ask for too much.

    We've had an issue with one of our really old dated systems (94') which is proprietary. The company wanted to charge us $10k a day to have a lesser tech come and work on it--as much as 3x more for a qualified technician. The cost could be justified as the problem was causing potentially thousands of dollars lost per a month due to lost productivity with the tool, however, there was no guarantee on their part that after a day of work, the problem would be fixed. So me and another engineer decided to see if we could determine how to fix the problem and after just under a week of searching (in addition to some of our other activities) we found it. So the company problem lost about $3k for us to spend time working on the problem but didn't have to pay up the vendor for support and saves on improved productivity with the tool.

    So in my book, your uber programmer charged a low rate for a lot of work.

  150. It's great when you can use the right tool by Krishnoid · · Score: 1
    for the right job. These languages are optimized for different kinds of problems. It's futile to compare them.

    Sadly, a typical situation being presented with the wrong job, as a result of corporate miscommunication, bad product selection, accretion of code from various sources, recent FEMA appointees, etc. Considering the frequency of this, I've frequently found Perl to be the right tool or a good tool for the kinds of work that falls out from these situations. It's at least good as a prototyping tool to extract data from various sources for closer examination.

  151. Thinking Skills by maz2331 · · Score: 1

    Really, the big difference between a great programmer and an average one is that the great ones know how to think through a problem, figure out how to express it succinctly, then start coding. It's not really possible to code something unless you understand what you're trying to accomplish.

  152. Retarded human resources people by c0d3h4x0r · · Score: 1

    The worst are posted job listings with impossible requirements such as:

          "Must have 10+ years of Vista experience"

    or

          "Must have at least 7 years experience with C#"

    You know some retards in the HR department wrote those. If a company is really that dumb, you have to ask yourself if it's a place you want to work at in the first place.

    --
    Moderator hint: a comment is neither "Flamebait" nor "Troll" if it is true.
  153. Double sigh. by Shadowlore · · Score: 1

    Had you read the article you would have seen the author link to the mythical Man Month. Instead you lamented that the author "discovered" it on their own - by not reading the article. There is some irony in there somewhere.

    Besides, individual discovery of the same principles is a *good thing*. It serves as a validation in the same way that scientists who individually discover the same mechanism validate the discovery. This is in distinct contrast to duplicate /. articles of course.

    --
    My Suburban burns less gasoline than your Prius.
  154. A good programmer certainly can do that! by Anonymous+Brave+Guy · · Score: 1

    There's no one programmer who does the work of ten other programmers.

    The thing is, that depends on your metric. If you're measuring useful work done, in terms of actual problems solved and perhaps with some sort of cost and/or speed factors built in, then it is entirely possible for one great programmer to do the work of many mediocre ones. This is for three reasons, and I think most people only really think of the first one.

    Firstly, contrary to what you wrote about the size of a problem, I think it's clear that a good programmer will generally solve a problem of average difficulty faster than a mediocre one. The point here is that the two will not most likely come up with the same solution. Each may solve the problem, but the good programmer's solution will typically have a clearer design, be more concise in the implementation, have fewer special cases to deal with, be more flexible when it comes to future expansion, and come with useful tools as needed. So that's your first win: the good programmer comes up with better solutions, which tend to be faster to develop than mediocre ones.

    The second win is usually bigger than the first IME, but it's the one most people overlook. A programmer typically doesn't just write new code. In fact, writing code is usually a relatively small part of how he spends his working hours. Usually, he also has overheads such as investigating bug reports and documenting what he's doing for future reference. Because good programmers tend to have cleaner designs and higher quality implementations, they can spend far less of their time fixing bugs, and they usually don't need to write as much to document their code to the same standard. Because they incur lower overheads, they have extra time to spend writing code that solves the next problem, and the one after that.

    Finally, there are the indirect benefits. If you have a good programmer in a development team, then typically any smart designs, time-saving tools, useful implementation techniques and the like that they create will filter through to improve the productivity of other team members as well. This applies to some extent whatever the skill level of those other team members. Non-experts will learn from the expert, and be able to do things they otherwise couldn't (or at least couldn't do as fast) thanks to the expert's tools and techniques. Multiple experts will gain from bouncing ideas of each other and getting informed second opinions before committing to something, resulting in less work changing things down the line.

    It's true, as you said, that some problems are simply too hard for programmers below a certain level to solve at all, and for those you need someone above that level. It's also true that some problems are so easy that almost anyone would produce the same trivial solution just as quickly. But in real life, most problems fall somewhere between these extremes. For the three reasons above, I think it's wrong to pretend that great programmers won't be more productive in dealing with those. When you combine the direct speed benefits of a better design and implementation, the lower overheads, and the support given to others, an order of magnitude or more is easily believable.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  155. Nothing is obvious by Nicolay77 · · Score: 1

    As a programmer and student of mathematics, my personal philosophy on the issue is:

    Nothing you have to reason that is obvious is ever obvious. As soon as you think that something is obvious, you will make and find mistakes in precisely this 'obvious' issues. In other words, I, you, and almost all people make mistakes in what we think is obvious.

    Thinking that nothing is obvious makes you methodic and disciplined, and that's a good thing.

    --
    We are Turing O-Machines. The Oracle is out there.
  156. it's about control not about public vs private by Anonymous Coward · · Score: 0

    Look at google or berkshire hathaway

    As long as you retain control you are ok.

  157. Re: rapid prototyping / dynamic languages by Anonymous Coward · · Score: 0

    Point is, I can develop a substantial enterprise application in Perl or Ruby. I really can't easily develop a quick prototype in Java.
    Hell yeah! Rapid prototyping is worth its weight in gold, and it more than makes up for the performance hit of the "slower" languages.

    Although I do believe a dynamic language can, ultimately, be made to perform at least as well as Java, it hasn't been done yet.
    Java is a moving target. Instead of saying "as [fast] as Java," let's just say "to the left of the 3x performance gap(*) on the language shootout rankings." Under such a definition, anything between ~1/2 and ~2x as fast as Java qualifies. Thus, Lisp (same speed) and C# (2/3 as fast) both qualify. However, Lua, Python, and Perl (all around 1/10 as fast), and Javascript and Ruby (about 1/25th as fast) do not.

    * = The gap appears to separate compiled languages from interpreted languages. I've personally written a toy dynamic functional language interpreter with a JIT compiler that fell inside the gap, ahead of Erlang and Lua but behind Fortran. The primary goal of that project was to test the feasibility of compiling a rapid-prototyping language. If I had more time (only spent a couple months on the project), I could have added inlines for the type inferences, SSA, and other optimization tricks, so I think I could have cranked it across the gap, and I definitely agree that it should be possible to make a dynamic language as fast as Java.
  158. I completely agree by phorm · · Score: 1

    In fact, I just had a recruiter call+email me yesterday offering a position that seems to involve:
    - AJAX, Dojo Toolkit
    - JavaScript
    - Simple HTML/CCS stuff
    - Travel to various N. American major cities


    Now I've communicated with the recruiter, and she hasn't really been able to explain the position beyond that. I'm sure that there must be some database work involved, and likely some scripting... but they couldn't tell me anything more about the position. It's really hard to get or provide more info if you don't know whether you'll be using MySQL, Oracle, PHP, or ASP. Actually I've worked with all of those, but some more than others (haven't used ASP for a long time).

    So today the recruiter sends me a form (from the employer) that has a bunch of Java-related questions and some database related stuff (it doesn't say which database though). It's a "matrix chart" done in excel, which doesn't even add up the scores in the columns. You fill in a score (which I'm assuming is your comfort-level/experience on a given topic) and add comments. Add to that it's by email, so if I wanted I could have googled for appropriate BS to fill the thing in and really known nothing. I emailed back saying that I don't know Java, and that JavaScript and Java are two quite different things. The response is that the only requirements are: HTML, JavaScript, AJAX, and Dojo, but the client supplied this general form and fill it out anyways please.

    So I fill it out, filling in some of the stuff in the Java sections, and add comments giving myself 10/10 on stuff like typecasting or overloading, but add comment on the java-specific stuff as "Java Related, not JS/AJAX related." I'm rather sure that the position itself does involve Java work and the recruiter just doesn't understand the different between JavaScript and Java, but saw that I've used Dojo and it was a required buzzword.

    Seems like we've just wasted a whole lot of my time, and the employer's. It could be that the employer didn't state the position requirements well enough either, but for a "technical-position based recruiting company" the recruiter really seemed to not understand a whole lot.

    I'm hoping I get to talk to the employer so I can discuss this, and politely decline the position but ask them to hold onto my resume. I'm more in the SysAdmin game these days, and even if the job was just basic web stuff I think I'd be a little overqualified, even at the offered $62k/year. All in all the company itself is supposed to be in the top 100 employers, and would probably be a nice place to work for, so I'm just going to be honest and polite about things, and maybe it'll net me a good job contact for some other position that I'm more suited to...

    It's sad though, because at first I was rather happy to be contacted. Despite having my resume+covers updated, checked, and generally looking pretty darn good, I've had much luck getting past the recruiters or tier-1 HR people. I wonder how many people nowadays BS their way into a position like these, and/or if I'm being too honest in general, but I really hope that recruiters/HR-people that are looking me up for other position are a little more knowledgeable of the what to look for in candidates.

  159. Contacts+connections by phorm · · Score: 1

    Indeed, it has been much the same for me, which always seems to confirm the old adage "it's not what you know, it's who you know."

    This is understandable, as having somebody with a solid reputation who can vouch for you is generally the best form of reference, and a more reliable one than a resume that might be 10% fiction and 50% exaggeration.

    However, there are many situations where one ends up without references. In my case I'm in BC, Canada, and I'm nosing around positions in the Toronto, Ontario region (about 4000km away). The only people I know there are a few family members and my girlfriend, both of whom have tried to offer help but unfortunately aren't really connected with my industry. So it's just my resume against a few thousand others.

    I've gone so far as hooking up with the LUG in Toronto, but thus far I've found little in the way of permanent position (just some contract work filtering through). I was even there on holidays for awhile, and while I met a bunch of people who were also interested in contract or general-tech type work, there's nothing for a SysAdmin/Developer type person that I've run across. The question becomes, where does one search, or what is the magic gem (short of lying) to put on one's resume?

  160. Re: rapid prototyping / dynamic languages by SanityInAnarchy · · Score: 1

    Hell yeah! Rapid prototyping is worth its weight in gold, and it more than makes up for the performance hit of the "slower" languages.

    That always depends on what you're doing with it. I still wouldn't write a game engine in a "slower" language, because it really would be slower, and my competitors (using C++) would kick my ass in benchmarks. But, I might write the AI and game logic in a language like Python -- and this is often done.

    What seems to be the common attitude now is to write high-level stuff in high-level languages, and low-level stuff in C, then tie the two together somehow -- for example, either embed Python, or write a Python module in C. Another common attitude is to rapidly prototype something in a "slower" language, then re-write it in a faster one, now that you have a good idea what kind of program architecture is going to work.

    I think that all of these are good strategies, when high-level languages are slow. I just think that if high-level languages were fast, we wouldn't need things like C.

    Java is a moving target. Instead of saying "as [fast] as Java," let's just say "to the left of the 3x performance gap(*) on the language shootout rankings."

    Well, what is sometimes whispered in projects like Psyco is "faster than C".

    Here's my reasoning: The killer features of a language like Ruby are its dynamic nature. You can go in and tweak any part of your program on the fly, or, indeed, chunks of the language itself. In fact, large parts of Ruby are written in Ruby.

    The killer features of a language like Java are its speed and its static nature -- it makes it possible to do many more anal-retentive checks at compile-time.

    Now, Ruby, Perl, etc could easily be made to emulate the static nature of languages like Java. In many cases, best practices can be enforced at the IDE/editor level, or with grep. And I think it's far better to be able to have these things (use strict in perl, for example) and be able to turn them off, than to have them forced on you by the language, so you spend a lot of time working around them.

    So, the big difference is speed. And I think "slower" languages are slower primarily because they are so dynamic -- it means that things which Java can throw away at compile time must be kept around by Ruby even through runtime.

    For example, suppose you want to add two integer variables and store them in a third. Compiled languages can optimize this down to practically assembly-level instructions at compile time -- 2 + 2 really becomes simply adding 2 and 2, and storing the result in some location in memory.

    Compare that with what Ruby has to do. First it has to convert those to objects, so we now have two Fixnums, each with a value of 2. It then has to call the '+' method of Fixnum -- so if we're adding a and b, it has to do a.+(b) -- and it has to do this kind of stuff on the fly. That is, it has to look up each variable by name, then look up its class (again by name), then the method being called (surprise! by name), and finally it ends up with some code to run that's roughly the equivalent of 2+2 in C.

    I think that even the majority of Ruby code doesn't need that kind of flexibility. It's nice from time to time -- if Ruby can't find foo.bar, it'll call something like foo.method_not_found('bar'), which can allow fancy things like automatic RPC or loading of libraries.

    But it also forces Ruby to be as slow as JavaScript.

    I do actually have a solution, but I think this post is long enough as it is. But I will say that I think it's a problem. Right now, I can write any kind of app I want in Ruby, it'll just run slower. And I can do the same thing in Java, and it will run faster, but take longer to develop. Which means there's a certain class of applications which can't be developed in Ruby (they need to be fast), and a certain class that can't be done as well in Java or C (they need to be dynamic), and probably a class of apps that can't be done at all (they need to be both).

    --
    Don't thank God, thank a doctor!