Slashdot Mirror


Does the 'Hacker Ethic' Harm Today's Developers?

snydeq writes "Fatal Exception's Neil McAllister questions whether the 'hacker ethic' synonymous with computer programing in American society is enough for developers to succeed in today's economy. To be sure, self-taught 'cowboy coders' — the hallmark of today's programming generation in America — are technically proficient, McAllister writes, 'but their code is less likely to be maintainable in the long term, and they're less likely to conform to organizational development processes and coding standards.' And though HTC's Vineet Nayar's proclamation that American programmers are 'unemployable' is overblown, there may be wisdom in offering a new kind of computer engineering degree targeted toward the student who is more interested in succeeding in industry than exploring computing theory. 'American software development managers often complain that Indian programmers are too literal-minded,' McAllister writes, but perhaps Americans have swung the pendulum too far in the other direction. In other words, are we 'too in love with the hacker ideal of the 1980s to produce programmers who are truly prepared for today's real-life business environment?'"

22 of 436 comments (clear)

  1. Stop posting McAllister. He's the new Dvorak. by AKAImBatman · · Score: 4, Insightful

    Let me make this as clear as I can make it: Neil McAllister is an idiot. Stop posting his "stories".

    To be sure, self-taught 'cowboy coders' -- the hallmark of today's programming generation in America -- are technically proficient, McAllister writes, 'but their code is less likely to be maintainable in the long term, and they're less likely to conform to organizational development processes and coding standards.

    And yet no evidence is offered as to why that's true. It simply is. Accept it on face value.

    Not.

    As a "self-taught coder" (remove the "cowboy", because that has completely different implications) I am regularly frustrated by the coding practices of my more learned colleagues. Or more precisely, my colleagues who have more college backing behind their code.

    Bull^H^H^Hachlor's Degrees, Masters Degrees, PhDs, it doesn't matter. At the end of the day they still cram code into an editor with little regard for the reasoning behind the coding practices they follow. In result, those practices become useless as they overarchitect the system into a corner. (Or at a lower level, smoosh so much code into view that it becomes unreadable.)

    In my experience, if they don't have years of experience under their belt to understand the purpose behind coding practices, then all the practices they teach you in college are for naught. A more senior individual still needs to guide the code in the right direction, regardless of education.

    There you go. My anecdotal evidence that disproves your unfounded assertions. Are we all happy now?

    1. Re:Stop posting McAllister. He's the new Dvorak. by computational+super · · Score: 4, Insightful

      Well, in college's defense - college doesn't even try to teach you the things that you need to learn by experience (although four years of college under a computer science major does equate to probably one or two years of real-world experience), but instead teach you all the things that you might never come across in "real life" but that are actually useful (such as NP completeness, Turing's halting problem, push-down automata, queuing theory, red-black trees, binary searches, "big O" notation, etc. - plus, you know, calculus, linear algebra, statistics and maybe even a smattering of history, literature, sociology, hard science, and so on) The things you need to learn by experience can only be learned by experience - I've never heard anybody suggest that a college education is a substitute for experience. I'm not familiar with any college curriculum that covers things like source control, makefiles, modularization, making sense of a program that was written ten years ago, reverse-engineering code that you no longer have source for, effective use of a debugger etc. etc. - the idea is that you're supposed to go to college and then get experience and then finally become a well-rounded programmer.

      If you know how to code, you're a self-taught coder... college is too busy teaching all the other stuff to waste it's time teaching you how to actually code.

      --
      Proud neuron in the Slashdot hivemind since 2002.
  2. tigers vs lions by MeatBag+PussRocket · · Score: 5, Insightful

    part of me says that the out-of-the-box, non-conventional thinking that self learners typically have can be a real asset, it shows diligence, creativity and adaptability, nobody penned out the laws and rules for them, they had to find them on their own, it is its own category of brilliance in some respects. generally it doesnt lend itself to production environments though. but perhaps on a more problem solving level this characteristic is more valuable than the beautiful clean code than more schooled programmers learn. a good team of anything (programmers, sysadmins, football players) all have their strengths and weaknesses and they ought to compliment each other and balance out. in short both are needed but assessing the value of each must be done on independent terms, its the same animal but a different species.

    --
    i wage a holy war against the apostrophe.
  3. Re:Summary error by digitalgiblet · · Score: 4, Insightful

    American Blog Editors are UNEMPLOYABLE!!

    In other news... Non-American Person who is CEO of Non-American company who wants to win contracts in America says Americans are not as good as his workers. Not saying he is wrong, but sometimes it is helpful to consider the source and evaluate any potential gain they have from the pronouncement in question.

  4. Structure can be learned creativity cannot by Quasar1999 · · Score: 5, Insightful

    You can take a creative person and teach them the correct ways to apply their ideas, but you can't take someone that knows the 'rules and regulations' inside and out, but sucks at independent thinking and teach them to be creative.

    Hence why you'll get a bunch of people who have the same degrees from the same universities but they will have capabilities that are miles apart when it comes to software development. All the people were given the nuts and bolts knowledge, but only the creative ones excel in the real world think outside the box environments. That's not to say there aren't places for the 'by-the-book' developer, but it'll be maintenance coding, and not make the latest cutting edge app or game.

    Hacker mentality or not, lack of creativity is why Indian developers tend to produce lackluster results. (And before I get flamed, I'm saying this in general, I'm sure there are many creative Indian developers out there, just as there are many uncreative American developers)

    --

    ---
    Programming is like sex... Make one mistake and support it the rest of your life.
    1. Re:Structure can be learned creativity cannot by Spazmania · · Score: 4, Insightful

      The absence of evidence to the contrary.

      --
      Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  5. Re:Software engineering is not a new concept. by mutantSushi · · Score: 5, Insightful

    The entire meme put out by this CEO of Indian software outsourcing company is absurd. What is this guy's area of expertise? Is HTC known for actual innovative work, products that sell themselves, that create new markets around new functionalities? Of course not. They are outsourcing the lowest-end "drone work" from companies like Microsoft. I.e. the most labor-intensive kind of work, i.e. the least lucrative per man-hour, i.e. the kind you don't want to get into if you have any sense. But never mind that, there must be a BIG PROBLEM with Western developers who really should know they need to give up their 100k/year job working with a few guys they get along with writing iPhone software, or working in an environment that is flexible with their lifestyle, and might even provide an outlet for the intellectual curiosity that drew them to the field in the first place. And they really need to cut out that art education in public schools...

  6. Re:How about we start teaching REAL Programming... by seebs · · Score: 5, Insightful

    A friend of mine uses Eclipse, not for some huge "grunt work" but just to have all the class reference stuff quickly available from code. I actually sorta like that; I've used NetBeans for the same reason, and I use Xcode sometimes for Objective-C. They all have the ability to provide real improvements in the work I'm actually doing.

    Don't be too quick to throw away a tool. There is a reason that Rails has 'script/generate scaffold', and it's not just that programmers don't know any better -- it's that often that framework will be close enough to right to save you a ton of time.

    --
    My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
  7. No by MBCook · · Score: 4, Insightful

    It's actively helpful.

    Besides occasionally helping to solve an "unsolvable" problem, there is distinct difference between people who like figuring things out and coding, and people who just code.

    People with the "hacker ethic" often have experience with a wide range of languages or disciplines, since they are interesting in knowing many things. This gives this a wide array of knowledge to draw on. The Mythbusters, in their RSA speech, said that they don't know a lot about any subject, but they don't know a lot about a lot of subjects, helping them succeed where others run into stumbling blocks. Same thing for hackers.

    Of course businesses, at least at some point, like the hacker ethic. Many businesses, at least initially, would rather have the hacked up system that works and they can make money off of than the "correct" answer of "it's too complicated" or "it can't be done". Sure this code can become a headache later (a very big one), but that's really because people didn't invest enough in paying off the technical debt in the code. If they had improved it over time it wouldn't be a large headache later.

    The people I've run into who don't have at least a little of the hacker ethic aren't good programmers. They may be able to program, but they don't move outside their little world of what they know how to do and what they use. The only improve when forced to (by being given a new assignment, etc) and they only do what is necessary to finish that assignment. Any knowledge they gained that they didn't need, they gained because they didn't realize they didn't need it.

    But if they were the kind of person who wanted to learn that kind of thing, they'd have the hacker ethic.

    It's a good thing. It keeps programmers sharp and interested. It helps them have more of the necessary skills when a new challenge arrives... or at least be able to pick up that skill faster/easier.

    --
    Comment forecast: Bits of genius surrounded by a sea of mediocrity.
  8. Re:What? by treat · · Score: 4, Insightful

    What does the hacker ethic have to do maintainability? The hacker ethic is about testing boundaries, making things because you can, breaking things because you can, and bring out the full potential of technology. It has nothing to do with coding styles and what effect they may or may not have on maintainability.

    I think the hacker ethic could strongly influence someone involved in software development in their choice of how maintainable to write code. But I think it influences some people to write unmaintainable code thinking that they're being "clever", and other people to write highly maintainable code because they know that it is indeed clever.

    Also someone who thinks in terms of such passion for the art will be much more productive than others. So they can write maintainable code simply by having more time available (by being able to solve problems faster). Especially since the influence from management is never to make code maintainable, it's to produce it as fast as possible to satisfy some "business need". Writing maintainable code is an act of rebellion in most environments.

  9. Re:Software engineering is not a new concept. by Anonymous Coward · · Score: 4, Insightful

    80K/year is "barely a living wage"? If you want a 4 bedroom house with a three car garage, 2 Hummers, 3 kids, a couple of dogs, and a 2-week overseas vacation every year, maybe. Don't confuse "living wage" with "the American dream". There's a huge difference.

  10. Re:Hackers vs Designers - Hackers Loose every time by Spazmania · · Score: 5, Insightful

    Things like PERL are deeply disturbing to anyone with a sense of design.

    Perl is glue. Glue is messy. It's supposed to be messy; it handily fits things together that wouldn't otherwise interoperate.

    Not much of a designer if you don't even know what glue is for.

    --
    Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
  11. Re:Software engineering is not a new concept. by dintech · · Score: 4, Insightful

    Programming has become more of a commodity and so thankfully Computer Science isn't just about programming.

    there may be wisdom in offering a new kind of computer engineering degree targeted toward the student who is more interested in succeeding in industry than exploring computing theory.

    What exactly does this mean? If you want to learn about business, do an MBA. If you want to be a computer programmer, learn it yourself because it's not difficult enough to warrant an entire university degree devoted to it.

    Computer Science gives you a deep understanding not just HOW to use computers but something deeper than that. It's a mixture of the maths, physics and philosophy that underpins the whole concept of computing. Knowing what is possible and how to get there helps create the engineers of tomorrow, not some desk jockeys that solve transient problems and are equally interchangable with counterparts from any country. Most blue chip graduate programmes look for thinkers and creatives - not spare parts for the corporate machine that can be 'sourced' at commodity rates.

  12. Re:How about we start teaching REAL Programming... by qoncept · · Score: 5, Insightful

    Arguing against IDEs is pretty tired and boring. And embarassing. In general the code from "IDE Junkies/Jockeys" is just fine. An IDE is a tool like a hammer and if someone is using it wrong, you're going to see some bent nails. Refusing to use a tool isn't much better. An IDE takes a huge amount of trivial work out of designing GUIs, fixing syntax, refactoring, integrating with version control and just helping you remember the names of objects or methods or whatever. Am I an idiot because I'd rather look through a list that automatically pops up in my GUI than flip through a 500 page book?

    Using a text editor instead of a full IDE (to work on appropriate scale projects) is like hunting with a spear, but you're not nearly as cool.

    --
    Whale
  13. Re:Software engineering is not a new concept. by dintech · · Score: 5, Insightful

    I work for a top investment bank which employs more than 10,000 developers worldwide. They have recently got rid of all outsourced developers and insourced everything. From the very top level of IT management it was decided that quality is indeed worth it. You can read into this any way you like but the facts speak for themselves and there's nothing Vineet Nayar can say or do about it. I can imagine that any development groups that value the same principles will follow suit eventually.

  14. Re:Software engineering is not a new concept. by Maxo-Texas · · Score: 4, Insightful

    I could live well on that wage in the middle of the country-- but it would be impossible in the upper east coast or the west coast.

    Consider that it would take the average indian programmer about 70 years to earn as a gross income enough to buy a "middle class" house in California.
    Rathole apartments are $50,000 a year in New York.

    Similar issues would exist in Tokyo.

    --
    She was like chocolate when she drank... semi-sweet at first and then increasingly bitter.
  15. Re:opposite of observed by Ixitar · · Score: 5, Insightful

    I am a US citizen. I have worked in Japan, Korea, Taiwan and China for a few years. While there, I have worked with excellent local developers as well as developers from India who were working in those countries. I have also worked with coders who should not be let anywhere near a computer.

    It all depends on the individual's drive for excellence and the management structure that the person is bound under.

    I dislike these gross generalizations on either side.

  16. Re:Software engineering is not a new concept. by Lord+Ender · · Score: 5, Insightful

    We outsourced a lot of development and IT to an Indian office, and found the experience to be most similar to managing a workforce composed entirely of interns. Our security group is also terribly concerned with the attitude toward (customer) data security observed in the Indian office.

    I am quite sure some brilliant minds have come from India, but I get the impression they all left for the West where they could make six figures. If you are good with technology, why stick around in a country where half of households don't even have toilets? You just won't get talent for $20k/year, not even in India.

    --
    A slashdotter who didn't build his own computer is like a Jedi who didn't build his own lightsaber.
  17. Re:Software engineering is not a new concept. by PeanutButterBreath · · Score: 4, Insightful

    Knowing what is possible and how to get there helps create the engineers of tomorrow, not some desk jockeys that solve transient problems and are equally interchangable with counterparts from any country.

    "Solving transient problems" is not necessarily a trivial or commodity skill. Its may not be something that someone with a Computer Science degree wants to spend time on, but it probably isn't something that an MBA or a marginal coder is going to do well either (whether they are trying to come up with a solution or even effectively define the problem). It still takes talent and specific skills that can't necessarily be taught to just anyone who happens to want a desk job with a decent paycheck.

    If you are fascinated by "maths, physics and philosophy that underpins the whole concept of computing", well those are valuable things, but they are not enough anymore. Software has become too broad to be left to either Computer Scientists or cube drones.

  18. Re:Says who? by hey! · · Score: 4, Insightful

    Well, one thing that's important to remember is that most non-trivial systems are produced by organizations, not individuals. Doesn't it make sense that the quality of the institution is a factor in code quality? Take a talented individual, put him in a good organization and he will learn to work in a way that the organization rewards.

    Computer science is like anything other kind of academic discipline. It is very valuable, but it's not magic.

    Consider this thought experiment. Alice likes to read poetry, and tries her hand at writing. She regularly shares her poems with other people interested in reading and writing poetry. Bob likes poetry, so he gets a degree in English and takes as many poetry classes as he can. Then he starts writing poetry and tries submitting it to the New Yorker. It seems to me Alice is more likely to become an accomplished poet than Bob, although you can never know for sure. On the other hand, consider Charlie who like Alice workshops his poems all the time, but who also gets the same formal education as Bob. Again there's no guarantees, but unless something is seriously wrong with the school he's going to he should have the best shot of all.

    What I'm saying is that the Computer Science and the craft aspects of programming are complementary precisely because they aren't the same thing.

    Without a computer science background, Larry Page and Sergei Brin would never have been able to make Google a success. Google is very much a company founded on algorithms and grown through architecture. Without programming craft, the products would not have been able to be maintained and scaled.to success.

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
  19. Re:Software engineering is not a new concept. by PeanutButterBreath · · Score: 5, Insightful

    I hate being a drone. I get bored, frustrated and ultimately wander off, to the betterment of everyone involved.

    That said, I agree. I was once in charge of a 3 person team (non-software-development) and the absolute best guy I ever had working for me just wanted clear instructions, a constant supply of work to apply them too and a place to work without being distracted. The more repetitive the better. He would go into his zone and out-produce everyone else by miles. He seemed to derive personal satisfaction from things like consistency and productivity, rather than expecting a job to be entertainment or a chance to repeatedly demonstrate his individual genius.

    Of course, he was an oddball by the standards of upper management, who were convinced that their company should only employ enthusiastic, young go-getters. These types would get bored within a few weeks and require constant motivation and incentives just to do the bare minimum. Not that I blame them -- I wouldn't have wanted their jobs or their paychecks either. But if I could have split 3 salaries among 2 people who were actually suited to the job, I could have go more work done more consistently and wasted less time listening to gripes and training replacements.

    There are aspects of software design that require creativity. There are aspects that require technical rigor. There are aspects that require procedural diligence. Etc. You are rarely going to get all of these things in a single person, and if you don't match the specific requirements to the strengths of the "programmer" you are likely applying the wrong person to the task.

    At the same time, "programming" in the US tends to attract very smart people, and very smart people often overestimate their capabilities (often by underestimating the significance of things that don't interest them).

  20. Re:Software engineering is not a new concept. by Nefarious+Wheel · · Score: 5, Insightful

    We outsourced a lot of development and IT to an Indian office, and found the experience to be most similar to managing a workforce composed entirely of interns

    We've found in our dealings with offshore developers that the Indians are very process minded. Very process minded. It's the superficially attractive "Paper Raj" that kills you. CMM level 5 certification, for example, is absolutely right down their alley.

    Problem is, CMM5 doesn't actually equate to delivery on time and under budget, just that your processes are correct (ref: Capability Maturity Model). For although process methodology and certification is the sort of thing that appeals to your non-tech execs and risk managers, it doesn't provide clue the first toward whether or not the firm can actually build or deliver to your specification.

    To make it work you need to be involved almost to the point of managing it yourself, and it's a fine balance whether the tradeoffs are financially worth it.

    So if you want process, cool, go to India for the job. If you want intelligent and clever design, you need an intelligent and clever person near you. It doesn't matter whether they're Indian or caucasian, M or F or alternative, brains come in all packages. But you need to find that person, yourself. Your outsourcer won't necessarily put the best or right person on the job you need done, they'll fill the spot. The "company full of interns" reference above is spot on and scary.

    --
    Do not mock my vision of impractical footwear