Are You a Blue-Collar Or White-Collar Developer?
jammag writes "Some developers have gone to four-year universities, where they've also studied subjects like history and sociology, while other coders go to vocational schools and focus purely on writing great software. So why, asks a longtime developer, is there a stigma attached to not having a four-year degree, when 'blue collar' coders might be better trained? Why does the software industry keep emphasizing this difference — and generally giving better pay to four-year grads? Isn't being a developer about real skill level, not the piece of paper on the wall?"
I wear a T-shirt.
"Isn't being a developer about real skill level, not the piece of paper on the wall?"'
It's really a game of social status, education does NOT ensure someone is smarter or more skilled, it only ensures that, that person had the persistance or was a very good cheater.
Persistance and skill are often confused, the education system is really about handing out status to attempt to justify who gets jobs over who doesn't merit be damned. Anyone who believes education is not mostly about social status is not very bright.
Stopped reading here: "I noticed one of the guys who was all over the tech conversation was all of a sudden very quite." Quite what? Please put some effort in! Seriously ... ugh :(
I went to college, then to graduate school for a PhD, then did a postdoc, now run a research group.
Maybe I'm too picky :(
In my experience people who have gone to vocational schools do not have the same background in algorithms than do people who have gone to four year schools. They do not have as expansive of knowledge in data structures and sorting algorithms and the like. There are many jobs where optimizing is important and knowing which algorithm has the best run time in O() notation can be important. They may know Java, but that doesn't mean that they can code just as well. Just because someone knows how to use a typewriter doesn't mean they can write a book just as well as an English major.
The short answer is "no." But by the very nature of asking if there is a stigma attached to something you're suggesting that there is.
Like - "Do you find that there is a stigma about work ethic attached to young men with mohawks?" I have just implied I believe there is and are asking for corroboration.
I don't care what experience someone has as long as they can write great code. Google on the other hand however won't hire you unless you have a Masters or PhD.
.. but have somehow managed to break through the stigma, now working in an environment where most people have at a minimum a bachelors degree...
And as much as I hate to admit it.. I really regret going the vocational school route. While I always felt I could code as well or better than most uni grads (mainly because I got into it as a hobby long before making a career of it) I've found myself deficient in the algorithm and math stuff.
Now, in most programming jobs this isn't going to matter.. I just happened to land in one of the few jobs that is heavy in the maths. I've managed to "bring myself up" to the required level and found success.. but I think it would have been a lot easier if I'd gone the uni route.
I'm a hardware engineer. You want a real engineer for some design and most analysis tasks. History and sociology don't play a part, but dedication to the profession and experience with the underlying principles behind observations are key. A two year grad, or technician, is typically very good for a subset of design, along with a whole bunch of data acquisition.
I imagine code to be the same. If you want high level stuff, architectures, in depth analysis, a full discussion of repercussions of coding choices, a 4 year computer scientist or software engineer is called for. If all that stuff is already laid out and you just need someone to type in a pile of code to do a well defined task, a 2 year would be great.
It's not necessarily the stuff learned in the extra 2 years, but the level of person it takes to invest in their future like that. The 4 year colleges provide a different group of people to "run with" and compete against. College is rarely about the classes, although they're necessary and grades are the common barometer, but it's about the friends made and the level of competition -- you need to compete with people to learn better practices.
Of course, there are prodigies who can do excellent work with self teaching, but separating them from the chaff (and overcoming their egos) is rarely worth the time in my experience.
Well, probably because computer science is one of the few places where you really go from build to design. Sure it happens that a construction worker becomes a civil engineer or architect, but it's not something that happens by itself. In most lines of work you'll often end up with people doing it some weird way because they've never learned that sort of thing, you can see it in computers too with people that never learned any design patterns and decided to invent their own - mostly poorly. Sure, proven experience beats all but if I was choosing between someone that's learned the theory and has a little experience versus someone that's been busy writing low level procedures all that time it'd be a tough call. If I could have both I'd probably ask the guy with the academic background to draft it and ask the other to sanity check it. Code can be "ugly but works" and it's not really important, people don't touch it much unless they're changing functionality. There's no such as "ugly but works" design, then it IS an ugly design that'll come back to haunt you again and again.
Live today, because you never know what tomorrow brings
You ever see how much a master plumber, electrician, carpenter or welder get paid?
Fly me to the moon Let me sing among those stars Let me see what spring is like On jupiter and mars
Seriously, those aren't questions in the summary. It's a bunch of statements. When you frame your "questions" the way the summary did, there's not a whole lot for anyone to say. There's nothing else for me to say except to refute the basic premise of what the summary laid out.
I went to a four year college and got my degree in CS. My college is actually very prestigious but for its humanities, economics, and other non-CS related fields. I went there knowing that because I wasn't sure what I wanted to do when I started college. With that said, I did studied a lot of humanities and non-CS subjects because they interested me and my college encouraged me to explore. Nonetheless, I did study computer science rigorously, especially in the more theoretical areas such as graph algorithms and triangulation/localization algorithms. The way the summary is written, it made it sound like people like me don't know what a big-O notation means or what a pointer is. That's really unfair. If someone mistreats you because of your two year degree, the right approach isn't to denigrate people with four year degrees.
I've been in the industry for a while. The times when the degree matters is when the recruiter go searching for candidates. They search for skill sets but also for specific groups of schools when hiring interns or new college grads. Why? It's based on the perception that those who go to prestigious schools tend to be fairly intelligent because the schools themselves do a good job of weeding out bad students. It doesn't mean all students from those schools are good nor does it mean people who go to two year schools are bad. You have to think of it in terms of probability and inference. With that said, schools pay a role mostly when hiring for NCGs and interns. For experienced candidates, we usually don't even bother look at that. In fact, most candidates put that information last on their resume and we glance at it at most. The most important part is the ability to solve problems and write good code.
BTW, the article itself is pretty horrible. It doesn't even say anything of value. It's just a bunch of guys arguing and being judgmental. Grow up.
EvilCON - Made Famous by
Isn't being a four-year grad about having gone to college for four years, not the piece of paper on the wall? Like you said, they study other things like history and sociology.
This is the kind of story that will bring out the worst in Slashdot. It has it all:
Slashdot, what the hell happened to you? You used to be interesting and hot, but you gained 400 lbs and started smoking crack. You've really let yourself go. I don't think I can do this anymore. It's hard to say, but I don't love you anymore.
People who have a university degree are generally more likely to be smarter and more skilled. No, it's not a guarantee; there are plenty of stupid people with degrees out there and there are plenty of really smart people out there without degrees. But what is a guarantee is that if you get a roomful of people with degrees and compare their skill and ability to a roomful of people without degrees, all other things being equal, the people with degress will do a better job.
Also, keep in mind that rare is the job that is only about coding. When I was a developer, my job also entailed things such as writing documentation, holding training sessions for other developers and users, basic accounting and budgeting, and so on. Non-coding things I learned in college while earning my degree are useful skills that I do use today, not just how to write some subroutine. Yes, even social skills you seem to have disdain for come in useful, because I actually work with other people, not just holed up with a computer.
Persistence is a skill. By completing your degree, you have demonstrated that you are willing and able to achieve success with long-term projects, including handling things that, at the time, you might not be overjoyed in having to do. You've also demonstrated the ability to learn new things to at least some minimal degree (no pun intended) of competence that might be outside of your familiar bubble of knowledge.
A college degree doesn't just demonstrate what you've learned, it demonstrates the ability to learn. If I'm hiring someone, I certainly want them to be able to do the job I hire them for, but I also want them to be able to quickly and effectively pick up new things that I might have to throw at them someday.
I'm not saying that a college degree is the most important factor in hiring. Personally, I'll value experience any day. Given a choice between hiring a 10-year veteran of something versus someone who has only been doing it a year or two, I'll take the veteran any day no matter who has a college degree. But a college degree is important. If experience is more-or-less equal, I'd take the college graduate over the non-graduate every time.
I'm a blue collar developer but I had some CS in college pursuing a degree in English. Somehow I managed to BS my way into a graduate class on computing theory which I have to say was the most valuable education I've gotten in my life. Even if you do not get a degree, you will be richly rewarded if you make an effort to educate yourself.
I would recommend:
a) learn classic data structures. learn binary trees, learn hash tables. throw away the pre-built collections you get and try building them yourself. You'll gain a better appreciation of what your libraries do and a real sense of which might be appropriate.
b) learn some formal information theory. Learn what Big O notation means and understand the difference between O(1) O(n) O(logN), and so on. If you want to be a real snob, try and learn some set theory, at least relational algebra, and then you'll really get a grip on how to use a relational database effectively, and understand why things are the way they are.
c) I would highly recommend dabbling in assembly language. Writing snippets of code in assembly language is not that hard. You just have to be organized about what you do and keep track of things yourself.
d) If you want to get into it a bit more, it would not hurt to read Turing's classic paper where he defines the Turing machine. The thing about Turing and indeed, a lot of the foundational papers by the greats in computer science, is that they are remarkably readable.
e) Have a crack at an NP complete problem, just write a code to solve one, then ask yourself why, it is so ridiculous, and then read up on that.
f) Try and do a little bit with fractals. Write a mandelbrot set generator... Everyone does it.
All of those things are great things for any developer to do. Indeed, whether you finish college or not, your education in computer science should be a lifelong thing. Like any field, challenging yourself with problems solved and unsolved will not only make you a better programmer, but also, to some degree, a better human being. Your formal training is only the beginning of your obligation to educate yourself, lifelong.
This is my sig.
All developers are blue collar. Programming is the IT equivalent of brick laying, it's a trade, not a profession.
Professions have legal status; Doctors, lawyers, accountants have to be certified and approved.
Deleted
Let me guess, you inadvertently also found the candidates who eat candy constantly while at their desks.
/ \
\ / ASCII ribbon campaign for peace
x
/ \
I don't have a four-year degree, in CS or anything else. Most of my time working as a programmer, I've worked with people, most of whom had degrees (usually CS or math or physics, sometimes something else). There was a time when I was a team lead, and both people working under me had degrees.
I never found it to be a problem for my career, or when interacting with my teammates. Judging by everything that I've seen, the general perception in this industry is that good experience and knowledge always beat formal education.
This is an over-simplification, but take a look at the cognitive domain of Bloom's Taxonomy. It lays out 6 "levels" of learning: knowledge, comprehension, application, analysis, synthesis, and evaluation. The reason universities require classes like calculus and liberal studies for a computer science degree is they strengthen your abilities in the higher aspects of learning: analysis, synthesis, and evaluation. 2 year degree programs focus primarily on knowledge, comprehension, and application.
Does this mean those with 2 year degrees can't be competent, even exceptional programmers? Not at all. Most day to day programming work doesn't require more than application, with a little into analysis for debugging. Additionally, those with 2 year degrees are often better than university graduates in those areas for a specific toolset, because they've spent more focused effort on it. These are the people we all know with encyclopedic knowledge of APIs. They know every little detail of the standard libraries they use. They know every little compiler quirk along with its workaround. They often code faster than university graduates because they don't have to look as much up.
Ironically, it requires good evaluation skills to see the value of the top three levels of learning. The things you learn in calculus or anthropology don't help much in just applying knowledge of a specific toolset to a specific set of requirements, which is what we spend most of our time doing, but it does help tremendously in the ability to answer questions like, "Would google's new programming language be a better fit than what we're currently using for our next major project?" or "Is this the best way to implement this algorithm?" It's also beneficial when you have to teach yourself a new technology that wasn't covered in school.
Of course, there is significant overlap between the two groups, because schooling is only one factor in one's education, but that's the general difference.
This space intentionally left blank.
I'm as old as dirt. When I went to college, there weren't any computers available. By the time I got to grad school, colleges were enamored with computers. I actually took a course in BASIC in grad school, something they MAY do in Elementary School today--or not. I learned BASIC via punched cards where ">" was "GT" but, hey! (It was a CDC 6000, same computer as BG used as a teenager.) I thought it was SO COOL!!!! So when the Commodore PET came out I held fire, and when the Trash-80 came out (I loved the wafting plymers of its smell) I just waited, and when the Apple ][ came out, I splurged and by the time I got rid of it, I had spent $7,000 on it with the CP/M card, and all that stuff. And when my boss said, "I think we ought to investigate computers," I humbly suggested an Apple, and she gave me $5,000 to do it. The rest, as they say, is history. I bought one of the first IBM PC's, and by the time I retired, I had purchased several minis and probably on the order of 700 PCs. Also, I might add, I paid my mortgage writing about them for 20 years.
I say this to give background. The point is that when the computer revolution happened, I was there. I lived in it and I loved it, but I was largely self-taught. No one else had a computer at home, and so when our business needed to 'automate,' I was salivating at the head of the line saying "Me! Me! Me!" Who else could they possibly have chosen? Besides, by that time I had learned some Pascal, some dBase, some Fortran and COBOL, not to mention Visicalc. I did the CNE shtick just to try to keep up. And I did. I put in our first Frame Relay Ethernet network, then went to the class to see if I did it right. So that's how I became an IT guy.
But nowadays with the background I had, I could NEVER become an IT person because my industry, when they need an IT person, recruits for one with that amount of knowledge in education. This is simply the maturity of the industry. The same thing happened with electricity, with airplanes, and with any number of fields that simply did not previously exist. They turned from hobbies into professions. Once there was enough background material and a 'recognized body of knowledge' to turn IT into a profession, we folks who learned by doing and pulled ourselves into the field with our bootstraps, and, if I may say, BUILT IT FROM SCRATCH, became outmoded. As someone said, "any profession is a conspiracy against the laity."
I consider myself very lucky to have been able to participate in this field. When I first started there was a computer on one desk: Mine! By the time I retired there were twice as many computers as employees. My work here is done. I am grateful to a lot of people, including BG, for making my career possible. I am now happily retired with no network responsibilities at all, but still addicted to /.
Thank you! Thank you! Thank you! Thank you!
How about a moderation of -1 pedantic.