Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Programming IT Technology

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

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?'"
This discussion has been archived. No new comments can be posted.

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

Comments Filter:
  • 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.


    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?

  • tigers vs lions (Score:5, Insightful)

    by MeatBag PussRocket ( 1475317 ) on Monday June 29, 2009 @04:44PM (#28519417)

    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.

  • Re:Summary error (Score:5, Insightful)

    by digitalgiblet ( 530309 ) on Monday June 29, 2009 @04:47PM (#28519475) Homepage Journal

    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.

  • ... instead of how to use a GUI to do 99% of the programming for you ?

    I still don't use a GUI, and I understand the guts of the programs better than the people who NEED their Eclipse, etc. to do the "grunt work" for them - (Umm.. if you don't understand the grunt work, how do you know that it is even NEEDED ?). In general the code from IDE Jockeys/Junkies is pretty bad. Their solution when things aren't working right ? Add more memory to the system "It can't be my code malfunctioning, it must be a RAM limitation". Rather than learning how to improve their own code and optimize things.

    NOTE: I learned how to program on Punch Cards (this was in the 80s, BTW) and you also had to debug programs from printouts of the failures.(Debugging is ANOTHER lost art , but that's for a different topic) and I've been a software developer for almost 20 years.

    I also have programmed in embedded systems with ASM where every BYTE of memory counted. You couldn't waste 1K of garbage code for an IDE developed code base).

  • by Quasar1999 ( 520073 ) on Monday June 29, 2009 @04:48PM (#28519507) Journal
    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)
  • by mutantSushi ( 950662 ) on Monday June 29, 2009 @04:50PM (#28519539)
    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...
  • "Programmers" (Score:3, Insightful)

    by PeanutButterBreath ( 1224570 ) on Monday June 29, 2009 @04:52PM (#28519567)

    "Developers", what have you. These names are overly generic, causing needless bickering about what they mean to various people. For a project of any size or consequence, you are likely going to need a spectrum of skills and perspectives to achieve anything worthwhile. If you are whining to the wold at large that every "programmer" doesn't fit the role you want someone to fill, you probably don't have such a project, or *you* are the problem.

  • by seebs ( 15766 ) on Monday June 29, 2009 @04:55PM (#28519607) Homepage

    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.

  • by tnk1 ( 899206 ) on Monday June 29, 2009 @04:56PM (#28519629)

    Today's Real Life Business Environment was created by the Hacker Ethic. Basically, the enterprise is defined as stuff that hackers create that is standardized into something that drones can operate cheaply, consistently and effectively. The limitations that exist are based on the lack of most worker's skills, rather than the "obtuseness" of so-called hackers.

    I'm well aware that there are head cases out there who can't cooperate with anyone, but who created the original standards for computing and the Internet? Academics and hacker-types, which are not mutually exclusive groups. The Hacker mentality is very cooperative... just not social in the sense of physical connection. As long as they are safe in their bastions, hackers tend to work together on topics of mutual interest, and very effectively at that.

    The problem is not the developer to developer interface, unless you insist on hiring literally minded drones, it is the business to hacker interface... which can be an issue. Business people like drones because they are cheap and predictable, even in their failures. The management of these Indian development groups smooths over the issues that hackers would bring straight to them. If the code isn't working, drone computing means you throw more developers and more time at it as long as it makes the deadline. Even quality can suffer a little. The hacker mentality means finding a better way of looking at the problem that isn't in the book or even telling the business that they are full of shit.

    The interface problem is real. Business has a right to be able to make goals. However, their problems are not with turning hackers into drones, it is how they can work to interface with the hackers, perhaps with support staff such as better testers and technical writers. I have never been at a company that could use drone developers more than it could simply use some good tech writers, but for some reason the business hires the drones and leaves the people with the communication skills in the dark.

  • Apples to Oranges? (Score:2, Insightful)

    by lie2me ( 1504525 ) on Monday June 29, 2009 @04:59PM (#28519691)

    "hacker ethic" as in "getting things done", versus "professional ethic" as in "cheating your way through school and career"? Let me see...

  • No (Score:5, Insightful)

    by MBCook ( 132727 ) <foobarsoft@foobarsoft.com> on Monday June 29, 2009 @04:59PM (#28519699) Homepage

    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.

  • Re:What? (Score:5, Insightful)

    by treat ( 84622 ) on Monday June 29, 2009 @05:00PM (#28519719)

    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.

  • by computational super ( 740265 ) on Monday June 29, 2009 @05:04PM (#28519795)

    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.

  • by Anonymous Coward on Monday June 29, 2009 @05:04PM (#28519797)

    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.

  • by Spazmania ( 174582 ) on Monday June 29, 2009 @05:09PM (#28519877) Homepage

    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.

  • by dintech ( 998802 ) on Monday June 29, 2009 @05:09PM (#28519881)

    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.

  • by qoncept ( 599709 ) on Monday June 29, 2009 @05:11PM (#28519907) Homepage
    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.
  • by Spazmania ( 174582 ) on Monday June 29, 2009 @05:13PM (#28519939) Homepage

    The absence of evidence to the contrary.

  • by Anonymous Coward on Monday June 29, 2009 @05:13PM (#28519949)

    I have worked for many years with developers from around the world....

    I find this entire discussion funny.....

    1. What you forget is that 70% of the time the customer does not even know what they want.
    2. Typically the "project manager" does not know how to achieve the desired result

    at this point you then hand it to the programmer as a set of "make this work documents"....

    If sent to someone without the creative angle.... they will give you 100% what you ask for but that will be 30% of what you really need.
    If you take the cowboy hacker developer he will see that the specs do not take into account many items that need to be built. I see lots of holes in customer requests and docs coming from project managers that would not take into account security, or leave out critical data required in later development. In a perfect world every development team would have a design engineer who's job it is to check the PM's work for these sorts of things.... Note this would be a person of high creativity and coding capabilities. Since companies do not have these people give me the hacker style coder every day for real end to end ap development and I will out source the make work stuff.... creative guy builds the ap... step by step programmer from cheap foreign market make me some classes to handle these database transaction.
    As to supportability.... again make me laugh...

    I have never seen any project that was unsupportable.... some are a bit weird and out of the box... but if you are a developer worth 2 shakes the first thing you should be able to do is dis-assemble code. Something I see largely lacking from the Indian market...

    To truely be effective as a developer you need to understand the whole picture... That sometimes takes alot of application experience and often vertical market knowledge.

  • Re:Says who? (Score:3, Insightful)

    by Anonymous Coward on Monday June 29, 2009 @05:14PM (#28519955)

    Maintaining a program is always going to be a problem.
    I have limited experience between the realms of self taught hacker and say a typical Indian programmer but here's what I've seen.

    My current boss is a prime example of the self taught hacker.
    Our business uses 80%+ in house software.
    The documentation is low, though some key comments are there that actually hold the hint as to what that code segment is after.
    The programs are fairly quirky as they have been added to and edited for at least 10 years now.
    They continue to work, despite their age, and are still being edited constantly.
    A little research is involved for each change to the software or SQL queries which usually include things like being certain exactly what the code is doing and what other programs or sections of the same program will be effected.

    My experience with Indian programmers is via a completely different kind of program, in this case a technical support ticketing system designed for a large number of entries per day.
    Comments were extremely sparse and the comments that existed were not extremely explicit. 'Do the needful here' does not express what is going on in the code and why it is necessary to do whatever it is you are doing (that particular comment was involved in opening a new IE window and closing the old one... no particular reason could be found for that).
    Comments made around error catches read something like 'in case of no joy' that at least let me know it was some kind of error catch but what exactly was being caught took some digging.
    The program itself wasn't designed well for the volume it was intended to handle as there was a heavy reliance on javascript which caused long wait times as it hung in places on top of the wait times for data from database returns.

    The only other experience I have with either type is a short experience with a self taught hacker type.
    I inherited his program with no documentation at all. Actually I only know that the program resided on a particular system, not even where the pertinent files were located.
    He used ASP, Access, XML, and Excel. Around that point I decided it was best to rework his program from scratch as his files were scattered everywhere and were completely unusable unless you were already familiar with what he was doing.

    So I do not believe it comes down to where your 'training' comes from. I believe it comes down to good form and forethought, which both sides can obviously lack.
    For my two cents, self commenting code is not commenting. It makes it more readable but actual comments should be in place to keep someone reading in the know as to what each major portion of code is for and what complicated sections are doing.

  • by Quasar1999 ( 520073 ) on Monday June 29, 2009 @05:17PM (#28520011) Journal
    What makes you think creative thinking can't be taught?

    If it could be taught, it would be a multi-billion dollar industry. I know I certainly would love to attend courses that taught me to be more creative... I always wanted to write music, or create artwork... too bad all I've ever learned from the classes offered has been how to identify what sucks about what I created, but they never taught me how to actually create something good. That's always left to your 'creativity'... how convenient...

    For example, almost everyone knows how to use photoshop if they play with it long enough, right? Can you show me a school that will teach any average person to be artistic? Probably not, but I'm sure you can show me lots of art schools that can teach artistic people how to use photoshop with amazing results.
  • by RingDev ( 879105 ) on Monday June 29, 2009 @05:19PM (#28520041) Homepage Journal

    I'm a self-taught cowboy programmer.


    My coworkers like my code reviews because I'm thorough and careful.

    You are not a cowboy programmer.

    Cowboys do not do code reviews. Cowboys do not question their own code. Cowboys just throw code at any and all situations. Cowboys don't test. Cowboys treat users like idiots. Cowboys don't document.


  • by dintech ( 998802 ) on Monday June 29, 2009 @05:23PM (#28520113)

    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.

  • by Maxo-Texas ( 864189 ) on Monday June 29, 2009 @05:26PM (#28520175)

    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.

  • by Ixitar ( 153040 ) on Monday June 29, 2009 @05:36PM (#28520313) Homepage

    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.

  • by Lord Ender ( 156273 ) on Monday June 29, 2009 @05:40PM (#28520381) Homepage

    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.

  • by PeanutButterBreath ( 1224570 ) on Monday June 29, 2009 @05:49PM (#28520501)

    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.

  • by cowscows ( 103644 ) on Monday June 29, 2009 @06:07PM (#28520727) Journal

    I'm not a programmer, but in my field we've got the same basic issue, which can be boiled down to something like this:

    In a given project, for every hour of fun/interesting/challenging work, there's ten hours(at least) of tedious/drone work that needs to be completed.

    It's not an issue specific to programming, or computers, or even technology. It's just a fact of life that will never change.

  • Re:Says who? (Score:5, Insightful)

    by hey! ( 33014 ) on Monday June 29, 2009 @06:14PM (#28520799) Homepage Journal

    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.

  • by Yvanhoe ( 564877 ) on Monday June 29, 2009 @06:22PM (#28520875) Journal
    I may sound a bit of an anarchist but here I go...
    There is a lot of differences between a hacker and a cowboy. The cowboy want to save the day, the hacker wants to make a shiny piece of thingie that works and does awesome. Not only does he want that, but he alwo wants to get recognition for that. He wants others to use his shiny piece of awesome. Documentations and protocols are a part of the process that is very natural (awesomeness points are awarded for auto-generated usable documentations). The hacker works usually in small teams, most of the time in teams of one. That doesn't change the fact that he is quite able to produce a standard-abiding well-documented thing. Like everyone, he notes in meetings what is important and discards the rest. He mocks regular procedures because if there was an easy procedure for the thing he planned doing, it would lack awesomeness. He will occasionally come up with his own custom-made procedure.

    Yeah, ever since I have been into software industry, open source and hacker spaces, I was surprised how incredibly well anarchy suits product development and yields results arguably better than hierarchical organizations.
    Why be a drone when you can be a hacker ?
  • by PeanutButterBreath ( 1224570 ) on Monday June 29, 2009 @06:23PM (#28520895)

    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).

  • by gbjbaanb ( 229885 ) on Monday June 29, 2009 @06:40PM (#28521091)

    That part of the 'cowboy' insult is quite valid, a cowboy coder can get things done that a more regimented,unimaginative coder will not be able to do. However, after hacking together a fix, does the cowboy sit down and document it? update the readmes, change logs, even update the bug ticket or put in lots of relevant comments?

    No. And that's the insult - not the technical skill, the enthusiasm, the keenness to fix things. Its the lack of polish that is the true problem with the cowboys. Fix that and you become a professional programmer, and that is when you've learnt to be a true master.

  • by Anonymous Coward on Monday June 29, 2009 @06:41PM (#28521111)

    Of course, you could argue that you wouldn't need glue if things were designed properly in the first place. I'll take my steel frame reinforced building over your glued together rocks any day.

  • by computational super ( 740265 ) on Monday June 29, 2009 @06:53PM (#28521225)

    No, they should give you small, non-lethal assignments that force you to learn (the rudiments of) those things on your own. That's why I say four years of college probably = one (maybe two, depending on the student) years of "real" experience, because you're cutting your teeth on spoon-fed, "toy", didactic projects. College is not, and should not be, vocational training. That's what vocational training is for.

    "I hear, and I forget. I see, and I remember. I do, and I understand" - ancient Chinese proverb.

  • by TheRaven64 ( 641858 ) on Monday June 29, 2009 @07:41PM (#28521799) Journal

    Except the option isn't $40K in India, it's more likely $5-10K in India (which is above the average wage). If you go to work in the USA or Europe, you can probably save 2-3x the average wage back home every year. Go back 5-10 years later, and you can have a comfortable lifestyle and never work again.

    If you offer $40k in India, then you are likely to attract some good people, but you will also attract a lot of very poor-quality developers. Do you, as an American or European company, have people in India who can tell you which is which and won't be bribed (after all, if you're paying that much above the market rate, there's a good incentive for someone to pay half of their salary to the recruiter and get fired after a year; they'll still be in a better position than if they'd got a job at the average wage).

    The situation is very different if you are an Indian company with a decent amount of funding. In this case, you can offer a significantly above-average wage, only hire the best people, and still be paying less as wages than your western counterparts.

  • by Anonymous Coward on Monday June 29, 2009 @07:47PM (#28521865)

    People don't realise that facing the tedium of all the menial tasks of all elements of everyday life is actually heroic (work, relationshiops, etc). Those menial tasks are the unavoidable practical application for all the grand ideas we have.

    A master crafstman produces a highly valuable piece of work precisely because he takes the frustrating time to properly apply the grandiosity of his vision. The grandiosity is important, but no-one can benifit from it if the craftsman can't be assed properly comunicating it from his head to others.

  • by TheRaven64 ( 641858 ) on Monday June 29, 2009 @07:56PM (#28521985) Journal

    There is a reason that Rails has 'script/generate scaffold', and it's not just that programmers don't know any better

    I think it is, but the programmers are the Rails team. If every project that uses your framework is generating almost the same code, your framework is not exposing the correct interfaces. Microsoft is also guilty of this. How many MSDN articles say 'copy this 200+ line skeleton app that does nothing just sets up the default environment'?

  • by Obfuscant ( 592200 ) on Monday June 29, 2009 @08:24PM (#28522299)
    Because it doesn't really matter as long as *your* house has [a toilet].

    Uhhh, yeah, it does. Shit has to go somewhere, and if it doesn't go down a sewer it tends to stay above ground. It's so much fun to kick back after a day at the office making your $40k, sipping your imported Coors Light to the smell of the next door neighbors' honey pots.

    Money really isn't everything.

    When you don't have any, yes, it takes on a certain importance.

  • by Nefarious Wheel ( 628136 ) on Monday June 29, 2009 @08:26PM (#28522313) Journal

    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 [wikipedia.org]). 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.

  • Only if you measure "standard of living" purely by some fixed basket of possessions. I live in the SF Bay Area for under $50k, and I live a much nicer life than I did in Texas. Lots more entertainment is free, for example: I spent some time today walking along the cliffs by the ocean, which I live 2 miles away from. In my former subdivision in a Houston suburb, that wasn't an option, so I had to spend a lot more money paying for indoor entertainment. The terrible weather also makes a bigger living space a necessity IMO: a studio that I'm perfectly happy with in a nice climate where I'm a 30-minute walk from the ocean would drive me insane if I was cooped up in a studio like that in 95-degrees-and-humid Houston.

  • by Joey Vegetables ( 686525 ) on Tuesday June 30, 2009 @09:36AM (#28527367) Journal

    I haven't been to India myself but know a number of folks from both places in both places (including Americans of European descent who relocated there) and what they have explained to me is that a moderately above-average developer in India has two options.

    One is to stay in India, and if so, he or she will earn vastly better than average wages there, and thus be able to afford a fairly high standard of living, in some respects better than in the West. (For instance, he/she will be able to hire a maid, possibly even a driver, which middle-class people in the Western world typically cannot afford.) There will probably not be raw shit running down his or her street, any more than there would be in Sydney or Los Angeles. Not even in Mumbai or Kolkata, each with millions of people we in the West would consider desperately poor, are all or even most neighborhoods remotely like the slums depicted in Slumdog Millionaire.

    But for someone willing to take a risk, it is possible to travel to and work in the more developed world, earn significantly more $$$ at least according to current exchange rates, save a significant portion of that, and then return to India to live like a king (or queen) pretty much forever, or at least until wages, prices and living standards in India rise to achieve parity with the West.

    The danger is that one can easily fall into the trap that most of us in the West already have: to assume that the future will always be as lucrative as the present, and therefore to live at or above one's means rather than below it. This can result in the worst of both worlds: being a wage-slave in the U.S. or some other high-cost country, getting into debt, and ultimately returning home with little or nothing to show for one's time here.

  • by Anonymous Coward on Tuesday June 30, 2009 @10:46AM (#28528313)

    You're using a site that was created entirely in glue. What does that tell you about hackers?

Solutions are obvious if one only has the optical power to observe them over the horizon. -- K.A. Arsdall