5 ms·
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
by nbouscal 13y ago
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.
- readme 13y ago>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.
- nbouscal 13y agoI'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.
- dgabriel 13y agoYou 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.
- jwoah12 13y agoI'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.
- sanxiyn 13y agoMany CS programs are non-decent.
- hackerboos 13y ago>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.
- Legogris 13y agoI 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.
- ronaldx 13y agoI learned exactly none of those things in school.
- yen223 13y agoAs 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.
- mikeho1999 13y agoActually, 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.
- nbouscal 13y agoI 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.
- jeffasinger 13y agoI 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.
- chudi 13y agoI 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
- randomdata 13y agoI 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?"
- 3pt14159 13y agoYou 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 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.