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?'"
And though HTC's Vineet Nayar's proclamation that American programmers are 'unemployable'...
Flamebait. The article goes on to say that Americans are all prima donnas who are out of touch with reality and want to start with 80K a year and whatnot. Besides that being a bad stereotype and not always true, and when it is true it also applies to math or engineering or whatever grads whose parents buttercupped them with promises of the American dream when they finished school. It is their fault for not anticipating reality just as it will be the Indians' fault if they refuse to anticipate their jobs going somewhere cheaper.
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.
They're already here, usually called "Software Engineering. The coursework is usually half business, half programming and IT. If you can survive rolling your eyes at all the buzzwords and colored charts, it's decent preparation for becoming a Dilbertian drone. Plus, you won't have to sweat learning the vector calculus you'll never use outside of school.
HTC is a Taiwanese electronics firm. The CEO in question is (according to the previous summary) running HCL Technologies. Of course if the previous summary is inaccurate as well, this is also wrong. But that's slashdot - they should replace the /. logo with a box of chocolates ...
Let me make this as clear as I can make it: Neil McAllister is an idiot. Stop posting his "stories".
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?
Javascript + Nintendo DSi = DSiCade
This has got to be the lamest 5 minutes I have ever lost in my life... I cannot get the 3-5 minutes back you know
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.
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 thought our messy unmaintainable code made us unfireable.
If you mod me down the terrorists will have won
Hi, I'm a self-taught cowboy programmer. Never took a single CS course.
I spent ten years on the ISO C committee. My coworkers like my code reviews because I'm thorough and careful. While my code isn't as good as I'd like it to be, the big hunk of my code that we put into our last product release has one known outstanding bug, and it's considered "cosmetic" -- it never impacts the actual output. (And that's for five thousand lines of code I produced in three weeks...)
I don't buy it. I am a big fan of the "hacker ethic" -- and I see maintainability and code quality as *central* to it. Sloppy work is habit forming. The reason I can type ten-line shell scripts in at the prompt and have them work is that I have worked really hard to be good at what I do.
So, basically, I don't accept the premise. We used to have offshore coworkers from India, and they were useless. They'd reopen bug reports because the same package failed to build for TOTALLY unrelated reasons. ("TeX is not installed" and "linker error due to frame table full" are not the same bug.) Since then, we started hiring people in China, and actually hiring them as full-time staff, and it works a lot better. They're not all hugely experienced, but they're solid, and they learn. (They even argue with us sometimes, which I'm really enthused about. That's how you get good.)
My blog: http://www.seebs.net/log/ --- My iPhone/iPad app: http://www.seebs.net/seebsfrac/
Hackers are those that take an axe and hack down a tree creating a mess in the process including casualties that offend the beauty of solutions.
Designers go about it systematically applying methods that bring the tree down without a mess or casualties.
Things like PERL are deeply disturbing to anyone with a sense of design.
Hacks usually have to be replaced when discovered in production systems that value scaling and reliability.
Hacks have saved me and I always replace them when possible since they are just so offensive and putrid that shivers evoke pain in my spine.
Design brings the best of software techniques to bear upon problems.
Software needs work. Iterative improvement. Hacks might be in there but in time they tend to get removed with designed systems or redesigned systems.
Hackers are not really programmers as they are to enamored with their hacking skills.
There is nothing redeeming about hacking, all of it is from the dark side.
... 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).
UPS Sucks
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.
Perhaps the 'hacker ethic' being synonymous with computer programing only exists in your mind rather than American society. I know generations that have made decent livings programming, and they have nothing to do with hacking.
Designers can't spell.
Honestly this is not my experience and I'm a manager at a fortune 5 company. In fact, I recruit programmers from the US for other parts of the world as a side line to help fellow managers in other countries. We do have a mix of various backgrounds but it tends be the "american programmer" mind set that we seek regardless of race, nationality, etc. As a practical matter, we compete very nicely with HTC and other similar companies, I hope they hold onto this viewpoint, it's a useful advantage for my company.
Flame on, you crazy bastard.
Um, it's lose, Mr. Designer.
"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.
I feel dumber having read someones this... thanks for taking 3-5 minutes of my life that I cannot get back.
My observation is that good American programmers can produce software that is -vastly- more maintainable, efficient, understandable. Easier to modify or extend.
Mostly this is because they're combining a lifelong passion for programming with some education (formal or not) about software design practices. Foreign programmers on work visas are primarily concerned with making a better life for their family, altering their condition from one of near-poverty to significant wealth. They rarely have a passion for the work, and their only requirement is that they can accomplish enough to get and keep a job, not to excel.
Foreign programmers who could not get a work visa to come to the US, but work for US businesses remotely for a reduced rate due to the discrepancy in cost of living are usually of the same mindset. But usually they weren't good enough to get a job in the US! More recently, their standard of living can be equal or greater by staying in their country.
I simply don't know where the Indian or Chinese workers are that have significant skill or a real passion for programming, or computers in general. I have never met ONE in my life, despite working with countless dozens of foreign works on work visas. I have met some from other countries, but usually it is not places that are so poor that huge numbers of people are coming to the US to get a job that changes their standard of living. The exception is the former Soviet states. People from the former Soviet states often bring a passion for computing with them. Probably because they weren't poor in the same sense as someone of comparable income in India.
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.
Hackers don't make hacks. I feel that you don't understand the term 'Hacker'. The 'hack' in hacker is not about hacking something together, it is about hacking your way through an unknown to come out the other side with an understanding of a thing.
I think this person has a point.
Let's re-evaluate. But in doing so, let's be fair.
A programmer is only as good or as bad as the direction he gets.
I propose creating a new kind of middle manager.
You know... someone competent who has a basic understanding of process and why it's important to spend the time to put it in place, lol.
Or am I asking too much?
This signature has Super Cow Powers
against the concept of genius
in other words, not a very useful argument
intellectual property law is philosophically incoherent. it is your moral duty to ignore it or sabotage it
'American software development managers often complain that Indian programmers are too literal-minded,
Really? I think we've all seen this thing. If you aren't beign literal minded, you're making assumptions. When you make assumptions, at least some of them are going to be wrong. I spend a lot of time fighting for better defined requirements, because it means I'll spend less time doing rework when what I give my customer isn't what they wanted. The example I always give them is this:
You tell me college football, if you have possession of the ball and your knee touches the ground, the ball is down, whether or not the player was tackled. I give you a college football game, and the first time you try to kick a field goal, the ball is downed 7 yards behind the line of scrimmage because the holder's knee is touching the ground.
If you want something, your requirements better document it. Developers with "better practices" understand this. Unfortunately the people who write requirements usually don't.
Whale
What you perceive to be spelling errors were intentional typos.
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?
I don't know, but us IT guys save A TON of money riding a skateboard everywhere, and it's environmentally friendly! Who's laughing now?
-The Plague
Adidas To Bring Back Sneakernet
The technology industry has moved beyond its infancy and become a fundamental part of most businesses. I'm a systems administrator and I started working in IT (MIS at the time) when I graduated from high school in 1996. In my childhood, I spent a lot of time hacking phone systems, hanging out at 2600 meetings, and doing all sorts of other not so legit activities with computers. I was interested in whatever systems I could get my hands on, whether it was a System 75 running Audix, a 5ESS/SS7 switch, Linux, Cisco routers, whatever. I read Internetworking with TCP/IP by Comer not because I was in college and had to, but because I wanted to understand what those around me were talking about. All of that development left me with a broad skillset that lacked focus. I developed a very high level understanding of how systems interconnect, and by working for some very good bosses, I developed an understanding of how the systems support the business processes of the organizations I worked for. I'm very much a stereotypical "Jack of all trades, master of none." sort of administrator.
When there weren't many people out there with an interest in or hands on aptitude with computer systems, people with my skillsets were in high demand. In the small business sector, where companies can't afford separate DBAs, system admins, network engineers and so on, I fit in quite well. In the corporate world, I can't even get a job interview because they are looking for individuals who are highly focused on a single aspect of the overall network. The same thing holds true for developers.
"Back in the day", being able to write code to get the job done was a mystical science for management types. Skilled coders were in short supply, so people who could hack programs together were employable. In this day and age, anybody can go to any number of colleges or trade schools and learn how to write decent code. Anybody can go to college or trade school and get an MCSE, or a CCIE, or any number of system/network specific certifications. Managers and employers want known quantities. They want developers who are going to deliver predictable code. They want system admins who are going to follow industry best practices.
The technology industry has grown up. We aren't in the days of "Just make it work" anymore. We're in the days of refining how things work. Best practices have been established. Frameworks for doing things have been established. Companies are just looking for people who can "Make application X do A and B." reliably.
"hacker ethic" as in "getting things done", versus "professional ethic" as in "cheating your way through school and career"? Let me see...
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.
There are just a bunch of really bad programmers out there. Degrees and nationality are largely irrelevant to skill at it. Don't blame "kids these days" or whatever because you're not good at filtering out the bad ones. It's not particularly difficult to spot the good ones, they're pretty enthusiastic about the questions you ask them and the problems you give them when you're interviewing.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Hacker:
* someone who plays golf poorly.
* a programmer who breaks into computer systems in order to steal or change or destroy information as a form of cyber-terrorism.
* a person who hacks a tree down with an axe.
* a person with too much time on their hands.
* someone who can't design software.
"...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."
Which is why many universities offer software engineering degrees as a more practical alternative to computer science degrees. Software engineering degrees were offered at many of the schools I was looking at back when I started my undergrad in 2002. I was actually annoyed at how many software engineering classes my university crammed into my computer science curriculum since I had no intention of becoming a cube monkey.
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?'"
If only we were more in love! The thing is... the "cowboys" who can't shoot straight (e.g. write scalable, maintainable code) aren't real hackers anyway. It's a lot easier to be able to bang something together with glue and nails than it is to truly hack development. Any responsible hacker is going to know all about best practices, when to break them, and when to find new ones. There is beauty in simplicity as well as in obscure complexity. Whatever. Let the next generation all take classes in SharePoint or some crap like that and the good programmers among us may have even better job security than we had hoped for!
I MUST post this story on every developer forum on the web. Start with:
Ubuntu forums
Suse forums
Debian forums
Redhat forums
Mozilla forums
Ohhhh, I better get busy, I can fill in the list as I go.........
"Windows is like the faint smell of piss in a subway: it's there, and there's nothing you can do about it." - Charlie Br
there are way more incompetent morons running around with degrees who are proficient in java to state that this is the case. what is the real question here? are intelligent programmers from the united states too individualistic to conform to some management dictum? perhaps instead of considering ourselves innovative and capable of addressing issues as they arise, we could start thinking of ourselves as manufactured commodities designed to steal the business from other national economies in order to make old-fashioned newspaper headlines about how the 'american hacker' mindset doesn't work when compared to some indian bullshit.
Oh noes, we better catch them!
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.
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...
I take it that McAllister writes books and not code.
It took you that long to read the summary? :)
So you just don't know the difference between "lose" and "loose", and between "to" and "too", correct?
"Our two-party system is like a bowl of shit looking at itself in a mirror." - Lewis Black
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
I read this suggestion as meaning colleges should produce engineers that know how to obey by standards but have no idea about the basics of computing?
Really, since when has hacking anything to do with computing theory? Hacking means some rapid prototyping and a style of coding that favors experiments over long winded planning. Usually hackers are the one's throwing computing theory out of the window and just throw something together to demonstrate a concept or some cool modification. In that context it does not matter if it performs in all cases or on large data sets.
So if you want serious engineers that build bridges, I mean software, that work reasonably in all specified contexts, you better don't do it by hacking.
There is a place for hacking and for serious engineering with process and knowing what the end goal is. Good engineers can do both and they certainly don't trade "succeeding in industry" for knowing what others have learned and demonstrated (theory).
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.
The Hacker Ethic is not a set of guiding principles designed or built to promote the adaptation of programmers to development processes and business planning. And it shouldn't have to be.
Very well, you may want to train people within a different mindset prepared to fit into a process, acknowledge the existing rulebook and basically play nicely by it, working with others in developing business-oriented code for business purposes. But the Hacker Ethic is much more a cultural development for what was at its time mostly a subculture, than it is a series of well-defined principles for development. The Hacker Ethic emphasizes a series of value and skills that are perhaps way beyond a business development context - in that they belong much more in the future than they belong in the well-defined production/industrial contexts that we have come to tbe acquainted with.
So to put forth such an argument, that the Hacker Ethic harms developers' possibilities of conforming to market standards, is just that. It means conforming, thinking inside the box, and so on. Such is not the Hacker Ethic, and is not meant to be, and doesn't have to be. Just because there may be other, different objectives than those embodied in the HE, does not mean it needs to be put aside, transformed, or somehow modified. It's just different contexts.
http://castorexmachina.wordpress.com - Filosofía, tecnología y cultura.
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.
-Rick
"Most people in the U.S. wouldn't know they live in a tyrannical state if it walked up and grabbed their junk." - MyFirs
Formalizing everything about programming into tedious red tape is not how to efficiently or properly write code. If the hacker ethic is incompatible with the industry, then it's the industry that is wrong.
Innovation, true innovation, comes from giving your programmers and engineers some creative freedom, and some elbow-room to experiment and try things out of curiosity and pure ambition. The Amiga is a perfect example -- it was possible only because the Amiga team was afforded to be creative with their work and make risks that most modern managers today would be too afraid to take. Indians? They're nice people and I love working with them, but they're too much like obedient puppies and not so much like daring inventors.
Way to totally buy into the incorrect media usage of the term "hacker." Congratulations.
When Indian companies come up with globally game-changing software on the same timetable as a Silicon Valley start-up like Facebook or Google, we'll talk. When a Chinese company has the long-term track record of quality and maturity that IBM and Oracle exhibit, we'll talk.
Until then, the cowboy coder makes better software in less time at the beginning of their career, and matures into a more competent team player as the years roll by and experience piles up. This isn't a weakness, this is why we have an IT industry at all. H1B coders are generally useless until they learn to Cowboy Up... and once they do, there's not really much difference between them and the locals. (I wish more of them would apply for permanent residence and bring their families over. I like immigrants who want a better life, I don't like scabs.)
Engineers at Honda start out their career working for the racing division, designing high-performance parts. Engineers at the end of their careers are assigned to subcompacts and mini-vans. This is because Honda needs fresh insights and youthful eagerness and excitement, and if the engineer flubs it, the only ones who know are the racing team. More importantly, Honda needs experienced hands who know their craft inside-out and upside-down to engineer the components millions of their customers will be using everyday, and their senior engineers generally appreciate the stability and predictability of a long-term ongoing project.
Hacker:
* someone who plays golf poorly.
* a programmer who breaks into computer systems in order to steal or change or destroy information as a form of cyber-terrorism.
* a person who hacks a tree down with an axe.
* a person with too much time on their hands.
* someone who can't design software.
...excerpt from "Hacker for Dummies".. /\ \/
Think how much more time you just sacrificed validating the article's existence with a response?! Fascinating...
I think that opinions generalizing talent along lines of nationality is usually a load of bullshit fueled by the prejudices of the one doing the opining. This sounds like hubris to me. Perhaps they should consider developer productivity to be as much a function of management and empowerment rather than some innate ability of the people of some nation.
Wake me up when HTC makes their own handheld OS.
Speaking from a perspective of 23 years experience in IT I can honestly say that the single biggest impediment to the successful delivery of any IT project is the failure of management to understand the nature of what it is we do.
I am currently working as an Integration Architect in a rather large IT programme within which numerous separate-but-connected projects are being run. I find myself having to explain again and again to the PHB's what re-use means. Why we're concerned with maintainability. Why having a sensible data dictionary is good. Part of the problem is the way the individual projects are being run means that there is no value placed on architectural considerations which have a financial impact (cost saving) over the long term. PM's are focused on their own deliverables/budgets/deadlines and in our specific instance, the team responsible for "integration" does not have any clout - we work by cajoling, wheedling, nagging and stealth. If I had a buck for every time I had to present a "SDLC for dummies" powerpoint to a bunch of PM's and middle-management...
As a non American, allow me to say that I think this article is bullshit. The world needs hackers today every bit as much as it ever did. Creative thinkers lead to creative solutions. It seems to me that arguing that all programmers should be drones is the kind of thing you'd expect from some know-nothing PHB.
Hack on, Yanks!
Now that we're past the absurdities in the summary, it may be a useful reminder to many the economic culture in the U.S. still has a strong 'cowboy' mentality.
I would argue it rewards and embraces 'cowboy' coding because it's the cheapest/fastest way to implement a new idea.
Having dealt with Asian cultures in a business environment, the cultures don't reward the 'cowboy mentality.' They can reproduce cheaper/smaller/faster things very, very well. But don't ask them for new ideas. American business is full of new ideas. I just wish we had a less restrictive legal environment to let those new ideas flourish.
http://www.maxineudall.com/2010/02/should-economists-be-sued-for-malpractice.html
Vineet Nayar does not 'belong' to HTC. he is the CEO of HCL Technologies. HTC is a Taiwan-based mobile handset manufacturer (among other things), and a pretty good one at that.
[Slashdot Comments We Liked]
Thank you!
The original article is so annoying. Nasty nationalized stereotypes trying to make people think you have to either be sloppy or conformist. My designs are beautiful, elegant creations. They rarely follow any kind of "organizational development process" (except that I do MAKE a plan, though it only loosely gets followed: that's the idea) or "coding standards" (except in security, readability, and maintenance). I'm definitely not a hacker, but I'm not some half-dead brainwashed programming drone, either. Thank God.
Your writeup provides nice simple dichotomy with direct correlations and some minor humor, no hacking or cowboy shooting needed. And you don't seem terribly at risk for being accused of conforming to organizational development processes and coding standards, either. Cheers to you, particularly for the typos!
(ftr, it's true that I'm unemployable by most of the nasty corporations, being self-educated and kicked out of school for my non-cowboy, non-indian points of view. I don't really mind, as I still get paid enough by my lovely corporation to live by. At least til the project's done...)
-another american designer
Hacker: A natural computer genius, grew up with a keyboard in his hand. Hackers may have a formal education but they learned the guts of computing long before that. They have an almost intuitive, because it is deeply learned, knowledge of what works and what doesn't when it comes to computers. I think being a hacker is something to be aspired to, but I doubt that anyone can apply the title to themselves. Well, some people can, because they're just that good.
Cowboy: An independant soul who may be too stubborn to admit he is wrong about certain ingrained behaviors he's picked up over time. Sometimes people will put up with his ways because he is just that good, other times he'll make a catastrophic error and send everything to Hell. Not good or evil, just stubborn and independent. Sometimes his stubbornness can work in a company's favor, when the political thing to do is actually the wrong thing, and the cowboy won't "go along to get along." Sadly, the company is unlikely to thank the cowboy for this.
Cog: Mister Cellophane, a nobody who anyone can step on, a little grey man. This guy figures "you take care of the company, the company will take care of you," but is surprised when being taken care of by the company involves a pair of cement shoes and a trip to the pier. Cogs do their best to be easily replacable, and try to make themselves politically popular. Maybe that path succeeds for them, but maybe they find themselves the sacrificial lamb. In MIT slang you could possibly call this person a tool.
I parse the article this way "We'd like less independent geniuses and more interchangeable cogs, please."
"MIT betrayed all of its basic principles."
and they're less likely to conform to organizational development processes and coding standards.
A lot of times, the "Cowboy Coding" is more effective because the "development processes and coding standards" were implemented and enforced by phonetaggers who have never written a productive line of code in their entire lives. Those who are inclined to break them, naturally, are more productive and seem more effective - despite the grumblings of the phonetaggers that they are "unmanageable".
But, really - Does "management" have any right to blame them? They spent the last decade proving to every developer the idea that if you allow yourself or your work to be commoditized, we will ship you or your job overseas where it can be done cheaper. And "development processes and coding standards" are usually implemented with the intent of "commoditizing", to a certain degree, the work of coding....and you're going to blame the *developers* for rejecting that? Middle management in the US basically *created* the environment that forced developers to either become "Cowboys" or to compete with people making $4/hr overseas.
Speaking on behalf of coders everywhere - You can take your "development processes and coding standards" and shove it - I'll keep my job and let you grumble under your breath about how I am "unmanageable", thank you.
Coding is nice and all, but good communication, good engineering, and good design (not graphics design) are parts of the old skool "hacker ethic." There was a time when you touched a program you tried to leave it better than you found it and anticipate what the next guy will need or want. That's becoming a rarity and some modern paradigms like Agile seem to ignore it completely, you're wasting energy and time if you "over engineer" anything or try to build something before you need to.
Where or if you went to school doesn't matter, the tools you choose to use don't matter, even if you're a low-level assembly and machine code guy or as javascript in the browser kind of guy doesn't matter that much, and it certainly doesn't matter if you can code faster than anyone else or if it takes you twice as long as the next guy (there is probably another problem when that really matters much... nobody likes to admit it so much as revel in the coding marathon glory but when all you do is code, you simply don't have time to engineer or solve problems better..) Good hackers, write programs that are easy to understand and maintain and they try to anticipate what the next guy might need, bad hackers/cowboys/whatever don't. Now I've run a few outsourcing efforts and I'd say they've got shit for hackers in India and China, seems we've got shit for a hackers in a lot of places in America too though. Good hackers tend to finish the job, not "get it working."
To get a professional basis for future work, we need something like the IEE or IEEE. Which upholds standards of professional work and polices the quality of product from it;s members.
It would still make room for non-members (or "cowboys" as they would no doubt be termed) to be employed, though presumably they couldn't command the same rates of pay as the professionals, as they would not have the backing and guarantees from the organisation and the qualifications it demands. Until we get somehting like that, we're simply just playing at programming.
politicians are like babies' nappies: they should both be changed regularly and for the same reasons
As in, the culture of the company. I'm not a software engineer any more, I'm an electrical engineer (I worked as a coder while I was in college). In particular, I'm an analog (and sometime digital) circuit designer. I learned nothing about business practices, Six Sigma, et al in school (S.B. and M.Eng in EE and CS from MIT). Why? Because I spent all of my time taking real EE/CS classes. When I got a job in the industry, _then_ I started learning all the practical stuff I hadn't had time for in school. Why do EE companies do it this way? Because the cost of failure is so high: we spend a million dollars taping out a chip and it doesn't work because I decided to cowboy my circuit and we're out our money.
Many software companies don't see such large quantization steps in their failure cost: we lost a week here or there because the newbie's coding practices don't mesh with the rest of the team, but management is just watching their Gantt chart and we'll push on them to hit their milestone on time anyway; fuck 'em, they're just code monkeys anyway.
See the difference? The assumption that designing bad software has a small cost (mostly because it's deferred until much later when it's discovered, plus the assumption that any bug that's discovered is easy to fix) is built into the management style of the software company; the assumption that failure is extremely costly and the necessary culture of rigor are built into the management style of the EE company (well, not all EE companies... but there are shitty companies in every industry).
So why not teach EE students all about Six Sigma et cetera? Well... when? I took 5 or 6 classes a term (4 is average at MIT) and still took 6 years to do my degrees. There's just too much to cover in EE/CS to get it done---and yet there's no "cowboy issue" in my industry, as far as I can tell.
So is there really less to learn in Software Engineering? In other words, is this just a fundamental difference between EE/CS and SE? I say absolutely not. There's an incredible amount of material to cover in SE without getting into business practices: first, pretty much any CS topic is fair game for software engineering (yes, I know they're not quite the same thing). Then there are more EE-like subjects that most SE people don't get, but should: signal processing, feedback systems (yes, they exist in software just as in hardware, and they can be analyzed with the same fundamental tools). There's plenty of math to learn: discrete math, algorithms, set/group/category theory, et cetera. Then there are classes on system architecture, complexity management, and a million other really hard problems. Given all of this, and only four years to fit it all, any time spent on business practices and Six Sigma is an unmitigated waste of time. It can be learned faster and better on the job---after all, you may as well learn the business practices at the company you work for, while actually doing useful work.
Far from producing "unemployable" grads, a program with no focus at all on "business practices" will turn out coders who have wrung from college everything that ought to be learned in an academic environment, and who are ready to be apprenticed to an experienced mentor who will teach them the practical details that are dirt simple to understand.
In other words, let Vineet Nayar's coders waste their time learning about bullshit Business Practices instead of expanding their minds by learning something difficult and interesting. You need code monkeys to do shit work anyway. There's always a lowest common denominator somewhere.
Or how about this: do you think when you go interview at Google they're more likely to ask you about Six Sigma, or about problems arising in the design of a secure/anonymous/reliable distributed filesystem?
I can't believe we're hearing from that outsourcing suit again.
Of course most US engineers don't want a mere vocational education. What Mr. Outsourcer is looking for is compliant graduates from 2-year schools who will then go on to be "finished" in whatever in-house training they offer (almost certainly, they will be programming Java under Eclipse).
He shouldn't come crying to us when the next Twitter, Google, Slashdot, etc. is invented by some dude from America who wrote the whole thing in Haskell using vi.
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
I can't understand why anyone is surprised that people trained in computer science are ill equipped to develop
business software.
How many computer science graduates typically have the slightest clue what accounting is, or how it works?
How many computer science undergraduate programs deal with the customary and legal environment of
business?
How many computer science programs deal with the realities of designing and maintaining a datacenter,
in theory and/or practice?
Computer science is a theoretical self-serving discipline designed to produce more computer science
graduate students. Anyone who learns practical, appropriate, and customary reality does so more
often despite rather than because of their education.
Time for a radical reassessment.
Cost of living varies wildly across America. Thus how much you need to make to have a good life does as well. Where I live, housing is cheap. I have a condo where principal + interest + taxes + insurance + HOA fees is less than $1000/month. Obviously you can live pretty cheap here. Rentals are, of course, less than that. What's more, that's in the city so I can (and do) bike to work, saving on transportation costs. Now compare that to when my cousin went to school in California. His parents rented him a place that they then sublet to more kids. It was 4 people each paying $1000/month in rent. We are talking literally over 4 times the cost, and not as nice a place.
That isn't to mention other cost of living things. The old bank rule is take your gross monthly income by 3, 1/3rd for taxes 1/3rd for house 1/3rd for everything else (that is how to determine if you can afford a mortgage or not). The reason for that is because it is easy, but also rather accurate. As housing costs go up, so do other costs normally. Thus if your place is running you $4,000/month, you can expect that your other expenses (including setting aside money and such) will run you around $4,000/month.
Then there's kids, and that is a whole different situation. What works fine for a single person does not work fine when you are supporting children, who are rather costly and generate no income.
As such while $80,000 where I live is plenty, you can have a good life with children on that or much less, that's not the case in, say, New York City. Have a look at costs of living there sometime. Then consider that with a family, a little studio apartment isn't an option, you need a larger place.
There are indeed places where $80k is barely enough to do ok on.
Actually, there is a 'creativity' industry out there where people teach people techniques that enhance creativity.
Check out Julia Cameron's "The Artist's Way" as a start. The book is a twelve step program to releasing your creativity.
Edward de Bono is another person in the 'creativity' industry, one who has been writing books on the topic for forty or so years.
Of course, a major part of creativity involves imagination, which can be limited by your upbringing. If, when a child, you are told that something you have imagined is 'stupid' because it doesn't exist or it is impractical, you tend to shy away from using your imagination. That is why a lot of 'remedial creativity' exercises attempt to get you to use your imagination again, through what seems to be childish activities.
Albeit true that there is a cadre of self proclaimed hackers in America that forsake all and any form of maintainability in the code they write this is generally not true of professionals that are trained at places like MIT, Waterloo, CalTech, or BCIT. My experience as a gun for hire project saving consultant is that generally the absolute crappiest of source code comes from overseas out-sourcing (although, in all fairness, the worst examples I've come across are made in America). It's not because the programmers in India, Vietnam, Romania are bad - some, if not many are outstanding. It's because the managers are forcing poor work habits to increase productivity (and profit) - they are not paid for comments and proper variable names, only for the lines of code.
Professional computer programming is only about 50 years old. As a profession it is virtually brand new and standards, except for core, common sense axioms, are mostly short lived fads ("Scrum" is about the most inane yet). Even the basic tool, programming language, changes every few years. LISP, Clarion, Delphi, PL/1, FORTRAN, C, C++, Java, and now C# were and are touted as the standard to work from. I was first taught assembler and then COBOL (shows my length of time in the trenches).
A new kind of computer engineering degree is not needed an established set of standards is required. When a body of standardization is in place and true universal standards are established, then the quality of coding will become uniform. I do doubt that this will happen in the lifetime of anyone reading this.
What you perceive to be spelling errors were intentional typos.
So you just don't know the difference between "lose" and "loose", and between "to" and "too", correct?
*Whoosh*
Obviously the GP was talking about dating hackers, not employing them.
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.
Or at least it is at the BS level. The idea is to teach people how to break big problems down into little problems (functions and subroutines), how to efficiently handle data (data structures classes), how to communicate (networking classes), and how to understand what is actually going on at an arbitrary functional level (programming languages and compiler design). A person who has mastered these skills can easily learn accounting, legal jargon, and data center management. At the the higher end of the spectrum (MS, PhD), CS principles can be applied towards math solving and system modeling, which can be applied toward the hard sciences.
You're close to the mark, but the actual issue we're running into with CS is that it is a support science, and has little value when only applied toward itself, unlike physics, chemistry, biology, etc. So once you graduate with a CS degree, you have to learn whatever skill it is you're going to be supporting.
Pink is for hackers, blue is for suits.
``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
I'm sure that "automobile hackers" were regarded the same way. And "rocketry hackers".
Programming will go through the same phases. Hacker -> engineering. At the hacking stage, it's more a craft. Craftsmen will use very different methods to achieve varied (but good) results. Engineers will use almost exactly the same methods to achieve almost exactly the same results. The shift has already started but I'd say will take another generation to complete.
I'd estimate that the people graduating in Computer Science now will be the teachers of the first generation of real Software Engineers. The current comp. sci. graduates will be making the first crude engineering tools that the eventual engineers will use (and quickly replace, with better engineered versions).
Once it becomes actual engineering, some old hackers will make the shift to engineering and some will go do something else. A few will continue with it as a hobby, being the "grand old craftsman" who dabble in "hand made art". Some may have notoriety and will mentor the next generation, so the new generation can fold the few good old heuristics into the engineering lore.
And the next generation of hackers (those with a personality that drives them to tinker) hack on something else - there's little satisfaction to hacking stuff that's being engineered. Diminished returns. It wouldn't even occur to them to hack software, there'd be no point (for a tinkerer).
Ditto FreonTrip. The article asked for my opinion and I gave it dude thus it's not a FLAME whereas your comment didn't address any fine points about why hackers are not good for the software industry in the long run.
[META]And you moderators moderate my rational comments down, what about the parent to this one eh? Moderate it down to zero as flame bait please![/META]
Hackers are people who can't think long enough to do the programming job right. They usually have ADD or some other nasty flaw in their character that prevents them from doing the job properly and in a readable fashion.
Utter nonsense.
Yeah, glue is used to hold wood together till you nail it together with nails to hold it in place permanently.
PERL might be temporary glue but it's an icky solution that fails any design requirements for reliability, stability, or understandability.
Sure PERL is used by hackers, but so what? That doesn't mean it SHOULD be used for solutions. In fact PERL itself is a horrific hack. It takes a team of hackers with chainsaws to slice a path of understanding through it's unnecessary complex syntax where the rule seems to be if it's not in the library add it with NEW syntax to make the language more complex. See this excellent article on PERL's syntax complexity here: Simplicity and Power Comes from the Smalltalk Syntax. It requires a complex "PERL Periodic Table of the Operators" to comprehend the PERL syntax.
When compared to a powerful language like Smalltalk that is designed rather than hacked it's clear that the extra brain power used to comprehend the bizarre overly complex syntax of PERL is just a waste of precious life energy and time.
It's clear that PERL is a language with an extremely heavy syntax burden that doesn't give it any advantages unless your trying to win a cryptic programming contest. But then that is what hackers are trying to do in their heads when they work. I know, I've had the misfortune of working with too many PERL programmers. Shivers.
PERL is for hackers just like GPL is for nested acronym freaks who have nothing better to do than solve so duku puzzles when they should be getting real work done on projects.
While no programming language is perfect it makes no sense to burden the human mind with the nonsensical and unnecessary burden of the extra syntax layers for PERL. Heck even a EBNF is very unlikely for the darn thing.
So ok go ahead mr hacker and use PERL as your glue but watch out as it's addictive when you sniff it for too long. Drug addicts don't make good designers mr perl hacker. ;-)
Perl is glue. Glue is messy. It's supposed to be messy
Given equal strength, I'll take the less messy glue (say, Tcl or Ruby) over more messy glue every time.
Perl is definitely much more messy than it needs to be.
What branch of physics do Computer Science graduates work in? Where does philosophy fit in?
I suspect that most CS graduates can be divided into 3 groups: 1) Those who debase themselves in the eyes of their professors by "merely" performing software development. 2) Those who preserve their purity by staying in academia and thus propagate the meme that CS isn't about programming. 3) Those who are unemployed.
The question is whether or not your committed to the "cult of the cryptic" as hackers are by definition since, as some have said, a hacker is someone who enjoys hacking through complexities to get a make a path of understanding.
Sure in computing we need to understand complex systems but it's one thing to understand a complex system and quite another to be "devoted" to keeping it cryptic as most hackers do.
As a person committed to keeping systems as simple as possible to get the job done I'm committed to simplicity and elegance of solutions rather than ugly hacked by an axe.
A home built by a hacker would have randomly hacked lengths of wood for the walls of uneven thickness stuck together by PERL Glue that they've sniffed too much over the years. Not many homes are designed that way for good reason and yet no one even questions that design is required for building a proper home.
A home built by a designer uses measured boards of wood and nails and screws and special connectors in earthquake zones not glue.
A hacker puts in power outlets into one basement renovation layered on top of many others ending up with over 17 power outlets most illegal and highly dangerous fire hazards. Yes, this mess was discovered in a person's real home on the show Holms on Homes when they tore apart a basement to properly renovate it properly with a principle called DESIGN.
Design wins in home and building construction for a reason. It simply works better than hacking.
Design wins over hacking when it comes to philosophy and understanding of Nature. With design and the scientific method we end up with the Theory of Evolution, and Quantum Physics and General and Special Relativity. With hacks we end up with - ick run for the hills - religion and cults and the GPL madness not to mention Intelligent Design which has neither intelligence nor design (they just hijacked the word design because they know how well successful it is in man made pursuits).
So, hack all you want, but if you want to be a REAL PROGRAMMER choose the simplicity and rigorous methods of design!
May you hack no more.
Hey, I moved from NY because apartment prices were going too far up. But you can get very nice apartments - say two good bedrooms in a fashionable part of Brownstone Brooklyn, in the $2000-$3000 a month range. Granted, 15 years back those same apartments were $800-$1200. Still, it's more like $30,000 a year for a very nice NY apartment, including in some of the better parts of Manhattan these days.
That's still steep. But you can eat out better and cheaper in Brooklyn and Manhattan than about anywhere else in the country. And there's no need to own a car. It's all a matter of where your priorities are.
"with their freedom lost all virtue lose" - Milton
I'm working with a highly-educated coder, who takes 5 times as long to do a project because he believes everything they taught him. His code's no better though. And he's terrible at reading others' code, if it wasn't written according to the immutable principles his superior education endowed him with. It's sort of sad. Really. He could have been so much better if he'd learned on his own, by taking other people's real-world code and tearing it down to see how it worked, like the rest of us. Academic coding principles are no substitute for real literacy. And literacy means you're not dependent on the accent to understand the language.
"with their freedom lost all virtue lose" - Milton
Smalltalk eh? Drop me a line in a decade or so and let me know how that worked out for you.
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
Ah, not I don't lose as I didn't run a spell checker for TYPOs anonymous coward. I simply (if slashdot wasn't a hack) would publish a revision using the design principle of iterative versions that would have the correct spelling.
As Powell Janulus, a man who knew 80+ human languages, would say "mistakes are irrelevant if you communicate your meaning" and "those that only focus on your errors are the ones who don't succeed or they are just being a pain in he ass for their own sake."
Actually it's worked out quite nicely for me including financially with more money than you can imagine spazing maniacally dude.
But again you miss the point.
Complex hacked language = PERL = extremely complex syntax.
The creators of PERL consistently choose to implement features in SYNTAX instead of in a library as languages like Smalltalk do.
Simple but not simplistic, Elegant, Beautiful = Smalltalk = Uniform Comprehensible Syntax.
So enjoy wasting your brain power comprehending PERL.
I'd rather be building real powerful applications in a language with Full on Lambda Block Closures.
Actually it's worked out quite nicely for me including financially with more money than you can imagine
Sure it has. How many points do you earn with your troll buddies for each post that you keep me going?
Moderating "-1, Disagree" is simple censorship. Have the guts to post your opinion.
Ironically the Slashdot quote at the bottom of the page is "The computer should be doing the hard work. That's what it's paid to do, after all. -- Larry Wall in ".
Larry is right, the computer should be doing the hard work which is a primary reason that the language syntax should be simple rather than hacker complex like Larry Wall's PERL. He indites himself and PERL!!!
What are you talking about flame baiting spazamaniac dude? I don't earn a penny from the ads here at slashdot... you're delusional dude. In fact if anything spending time on these posts today COST me money.
[META]How about when you say an obvious META comment about the prior comment is "off topic" you also mark the comment that it's in response to (eg the parent) as off topic too! Otherwise you're not being fair. This just highlights that there are so many issues of lack of fairness with the slashdot comment system that it's essentially junk and moderated posts are essentially meaningless indicators of MOB MENTALITY ONLY.[/META]
The question is more than drones vs hackers. There is a third group and that is artists. Often what the "cowboys" bring to the table is art. The invention of the web over Gopher was genius but then the Netscape boys insisted on adding pictures, then they crammed in Java and then Javascript just popped in there. Was netscape perfect? No. Any standards committee trying to enforce web standards in the mid 90s would have lost their minds or even worse succeeded. Darwin then selects the good cowboys from the bad. Now we have firefox. But companies also tend to do boring internal programming and generally won't attract good artists. In my experience the corporate world needs not cowboy programmers but cowboy managers who manage the drones. If you have drone managers managing drone workers all you get is a system that will meet the contractual obligations of the development company but will really really suck. This is what India is very good at producing; software that meets the contractual miminums. This is why they are so hung up on standards and certification.
The GP was apparently talking about PERL, which is a joke programming language in which it's impossible to write maintainable code. You're thinking of the Perl programming language, which allows untrained novices to do useful things while not preventing diligent and careful programmers from writing effective and maintainable code.
You can safely ignore the opinion of anyone who spells the latter PERL.
how to invest, a novice's guide
I like hackers, self-taught, cowboy or whatever's the name of the month who works for me. They have a tendency to get things done (not related to inbox management bs). Presented with a problem I know they'll come up with a solution, unorthodox maybe but one that works. You can always be amazed at how many different technology a good hacker can understand and use and sometime people like that are key to get a project running. Think someone who can interface between the network team, the dba's, the software people and the PMs using their own language and most of the time with more knowledge in their subject matter than them. The problem with them is that most of them are indifferent to processes and quite bad a polishing their work.
Non-hackers I need too; people with maybe a far less encompassing knowledge but usually a deeper knowledge in more specific fields; resulting in less ability to come up with original ideas; but the ability to follow through a spec and the tedium of finishing a job -as it was requested- to write decent documentation and to follow a process. With just hackers we would release revolutionary product that just don't work; without them we'd probably still be using VB6 and cgi in perl. I need people who care about the intensity of the gradient of the save button on the settings window. I need someone who can sits and update the spec sheet without trying to develop a software to update the spec sheet for him. I need someone who checks the result of the batch job. Yeah boring but seriously it's crucial.
I see the "hackers" are a special ops force; good when you need to be fast and ruthless; not good when you need to to be in line with international laws and the geneva convention.
Now please everyone note that I by no mean want to convey the message that non-hacker aren't good programmers; it's in my opinion a matter of mentality in the way they approach a job not a depiction of skills.
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.
If you're talking about Perl's intended purpose, then I guess I agree (although given enough time/money, I think you can always engineer something more robust and maintainable than a perl script). However, Perl, as a language, is an affront to anybody with a sense of design, and for no good reason. What does Perl's crazy syntax have to do with it being a "glue language"? Simple, readable scripting languages do exist.
Btw - something that's composed of several different systems and held together by a huge globs of glue, doesn't sound like a great real-world design either.
Does research generate more or less long-run ROI in the corporation than rigor? Is there a place for both approaches? Assuming you have a proficient software engineer of each type, how does the corporation maximize shareholder value with each skill set?
If he had posed those questions, and maybe troubled himself to make a passing attempt at exploring the answer space, this article might be interesting. As it is, it is a mindless hit piece. Corporations need a balance of free-running and rigorous direction. This is particularly true in the high tech sector, which is far from a done deal. This stuff is evolving at lightning pace; exploration has solid value, as does mechanism. Consider what happens when you rigidly apply best practices in our field; you wind up with a system that is heavily coupled to CORBA, RUP, EJB, MDA, SOAP, and a dozen other zombie acronyms.
The problem is not research versus rigor, it is knowing how to apply each to appropriate problems. That is supposed to be a management task, but they don't understand our field and so don't know how to let a good horse run. They also do not know how to distinguish a good horse from a gluepot, so they do not trust either. And so management tends to prefer the rigorous engineer -- not because he generates more ROI, but because they understand him better. I must cut this short as I am starting to spin off topic, but I highly recommend reading Peter Drucker's exploration of the knowledge worker to see where my point was about to wander.
Stop-Prism.org: Opt Out of Surveillance
This is just the latest line of attack on American engineers and programmers. The US created this whole software industry but we are supposed to believe that India which has produced...well nothing...is the great future of programming insight. Give me a break. Let's review that again, how many great industries have come from India? NONE. They export humans to other countries that have enough freedom to actually create things. That's it. The reason US companies don't go full speed on off-shoring to India is Indian culture. Indian culture really sucks. It kills all new ideas. If Bill Gates had grown up in India he would be in the wrong cast and therefore be cursed to be a goat hurder. That's how India works. Almost every single Indian in the US is from the same cast. Not because they are smarter but because of discrimination. The Indians in the US on H-1Bs have a slave-owner mentality. They think they deserve to be rich and not work hard. So they all want to get into management and recruit their buddies. If you are a US business and you let Indians in to run it you are a moron. They will drive the business into the ground. Look at what the ruling casts have done to India.
The reason Indians can come to the US and succeed is because its the US and not India. India has some great people but they suffer under its crappy culture. If you let enough Indians into your business they will supplant your culture with crappy Indian lazy ass culture.
So stop lecture us about how great India is. Until India can feed its starving masses "shut up." Until India can figure out how to control the growth of its population, "shut up." They are so screwed up over there that they don't have clean drinking water but they are afraid of condoms.
Stop bad mouthing the USA, Stop talking shit about the USA. If the US wasn't generous enough to allow our labor markets to be regulated by the feds to import labor, you would all be sitting in India drinking your shit water and dreaming of living in the US.
Software Architect and the parallels are about the same.
If you don't want to do build interesting software products you shouldn't be in the business because there are other ways to earn as much money without the huge time sink and stress that comes from how 9 out of 10 projects are run inefficiently with insufficient staffing. Suicidal depression, federal prison, night terrors prior to leaving the business, broken marriages, and similar things are side effects that go with it.
When you do because it's a passion, you might get lucky and be able to kick-start your career in Austin, Boston, Boulder/Denver, Portland, or Seattle but the opportunities there are limited. If you really want to grow you need to work on interesting projects with competent people who've done similar things before and there's only a good selection in the San Francisco Bay Area.
When you aren't content with room mates, $80K isn't a living wage in the Bay Area. Especially in an unstable economy (other places $25-30K in savings will pay your mortgage and even restaurant bills for six months without a pay check). Especially if you plan on reproducing and intend to send your children to a decent school.
When I bought my first 3-bedroom town-house with 600 square feet of basement shop space an attached garage for $160K within walking or cycling distance of anything I wanted in allegedly expensive Boulder CO, $80K was comfortable salary with room for retirement savings, 3 year old used car, and week long annual vacation. Property taxes never went over $1500/year. Income tax maxed out at 4.63 percent.
Properties in comparable Silicon Valley locations with less square footage and no basement are now $800K+ with $8000+ in property taxes (I'd be happy with a 2-bedroom cottage or townhouse with a garage. 3 bedroom ranch homes are still listing for $1.2-$1.4M. The same city names have some low-priced properties, but they go with neighborhoods that have murder rates eclipsing Oakland's and none of the location amenities apart from great tacquerias). Income tax is 9.55% plus a 1.1% state disability surcharge on the first $90K of income.
Even having cashed out near the peak of the market, I could be spending at least $50K a year more on mortgage + taxes to have a comparable life style to someplace purportedly expensive. Mortgage rates are higher now, and it'd probably be a jumbo so that's understating it by a lot. One of my friends from high school bought a house outside St. Louis for half what I spent on my town home so that may not be the right comparison.
As a frame of reference, $150K/year is the cut-off for San Mateo County "moderate income" housing.
This disregards minor incidentals which stem from the high sales taxes and everyone else having to cover the same expenses, like mechanics who charge $25/hour more and beers for twice the price.
That's the immediate situation.
The cost of living and salaries in the first world are over 5X developing countries. The inevitable conclusion is that our salaries and costs of living are going to drop until meeting their rising costs and salaries.
Things aren't worse today only because even with an IQ three sigmas out learning to design and build non-trivial software products takes a ten year apprenticeship with people down the hall who've done comparable scope projects before and learned from their mistakes.
There aren't enough people in developing countries who've done that.
Having travelled and worked with people from all over I don't think those guys are too different from us apart from opportunity. I know people who've learned that you can't mentor people over IM and telephone connections and have headed over seas to get employees at low wages that they can effectively grow. It's an emerging trend. Some companies are paying senior people American wages to live over-seas and build local organizations. Eventually we're going to get enough of that experience over seas to have a collision between their (low) cost of living and required salaries and ours.
I'm working towards owning a home in a low cost, low-tax country before that happens.
I have spent almost my whole life working as a software engineer (troubleshooter). Each project was already over budget and late. Each wanted something smaller or faster than what had come before. Each of my solutions were groundbreaking. I never charged as much as I could have and spent most of my money tooling up for the next project. I took responsibility for my own education and continually bought technical books and development software. I cannot remember ever having an "easy" project. Each one was demanding and stressful and most resulted in very happy clients. It took years of hard study to obtain critical mass on knowledge of hardware and software to get to the point where intuitive solutions began to happen. I devoted my life to this occupation and feel very betrayed by corporations that want their software written by the cheapest talent available. I am not into process for its own sake, but part of what I strove for over the years was to learn a wide variety of skills to make my software maintainable and robust. I know there are a lot of people like me out there, but I don't know how many are employed any more. What level of technological superiority do we aspire to have if we use mundane workers to create it. Why should people pay good money for software written by drones? It has been quite a while since I worked for a company that valued its developers enough to care about their long term viability. We have to look out for ourselves or we become obsolete in a year. Almost every aspect of software development is version oriented these days. It is hard to learn anything completely before it is replaced by the next version, and you barely get started with release software before the betas for the next version hit. How is a developer to keep up with this onslaught. The next generation will be lucky if they have more than a handful of people like me. Cookie cutter programmers seem to be taking over the world. And who's fault is that?
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.'
Clearly McAllister has not worked in a small to medium firm. I myself am a "coding cowboy" and I myself am appalled at some of the "professional" code out there. I have been working for the past year to clean up code that looks like speggetti thrown against the wall. Just take a look at the articles posted on the daily wtf (www.thedtailywtf.com) and you will see all the in-organized, un-maintainable code thats out there in the world.
You realise you're using a slightly different definition of hacking than many other people, right? There's nothing wrong with that in itself, because a lot of people have wildly varying definitions of the word. But your definition of hacking looks like "everything that's bad or ugly", and then use that to prove that hacking is bad and ugly.
Consider that quantum physics itself is something of a hack, and you might argue that the same is true of special relativity and the theory of evolution. All of them have hack value, and good hacks in particular are beautiful and elegant and work. (Although QM, definitely the hackiest of the lot, isn't really all that elegant. The process of evolution (rather than the theory) scores way high in hack value too.)
It's also not true that hackers don't design, but they do tend to be a bit more flexible in their design. More agile, less waterfall. A hacker might revel in intentionally obfuscated code, but a good hacker won't do that for a production system, but only as a challenge in itself.
So, hack all you want, but if you want to be a REAL PROGRAMMER choose the simplicity and rigorous methods of design!
To be a real programmer, you need to be flexible and pragmatic about your design.
May you hack better.
Books and related things can help creative people work their way through those times when they suffer from the equivalent of "writer's block". They can also help 'blocked' people discover that they can be creative.
If you want to hire assembly-line programmers who will faithfully implement your exact specs, you hire foreign programmers. If you want somebody to actually be creative, you hire American programmers.
You're using a site that was created entirely in glue. What does that tell you about hackers?
Perl is glue. Glue is messy. It's supposed to be messy;
Well said, my friend! I love me some Perl hacks, and often use it to whip up a quick cut at an analysis when we're not sure of the value of the data that will come out. If it looks like the ROI is there to justify it, I build a more robust implementation in a stricter language.
It's a toolbox. More tools is better.
Stop-Prism.org: Opt Out of Surveillance
I have had the dis-pleasure of having to take over several projects that were started by hackers. Most of the these hackers were very smart, and well educated, but not in software development.
In every case the code was more awful than anything I could imagine in my worse nightmare. Every rule of proper design was broken wholesale. And the hackers did not even know what they didn't know. As far as the hackers were concerned, their was nothing wrong with their code.
The reasons for this are fairly obvious. Design and structure do not come naturally. It is more natural to just sit down and start hacking away. And if something works, and you can read your own code, and understand your own reasoning, then what's the problem?
Self taught hackers practically never try to learn about structured methodology, because they don't even know what it is, and since they only work with their own code: they see no reason for it.
But in a work environment, that translates to:
If you make your code sufficiently readable, someone else will steal your job.
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
STFU u phag.
http://en.wikipedia.org/wiki/Hacker_(computing)
Now leave us be.
I'm now working in a US-based company that employs several Indian programmers. I've never worked clossely with non-US coders, and it's been eye-opening. Believe me, the US has nothing to fear from outsourced code - these guys produce shite.
And, interestingly, I don't think it's a "genetic" thing, I think it's environmental. Their code is awkward and convoluted in EXACTLY the same way that their English is awkward and convoluted.
While there are programs that are able to give training for people wanting to get a CCIE (at a very high cost of something like $20,000), the experience I have working in the networking field is that the CCIE track is virtually unattainable without significant field experience.
On the other hand, all the CCIEs I know have been working in the industry for anywhere from 4-10 years, so they've all got the experience I'm talking about.
Your statement could explain the phenomenon I've yet to encounter of the CCIE that can't configure his way out of a wet paper bag with a map and a machete.....
Hackers are those that take an axe and hack down a tree creating a mess in the process including casualties that offend the beauty of solutions.
No, hackers are the ones who made the axe in the first place. Then they built a tree saw.
Hackers are not really programmers as they are to enamored with their hacking skills.
I'm sure Eric Raymond would disagree with you. Hackers were the first real programmers and they built a lot of what you take for granted.
"We returned the General to El Salvador, or maybe Guatemala, it's difficult to tell from 10,000 feet"
I'm not sure why this is "insightful". Glued together rocks -- that is, mortared stone -- are a proven building technology. Sure, if you want a big building, steel frame is a better choice. And wood frame is cheaper for the smaller stuff. But those glued-together rocks have their advantages.
I thought the media usage of "hacker" was to describe guys like you that bleach their hair, wear woman's mascara, pierce your eye-brow, listen to emo while breaching data systems that don't belong to you, and try to hook up with Angelina Jolie and fail because you're socially awkward.
"Be prepared, son. That's my motto. Be prepared." --Joe Hallenbeck
"for some reason the business hires the drones and leaves the people with the communication skills in the dark." - by tnk1 (899206) on Monday June 29, @04:56PM (#28519629)
You know what amazes me? The fact that people like you state that coders/software engineers/programmers cannot "communicate with others" (which is hilarious, they usually seem to get the actual WORK done, that others 'write about' (where you can BANK on the fact that most of these "technical writers" cannot actually code themselves & therein lies the difference))...
Example of someone stating to myself, I cannot write correctly, here on this website (which typically is the "last resort" of the defeated in technical debates & purely subjective, especially from those minus a PHD in English)? OK:
I had a guy here the other day named "Americano" try to 'tell me how to write' & that my writing was poor, here -> http://slashdot.org/comments.pl?sid=1283193&cid=28494351 and, the funniest part was he used "To Whit", & the PROPER ENGLISH PHRASE IS "To Wit"... so, so much for THAT, eh?
(I will ask YOU the same question then, do YOU HAVE A PHD in English? If not, then who are YOU to judge what "good writing is"??)
APK
P.S.=> The REAL "bottom-line" I see, is that too many "I haven't done the job myself hands-on" mgt. types are in place in this art & science, instead of guys that have "risen thru the ranks", hands-on, doing the job programming themselves, for years-to-decades, first - before becoming mgt.! I've had 2 bosses of around 12 the past 16++ yrs. in this field that could actually code... the rest? FORGET IT...
(AND, yes, there is a BIG something "wrong" with that, in & of itself!)
I mean, hey - after all:
How can you be a TRULY EFFECTIVE leader, if you haven't done the job you ask of your troops, so to speak, yourself?
(Imo @ least? Well - A good leader doesn't ask his boys do ANYTHING he cannot or has not, done himself... As it promotes respect, & also creates another USEFUL pair of hands/eyes in coding environs (in times of deadlines, mgt. who CAN DO THE JOB can help as well in doing the actual coding task or parts of it if need be, in other words))
A manager that can & has "done the job @ hand" also promotes GOOD DECISION MAKING SKILLS ON HIS PART, because a mgt. person who has done the job, himself, cannot be easily "mis-advised" & has some actual experience in the task @ hand as well, & can provide not only useful experienced input (but also can provide working code, IF NEED BE!)... apk
400K doesn't buy a studio apartment in a decent location. The least I've seen available for ownership is a one-bedroom apartment for $600K plus HOA fees pushing $400 a month.
In a location with just a few jobs in the Pacific Northwest $400K almost gets you five year old 1500 square foot town house with attached 2-car garage and $200 a month HOA fees.