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.
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.
If you're a hardcore code monkey, sure, the university experience might not help you that much - but it's my experience, that it's a good idea for a coder to be able to relate better to other areas of a business, and this is where the general knowledge of the longer education might come in handy.
Oh come on, since when did blue collar ANYTHING get paid more than the white collars?
For linux tips: http://www.linuxtipsblog.com
I think it's because there's more to being a developer than just the technicals. Sure, if you want to be a monkey at the keyboard churning out cookie cutter websites, that's one thing. But we live in an integrated world, and you get a wealth of intangible skills in university that help you in other areas, be it interpersonal, writing, or whatever. And studying a broad range of topics trains the brain to think in different ways. Again, intangible, but definately real.
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 :(
Nerd rage is the funniest rage.
Maybe the job requires more insight into the everyday world and it's origins than just that which can be gained from frequenting Second Life ? There are benefits to understanding the situation in which the software will be used that are only possible with experience. We all hear about how user participation is vital to making good software, but we are users too. Maybe having a good grounding in other subjects gives an insight in how to program for them. It is possible to be a good "blue collar" programmer, but only if you've got the life experience as well as the leet coding skillz.
PS. I am a blue collar programmer.
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
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.
no, that's why google comes up with lots of great stuff that you don't even know you're paying for.
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.
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
What you may not appreciate, as an engineering graduate, is that a computer science degree is a science degree, not an engineering degree. 2-year technical diploma programs are sometimes closer to engineering degrees than computer science generally is.
The (admittedly anecdotal) evidence I've seen is that at least at institutions local to me, engineering programs include training like project planning and estimation, teaching you to keep a log while you're investigating so you can double-check you covered all possibilities, as well as including several practical project courses. Computer science, on the other hand, while it does focus on math and the math behind logic, doesn't include all this practical training that's essential to your actual job as a programmer.
I have contemporaries who tell me that beyond C++ 101 you can get through a CS degree without writing any code -- which is perhaps appropriate for an academic who's interested in group theory, but not for someone I'm going to hire.
So while I'd rather work with someone who's had that rigor and practical knowledge drilled into them, there's no guarantee that's what you're getting when you hire a computer science bachelor's graduate. Which is why I think we need 4-year software engineering professional degrees, but then while we're at it maybe I could get a pony too..
Generalizations. The foundation of rational decision making with limited information.
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.
There isn't much you learn in university that you can't learn by reading books.
I do not fail; I succeed at finding out what does not work.
A 4 year degree shows you can start a complex, diverse series of tasks and stick with them to completion. People that don't
have degrees are normally the free thinker types that have problems finishing projects.
People value four-year grads primarily because of their demonstrated ability to put up with significant amounts of frustration and injustice without giving up.
Software development isn't a simple trade, where you just do your one skill well and that provides value. In real-world software development, you have to do a lot of communication with people (customers, managers, stakeholders, coworkers, etc), and a wide variety of skills along those lines is critical to your success. And, of course, where ever there are people there is injustice and frustration. You will have plenty of opportunity to get really pissed about ways in which you have been wronged...and if you are unable to retain your composure and find a way to succeed anyway, then you will not have much staying-power as an employee.
There is some value in the education received, sure. In the specific case of software development, the well-exercised ability to solve novel problems is more important than familiarity with specific languages, data structures, techniques etc (as the parent poster said...the stuff you can pick up just by reading a book). Also, one needs some decent social skills (clients spend more time talking to tech support than salesmen, and the manner in which you present problems, solutions, and constructive criticism will have a huge impact on how effective you become at getting projects complete). There is also the issue of being liked by one's co-workers, which has an indisputable impact on team productivity. A vocational school, which tends to be very focused on a specific subset of necessary skills, doesn't necessarily exercise or otherwise help the student to develop such skills.
There is value in being a technology specialist, of course, but only if you are good at marketing your skills as a consultant. If you want a full-time employee position, then you need to have a wider range of skills (outside of your specific technological focus) developed, and you need to be able to adapt to a changing environment in which the skills you suddenly discover you need are different than the ones you already have. To this end, the popular belief that colleges churn out self-motivated learners gives their graduates an edge over vocational school grads (who are thought to be too focused on one specific skill).
There remains the question of whether or not college *actually* provides these benefits. But the market perception is that a college education does, whereas a vocational school does not, precisely because a vocational school is too focused on a subset of the skills a software developer needs.
I am in my later 40s. I have been in "high tech" since the early 1980s.
I do not have a degree.
I built my first computer in the 1970s.
I learned the concepts of computer science from an old navy programmer in high school. (in the late 70s)
When I entered the software industry, computer science was considered a math. In many ways, it is just an expression of a series of non-linear calculus equations, only with a different set of languages to express it.
I wish the industry were heading in a different direction, but stupid people who think a degree means "learning" have infiltrated the profession. Here's the problem: 25 years ago, you had to be smart and know your shit to work in the industry. Smart people understand that learning is a personal process and no piece of paper can substitute for innate curiosity and a drive for learning. It is the stupid people who barely get through college, barely retain anything they've learned, but managed to acquire a diploma, think, like the strawman from the wizard of oz, that they are now smart. It is these people that become the gatekeepers in the industry. It is the childish and oblivious value they put on the meaningless diploma that harms the industry. Smart people who know what they are doing are passed over for frat boys. The more of them there are in the industry, the more the industry will tend to go in that direction.
It should be sobering that most of the most meaningful developments in computer science have come from smart people who never learned anything about computers in school.
When I interview guys from supposedly good technical schools, and ask them how hash tables work or what a "call gate" is, I get a blank look and the response: "Why do I need to know that?" Anyone that has ever uttered that phrase, "why do I need to know that," is an idiot and should not work in any profession that requires knowledge.
When I was younger, computer science was the science of solving problems on actual computers. It is an interesting science as "real" computers have limitations. Understanding the limitations and operation of the computer allowed you to come up with interesting algorithms. The most used algorithms of our time have come from this type of thinking. These days, you'd be hard pressed to find a computer science grad that actually has any sort of clue about how real computers work. They don't understand why there are signed and unsigned integers and think that pointers are "bad."
So, blue collar or white collar? It doesn't matter. The idiots are running the industry. Moronic MBAs are coining buzzword phrases like "AGILE" development, and generally making the software industry a hopeless idiocracy.
I got a Commodore 64 around 1983, and got a modem soon after. I learned BASIC on it. In 1989, a friend of mine had a dial-in account on a local university's Unix and I began calling that. I always had Unix access since then. I began a job as a Unix Systems Administrator in 1996, at which time I began learning some Perl, and later, some PHP. In 2000, I had a lot of free time and sat down and shored up my C knowledge more than I had already.
In 2006, I went back for my CS degree. I have learned a lot that I had not learned in the proceeding 23 years. I learned C++. Despite all my experience, I had no idea what a constructor was before taking a C++ class. I learned Java, to where I have sent implemented patches to some major free software Java programs. I learned assembly language and programmed in it. I learned computer internals, DeMorgan's Law and how to create a two's complement binary calculator with AND, OR and NOT gates. I learned about big-O notation. One of my teacher's is an old-timer, and he really showed us how recursion and back-tracking could be used on a whole host of programs - it was really impressive how powerful these tools can be on a whole host of problems.
I have interviewed people, and have been interviewed, dozens, maybe hundreds of times. The world is full of programmers and administrators who know the basics of how to code, and only learn minimally when they have the job. Once in a while you meet people who really want to understand everything and almost seem to actually understand everything about what we're doing. Amidst a whole bunch of interviewees they really stand out - if they are somewhat normal and seem like they'd do the work, they're almost a guaranteed hire.
Also, on the other hand, do you want to look at yourself as a wage slave who knows the minimum to get by, or a craftsman who understands his work, even if he happens to be a wage slave? You can get caught in a trap of thinking that spending time learning is only benefiting your boss, but really your bosses will win either way, if you just consider yourself a cog in the machine, they've won in another way. People should take pride in their craftsmanship, even if the management doesn't.
Cool story, bro.
As someone who has taken both a 4 year CS degree at a University and gotten a 1 year certificate at college I can offer the following perspective.
It depends on the school. The university I attended wasn't exactly well known for CS, but I think did a decent job. Some with more of an emphasis is CS will defiantly do better, while others will be much worse. College or vocational schools whatever you call them, are they same way. If you go to one that its focus is CS, it will likely be pretty good, if it isn't, well it will likely be very very bad. It depends of people. People are different, some are smart, some are not, others are lazy, and some have good work ethic. A 4 year degree gives at least some reassurance to an employer that the person is not dumb and lazy. It is by no means a sure thing, but it will weed out a lot. A challenging college or vocational school can do the same thing, in a short period of time, but I would say that you would have to know specifically which schools, and they would be few in number.
I found personally that University taught me how to write good code correctly, and college taught me to write code. Mind you the college was not a CS college. They were concerned about memorizing syntax (C++ and VB in this case) and getting your code to work than anything else. In university I might get marked for how optimized my code was, or if I used things like recursion properly. They also stressed the little things, like commenting, documenting, and planning (though I remember like many making my pretty little charts AFTER finishing the program). In college, so long as it worked there were pretty happy.
So I don’t see anything out of the ordinary that people with 4 year degrees generally get paid more or hired more than people that don’t, its pretty common sense. Does that mean that they are better at coding? That depends on you definition of "better at coding". That also assumes that all they ever want you for is coding. If they are looking for someone for the long term, as a company asset it is one thing. If they are looking for someone to fill a "job" then that is something else entirely.
Anyway, I think everyone should do both, though I know that can be a tall order.
If the information is too limited the decision is fallacious.
Hasty generalization...
An inductive generalization can be valid but there has to be enough information for it to be considered so.
Don't kid yourself. It's the size of the regexp AND how you use it that counts.