The Case For the Blue Collar Coder
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 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.
It's been a blue collar job for most of us ever since I've been coding professionally (since about 2000).
This, this, this, this.... 100%. Stop talking about it and make HR Depts do it. For most business application development, you DO NOT need a CS degree. Generally, you're not the application designer, you're just working on bits.
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.
There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
BTW The closest my school had to Computer Science was a couple of Commodore Pets and a maths teacher who thought all that was involved with CS was logic. Ah well where there's a geek there's a way :)
Build a Man a Fire, and He'll Be Warm for a Day. Set a Man on Fire, and He'll Be Warm for the Rest of His Life.
I have been arguing this for quite a while, there should be more apprentices and fewer university graduates with insurmountable debt, however this is not going to happen given the labour regulations, tax incentives, even inflation. All of these prevent jobs from appearing. A businessman doesn't need an incentive to hire people, his incentive is to make more money, it exists already. What he needs is not to have incentives to do things that are not actually useful to him. A business could have a bunch of apprentices, if it was possible to pay them a very low wage. As things stand (never mind the inflation, which kills savings and jobs), the labour law makes it illegal to hire people below minimum wage while still allowing to have students as 'apprentices' who have to work for free. All this does is incentivizes the kids to go to higher education, where they don't actually need to, while working for free as apprentices, while getting deeper and deeper into debt. Instead the kids must be able to skip school entirely and learn the trade at work making a little bit of money, that would give them an incentive to show up and do the work, while not getting into debt and learning the skills. This is something that businesses have always done before governments screwed this up.
MY OTHER COMMENTS
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.
My work here is dung.
Why would we want more un/under educated programmers?
Because there is a lot of work that needs to be done that doesn't require a degree in computer science and people with those degrees tend to be expensive. You don't want under educated people but there is a cost to having over-educated people as well.
Programming is applied Math and very few high school students are going to be equipped to do it well.
Computer science is math whereas programming can be a bit more abstract than that. Programs are a set of instructions to a machine and sufficiently abstracted it really doesn't require deep knowledge of math for someone to do useful work. While ultimately any computer program can be reduced to mathematical equations, the actual programming often really isn't math from a practical standpoint. To use the simplest possible example, I don't need to know any mathematics to write "hello world". Up to a certain level, being able to instruct a machine requires little/no specialized training. Think of it a bit like saying that an electrician putting some wires in your house should require a bachelors degree in electrical engineering - the extra training would be pointless almost all the time. Lots of useful work can be done by those with less formal training.
In fact it's to our benefit to write tools to make simpler problems solvable by more people and free up those who are more highly trained working on more difficult problems. That said, there does come a level of sophistication where you need someone with more understanding of the underlying concepts. Just like a nurse can help you to a point but once the problem gets sufficiently complicated you need a doctor who has a deeper understanding of what is going on.
Sure, this would be great if programs required no math, were short, single threaded, didn't require complex algorithms, and didn't require interfacing to other things... but that isn't how programming works in the real world. If your design can be done by someone with the education levels or mental faculties of a welder, it can be done by outsourced talent more cheaply anyways.
What we need is more specialized, difficult, and deep CS programs, not programs that people can sleep through and come out of with little technical knowledge beyond Java application development.
while(1) attack(People.Sandy);
Why should someone pickup coding as a trade? They'd be on permanent unemployment due to the infestation of H1-Bs.
In all my years of programming, the most math I've ever used was some linear algebra for a custom UI I did and maybe you could argue some discrete math for a database query I did.
Never needed calculus - ever. My philosophy class came in more handy.
But saying programming is applied math is a stretch in business environments.
They've had that in Germany since the 1960's.
http://de.wikipedia.org/wiki/Mathematisch-Technischer_Assistent
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.
Wait, no more bleeding edge hacking? What in the world is left for the sales drones to do?
Nae king! Nae laird! Nae yurrupiean pressedent! We willna be fooled again!
IT / tech needs apprenticeship not years of college with big skills gaps.
And the tech schools get dragged down by having to be part of the college systems and some of the college time table.
Because blue collar jobs are looking so great for Americans right now.
Simple maintenance and utility coding is usually done by what we used to call Junior Programmers; haven't seen any around in a while so I don't know what they're called these days. Usually had a associates degree, did sloppy work, and ended up costing more than someone who know what they were doing. But their salary was less so management though they were getting a great deal.
There is to much put on degrees and the name of school over real job experience and NON degree classes.
There are lots of people with degrees and big skills gaps and lot's people who have real skills but no degree or a tech school degree.
I was a hard core cross-platform, client/server C/C++ developer for over a decade. Basically, I wrote code for every platform except VAX. Before that, I wrote code for an extremely specific embedded space craft system and after that, I became a systems architect, software architect and enterprise architect.
Writing code in the real world is very different from learning to code in the class room. For small, trivial projects, like 90% of web sites, a community college coding trained person can be re-trained to be useful and productive. I teach at a local "commuter university" ... that feels more like a community college to me. The vast majority of students are confused by anything that is not memorization, but a few are brilliant and could easily compete at Stanford, MIT, GA-Tech, and similar tech-centric schools. These are the students that I try to help.
If the others don't switch to different majors, they will be flunked out after 2 yrs.
The lack of talent for software isn't really true, but talent wants to be paid better than average salaries and they want better environments.
I stopped coding because coding was only $75/hr (about $150K/yr) and I could earn $200+K/yr as an "architect." Wouldn't you switch too?
I also stopped coding because the schedules were always too tight - usually completely unrealistic for the tasks and I was tired of working 80+ hrs per week. .... only an idiot would remain as a coder given those choices.
As an architect, my work week became predictable - usually 40-45 hrs/wk. So, I'm working fewer total hours, more predictable hours, I have a greater input to system design and outcomes, and my true hourly wage $/hr is much, much higher
Coding is entry level for most people. Average people will eventually see their positions replaced by younger, cheaper entry level coders. Moving up and out of coding becomes necessary if you want a longer career in software or computer technology. There is always room for truly talented software people ... the top 5-10%. Many of those people, like me moved on to have more impact, more control and a much better lifestyle.
I miss coding, but I don't miss all the other aspects. As a coder, anything I wrote ... anywhere became the property of the company according to the employment contract. As an architect, that wasn't included in the contract. My hobby coding was mine. Another reason to leave coding.
I forgot to meantion, I went free-lance as an architect and bumped my pay plus I get 3+ months off a year. Usually I travel.
So, if you want "coding talent", the environment needs to change to be much more flexible, greater control over work schedules and time off.
Perhaps I've just been lucky. Perhaps my "talent" lies in being an architect, not with software development?
Perhaps I'm just a troll here pointing out how great it can be after leaving the coding daily grind.
One last thing - certain very popular languages have completely destroyed the software development as an art progression.
* Java - 90% of these developers are clueless. They really believe that the OS and physical machine don't matter. Idiots.
* Php - I learned to code by reading a book group. People that only learned php have become the destroyers of solid software development. The entry barrier became too low so that almost any idiot could get something working. There's a big difference between working, and working well AND securely.
I don't want to say that all php or all java programmers are idiots. There are some true experts and arteeeeests using those languages. It is the masses who program in those languages that are a waste and should be flipping burgers somewhere for the safety of the world.
I did something like that 8 years ago: In Switzerland there are 3-4 difference apprenticeships for IT workers (hardware, support, network, developer).
Takes you 4 years, you learn the basics of algorithms (sorting, mostly) and solving many real world problems in practice and theory. This does not result in world class programmers you find at the obvious big IT companies, but it gives the banks etc. what they need.
Plus, it offers a clear path for those who want to study later on (what I did).
Here you'll find the website (german/french only, sorry, also google translate does not work with its JS)
If it's anything like the job market in Sweden they are most likely rejecting potential employees with four-year degrees because they lacked "core skills" in some in-house app which they helpfully enough made sure to first train a bunch of "consultants" somewhere else in (actually ran into this one once, the guy handling the recruiting didn't seem to happy about it but implied someone else had made the decision and he was honest with me about it, his bosses had paid to have Indian "experts" trained on their in-house software so they could pretend like they had to offshore their coding jobs (or rather, "import" Indians long-term) to get the required skills).
The employers here in Sweden are constantly screaming about the lack of qualified developers yet its not unusual to see junior web dev positions advertised as clearly only for people with at least a MSc in CS and a couple of years of industry experience. That's like demanding all your janitors have degrees in Architecture or Building Services Engineering...
degrees take to long and can cut out people who are not college material. But can do the job / handle Community Colleges and tech schools as they are a better fit for people like that and are have more hands on learning.
Also degrees are a poor fit for continuing education in the IT field.
Also there is a lot fluff and filler in a degree and it can be cut down to maybe 2-3 years or better yet for some parts of IT a mixed 1-2-3 years of class room and on the job apprenticeship.
"U.S. tech talent shortage discussions tend to focus on getting more young people to go to college to become CS grads"
THERE IS NO TECH TALENT SHORTAGE. What there is, is disinformation about what one needs to really
know to really program. Plenty of unemployed and students out there who have figured this out.
But they are blocked out of the market by both employers, employment agencies and state unemployment offices
who don't have a CLUE as to the nature of the skills needed and have created a ridiculous artificial set
of evaluative criteria.
In addition, there are brilliant programmers out there with no degrees or associate's degrees or liberal arts degrees.
Also, you do NOT need calculus to program or be a software engineer.
You do NOT need Dykstra.
You do NOT need to know how to write a compiler.
There is no "Blue Collar".... there are competent skilled programmers, reasonably skilled ones, screw-ups, and Ivy League graduates with big degrees who would not last a 10th of a second in real world programming. I know, I've worked with all of them.
There is one key JOB REQUIREMENT in this field. The ability to deal with the unknown, to learn and to adjust. Period.
Reading and communication skills are paramount too. Above all else.
From a retired Software Engineer of 32 years experience
The problem with looking at coding this way is too many people will fail. When you're looking for a vocation/apprenticeship the last thing you want is something risky.
It's also way too volatile. Training to be a "microsoft .net programmer" is insane. You're whole profession could get flushed down the toilet instantly.
All that education is necessary to constantly retrain yourself.
What I mean: the article says "let's not forget that we can do this, too!"
Can we? I've... never heard of anything like this. Which annoys me, because I'd really like to do it. I want to learn coding, but I am not a self-motivated hacker stereotype. I need a project given to me, and if I'm operating without guidance, there is a ceiling on the types of problems I can solve in a timely fashion. I'm not stupid, but I'm not brilliant either, or at least I haven't been called that since high school, (which I dropped out of) and generally programming is considered something only a supergenius should be allowed to do, especially by programmers.
I know this isn't true, as I've taken a programming course once at a community college and did well and enjoyed myself. But taking a course means I get to do a bunch of stuff that I never use because I can't find work related to it, if at all, and so I forget it. An apprenticeship is the only way I can think of that would supply me with steady work to cement the skills in my head. As far as I know, apprenticeships do not exist, because those who would be masters usually believe in the old-school cowboy hacker DIY-elitism. The most help they'll offer is "here's a book about a language you might be able to understand. Get to work, you pleb."
What work? I have no idea what I want to code! Just give me something.
Yep, what this country needs is to rein in the salaries of all those techies.
It's uncomfortable enough to the upper classes that "these people" think they are worth paying at all.
If the poor (and yes, that includes anyone who works for a living) would just learn their place things would go so much more smoothly.
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.
What happened to those who finished the apprenticeships? Or were there never many to begin with?
In the small country south of Germany, I know about 30 people who did an apprenticeship in IT and now work for software companies, banks, insurance companies - you name it - along with their fellow coworkers who may or may not have a degree. A success IMHO.
...now that IT is a firmly established sector of the economy lead by an elite, we should encourage new tech workers to just be satisfied being life-long, middling employees of that elite.
The modern American dream: Working for someone else your whole life. Be happy you have "job security" and "benefits," peon.
Liberty in your lifetime
I enjoy your comments on the site, so you'll get more than the standard drive-by response from me.
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.
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.
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.
In the US we have a 4 tier training regime.
1) you learn it as you go make lots of mistakes and hopefully are around someone who is any good to help guide you a bit. Then study at night and try to get your 4 year.
2) you goto a 2 year college prep school then do 'ok' out in the real world and hopefully are around someone who is any good to help guide you a bit. Then study at night and try to get your 4 year.
3) you goto a 4+ year college and then hopefully are around someone who is any good to help guide you a bit.
4) all the above end up with OTJ training anyway and you better take it or you will be out by you are 40
You can succeed as 1 and 2. There are many out there. Some of the most successful people in our business never finished 3. However, 1 and 2 are at a disadvantage from the HR filter sort POV. You are missing a degree. HR gets 400+ resumes for every position open they will use many filters.
Apprenticeship is an excellent idea. In fact we used to do this. Right up until the mid 90s. Then suddenly everyone had to know everything after step 2. I was lucky to have a very good guy help turn me into a decent programmer.
Some shops will not even look at you unless you have a masters degree or better. Instead of training someone to do things now we just drop people in and expect them 'to hit the ground running'. Which makes it even worse as the very people who should be helping train better people are not able to as there are NO junior people. So they do not get the exp of training. Which means you can not even home grow people even if you wanted to.
Part of the issue is we want masters/doctorate level people with 15+ years exp and pay entry level wages. We need to be realistic.
There is no shortage. There is only a shortage of qualified people willing to work for substantially below market value wages.
Which leads to the contractos I have to deal with. They have no idea how anything actually works, just the knowhow of which button to press when in some program. If anything breaks they are lost, firing up wireshark and watching packets on the wire is totally beyond them. They would not even know what to look for.
Beware anyone who calls your profession a "priesthood", because he operates under the assumption that he is entitled to more than you, is either jealous or contemptuous of your market salary and wants to put you in your place. For whatever reason our culture regards doctors, lawyers, stockbrokers, and CEOs as deserving the benefits of scarcity, but it is a huge problem when you can't you hire a computer nerd for less than six figures. If you aren't an extrovert, you don't deserve to be on top of the status hierarchy.
We already have vocational technology education, but it's widely regarded as a joke. Putting it in high school isn't going to change that. And if you have the knack for it, learning programming or learning computer maintenance is easy. After all, every time the subject of college degrees come up, there are always people very adamant that they didn't need one, and that "the best people I know didn't go to college". So if it is unnecessary, why are they arguing for "blue collar" programmers? These people argue "nature" in one breath and then "nurture" in the next. Dash is actually saying that the self-educated or non-degreed don't deserve to be considered "white collar" professionals.
Dash also makes the mistake of conflating programming with "IT", something the Slashdot peanut gallery is also apt to do. I'll leave that stupidity for a different flame war.
I can only tell you that I have worked for a decade in the IT as developer, done Websites and -apps (Gaming, local business, intranet, online calculators for the construction industry), Desktop software (Controlling, Finance), any flavor of SQL (My, Ms, PostgreSQL, Oracle), javascript + whole library shebang, Unix/Linux/*BSD/Windows, much, much more and got certified "application developer" after that one decade by the chamber of commerce in an external exam.
Now that I am certified I went to a few job interviews and demanded 1.200 EUR; after taxes. My demand was being honored with over-the-top raised eyebrows, almost accompanied with hysterical laughter in the 5th biggest, one of the richest and most important cities of Germany (Frankfurt am Main).
I rather go do night shifts at McDonalds or Burgerking than signing a contract for 40 hours/week and do 60 hours/week with tight deadlines.
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...
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
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.
"He who would learn astronomy, and other recondite arts, let him go elsewhere. " -- John Calvin, commenting on Genesis 1
> encourages less of a focus on 'the next Zuckerberg'
That guy was a mere puppet face for the Sanhedrin, when constructing the "Tesco Value NSA" as Facebook is commonly called here. Essentially Facebook collects all the world's human intel for Unit 8200, which the goyim and the ishmaelite willingly hand over for free - what's more, the silly goyim even pay fortunes to own shares of the very instrument that trojans them! Should be called Goldberg, not Zuckerberg, although the deal is really sweet. Who needs nukes, airstrikes, Mossad and Entebbe raids to force one's way any more, when it is possible to read and influence the mind of the entire world over the net?
Ingenious, one must admit! However, Mr. Zucker had little to do with the grand plan, he was simply a public face who looked like a young ancient greek hero enough to sell the project over the screen. The idea came from a massive secret service scheming that was brewing for years, maybe a full decade in advance. Facebook was already being implemented in code, before they first thought of Stuxnet.
Yep, same here. Companies expect to hire fully trained specialists at the lowest cost possible. I think that 19 out of 20 companies do never, ever train their employees to their needs and this is where the core problem lies.
You need to be jack of all trades and a specialist in a certain field of expertise. However, both are mutually exclusive. And even if there is such a beast of developer, it wont come cheap.
Let's sum it up: cost > expertise in area of expertise > pre-existing, broad knowledge of various technologies and tools
All developers, programmers, researchers - we're all blue collar. People working in administration and accounting are considered white collar.
As a scientist, I don't feel insulted to be "blue collar". I'm fine with that.
"The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
Part of the reason I don't think an apprenticeship model works for teaching programming is that by its nature it is a scholarly profession. I don't mean that in the ivory tower way, I mean that programming is largely research based and requires an active mind. You need meta-skills of the kind that allow you to assess, filter and process a lot of information, but be able to focus in on and find the particular bits that are relevant to you. Doing an university degree often teaches this skill indirectly and some people develop it themselves though natural dedication (autodidacts). I don't think an apprenticeship style of learning gives people the time or inclination to do this. More practical experience and mentoring is definitely valuable, but it shouldn't be the sum total of a programming education.
I also think that there is also a defensive thinking mindset required to properly produce robust software that requires a certain level of formal knowledge as well as practical experience. Degrees at the moment don't necessarily teach this, but you do see a lot of software written without this knowledge and quite often it becomes obvious that it's only going to work *some* of the time and quite a lot of this software comes from people with a weak formal education (but not all of it).
Huh? Floats is the standard representation of numbers almost everywhere.
Not in financial transactions. While there are ways to do financial transactions with floating point numbers, they have an alarming tendency to introduce rounding errors. When you are dealing in money, rounding errors are an extremely bad thing because then the books don't balance anymore. One common way to deal with the problem of rounding floats is to treat the stuff to left of the decimal as an integer and the stuff to the right as another integer since there are no rounding issues with integers. While not as fast as floats, the extra accuracy is worth it in this instance. There are other ways to solve this problem but you'll find conventional floating point is used with great caution in the financial world.
There's a reason floats are implemented in hardware.
Which has nothing to do with why floating point numbers are often not used for financial transactions.
To build a house, you not only need the architect, but the guy who hammers nails and lays flooring. Similarly, to build a program, you don't necessarily need to know much about virtual void functions, but you'd better be able to handle integers, strings, arrays, if-then statements and loops. These are the hammers and nails portion of the industry.
Please do not read this sig. Thank you.
Actually scratch that, I guess parts of pennies can somehow exist. Never mind that they can't be paid.
Not only can they be paid, they often are. Remember that most currency is not actually coins and bills. Most of it is just numbers in ledger somewhere. Stock transactions are often to as many as 5-6 decimal places. My company quotes parts with prices containing 4 decimal places. When you are dealing with many thousands of parts those fractions of a penny can add up to real money pretty quickly.
If your design can be done by someone with the education levels or mental faculties of a welder, it can be done by outsourced talent more cheaply anyways.
Apparently you have never tried welding if you think welders are dumb. (hint, it's really quite difficult to do well and requires a LOT of training)
That said, there is a lot of coding that is not practical to outsource. I am not a programmer professionally but I do some coding here and there as a part of my job. I'm not about to write a linux kernel or anything like that, but some simple coding to do my job more effectively is useful. Should I have to go get a CS degree before writing a few macros or a batch file or a shell script? Are you seriously arguing that I should outsource my macros to India? Some programming simply isn't very hard and can be done effectively by someone who isn't a highly trained specialist.
There is a place for highly trained CS experts and that is working on the large scale and challenging problems. It really is a waste of everyone's time to have them working on simple programs that can be adequately by people with far less training.
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.
From the post:
That's a degree in the liberal arts, unless he chose a deliberately awkward "liberal arts college" + degree formulation.
When we graduated college, an old-timer said something to the effect of, "Now that your degree program is over, your education can begin."
What followed for the lucky amongst us was finding people in our industries who could teach us from the benefit of experience. Education tries for comprehensive and lacks in application; an apprenticeship teaches application.
Both are necessary, but one can be had by cracking a book on your own time (use the Abe Lincoln method, just make sure you do an hour a day) and the other -- experience/apprenticeship -- cannot.
Unfortunately, it seems like many degree programs are going in that direction as well.
Traditionally, blue collar work has included artisans and craftsmen, and as I recall that's where the apprenticeship method started.
I think this is insightful because "autonomous decision-making" is a good dividing line. However, most blue collar work of the type I've mentioned occurs by independent contractors or people with a fair amount of autonomous decision-making, such as installing hardware or planning construction. I don't think "blue collar" should be assumed to mean "because they sweat, they're dumb," which is an assumption that our television shows seem to make.
This is a good point.
Coding is, in my view, one tool in the belt of a CS grad. The biggest skill is how to apply technology, and that's where critical thinking and analytical skills are essential. Sometimes, coding is the answer; not always.
Often times, the architecture is in integrating multiple systems to work together, and multiple tools are used, including but not limited to coding.
The roll-your-own days are mostly gone. While I'm nostalgic for some aspects of them, we need to acknowledge that today's coder may be stitching together complex chains of software, hardware, operating systems, network, libraries, scripts, shells, etc. in order to make a project as a whole work, and that's where architecture (a career) is more important than programming (a tool, a craft).
When I grew up in the 1980s, computer jobs were treated as some sort of blue-collar skill suited for autistic personality types that were incapable of relating to other human beings. "Respectable" people were supposed to go into law, medicine, or business. Before resumes became computer-searchable, "respectable" people avoided mentioning computer skills, since employers were turned off by technical jargon.
If you pretty much just sit at a desk or talk, you are white collar. If you are vigorously using your arms or legs in a factory, etc. you are blue collar. Coding is always white collar by this definition.
This is perhaps one of the most insightful articles I have ever read. I guess it also highlights my beef with Computer Science curriculum at the University level: it doesn't teach real world coding but coding to solve interesting theoretical or mathematical problems. It doesn't take a solid foundation in mathematics to be able to learn to code. I think learning to code much in the same way as one learns to be a machinist is a fabulous idea and making computer programming a blue collar, skilled job is long overdue. If such an option were open to me, I would be all over it in a heart beat. I have a degree in Criminal Justice yet I'm working as a Systems Admin and I don't particularly like it. I would love to be able to go to a vocational training program with apprenticeship and write software. This is so much better than importing H1B visas to do the work because it encourages development in America.
Cashiers use applied math too. The level of education varies depending on what you're trying to do.
Except for ending slavery, the Nazis, communism, & securing American independence, war has never solved anything.
What he really means, in a nutshell: "Programmers are paid too much."
I am officially gone from
Take a look at the kind of code that you see out of graduate students before you assume that degrees have any meaning at all. I am talking about people who receive PhDs in computer science, but who cannot get beyond the "one big loop with one bit switch statement" organization of programs. This includes grad students who work on "systems" rather than "theory."
Palm trees and 8
Because the hot skill set of the moment changes quickly much of the CS degree learning is not useful. It is either theory not used very often or specific languages and tools that will be obsolete soon. Learning how to learn and some vocabulary to help understand fellow coders is about all I see in new graduates. That isn't worth the time and money. I have a couple of engineering degrees with only one CS class, which was FORTRAN. I get past the filters under "or related field" in the degree qualifications, but they are otherwise as useless.
An apprenticeship would be fantastic because it would teach things that usually take a long time to learn, like best practices and how to spot potential problems by reading the specification, and how to work in a team larger than four people.
The benefits of an apprenticeship would hopefully go well beyond the individual. The employers would know who could really do the work and not just pass a test about theory. The employees would be able to convince management of best practices by having a similar knowledge base and having an "authority" to which they can refer.
The better answer is to use languages with arbitrary precision representations of rational numbers. You will not have to deal with integer overflows, you will not have to deal with losing precision, and you can spend more of your time developing the correct program logic. Yes, it will mean a bit more in resources -- which can be fixed later if it becomes a problem.
There's a reason floats are implemented in hardware.
Yeah, and it is the same reason we continue to use C and C++ to write high level programs: history. If we were starting from scratch today, using the latest technologies and research, it is almost certain that we would do things differently.
Palm trees and 8
The word "computer" before WWII basically meant a clerk computing insurance or ballistic tables at desk with an adding machine and/or pencil. These clerks were almost always female, while their supervisors or officers were men. As the adding machines evolved into vacuum tube behemoths, the female clerks ofter did the wiring, switch settings, punch card or punch tape preparation, and even the coding. So coding developed a "taint" as being female, clerical and not quite white collar.
One consequence was that it was taught first in trade and secretarial schools. I remember faculty debates at MIT in the 1970s whether computers should become an academic department. Some faculty considered it a mundane skill like typing and not worthy of department status. But it kind of snuck into lots of other departments where EE, business, civil engineering and math were teaching courses about computers. It finally achieved department status in 1980, joined with Electrical Engineering.
In some of my first jobs in industry in the 1970s , the programmer was an assistant to the scientist and engineer. Either the programmer wrote everything with their guidance, or the scientist submitted coding sheets to the programmer to be punched, submitted and debugged. I was a novelty as a scientist who did my own typing. The old guard viewed me as either a genius or loser for doing this. Eventually as computer terminals and workstations grew inexpensive and clerical labor more expensive, many scientists and engineers did coding themselves.
(udachny is a well-known sock puppet of roman_mir)
it is worth noting that roman_mir is an alumnus of one of the largest state-run universities in north america, the university of toronto. he is making the money he is making today because of the educational benefits extended to him by the country he currently resides in. now, to save himself - and only himself - money he wants to do everything he can to deny those same benefits to others. he isn't trying to save kids any money - indeed he wants minimum wage to go away so he can pay them nothing as apprentices.
he is only trying to disguise this as being beneficial to the youngsters, in spite of the fact that he knows it would not be. education is an easy metric for deciding who to hire, who to fire, and what to pay to employees, and it always will be. by denying people the ability to go to school by way of the promise of an "apprenticeship" he ensures that he will have more cheap labor available that he can easily drop at his leisure.
But by that stage, you may as well use floating point or fixed point binary. Fixed point decimal is no better at representing fractions than fixed point binary. Nothing wil help if you need 1/3 of a penny.
Better programming languages will help you:
Oh, look, an arbitrary precision rational number, created where we expected to see an arbitrary precision rational number. Yes, you can get a float, but you need to be explicit about wanting that because of all the problems it introduces:
Yes, you will see some performance hit when you use arbitrary precision representations, although Common Lisp (and other languages) will let you give the compiler "hints" about how things can be optimized. Further, notice that the value "1" was assigned the type "fixnum" automatically -- meaning that if it were used in integer arithmetic with other fixnums, it would only become a less efficient representation if the compiler could not guarantee that the result would be in-range. Example (note that a fixnum on my system is 29 bits, and 2^29 - 1 = 536870911):
* (let ((x 1)) (describe (+ x (coerce (parse-integer (read-line)) 'fixnum)))) 536870911 536870912 [bignum]
So really, you could say that we have a third choice, but that we keep ignoring it because we are afraid of the performance penalty (somehow, we seem to be less afraid of the "you could wind up with a number that is an order of magnitude wrong" penalty).
Palm trees and 8
So very sorry but I must take exception with this. The "substantial amount of math" comes down to the 4 basic operations. Even partial differential equations come down to it with lots of looping. Really good programmers are not mathematicians for the most part. Really good programmers understand the machine and mathematicians dream up equations that do "something" and then explain in terms that can be translated into code.
No reason to apologize, without exceptions we wouldn't have any conversations, discussions or debates. I find it incredibly interesting that you seem to consider some parts of programming to be mathematics and you can even go so far as to say that "really good programmers are not mathematicians for the most part." I will quote Donald Knuth since he is much wiser than I:
Therefore the idea of passing laws that say some kinds of algorithms belong to mathematics and some do not strikes me as absurd as the 19th century attempts of the Indiana legislature to pass a law that the ratio of a circle's circumference to its diameter is exactly 3, not approximately 3.1416. It's like the medieval church ruling that the sun revolves about the earth. Man-made laws can be significantly helpful but not when they contradict fundamental truths.
Understanding the machine is very important as well but any programmer should know mathematics first and foremost. I use logic daily in writing boolean expressions in any language I use and on top of that, De Morgan's Law has saved me countless of hours of rederiving truth tables. Furthermore the knowledge of when to use a hash map versus any other collection and the run time of my code is so deeply seated in mathematics that I would find myself writing code that works very easily in my unit tests but might take days or weeks to run on real world data. Your assertion that mathematics in computing ends at the "four basic operations" is laughable.
And as to the bit about functional -v- object oriented languages, your tipping your "coding snobbery" hand a bit
"Coding snobbery"? How is it when you collect all the tools out there that are available (most free of charge) you're suddenly exhibiting code snobbery?! I'm not telling you to always use it, I'm not saying it's the silver bullet. I'm just saying that in some cases it makes sense to use it!
and indicating you are the kind of person who just wants to play with the newest toys.
I am absolutely floored by this mentality. There is no silver bullet in software development.
All the languages out there are mostly based on C and no one has yet been able to come up with anything that is actually better, but is rather simply a derivative. Yes syntactic sugar abounds but strip that away and you have C.
Surely you're not suggesting that one language is just "better" than any other language at everything. Could you explain to me how it is that the family of Lisp languages that began appearing around 1958 are "syntactic sugar" on top of C that was written between 1969 and 1973? Are you telling me that Lisp, Scheme, Haskell, etc are all just variants of C with syntactic sugar?! And Prolog's development in 1972 was based on C as well?
Functional languages are almost pure syntactical sugar as the underlying code that is generated is still the basic loop and branch that applies to all languages regardless of their style and name.
It turns out there are very inte
My work here is dung.
I have been coding MIS (mgt. info. systems) since 1994 professionally (AAS CSC satisfied, & 90/120 credit hours into the B.S. for CSC, chipping away @ it over time & as finances permit, of course, as well).
Before that though, I got my B.S. Business Administration (with MIS concentration/minor), which has HELPED TREMENDOUSLY as far as conceptual business understanding for business-process flows during programmatic development for automating said processes!
(Which the business background helped in, since the degree touches into the midrange levels of other business-oriented majors such as accounting, finance, marketing, & more of "hard science nature" such as principles like "shortest route" for logistics etc./et al).
* In other words, because of that added background, I've never really had an "issue" with the concepts, & grasped them quickly (it was only SPECIFICS of the BUSINESS PROCESS + it's data that needed more detailed studies while on the job) - THAT part, is never EXACTLY THE SAME as the next company has it (hence, the prevalence of jobs in MIS/IS/IT 'data-processing' type work out there... there's always more reports & systems to be made!)
APK
P.S.=>
"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." - by Dcnjoe60 (682885) on Monday October 08, @08:55AM (#41583867)
BINGO - & once, in a shop full of programmers I was working with at a large insurance concern, they called their users "dumb" & I was like:
---
"WTF? They know the BUSINESS PROCESS far, Far, FAR BETTER than you fools do PLUS they are what keeps YOU, "in business" here! They're the experts, we merely automate things for them..."
---
Those "stupid users" are the BEST REFERENCE since they use the process & data, daily, + understand what it does, for whom OR what, & how to get to it and lastly, what the desired results are, OR should be...
Once, during such a project (VB.NET & ASP.NET designed)?
Well - I "broke the holy of holies" there:
I directly consulted a user (main user of a multi-user app) who was "the expert" in that area (claims) on what the program does & should do for her + her colleagues in her department!
SO, thus, I designed it EXACTLY per her 'use-case specs' & she loved it (so did her peers)... She came into a morning meeting WE had in the IS/IT/MIS dept., & thanked me publicly for it.
No other programmers ever got that there, & small wonder THAT, due to their "superiority-complex attitude"...
This is WHY you see things like "the perfect programmer has 'business-saavy'/background in trade articles for business & coding...
... apk
It's called open source software. Start writing some that other people want to use and pretty soon you'll have a mailing list full of people that do nothing but spend all day helping you with brilliant ideas and suggestions for changes. On a more serious note, it is easier to get a job with a portfolio and no degree than with a degree and no portfolio.
If you know mostly what you'd like to to, have a chosen path to get there, and time and $$$ to do it this model would probably work very well.
... not know how to do stuff. Assumptions and business requirements change, often daily. Developers need to communicate with businesses, persuade them to make good decisions (why I like developers with Arts and Sciences backgrounds). My guess is we'd get a lot more meaningless (not well thought out) stuff done which would buy us squat.
The problem is, I have NEVER seen that in my 15 years of developing. The technology landscape is constantly evolving, we need developers that know how to learn to do stuff
I don't want an army of semi-functional programmers, I want a FEW real developers.
I am in the beginning stages of teaching a lifelong MS developer and fanboy our Big Data environment. The poor guy basically needs to learn Nix, bash, sed/awk, SSH, cron, Ruby, MYSQL, EC2/S3 and Rails BEFORE we start talking about HDFS, Hive and Mahout. The ONLY thing I have going for me is his background in CS.
Coding is just a craft, sure. No, not really. Coding requires a lot of business knowledge to understand and construct a reasonable solution for each and every unique problem.
This is just another way of trying to make the world match the Idea that programming is trivial.
He wants mechanics not automotive engineers. This comparison would be worth while if there was a lot of source code purchased over the counter.
If millions of people had the same needs and purchased the same code and only needed it fixed when it crashed. On those instances call the Nerd Herd.
When you want your car to do something special, and make your company more competitive, can you buy it at Government Motors?
You have to go to a custom build shop. They get paid more than Jiffy Lube.
We should still be teaching craftmanship in schools and not expecting everyone to be college bound.
Make a HS diploma worth something to someone.
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).
Tbh I've found degree weilding coders to be overly egotistical and head strong too full of their own ideas and unwilling to learn, take advice or appreciate the work from those without a degree. There's something about having a degree that makes them so pompous, patronising and oblivious to that fact.
I have met some who aren't because some people in this world are great. But wow... The majority could really learn something if they got off their high horse.
-- David
Okay, so a bit stereotypical and masculine which...may be behind some of the programmer/CS image problems.
But... I am a professional programmer. I have an undergrad degree in CS, languages & systems. I am mostly finished with a post-graduate degree.
I have over a decade of professional experience, and have done my trials at the helpdesk and learned how to speak with my users. Sometimes.
I have a toolchain, a product suite, paradigms, vocabulary, and experience with a bunch of different platforms...
An apprenticeship might not be a bad idea -- it would have more quickly taught me a lot of techniques I had to learn on my own. But any decent software shop could have done that too.
But you still need smart coders.
I am not a geologist, an engineer, an anthropologist, or a phycisist -- but I have written software for all of these and more. Sometimes, it took them weeks to get me up to speed. Maybe three years before I totally understood in one case.
But... the people in these disciplines who programmed -- almost uniformly were /not/ programmers.
They not only fought the computer, but they did not structure or decompose their software. They didn't break it down into reusable modules save by copy-paste.
Most of them do not understand error handling beyond naively.
I'm still working with a climate change researcher whose primary software is structured like...
try {
for (i : modelLoop) {
ErrorProneSubRoutine()
}
} except {
print 'finished routine'
{
They NEVER know when or why their output data is often substantially wrong. And just start flipping data around until it works.
Worse still, they're in a hurry, frustrated, short, and get angry when asking for help -- "Just tell me what to do so it compiles and runs".
So yeah... people should be taught code. People like this are a dangerous menace to society and research.
This is not just an academicissue... it's an issue with startups and small companies that have single founders who learned PHP, ASP, or JSP... among other things.
It's an issue with large companies that have trained people, but not taken the copiuous and expensive time to /really/ train them and give them mentorship and guidance to repair, refactor, and fix their old software.
Do you know object oriented programming? Great...
Do you know how to make something something 'private' in assembly, in javascript? No? Then you don't really know your language...
Do you know how to fake polymorphism in a language that doesn't support it? How to write a lexxer for a friendly power user scripting language? The difference between overriding and overloading? What static analysis and coverage tools are for?
Do you know when to use a good IDE, and what the possible pitfalls might be?
What's the difference between a static class member in a java generic and a C++ template? Better yet -- why does this difference exist?
Do you have an opinion on when to use macros vs const?
How about multiple inheritance? Oh yeah... I can't do that in Java. What's the workaround? Why doesn't Java or Ruby let me? How does this influence the philosophy of working with best practices in that language vs python?
See... even decent programmers I know couldn't answer all of these, but a professional /will/ understand the concepts and be able to learn them if they're at least explained.
Someone without any CS education... just won't.
And that's before we get into asymptotic analysis, understanding how to do database joins and normal form, and getting into network protocols and debugging them, or structuring them for ... high performance efficiency.
You do understand that at a certain point just adding a single byte or two can make your whole connection about 25% slow
QA jobs are the stepping stone for more substantive programming jobs, but everywhere I have worked these jobs have either been outsourced or more likely filled with fresh H1B immigrants. This demonstrates the farce that is H1B -- as they are intended for foreign workers possessing unique technical skills -- and are instead simply used to disenfranchise American workers from participating in any sort of career ladder. QA positions allow workers -- that have recently changed careers and may only have an associate degree -- to participate in the technical workplace and gain an understanding of how everything fits together. They can then use this foothold to gain further skills to move up the technical ladder. Instead the vast majority of these positions are bequeathed to Indian women (nothing against them personally as I have worked with many of them and they are wonderful people and great workers, but they would probably be happier helping to build upstart Indian companies).
For me, this is a strong indictment of the supposed wisdom of allowing the open marketplace to operate unimpeded. These companies aren't operating in the best long-term interests of the US. Just as the car companies needed CAFE regulation to point them in the right direction, our tech companies require federal intervention to make necessary corrections.
Only a good developer can tell the difference between a good and bad developer. There is a big difference between churning out something that appears to work and something that is actually of good quality.
I've spent a great deal of my time in companies fixing everyone else's broken shit. I'm talking about people sending XML without converting special characters, coming up with algorithms to parse addresses which I assume they just guessed at, blatant memory leaks that cause crashes, mountains of issues due to race conditions, deadlocks, and livelocks, people not using transactions to issue queries that when not completed together causes a database to screw up, people not understanding order of operations and undefined behavior. The list goes on and on, and it scares the crap out of me considering the type of software I've seen this stuff in.
Now people want more people in development jobs who have no clue what they are doing? No thanks.
Sometimes businesses have great ideas that they need coded but can't afford expensive developers.
They need the cheap blue collar coders to just get it done and working.
Once they get it working the business starts making money and expanding beyond the original programs ability. That is when they bring in the expensive developers that can program it the right way so that it can be secure and handle everything the business throws at it.
We need both kinds of developers. The cheap ones help create jobs for the expensive ones.
The Official Site of 1337 Pwnage
The above link in english: Mathematics and Technical Assistant
There, that wasn't so hard, was it?
Maybe. But if you're going to go with blue-collar coding, you'll need to stop with the uber-coolification of programming.
I'm talking about stuff like the obsession with adding functional programming to Java. Java's a perfectly good language for the blue-collar programmer. It lets you check and find a lot of your bugs at compile time. The static nature of the language lets your IDE give you Intellisense-type (code completion) features, very handy for the blue-collar programmer.
A very General Motors factory line type of language. You basically know what's happening, where something is coming from.
Now add functional programming to the mix. Suddenly your blue-collar programmer is wondering, "Where did $BLAH come from?"
So there's a tension between having an environment that's geared for production-line code creation and "coolness" (trying to be like Ruby) on the other hand.
I'm not a lawyer, but I play one on the Internet. Blog
On education and "complex skills" http://www.abelard.org/asimov.php
Not just coders that need apprenticeshipes. IT Techs needs them as well even more so as CS does not tech the skilled needed to do IT tech work it's more for teaching coders
We're already there. Most sysadmins are effectively blue-collar workers. So are most PHP and web coders. Wages continue to decline.
It might work out better with formal apprenticeships and unions.
Which programming class taught you packet inspection?
http://soylentnews.org/~tibman
None, that was not what I said.
I merely stated that those kinds of degree mills lead to uneducated workers who are useless if anything outside the ordinary occurs.
I actually did do packet inspection at a university for a class. It included 100+ pages of reports that I wrote detailing how protocols actually worked vs what the documentation various vendors and what the RFC said. The typical assignment took about 10-20 hours in the lab or at home doing the same thing and probably nearly that long to write the reports. That level of work is not going to be done at a diploma mill or community college or tech school.
Before we seek to blame code quality on whether someone has a degree or not, let's consider the duress the developer coded the code. The reality is that there isn't a sense of professional authority which would enable the developer to say, "This is bad code, and should not be released." Too often, that judgement is made by a *Project Manager*. I've seen these individuals will make the ship/no ship final decision, sometimes in consultation with, but will often run roughshod with the developer.
There's too many development paradigms, and "Best Practices", which have absolutely no scientific backing let alone proof. The essence of a trained software developer is one who can apply the skills in math, perhaps science or related discipline to render informed judgements, if the school was good. Until we get that, we'll see ever growing and bloated software projects which take more and more people to build. Whatever the software endeavor be, that same project will be larger and accomplish less proportionately than even today's mammoth wastes.
Too often unfortunately, what passes for an education is the industry shoving some paradigm or technology at the university, and they then teach that. It does become that vocational training that the submitter advocates.
when I took a chemistry course and had sig figs explained to me. (Weird that's where I learned it but it's true.)
Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
The basic issues in programming are the following: (1) Domain knowledge - accounting, medicine, finance, economics and so on; (2) ability to analyse and come up with an efficient data structure for the problems in the selected domain; (3) explicitly stating all the assumptions about input-output- processes; (4) ability to learn and use a programming language that will support the translation of the domain specific problem into a generalised business problem; (5) security, distributing and effective control of the most valuable data and storage and (6) integrating the software with the whole organisational goals. If you can find one with all these abilities, you have a super star and he or she can change any company which has visionary leaders. Taking some one without deep understanding of the complexity and both academic and non-academic tool sets will not produce any usable worker. Strong analytical skills, willingness to learn, dedication and being proud of one self are all needed to be successful software professional.It is not one degree, it is a base degree plus tools from related fields that are needed to be successful. That means, continuous education is the key for continued success. Individuals and their stories do not produce any significant data base for general use by workers in any field including software.
Perhaps some exceptions among the liberal arts.
Classical education was about exploring our universe. From the internal (psychology, medicine etc), the external (sociology, physics, astronomy, languages etc). The Gods offered ways of projecting the essence of human nature in stereotypical form suitable for discussion and analysis. The educated person could exchange original thoughts about any discipline.
Today every college major is a job training routine. Nobody is interested in education, everyone wants a job. If you can say of yourself "I am a ..." doctor, lawyer, machinist, programmer, teacher, football player - then you are blue collar. If you have a title then you are not educated.
Education in its most recent European incarnation (Renaissance) was designed for gentlemen and to some extent for gentlewomen. People who needed the knowledge to communicate with gentlepeople from other lands about politics, business, war, economics, trends, etc. People who were expected to represent their respected families and countries. People who would set an example for others less educated. It was unthinkable that an educated person would not know several languages, that a well bred woman would not be able to play piano, that a child might not be equipped to spew the most elegant insults to his mates.
America received a bit of that attitude about education in the person of Benjamin Franklin and a few others, but generally declined into a morass of religious superstition which continues today.
I was an English major. I was beset with inquiries about my planning to be a teacher (the only occupation open to English majors). I tried to explain that I was merely interested in language and creative writing. This explanation was incomprehensible to other students.
Despite my classical education (some sciences, philosophy, arts, programming, electronics and quite a lot of business courses), I am still blue collar. Nobody will hire me for what I am capable of. They only see a useless degree.
However hungry I may become, I have immense satisfaction in my broad perspective. I feel that I have a fuller sense of my environment, of the past and future, of human nature, of the essence of math, logic and physics. Could be my imagination but my life is a process of growing, expanding in every direction.
It seems there are two ways of observing our environment. With our eyes, we see straight ahead. We focus, perhaps on programming, and to the extent that we focus, we eliminate all else. Most Nobel winners are highly focused. The other way of observing is as we do with our ears. All sounds, from all directions come to us. To the extent that we can hear and absorb, we admit a wide spectrum of understanding. Da Vinci consumed a wide spectrum. Some balance of these two is probably ideal.
...omphaloskepsis often...
In Chenna, India, till about 2009 (when I worked there) we used to recruit only form the "diploma" schools which In India are quite common AND AMONG THINGS TEACH LIKE HVAC, AUTOMOBILE ENGINEERING, ELECTRONICS etc These were usually full two years after high school. We used to use this diploma school for recruiting people after an aptitude test consisting of : numerical and spatial reasoning tests - like IQ tests and real fundamental questions in the OS of their choice. We found - Didn't have to teach them the real basics like whats a DBMS, file system. - Used to working in teams as part of their assignments. After the orientation and training, they would immediately enrol for higher studies in evening and week end colleges and thus we had lesser employee attrition since they would be more likely to stay till they got their college degree. I highly recommend this method. But FIND A GOOD SCHOOL WITH A KNOWN TRADITION OF GOOD EDUCATION AND VALUES. OK