62 comments

[ 3.1 ms ] story [ 133 ms ] thread
While a degree isn't necessary to become a developer, this article makes it sound like the average person can pick up a "how-to" book and become an employable web developer in a weekend or two. If this is true, I'd worry about the quality of developers joining the workforce.
It doesn't actually. Take this quote --

> To say this occupation is attainable for anyone though is a bit of stretch. It still requires some math chops and long hours of practice.

> "You have to be a self-starter to go along with this," Kenefick said. "In the beginning, it was literally all day and all night, day after day, I was practicing and building up my portfolio. I'm pretty sure it's more work than going to college."

To be fair, that quote is right at the end of the article.

Ironic that the quote "I'm pretty sure it's more work than going to college." is from somebody who only spent a few weeks at university.

(Not that there's anything necessarily wrong with dropping out)

Personally, I'd qualify "...more work..." as "...more work that I enjoy, and am good at..."

I don't mind doing More Work. I mind doing Useless Work.

It doesn't take long to discover that university education is an inefficient sloth, a waste of time and basically a broken system for almost all majors.
Its incredibly good at educating, and fairly efficient. Training is better off at a vo-tech. Most of the people attending just want a credential proving they are trained, its their meal ticket. They're obviously not going to be huge fans of a liberal education curriculum. Yet their employers demand credentials from educational facilities not training facilities, so the 2-yr vo-tech is seen as toilet paper.

Its a messed up situation. They make an excellent product, but most of the people going don't want it, but they can't get something else because the market demands they attend. Very much like complaining a 5-star restaurant sucks because they don't have cheap hamburgers and a drive-thru, or the reverse situation.

I would agree with the quote, learning a skill while going to college is very challenging. I found University to be great at teaching my how to learn and giving me the fundamentals, but I'm on my own if I want to learn specific skills.
I think you overestimate the quality of developer in the outside, "non-hacker-news" world. Labor is always the biggest outlay management worries about; if they don't have technical experience, there are tons of small to medium sized companies that will hire someone at 20$ or 30$ an hour with no degree to bang out bad GWT or jQuery.

In the enterprise ( or small enterprise ) world, when was the last time a web dev needed to write a bloom filter in Go?

You're probably right. I try to surround myself with other people who are passionate about what they do and are trying to become better developers.

Even if someone didn't have technical experience, banging out code at a small company could be the starting point, for someone who is driven, to develop their skills and attain that six figure position.

I think a more appropriate title would simply be "get paid lots of money for working hard and being good at something that's in demand" but it's not nearly as catchy. Seemingly, what's the case in the job market is that the degree is just the minimum required whereas your catalog of work shows that you weren't just following the trend of "fast growing/unfilled computer jobs". It seemed to work for me...
Sounds a lot like my situation, except I didn't drop out, I finished out the associates degree so I could take the few programming classes I wanted. It took my two years, I got a little bit of college under my belt, got a job before I finished, and was only 18 when I graduated.

I think experience and skill level speak higher than a degree in this field. I have hired people that don't have a degree, because they have a nice portfolio and have the skills I need.

I don't have a degree (I dropped out of college) and I make more than that. I'm good at what I do; its not easy, and its obscure.

    Since then, he has worked for Percolate, Vimeo and other 
    startups, and now, at age 25, he's earning more than six figures.
Six figures is $100,000 - $999,999. More than six figures = $1,000,000+.
It's worded poorly, but it means he's making more than $100k.
Clearly, but that is not what "more than six figures means".
Not technically, but it does colloquially.
They mean "more than the lowest amount that has six figures" (which is 100,000), but they say "more than six figures", which implies seven or more figures, e.g. 1,000,000 or more. Yay for context ;)
I know it's not precise, but most people parse "six figures" as $100,000. "Multiple six figures" = $200k or more and "more than (six figures)" just means > $100k. The reason this happens is because it's often considered gauche to talk about income directly.

I know it's imprecise and annoying, but it's a lot faster to adapt to the way the rest of the world speaks than to try to get them to change.

A lot of people ask my why I never got a degree. As a .net web developer I don't wan't so spend 4 years part time (no money for fulltime) studying java, because that's what you mostly learn in our country.

Edit: I maybe should add theres nothing wrong with java. It's just not my choice that's all. And in my country (switzerland) the education system looks little bit different. I started a education at age 16 as software a developer. 2 days school, 3 days work at a software company for four years. Now you add some years of experience and there you are with no degree.. and that's why I wrote my first statement

Whats wrong with Java? I am focusing most of my time on it. Bad decision?
Not really. It's actually kind of funny that a .NET programmer said that because Java and C# occupy many of the same niches, which is to say, heavy enterprise-y apps. But then that may be his point, that it would be redundant for him to learn a language so similar.

Java isn't a bad decision but I 100% believe you should try as many languages as possible, especially from different paradigms. Every language has something to like and most have something you can bring back to your primary language to be more productive.

Happy trails!

there is absolutely nothing wrong with java. I just rather spend my time focusing on the technology I like more and I want to work with.
You can do the same kind of project and get the same kind of job with .Net or Java. It really doesn't add much to your toolbox, although picking up one after you know the other doesn't take much time.
It's not necessarily a bad decision. Many people would say it's a practical one. However, it limits your thoughts about programming to one very narrow style, and not a particularly good one. There are many other styles of programming that are worth learning (functional being likely the most notable of them), and that will make you a better programmer regardless of what language you end up writing in day-to-day.
Java is currently unfashionable, and is popularly associated with enterprise architecture astronauts who add too many layers of abstraction to everything.

It's about as good as any other language, and has more libraries than most. It's also mildly annoying to work with, but so is any language when used as more than a toy.

It's not a "bad" decision if you focus on Android development or you are working for a big company with Java infrastructure (that pay's my bills :). How ever, as they say: "don't keep all your eggs in just one basket". Learn other languages and frameworks like PHP/Yii, Python/Django or Ruby/Ruby On Rails. And code for different platforms (iOS, Windows Phone) if you have the time ;)
I see two sides of this. My degree is in applied math - the only comp sci I ever took was 101 - 102, plus one data structures course. I could do basic dev ops or web dev from now until the cows come home with 2 years in the industry. Computer Science was not a requirement at all.

On the flip side, I get frustrated by my lack of theoretical knowledge on things I deeply wish I knew. I've never taken an OS course, or a databases course. I don't feel like I know Big O as well as I should. I don't know ANYTHING about graphics. I don't know ANYTHING about AI work, or compilers, or anything beyond basic *nix sockets.

Right now I spend my days trying to do linear algebra in the cloud on demand. And I would be willing to bet a years worth of my paycheck that if I had doubled up in computer science I would be better at my job than I am right now.

The language you learn in college isn't important, it's the logic behind it.
(comment deleted)
While I don't disagree with you that there is an opportunity cost of education, it is nearly always better to invest in yourself at an early age[1]. Also, I'm coming from a U.S. point of view, might be different in other countries.

Also, after my time at university I noticed that I didn't need to be a .NET or PHP developer. I was a well rounded computer scientist with the capacity to learn anything I set out to, which is the point of degree. I learned what I wanted in my free time, the technologies you use shouldn't define you.

[1] http://crossbridge1.blogspot.com/2011/09/does-education-pay-...

You might be surprised how little time you'd spend studying Java. I compared the curriculum at the little private college I graduated from almost a decade ago to the current curriculum of the local state-U today and you can escape typically with about 3 classes of pure software coding, the rest of the degree is "other computer stuff" aside from the liberal arts. For me it was two semesters of C++ and believe it or not, COBOL. I already had a job in the field and wanted to expand my horizons, so "learning" what I already do at work would have completely missed the point. COBOL was in fact a total trip and pretty wild experience, although I'm glad I don't have to earn a living coding it.

Over the last decade not much has changed. You'll have a data structures type class although most grads seem to completely forget everything taught. Typically some kind of theory of languages/theory of computing/computability/scaling. Everyone still suffers thru intro to databases complete with explanations of codd-normal forms and drawing E-R diagrams and such. Everyone suffers thru an intro to operating systems class. Everyone has some sort of intro to algorithms, aka welcome to Knuth, class.

"learn to code java" is probably less than 10% of the total class time. All the upper level classes I took demanded some form of working code but they didn't care what language. Remember its education not job training. They thought psuedocode was fine on tests.

Three notable changes: 1) No more discrete math. Huh? Even with discrete math most grads seem mystified by multiple simple conditionals. Maybe its rolled into the first lectures of theory of computing or whatever. 2) No more required systems analysis. Maybe its kinda rolled into "software engineering" ...perhaps. 3) Capstone project senior year type things seem very popular now a days. I donno if that's in addition to, or in replacement of, the liberal arts survey class I had to take in my last semester.

Missing at the end of the title 'as long as you're willing to work your ass off getting good at it'. There might be a shortage in the talent pool but I can't see lots of companies taking on crap devs to put bums in seats.
These articles seem to frequently discount the hard work part of the equation, and make it sound like anyone can pick up a keyboard and get a job.

The "no degree, no problem" idea isn't backed up by my personal experience. I wish it were that easy, but I still find myself struggling to break in. I've been told by temp agencies that my associates degree is worthless here as well.

I wish I had known over a year ago that the most important thing is having enough savings and time to start with so you can build up a portfolio, and disregard the sentiment that if you don't know algos then you're second-rate and don't cut it.

For awhile I've been in a position where it's hard to focus on projects that would make me stand out because I'm distracted working weird hours part-time for minimum wage. While I'm getting more contract work, it still is just a trickle, and seems to be more of a distraction than it's worth sometimes. Additionally, most entry-level positions I've encountered seem to want someone who is a designer/developer hybrid rather than a developer.

I live in Washington, DC, so it could just be that the market here has a enough of a concentration of CS grads and experienced developers to not need to bother with people who are junior and lack a CS background.

> The "no degree, no problem" idea isn't backed up by my personal experience. I wish it were that easy, but I still find myself struggling to break in.

I've found in a lot of companies in middle America, it's nearly impossible to get in with out a BS. Even if you know someone.

The smaller companies will often take you but the pay and benefits are usually lower. On the other hand, they're more likely to have flexible schedules, allow working from home, and not have a dress code.

This is not necessarily a good thing for the web development field. This is how you end up with people with large gaps in their knowledge responsible for parts of your codebase.

To be clear, it is entirely possible to be self-taught and learn everything you need to know. I'm self-taught, and I like to think I've filled in most of the gaps by now. I've also worked with a few self-taught people who make me feel like a novice.

However, I've also encountered numerous self-taught people, working in industry on real projects, who have gaps in their knowledge significant enough to cripple a company if left unsupervised. Things like not knowing what SQL injection is, not knowing what version control is, never having heard of unit tests, etc. College curricula in other fields generally make sure that you at least encounter every essential part of the field. Without that safety net, you have to do that research yourself, and many self-taught people don't take that extra step.

EDIT: Judging from the comments I need to clarify. I'm not saying that CS programs in college teach you these things. I'm saying that in other fields, your college curriculum will make sure you encounter everything you need to.

>Things like not knowing what SQL injection is, not knowing what version control is, never having heard of unit tests, etc.

These things are more commonly learned in the field than in school. When people don't know, teach. Don't sit there and gripe about how they might cripple the company.

Your anecdotes are irrelevant. There are just as many people with CS degrees who would get stumped on one of the three things above. Web development doesn't even require a CS degree. You just need to know your way around databases, patterns, be neat and meticulous, and write code that's generally more efficient than O(n^2).

After all, you admit that you're self-taught.

universities are no silver bullet.

I've also run into people who don't know what a transaction or foreign-key constraint is, and who don't know what big-Oh notation even means. I agree that web development doesn't require a CS degree, and I agree that CS degrees don't teach you the main things you need to know. What I'm saying is that that is a negative indicator of the state of the profession. We don't have a proper degree program, so we hire self-taught people, but we don't have any standard way of determining if those self-taught people actually know what they're doing.

The problem isn't with self-teaching per se, but with the complete lack of standardization. One method of standardizing a professional education is to route it through college, but as you've noted, CS degrees don't accomplish that for aspiring web developers. Another way is certifications, but we don't really have any of those either. I'm not arguing for any particular solution, I'm just arguing that there is a problem.

You can get a CS degree and never, ever encounter SQL injection, unit testing, or serious version control. Hell, you can get an MS without worrying about those things.
I'll agree with you about SQL injection, but I don't see how you could miss unit testing in any decent CS program. You may be able to avoid seeing version control if you purposely stick to the hardcore math and theory classes without ever taking a software engineering or project-based course.
Many CS programs are non-decent.
>This is not a good thing for the web development field. This is how you end up with people with large gaps

As a graduate, university isn't much better. Fellow students didn't even know what version control was.

I am not so sure. I am at one of the top technological universities in my country and it's definitely possible to get a master's degree in computer science or computer engineering with great grades without having ever touched either version control or knowing what SQL injections are. Heck, both introduction to web applications and databases are elective courses. Just like the article says, many academical institutions move too slowly to keep up. I think a passion to learn how things actually work and to do things "the right way" and at the same time GTD is what really takes you somewhere.
I learned exactly none of those things in school.
As a fellow self-taught software guy, I agree with you. The tricky part about self-learning are the unknown unknowns - you can't teach yourself version control if you've never even heard of version control. A good CS education should at least expose you to such concepts.

The biggest thing I missed out on are the bread-and-butter topics of CS - data structures and algorithms. I program robots now, and if I had known about graph theory a few years earlier, the software that I write would have been a lot more sophisticated now.

Actually, I don't think it's as much as self-taught vs. formal CS training at a 4-year university vs. some sort of vocational schooling vs. whatever...

I think it's more the question of: what is the driving motivation for getting into the industry in the first place?

The best developers I've worked with and have had the most respect for were ones that have had a lifelong love for computers and computing technology, reflected through things like always tinkering with software (and even hardware), enjoyment in building their own linux boxes, and/or having the proverbial "I've been programming since I was 5" type of story. In my experience, I've found that these type of candidates have the highest chance for success, regardless of the type of formal training that they may or may not have had.

The ones that I'm a bit more suspect on are the ones that think about getting into this industry mostly because of articles like this that focus on the "OMG he's making $$$ 6-figures", but that have never shown much of a prior interest for software, programming, etc.. Basically, for folks in this group, it seems like they get excited for coding only after they've heard stories like this and maybe started checking out Codecademy or decided to take CS 101 because it fulfilled a core / distribution requirement at their 4-year university.

Am I saying that the folks in the second group are not going to be good programmers? By all means no. But I'm just saying as a level of chance vs. risk, I feel that those in the first group have a higher chance of producing as a quality software engineer than those in the second group.

I think you're dead on, and I think the reason for it ends up being pretty simple once you dissect it. Programming is an umbrella that covers a huge number of other skills to varying degrees. Many of them we don't even think about day-to-day, because like you said, we've been programming since we were 5.

Easy example: typing speed. I can type ~140 wpm, and I know I'm not alone in that among developers. That doesn't make me a better programmer… but it would probably be a hell of a lot harder to learn how to code if you were still trying to figure out how to type from the home row.

There are plenty of other skills that we don't really think about, but that make our lives as coders way easier. Someone who has never used computers outside of MS Office for high school book reports is going to have a completely different experience learning to code. Even completely mundane things like knowing what Alt+Tab (or Cmd+Tab) does can make a difference in your workflow. Add up all the little things, and you end up with a pretty big gap.

I just had the experience of interviewing about 10 grad students from a computer science program that's relatively highly regarded (definitely not top 10, but most would associate CS with the school).

Only one of the candidates was able to explain any meaningful difference between GET and POST in HTTP.

I don't know that universities are places that are likely to impart this type of knowledge in their grads.

I think that this is not a good example, yes you should know http from your networks classes, but you need a highly specialized worker in a really big field, you just cant expect that everyone know everything that you need, maybe the students that you interview know more about OS or maybe Graphics and nothing about the web.

I think its just a broad field! Im doing a MS in CS and if I would apply to some work in 3D I wouldnt get a job because thats not what I like and I dont see people from the 3D field complaining that the schools dont prepare the students properly

I have always understood that college was for learning about underlying theories, but not necessarily industry-specific tools. If someone picks up HTTP during that time, great, but it shouldn't come as an expectation. That is what community college is for.

Perhaps a better question would be: "The HTTP verb POST is non-idempotent. When must you use a POST request?"

You need to do a better job pre-filtering candidates. You are not doing your company a service by letting down a bunch of people over and over.

I have a rule: Code samples or OSS contributions or it is an auto "no-interview". Even for first year co-op students. From the code it self you can usually judge competence. If the code samples pass most of these http://en.wikipedia.org/wiki/Code_smell then I bring 'em in for an interview. I have yet to meet someone that doesn't know what the difference between a GET and a POST. For me a bad interview is if someone doesn't know what types of things are found in the headers, or doesn't understand the basics of oAuth.

Before people come in here and start up with the "you are not mid-thirties with kids" BS, no I'm not. But I know plenty of people that are, and it isn't too hard to get 200 lines of code to someones inbox.

I don't have a bachelor's degree, but I get paid to write a compiler! How cool.
I doubt many of these self-taught guys are writing compilers. They're mostly doing CRUD apps or 'plain old web development'.
Neat. I'm curious how you learned compilers. Books? On the job?
"Nobody really cares about your education in this field -- it's can you do it, or can you not?"

Is this unique to software development? Like, if I wanted to break into the fast paced world of industrial fastener sales would prospective employers be worried about my undergraduate degree? My experience on both sides of the interview table has been that after a few (2-3?) years of working in a field, your professional experience counts for much more than your academic credentials. I don't think it's unique to web development.

No, but if you wanted to actually design the industrial fasteners your education would probably be questioned. That's more akin to software development.
To me software development seems more akin to (say) game art design. As long as you can program (or draw) -- which can be checked by portfolio -- education is less important.
If you have a great portfolio of designing fasteners as a hobby, couldn't the same be said of that job?

To me, it is a matter of supply and demand. When the talent pool is larger than the demand for talent, there is a need to find a way to filter the hiring application results down to something that is manageable. A degree has become the defacto standard for doing that. It doesn't matter if you throw out great people with the bath water doing that, because you still have a ton of great people to choose from.

Web development, and software development in general, have been through a fairly lengthy period of demand outpacing supply, leaving many companies without the need to arbitrarily reduce their application result set. That gives them the ability to evaluate all applicants as the normally would, just without the arbitrary filter to start.

I think you're right that we treat it that way, and I think that it's a problem. If you missed out on learning something about game art design, the worst that can happen is the game art isn't quite as good as it could have been. If you missed out on learning something about software development, you can cause significant economic damage. You can check portfolio for basic programming ability, but it's non-trivial to check for all of the other supplemental knowledge.
This is the market at work.

A massive demand for web development combined with a low supply of competent engineers leads to high salaries relative to the amount of time you need to invest to command such a salary. This leads to entities like Dev Bootcamp and Coursera charging to provide the necessary training, they can also command a hefty bonus for making a hiring referral. An influx of newly minted developers enter the market, prices go down as the supply curve slides to the right.

Without a bachelor's degree, you can be quite a good developer. I've seen plenty of such people, but they've all had several years of self-learning and experience, often substantially more than their college-trained comrades.

I wish the article would get that across - in lieu of a degree, you had to have spent years programming on your own time.

This reads like an article from 1997.
I'm studying software engineering and also working as a junior web developer. Realistically speaking I'd have to quit my job to be able to finish my school. The problem is, I view school as a waste of time. Teachers don't know about SQL injection and don't teach unit testing. I learn more efficiently on my own. It's scary how big gaps there'd be in my knowledge if I relied only on the stuff school taught me. The reason I applied to a developer position in the first place was boredom in school(and financial stress). At work I've been learning a lot more and IMO worked on more interesting projects than most of my class mates at their internships.

It's school or work for me but I fear that lacking a bachelor's degree means I can't advance to more challenging programming positions or that nobody would hire me outside of my current company.

Nothing would stop me from starting my own business tho.