Forgot your password?
typodupeerror
Education Programming

The Case For the Blue Collar Coder 233

Posted by timothy
from the cue-the-call-for-unionization dept.
theodp writes "U.S. tech talent shortage discussions tend to focus on getting more young people to go to college to become CS grads. Nothing wrong with that, writes Anil Dash, but let's not forget about education which teaches mid-level programming as a skilled trade, suitable for apprenticeship and advancement in a way that parallels traditional trade skills like HVAC or welding. Dash encourages less of a focus on 'the next Zuckerberg' in favor of encouraging solid middle-class tech jobs that are primarily focused on creating and maintaining tech infrastructure in non-tech companies. Dash also suggests 'changing the conversation about recruiting technologists from the existing narrow priesthood of highly-skilled experts constantly chasing new technologies to productive workers getting the most out of widely-deployed platforms and frameworks.'"
This discussion has been archived. No new comments can be posted.

The Case For the Blue Collar Coder

Comments Filter:
  • by concealment (2447304) on Monday October 08, 2012 @08:20AM (#41583627) Homepage Journal

    This makes sense to me. Most of the best programmers I've known are guys who otherwise would be installing air conditioners, fixing big trucks or re-wiring buildings.

    Coding is not a profession. It's a skill, which is a part of a series of job descriptions and career paths, but in itself it's a form of knowledge more like what an electrician has than what professionals like architects, doctors, lawyers and assassins must know.

    Apprenticeship is an excellent idea since most of the "best practices" can't be taught at a school, and apprenticeship allows people with applied skills to shine, instead of schools where those with excellent detail memorization shine. Most of the best programmers I know either never went to school for it, or didn't do all that well at school.

    Bring back the hacker aesthetic. Professions are for those who want to super-specialize and master specific high-level skills. Hacking is something anyone with the gumption and dedication can do. As the world expands into mobile devices, ordinary people are writing code every day.

    That being said, CS needs to find a new career type that might belong to professions. I suggest "product architect" (like Steve Jobs) and "total systems integrators" (like what the Google guys do, interoperability) for those who will need college degrees or equivalent and a professional mindset.

  • by Anonymous Coward on Monday October 08, 2012 @08:21AM (#41583633)

    It's been a blue collar job for most of us ever since I've been coding professionally (since about 2000).

  • by afidel (530433) on Monday October 08, 2012 @08:22AM (#41583643)

    Why would we want more un/under educated programmers? Programming is applied Math and very few high school students are going to be equipped to do it well.

  • by cnettel (836611) on Monday October 08, 2012 @08:31AM (#41583711)

    Programming, in this sense, is applied method calling into your supporting libraries and framework. It has more similarities to designing a nice-looking Word template or using Excel in not overly creative ways. If a programmer of this kind ends up designing her own algorithms or even worse a full class hierarchy, it will surely end up on thedayilywtf. The thing is, they should not need to. You don't expect a household electrician to rewire stuff with a new transformer design just because it seemed fun to do for one specific customer and maybe 10% more efficient. You do standard stuff in standard ways. It's not trivial, but it's all done within well-defined bounds.

    I would never want this kind of a job, but if you consider how many things that are still done manually in one way or another by people having GFLOPS on their desktops, it's also obvious that cheaper and more plentiful access to people able to just crank out code to do stuff has a tremendous value.

  • by eldavojohn (898314) * <eldavojohnNO@SPAMgmail.com> on Monday October 08, 2012 @08:34AM (#41583723) Journal

    This makes sense to me. Most of the best programmers I've known are guys who otherwise would be installing air conditioners, fixing big trucks or re-wiring buildings.

    There is a substantial amount of math and logic that should be used as a foundation for programming. I know the coworkers that would otherwise be installing air conditioners when I ask people if they thing we could use a more functional-type language for a new project instead of an object oriented language. You're usually met with blank stares.

    Coding is not a profession. It's a skill

    This could be said about anything that people pay you to do. Anything.

    which is a part of a series of job descriptions and career paths, but in itself it's a form of knowledge more like what an electrician has than what professionals like architects, doctors, lawyers and assassins must know.

    What? Look, I think you're trying to discuss what you feel is the percentage between creativity and regurgitation in each of the above subjects. And I will tell you right now that all those fields are diverse with jobs that require more than one of the other. If you want to say programming requires more creativity and that's something that cannot be taught then at least give me a compelling argument for that.

    Bring back the hacker aesthetic. Professions are for those who want to super-specialize and master specific high-level skills. Hacking is something anyone with the gumption and dedication can do. As the world expands into mobile devices, ordinary people are writing code every day.

    If only you could see the spaghetti code I've seen. Ordinary people are free to write code, in fact I love that and I hope that continues to expand. But when you're talking about commercial grade software being written for a company that is being sold to people for real money ... that's when I start to cringe that "good enough to tinker with in my home means good enough to be deployed to millions of personal devices across the world."

    That being said, CS needs to find a new career type that might belong to professions. I suggest "product architect" (like Steve Jobs) and "total systems integrators" (like what the Google guys do, interoperability) for those who will need college degrees or equivalent and a professional mindset.

    Personally I value my liberal arts college degree and I think my employer does as well. I can communicate better with customers and I now understand much more of the world now than I did in high school (when I thought I knew everything).

    You're free to apply to jobs but when you're going up against people who have rigorously studied mathematics, logic, philosophy, English, etc you have to be ready to show an employer what you're made of before your application is automatically rejected by some routine resume sorting algorithm. It's not that those algorithms are correct, it's just that employers are too lazy to spend two hours with every single person on the planet trying to find the right applicant. Instead, if I didn't go to college, I'd buy a virtual private server and be going to town on developing things that look good so I can show them off. Honestly, I think it was easier, more fun and more eye-opening (yet way more expensive) for me to go to a liberal arts college. It's your life, so do what you want. You can tell the recruiters they're doing it wrong but then again it's their job and that's their decision. This sounds like some very talented hackers venting about the problems with entering into the workforce.

  • by mikael_j (106439) on Monday October 08, 2012 @08:38AM (#41583753)

    And I've seen guys with Master's degrees in CS and systems science using floats for currency calculations. I've even been the one to clean up after them, despite the fact that I dropped out of college and by the standards of some people should be the one using hash tables where I should be using lists, floats where I should be using decimals, shouldn't know what a modulo operator is, shouldn't have a clue when it comes to how the quicksort algorithm works, should never even have heard of big O notation...

    Just as you shouldn't assume that everyone without a degree is completely lacking in skills you also shouldn't assume that a degree somehow makes someone competent, there are hordes of developers out there who took CS in college in the late 90's because they thought "computers = big money" and somehow managed to graduate. Hell, looking at a lot of the guys I went to HS with who went on to major in CS in college I suspect most of those just thought "I like computer games so why not study something with computer in its name?", I even had a few people like that as classmates in college (gotta love being the only one in a four man team actually writing code, the others all volunteered to write the documentation)...

    And no, I don't think I'm a "rock star coder", I'd consider my skills as a developer to be pretty average. A decent enough CRUD and business coder who writes some slightly more interesting code in his free time.

  • by Dcnjoe60 (682885) on Monday October 08, 2012 @08:55AM (#41583867)

    Another thing lacking in the traditional CS route is understanding of the business one is coding for. I managed projects for a large taxing authority. We found it much more productive to take existing employees who understood the various tax procedures and workflows in the department and train them to program versus hiring CS graduates and train them in tax policy and procedures. People from the "floor" have a totally different insight than management and CS graduates and their insight leads to much more efficient ways of doing things. Of course, the people we pulled from the floor did have an aptitude for programming and desingFor the record, we also hired some CS graduates, depending on specific skill sets needed.

    Business IT shops would do much better to consider apprenticeship programs. What is taught in most CS programs did not transfer well into what we needed most. My recommendation to students wanting to pursue a career in IT would be to get a business administration degree with various CS classes as electives (or even minor in CS). That is, unless, you want to work for the big tech companies, in which case, I would flip that and go CS with a minor in business.

    At least that is how it works in the Midwest of the US.

  • by aNonnyMouseCowered (2693969) on Monday October 08, 2012 @09:19AM (#41584117)

    You mean the next undergrad to drop out of college thinking he can change the world with one hot idea? Education would be wasted on the next Zuckerberg. Just introduce him to some venture capitlaist with money to burn and let the wheel of fortune spin.

  • by concealment (2447304) on Monday October 08, 2012 @09:26AM (#41584193) Homepage Journal

    I enjoy your comments on the site, so you'll get more than the standard drive-by response from me.

    There is a substantial amount of math and logic that should be used as a foundation for programming. I know the coworkers that would otherwise be installing air conditioners when I ask people if they thing we could use a more functional-type language for a new project instead of an object oriented language.

    First, I'd like to make it clear that I am not scornful of these fields. Air-conditioning installing, building wiring, etc. are not devoid of creativity and intelligence requirements.

    In fact, like programming, there's a huge gulf between doing it and doing it right that is determined by degree of intelligence and creativity.

    You may find that intelligence level is the difference between the blank starers and the thinkers, if you look back over the years.

    Look, I think you're trying to discuss what you feel is the percentage between creativity and regurgitation in each of the above subjects. And I will tell you right now that all those fields are diverse with jobs that require more than one of the other. If you want to say programming requires more creativity and that's something that cannot be taught then at least give me a compelling argument for that.

    I'm not communicating effectively here. I'm not trying to make this a comparison of creativity levels, or regurgitation, except to say that I think education over-emphasizes regurgitation, which is not the skill that differentiates an excellent programmer from a hum-drum one. This was a statement I made in support of the apprenticeship idea.

    Professionals are different from all other careers in two crucial ways: first, they must be able to handle a huge amount of detail and balance those details against one another; second, they are responsible for greater impact than most others, and as a result need to have critical thinking, leadership and human perception skills that are not normally required.

    I'm thinking of doctors, lawyers, CEOs, architects and probably a few other groups here. I don't know if creativity is what is needed; most jobs call for inventiveness, or the ability to apply different forms with a bit of fudging so that new uses arise. But so does life itself.

    Are we shuffling too many people into these professions? Yes, unquestionably so, just like we're sending too many people to college. This doesn't mean we should forget what these professions actually require, especially since most who attempt them fail.

    If only you could see the spaghetti code I've seen. Ordinary people are free to write code, in fact I love that and I hope that continues to expand. But when you're talking about commercial grade software being written for a company that is being sold to people for real money ... that's when I start to cringe that "good enough to tinker with in my home means good enough to be deployed to millions of personal devices across the world."

    Why do you assume I haven't seen similar forms of spaghetti code? The first workplace skill I mastered was Lamaze breathing so I could avoid shouting expletives when looking over other people's projects. However, I'd be lying if I said these people were not well-credentialed. Some came from what are considered good schools and had good resumes, and make more money than just about anyone else.

    Ordinary people are going to be writing more code. For most coding, what is required isn't a mystery. In fact, it's well known and well publicized, so that cut-paste-and-modify programming will continue to be the norm. If you haven't looked at the average web developer these days, you might take a peek, and you may see where programming is going. Mastery of libraries, frameworks and commonly needed syntactical devices has replaced the roll-your-own coder.

    You're free to apply to jobs but when you're going up agains

  • by BVis (267028) on Monday October 08, 2012 @09:46AM (#41584413)

    Training existing employees in needed skills represents a conscious desire to improve the skill set of your existing employees, so you gain ability without the expense and hassle of finding someone new to hire. It treats your employees like assets to be improved, not liabilities to be minimized.

    Unfortunately, ISTM that most employers would rather rip off an arm than provide training for their employees. Their logic is that helping employees to expand their skill sets only leads to freshly trained employees that quickly leave because they can make more money/improve their working conditions/get away from a horrible manager by going to another employer. The problem is, while it's short-sighted, they're right. Keeping employees happy is expensive, complicated and time-consuming. Lots of times, it requires a change in the corporate culture. It's hard to go from treating your employees like liabilities and cost centers to treating them like assets. It's *very* hard to convince employees that the culture has genuinely changed; they'll assume it's just another case of management saying all the right things while not actually changing anything of substance, which they have more than likely done before.

    In an ideal world, companies that treated their people like shit would quickly find themselves without employees, having had said employees leave to go to another employer that treats them like human beings. (The free market in action, no?) The trouble is that, in practice, the employee is at a severe disadvantage when it comes to how their employer treats them. Their employer basically controls their entire lives (literally, in the case of employer-provided health insurance). Wage slavery is a real thing, and the norm. Most companies treat their employees just well enough to keep them from leaving immediately, which results in employees doing just enough work to not get fired. Management does not want to provide the employee with more ammunition in the battle by making them more marketable as employees; they like them right where they are. Yeahh, I'm going to need you to go ahead and come in on Saturday, mmkay?

  • Uh, shortage? (Score:5, Insightful)

    by rsilvergun (571051) on Monday October 08, 2012 @09:48AM (#41584435)
    There's no shortage of tech workers, which is why you can't get college bound kids interested. Off shoring + H1B Visas has seen to that.

    I'm pretty skeptical of this entire story. In my experience whenever anyone talks about retraining blue collar workers for tech work it's just a desperate attempt to deal with the fact that robots and outsourcing have made these people obsolete, and we want to pretend there's something for them all to do besides starve...
  • by Fished (574624) <amphigoryNO@SPAMgmail.com> on Monday October 08, 2012 @09:50AM (#41584453)
    I actually regard the fact that someone could say this as a great example of why computer science education is broken. The reality is that there's a tremendous amount of REALLY BAD code out there, written by C.S. Majors and non-C.S. Majors alike. I'm minded of one case where a self-taught perl programmer in a company I worked for absolutely could not figure out why his code to convert a few megabytes of data was taking days to run. Turned out he was appending to a string in order to add a few bytes to it, and every time he did it perl was copying the string to a new location. Simply by "pre-allocating" the string we cut the run time down to a couple of hours. This would have been obvious to him if he'd ever coded in C, or taken a data structures class. But he hadn't. Things like data structures, algorithms, and most importantly security are hard. They can't be taught in a trade school, because people in trade schools lack the necessary background. In the case above, I tried to explain to the guy the whole concept of "big O", and quickly discovered that he didn't know what a factorial was, nor a logarithm, and was a bit sketchy on the concept of geometric expansion. Please don't dump more half-trained programmers on us. We don't need them, and those of us who do understand information theory (with or without degrees) will spend way too much time fixing their errors. I'm not saying everyone needs to be a CS major (my B.S. is in Philosophy, my masters is in Theology, and my Ph.D. is in New Testament.) I AM saying that there should be a requirement to learn some basic skill before you're allowed to write code for a living.
  • by luis_a_espinal (1810296) on Monday October 08, 2012 @10:14AM (#41584737) Homepage

    That's all well and good until you find out they've been using floating point for currency calculations, and they can't figure out why their bubble sorts are so slow.

    I've worked with programmers with associates degrees. Some bad; some good. I'm not entirely against them, but I would not want an entire team made up of them. They have huge blind spots that CS grads don't have.

    You see that also with people with BS degrees, and I know about those (and a lot more) when I got my AA degree. Truth to be told, I knew more about programming and CS when I left community college than my sophomore/junior peers when I transferred to a 4-year university... and I met quite a few senior students and even grad students who couldn't picture an array of pointers to structures with function pointers as fields (not that you want to do that every day, but c'mon a senior CS student or grad student should have no problem visualizing that.)

    I got a BS in CS, went to grad school and now I'm trying to go to grad school to switch into a more hardware oriented degree. I have 17+ years working on this, and I can say with great confidence that most "enterprise" programming tasks do not require a BS-level education in computer science.

    More importantly, a good community college can provide, via a AS degree, all the tools needed to do work : systems analysis and design, structured and object-oriented programming, all that mixed with an intro to the basics of algorithm analysis (without the proving part), hands-on RDBMS, basic network/sysadmin skills and other fundamental skills like using/setting source control and bug tracking systems and technical writing.

    You are right when you say you don't want to work with a group made solely of AA/AS graduates. I know; I started my career with a AA only, and I know for a fact that such a group needs more senior members to give technical direction.

    But, for IT and the typical enterprise programming, we really do not need to know about the pumping lemma, prove the equivalence of turing machines to lambda calculus or the differences between micro kernel and monolitic kernels or proving some something on the structure of bizantine problems.

    Blame it on the dot-com that we had a push for MOAR!!!(10+1)! 4-year degrees for web page design, which in turn converted most CS 4-year programs into Java/.NET vocational schools (where a person can graduate w/o even understanding what a pointer or a segfault is.)

    The correct thing back then would have been to promote more community-college level vocational education as 2-3 year AS/AAS degrees. It would have been the best for the career, the nation and for all the students involved.

    I love CS, I love my degree, I love my grad education, and God willing, I will get my Ph.D, and I love my line of work. But hell that I will ever propose that a BS degree is the minimum required to work on IT/enterprise programming.

    I pray to ${DEITY} that this will become a firm step in the right direction.

  • by The Snowman (116231) on Monday October 08, 2012 @10:26AM (#41584881) Homepage

    into some enterprise software where bubble sort is fine

    For fuck's sake, a business dataset is never going to be so small that "bubble sort is fine".

    You see, people? Do you see? This is why we fucking need college.

    The real issue here is talking about the sorting method to begin with. Coding is like playing with Legos. You plug in the "sorting brick" and forget about it. Whatever library you are using should have a properly optimized sorting algorithm with any necessary speed hacks or whatever else is required. Such a library should be well-tested and proven.

    Unless you're a Ph.D. candidate looking into sorting highly specialized data sets such as Google's search index, you have no business implementing a search algorithm. You need to be using whatever standard implementation is defined by the language or framework libraries.

    At this point in the evolution of Computer Science, "sorting" is a problem that is solved. People smarter than either of us have proven that O(n log n) is the fastest it gets, and we have multiple algorithms to do it. Other smart people have plugged these algorithms into standard libraries and frameworks. People dumber than us decide to reinvent the wheel. /facepalm.

  • by 0100010001010011 (652467) on Monday October 08, 2012 @10:30AM (#41584955)

    Fixed point is very much a lost art. There should be an entire class dedicated to it and anyone in ME or EE that wants to do robotics should be forced to take it. We have to train every single CS, ME and EE that comes in how to do it in Simulink (We use auto code generation and fixed point everything before production).

    I do embedded controls and floating points are 'expensive' with most of the chips we use. They're still not that common. But people don't understand how much faster they can be than floats when your stuff doesn't have an FPU.

    I picked up an Arduino and ran some floating point vs fixed point benchmarks:

    Each of these calculations was run 500,000 times.
    d=a+b; e=c+b-a;
    f=a+b+c; g=a*b*c;

    Floating point:
    a=1.1298373 b=2.3249869 c=3.8923873
    d=3.4548244 e=5.0875368 f=7.3472118 g=10.22
    Execution Time: **14528 ms**

    Int:
    Integer Representations:
    a=36 b=74 c=124
    d=110 e=162 f=234 g=2656
    Floating Numbers:
    a=1.1250000 b=2.3125000 c=3.8750000
    d=3.4375000 e=5.0625000 f=7.3125000 g=0.0625000
    Execution Time: **348 ms**

    Long Int:
    Long Representations:
    a=36 b=74 c=124
    d=110 e=162 f=234 g=330336
    Floating Numbers:
    a=1.1250 b=2.3125 c=3.8750
    d=3.4375 e=5.0625 f=7.3125 g=10.0625000
    Execution Time: **1951 ms**

    Now when you're using a 16 Mhz controller to make das blinken lights it doesn't matter. But when you start getting into autonomous control and trying to do real time processing of a few dozen sensors to make sure your flying robot doesn't smash into the wall it does matter.

  • by dkleinsc (563838) on Monday October 08, 2012 @10:47AM (#41585193) Homepage

    What he really means, in a nutshell: "Programmers are paid too much."

  • It doesn't matter. (Score:5, Insightful)

    by Anonymous Coward on Monday October 08, 2012 @12:21PM (#41586503)

    This kind of misunderstanding isn't what is causing the major pains in the industry.

    Changing the educational emphasis won't address the major pains.

    The major pains are caused by:

    1) The perception that one cannot build a career on software development, because agism forces people to change to a completely different career sometime after they turn 35. True or not, this scares people away from the field, as it should, because if it is true then anyone talented/intelligent enough to do software development is talented/intelligent enough to do something else instead.

    2) The perception that software development pays less than other fields that require comparable talent/intellegence. If true, it makes perfect sense that people who know they have what it takes would turn their noses up at a low-paying waste of their talents.

    3) The perception that one is perpetually at risk for having their job outsourced to cheap foreign labor. Nobody likes working jobs where they don't know if they will still be employed the next day (and the deciding factor isn't even dependent on their performance).

    4) The perception that developers are expected to overwork, sacrificing their personal lives for a company that won't even pay them overtime wages for it. Work-life balance is important, and people will shy away from careers that deprive them of it.

    Address these perceptions, and address the issues that cause these perceptions, and you will see people naturally choosing to do software development again.

    Refuse, and employers will face a lackluster market populated mostly by people with social/professional problems (or timezone, native language, and cultural acclimation problems).

"Card readers? We don't need no stinking card readers." -- Peter da Silva (at the National Academy of Sciencies, 1965, in a particularly vivid fantasy)

Working...