13 ms·
The gap between CS majors and software jobs is misleading. You don't need a CS degree to become a decent programmer. Still, if there's such a shortage of good
by michaelochurch 14y ago
The gap between CS majors and software jobs is misleading. You don't need a CS degree to become a decent programmer.
Still, if there's such a shortage of good programmers (and I agree that there probably is) then why aren't we playing this to our advantage? A senior engineer can't afford a house in the Bay Area or New York, and our status is low-- we still work for managers; we're a defeated tribe in this way. Most of us don't have the autonomy to choose our tools or decide whether to use or replace old legacy code. Shouldn't our top priority, as a tribe, be to change this?
We should make programmer autonomy our major issue. http://michaelochurch.wordpress.com/2012/11/25/programmer-autonomy-is-a-1-trillion-issue/ http://michaelochurch.wordpress.com/2012/11/25/programmer-au... This will benefit us and the economy as a whole.
Then, after we've had this victory, we can work on increasing the total number of programmers.
- nbashaw 14y agoHow in any way would this benefit the economy as a whole?
- anonymfus 14y agoExpensive labour provides incentives to automate it.
- throwawayG9 14y agoSo? It can't be done, so forget about that. Just like you can't replace the executives.
- deleted 14y ago[deleted]
- michaelochurch 14y agoFirst, the shortage of good programmers has more to do with the scarcity of high-quality work than a lack of access to knowledge. More autonomy for programmers means more high-quality work is done, which generates higher returns already but also means that programmers improve. Second, if programmers take the decision-making roles back from smooth-talking executives, that means that smarter and more competent people will be calling the shots and society will run more efficiently.
- mike_herrera 14y ago> More autonomy for programmers means more high-quality work is done, which generates higher returns already but also means that programmers improve. I disagree. The self-motivated path may be "more productive" for that one person, but it does nothing to guarantee returns or value for the larger organization. Any employee should leave a company if they believe that their executive team is consistently shown to be inept.
- michaelochurch 14y agoI disagree. The self-motivated path may be "more productive" for that one person, but it does nothing to guarantee returns or value for the larger organization. I don't think you've been in software for very long. Most software is terrible. Code and software quality are serious issues. Unmanaged complexity costs companies millions of dollars. This is a direct result of the low average competence of software engineers, which follows from their inability to get good projects on which they would improve. If engineers had better working terms, there would be a much larger number of decent software engineers out there, and the productivity of the software industry would improve massively. Any employee should leave a company if they believe that their executive team is consistently shown to be inept. Bad idea. 95 percent of companies have executive teams that are either incompetent or malignant. If you have a bad immediate manager, leaving is a good idea. Leaving a company because it has worthless executives is not, because that's the norm. You'll just end up job hopping in the search for something incredibly rare. Better is to assume that most executives are harmful and minimize your career exposure to their incompetence and malice.
- mike_herrera 14y ago> Code and software quality are serious issues. Unmanaged complexity costs companies millions of dollars. This is a direct result of the low average competence of software engineers... If the executives aren't aware of these facts, then it's a communication error. If they are ignoring the facts then there's little chance they would entertain a push for autonomy. > ... You'll just end up job hopping in the search for something incredibly rare. Better is to assume that most executives are harmful and minimize your career exposure to their incompetence and malice. Blame flows downhill, my friend. By accepting autonomy you're opening yourself to the risk of those actions. It's quite the opposite to minimization. Conceptually, I like your ideas. Empowering smart people is rarely a bad decision. But attempting to change from within an existing behemoth, with their entrenched positions, is a far-fetched dream.
- deleted 14y ago[deleted]
- Androsynth 14y agoIf pilots had hangars and hangars full of free airplanes to choose from, I'm sure they would.
- jonknee 14y ago> Still, if there's such a shortage of good programmers (and I agree that there probably is) then why aren't we playing this to our advantage? A senior engineer can't afford a house in the Bay Area or New York, and our status is low-- we still work for managers; we're a defeated tribe in this way. Most of us don't have the autonomy to choose our tools or decide whether to use or replace old legacy code. Shouldn't our top priority, as a tribe, be to change this? Working for someone else will almost always end up like that. Programming is interesting in that you don't have to work for someone else, you can scratch your own itch. You just need to make something that is useful.
- michaelochurch 14y agoI think you're off the mark, because you're always "working for someone else". Details change, but ultimately there's no difference between "mak[ing] something that is useful" and working for others. Sometimes the terms are great, and sometimes they're awful. The implicit assumption is that "working for an established organization" must imply "working with miserably low levels of autonomy". I'm not sure that I agree. If we negotiate better terms, we get more autonomy and more compensation. This will also give more people the financial means to start their own companies and get that level of autonomy. The problem is that the exchange rate between capital/establishment and talent/effort is very unfavorable in comparison to what it could be.
- huherto 14y ago| The implicit assumption is that "working for an established organization" must imply "working with miserably low levels of autonomy". I'm not sure that I agree. And it is not only about autonomy. It sucks to work for somebody stupid, in general somebody that doesn't understand the nature of software development, probability, statistics, etc.
- droidist2 14y agoDo you mean we should unionize?
- 14y ago
- mike_herrera 14y agoAutonomy within an organization sounds novel for morale, but it's a major shift from today's business culture. Strategy would also be incredibly difficult to execute. Organizational leaders need to be able to align their people down a common path. If autonomy is the end-goal, start a company or go freelance.
- michaelochurch 14y agoI agree that people who want outright autonomy will need to go off and start their own companies, but right now, typical employment terms for software engineers are outright bad in comparison to what they could be: * mediocre compensation, especially considering the horrific costs of living in the places with the strongest economies. * low autonomy, respect, and opportunity for advancement due to a scope-of-work defined to commoditize rather than grow engineering talent. * low job security or transfer opportunity, which is the main reason for working for a large organization. I believe that this arrangement exists because most software engineers lack the skills to negotiate for better terms. Realistically, we need to improve organizational and independent employment at the same time. Market dynamics will corrupt one if the other is bad. Fixing one while giving up on the other is not a workable strategy.
- sp4rki 14y agoIt's a major shift I agree... but it's a great decision if executed correctly. Every company has a set of main goals that imply that development can't be completely autonomous, but hiring good developers is not just about code it's also about people with a vision and a sense of purpose for your product. Take the way Github works for example: at the end of the day their main goal is an accessible hosted interface to git, to make git version control easier and ubiquitous; nevertheless having that main goal does not stop their developers from creating new features (say for example a desktop client) that make the product better though it may or may not directly translate to their main goal. If you have a company that develops software and your developers have the autonomy to work on things that they actually believe will further increase the companies value (be it an interface change, bug fixes, or the refactoring of bad code) you will most definitely have a better result than if you make people work on things that might not be their forte or that are uninteresting to them. Now I don't mean that people should have a complete free reign of the product, as some things are too important to forgo because no one wants to do them, but giving developers the chance to work on things they actually believe in as opposed to things that might not translate to creating value in their minds can go a long way towards good morale and retention, and un-doublty a better product because of it.
- nickmain 14y agoMaybe we should be talking less about forming "tribes" and more about how to make programming accessible to anyone who needs to solve real problems using computers.
- aristus 14y agoBingo. Reading and writing used to be a separate profession as well.
- dreamdu5t 14y agoIt is accessible to anyone, for free. I learned everything I use in my career for free on the Internet. Most people have better things to do than programming, and don't want to invest the time to learn just because a news article said they should.
- duaneb 14y ago> Most people have better things to do than programming, Most people have no idea what programming is and can't make that judgement for themselves—coding should be taught in high school, not because everyone will code but because people need to know what kind of opportunities exist. Let's be honest, a lot of high school classes were nearly useless in terms of how much you used what you learned, but they were useful because you learned you didn't want to become a chemist (or whatever).
- kevin_rubyhouse 14y agoCoding IS taught is in high school, but is not mandatory. You know this of course, but it's important to note that there is no shortage of opportunities for students to take computer science courses. Some districts will even send students to a nearby school if enough students want to do it but the school doesn't offer it. High school computer science classes were useful, but still at such a slow pace for people that were interested enough to learn at all outside of class. Anybody that was obsessed with programming outside of class probably wouldn't take the class or just snooze through it.
- senthil_rajasek 14y agoWhat is stopping you from getting your own autonomy? p.s - I did not read your post.
- zwegner 14y ago> The gap between CS majors and software jobs is misleading. You don't need a CS degree to become a decent programmer. Conversely, you don't need to be a decent programmer to get a CS degree. It's a shame that in the age of the internet and self-directed learning, degrees are so heavily weighted in the job market.
- paranoiacblack 14y agoI basically came here to say this. Often HN is frequented by those who are go to top CS schools, but I do not think they are in the majority of most CS schools. It is really possible to escape a university with a BS and MS without knowing how to develop and learn beyond your scope of knowledge. At our university, for example, we are supposedly taught C++, but I still find myself having to explain basics like STL Containers such as Sets and Maps to 3rd and 4th year students. This is after they've run into bugs with something that would essentially take two or three lines using one of the above structures.
- TheAnimus 14y agoAnother problem is that CS is often very, ahem, academic. In the UK, we have the British Computer Society (BCS) who give accreditation. If your doing a CS corse without BCS accreditation everyone knows it will be a bit suspect. However, the BCS you've probably never heard of, they aren't exactly at the forefront of anything, they are also quite stuck in the past. In a world where dynamic or at the very least JIT'd languages are the norm, teaching Pascal or Delphi I really doubt is in the best interests of the students. Yet in 2003 that is what I was taught for first year. So the idea that a CS graduate will be able to go in to software development immediately is a bit missleading. It's more a case of someone who has a CS degree will have demonstrated they have the aptitude to become a software dev. tl,dr: its education, not training.
- paranoiacblack 14y agoI really do agree with your point, but it sounds like an excuse from academia. I can assure you that many students, when starting in their Freshman year in college, expect to be able to build the cool things they want to build or be competitive in the job after their 4 or 5 year stay is over. However, as you state, it is not necessarily the case and the problem is with the archaic nature of academia. Yet, you don't learn the things that many would define as essential knowledge in current technology. In my university, for example, I have not once ever heard about design patterns or ever seen different coding paradigms other than OOP. What I've learned is how to solve trivial or nuanced problems in poor ways in languages not really suited for it. In job interviews, I've only passed through because of things I've personally self-taught myself due to projects I've worked on. So what's the point of an education if you have to teach yourself most things?
- duaneb 14y ago> You don't need a CS degree to become a decent programmer. You need one to get a job, though. If not now, in twenty years when you're old in an ageist industry.
- lotso 14y agoThere are more programming/CS jobs every year than graduating CS majors.
- aashaykumar92 14y agoIf you can learn to program on your own and become proficient in it, build great projects, and keep up to date with the languages, why does it matter what major you are? Granted I'm 20 and still in school, but just being a CS major doesn't make someone a great programmer. I like to think that employers care about projects you've worked on as that is the best way to see a true programmers talents.
- lifeisstillgood 14y agoDont take this the wrong way, but if you are a CS major you have an opportunity to be grounded in the basics of the craft . If you are not covering SICP, algorithms and implementing them in C code at your school, demand it or just stay at home and work on those. You have a n opportunity - work it - seriously dont think flash projects will help you here - take the education time to get educated.
- dreamdu5t 14y agoJust realize that if you don't get a degree, you will always battle people who feel threatened by you. School becomes a core part of most people's identity, and they can be very protective of it in passive aggressive ways. People are told from a young age that people who didn't attend school are uneducated. At least that's been the case with me. I have a great career and no degree, and it's something I deal with constantly.
- cookiecaper 14y ago
- lifeisstillgood 14y agoFred George is interesting on this - see Programmer Anarchy. My view (and yes I am working up a blog post) is 1. Coding is the equivalent of literacy after 1451 (Gutenberg). 2. in say, one generation, any company not having literate people at all levels of the organisation, and not having then changed how they work at a fundamental level to take advantage of these programmers/business people will be at as severe a compettive dis-advantage; similar to trading company in 1600 where no-one at the top could read or write. 3. If you think that's a bit of a stretch, or say "yeah but there were loads of illiterate people on trading ships" - but the people at the top, the captains, the investors, could all read and write. So they could exchange information globally and accurately. Share a model of the market effectively. 4. So, the successful companies in a generation will have coding in their DNA. And to get there from today, companies will benefit most from hiring great coders and teaching them how to be CEOs, how to be Salespeople, how to be accountants. And letting them run the company as CEOs, and accountants do now. Let me repeat - hire people who can code and teach them to be CEOs. They will find ways to run the company with coding at its core. 5. In short programmer anarchy / autonomy is the right way forward. The advantages of running a company through code is so great (comparable to running a company through writing) that all other skills come second. They are necessary but software eats them. For a generation only. Takebacks: I am guessing that the econmoic advantages of code-literate population is a diminishing return compared to a text-literatate population. say 50%? Thats still phenonemonal.
- civilian 14y agolet me know when that blog post is finished!
- lifeisstillgood 14y agoI'll put up a mailchimp account :-)
- frozenport 14y agoI humbly disagree. Lets focus on one point. Literacy facilitated efficient information exchange. Likewise programming facilitated efficient information exchange. But, not everybody needed to program the Internet for this advantage. I think you are confusing a personal advantage and societal advantage. Certainly, we need programers but I am uncertain if everybody needs to be a programmer. I work a full-time software job, and I can say that the software is the easiest part. I do big data HPC, C, C++, learning models and physics simulation. I need people to come up with models, Ontology and even vision. I think at the Hacker News Ivory Tower of software-for-software or software-for-programers, we often underestimates the value of domain specific knowledge. Teaching kids is certainly rewarding and a CS degree is a bright future, but I am more worried about the lack of US PhD's then the lack of user facing javascript.
- ditonal 14y agoCan you explain to me what actual evidence there is that there's a shortage of good programmers? Good programmers still make less money than a good doctor or lawyer, indicating that those are even shorter in supply. Surely addressing that shortage would be a higher priority? Lots of people could use more legal services if the price was lower, and yet if someone wanted to hire a Harvard lawyer for $60k a year, we wouldn't even seriously consider it, but when someone wants an MIT programmer for $60k a year we consider it a job opening and thus a 'shortage.' Thus I find the 'job openings' a ridiculous metric of supply and demand, and I would use the metric people have always used - the market price. Using this more reasonable metric, there are careers with much more severe shortages of talent. As usual, nobody is surprised that those heavily invested in hiring programmers want a larger supply to drive down market wages.
- chrisaycock 14y agoMy identical-twin brother is a doctor, and I make far more than he does. The reason is that I don't call myself a programmer [1]. Instead, I've built-up enormous amounts of domain knowledge [2] in addition to my software engineering skills. As for the career prospects of anyone fresh out of law school, the legal profession suffered a massive meltdown in 2008 and hasn't recovered. [1] http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-pro... [2] http://jacquesmattheij.com/domain-knowledge-or-a-lack-thereof http://jacquesmattheij.com/domain-knowledge-or-a-lack-thereo...
- ditonal 14y agoYour two data points don't mean much because we're talking about macro trends and whether a 'shortage' actually exists. Specifically I'm asking someone to justify the assertion that there is a shortage of good programmers with some numbers, and I pointed out that job openings is essentially just market 'bids' and therefore not a very good metric since all markets have lots of 'bids' at well below market price. For some reason in the world of programming we take those low bids more seriously than in other fields which is inconsistent. The best metric that I know of, market price, does not indicate a shortage relative to legal and medical work, since both doctors and lawyers both have higher averages, and yet you rarely hear about shortages in those fields and how we need to more aggressively train more. So your point about how you individually make a lot of money is a bit of non-sequitur. As for legal work, the median starting salary for the top 14 schools (remember, there is a shortage of 'good' programmers) is still 160K+. How many good programmers start there? Sure lower-grade lawyers don't make much, but neither do lower-grade programmers. Facebook and Microsoft both have reasonably high hiring standards and are complaining about a shortage of people over their threshold. As for 'the rest of us', the average lawyer salary is higher than the average software engineer salary. There are a lot of low paid software engineers too, it's absurd to compare only the highest paid software engineers to all lawyers which it seems you tried to do. The fact that you can see the average lawyer salary being higher than the average software engineer salary, and still claim there a meltdown in the former industry while the second is struggling for people, just shows how deeply ingrained our cultural perspective of what job markets and compensation for a given career 'should be', and how it skews our perspective away from the simple econ 101 supply and demand curves that tell the real story. Markets are a lot more honest than PR releases from billionare tech executives. But on a side note I did like your blog post, I just think it's irrelevant to this conversation.
- hamburglar 14y ago> "our status is low-- we still work for managers; we're a defeated tribe in this way" As a fairly senior developer, I just can't fathom this attitude. Working for a manager means you're low status or defeated? I want to work for a manager. Reward me and give me autonomy and respect due a valuable developer, sure, but please do all that management shit for me. In my mind (and at every single company I've ever worked at), the guys who actually build stuff are high status.
- jseliger 14y ago>A senior engineer can't afford a house in the Bay Area or New York This is an important and under-emphasized point, which is elaborated here: http://www.slate.com/articles/business/moneybox/2012/05/facebook_george_lucas_and_nimbyism_the_idiotic_rules_preventing_silicon_valley_from_building_the_houses_and_offices_we_need_to_power_american_innovation_.html http://www.slate.com/articles/business/moneybox/2012/05/face... . One problem with programming salaries is that so many programming jobs and opportunities are concentrated in areas with very expensive housing, such that salaries themselves have to go up to compensate. Before 1976, this wasn't as big a problem as it is now: most places that experienced rapid growth could build housing stock in response to that growth. In 1976, however, the Supreme Court upheld a 9th District decision allowing the City of Petaluma to impose severe restrictions on construction (see 522 F.2d 897 if you're the sort of person who likes reading court decisions). After that, more and more cities made construction harder and harder; now areas that have a geographic advantage in some industry often can't build sufficient housing to keep up with demand because of legal barriers. But relatively few people connect these issues.
- nazgulnarsil 14y agoThe legal framework is the hidden-in-plain-sight gearing of civilization. Nobody pays attention because it is boring and slow.