6 ms·
It's fun when people assume a CS Degree means you are a developer. Practically all development is self-taught, a CS degree is only handy for those moments where
by oneplane 7y ago
It's fun when people assume a CS Degree means you are a developer. Practically all development is self-taught, a CS degree is only handy for those moments where you dig into some abstract theory, which in most development jobs hardly ever happens.
You mostly spend (or waste) time on tools, frameworks and interaction (both with humans and other systems). Lots of common development is rather mundane compared to all the beautiful theory behind it. Which is not automatically bad, but also doesn't require a CS Degree to get going.
- jhall1468 7y agoCS is more than abstract theory. It gives you a foundation that you otherwise are unlikely to get. Self-taught means learning things useful for your existing job or things you find interesting. I'm work almost exclusively on the frontend, but my CS degree gave me enough foundation that I'm fairly familiar with compilers (I wrote one in college for a required course). I don't necessarily enjoy writing compilers. But the fact remains that I can write a compiler. I can program in C or C++. I do understand pointers. None of this may hold any real value, but I wouldn't be able to do any of them if not for the degree.
- neilv 7y ago> But the fact remains that I can write a compiler. I can program in C or C++. I do understand pointers. None of this may hold any real value, but I wouldn't be able to do any of them if not for the degree. I liked your initial point, but the argument weakens... People absolutely have learned all the above things (and very well), on their own, outside of a CS degree, and I bet you could've.
- jhall1468 7y agoI wasn't advocating that people don't. There are absolutely vastly better compiler programmers than I am that have never taken a formal class. My point was that I wouldn't have learned it because I don't enjoy it. And sometimes, professionally, we get to do stuff that isn't fun. The nature of being self-taught is heavily biasing the things that interest you. College forces you outside of the box. Outside of the box happens to be those things for me, but they'll be other things for other people. Sorry if that point wasn't clear.
- trustyhank 7y agoAs a self taught developer I can say your point assumes self teaching is all about following your interests. This is simply not true. Self teaching is a combination of following your interests and figuring out your areas of weakness and attacking them. Part of my self learning involves browsing college degree requirements or graduate programs to identify must know topics, I learn them regardless if I have a particular interest. If college is the only thing forcing you to think outside the box, what hope is there for your long term learning.
- jhall1468 7y agoMy point assumes people bias their learning towards their interests. That isn't an opinion, that's just human nature. That's not to say you can't learn things that don't interest you, but if you aren't going to do it formally you certainly have to be driven by filling those gaps and most people aren't. Learning to think outside the box and learning about specific specialties that you don't find interesting aren't even remotely the same thing. If you read what I wrote, you'll notice the example areas I gave. None of them were "thinking outside of the box", they were fields that didn't interest me. The value they bring is that I learned a common language. I can talk to ML engineers or Compiler Engineers in a common language because I have experience in those fields that I wouldn't had I taken a different route. That isn't even remotely a requirement for my field. It's just useful for discussions with other people. Maybe you'll spend hours and hours learning compiler design and implementation so you can have a friendly conversation with a colleague at lunch, but I'm not going to. Formal education forced that on me. That's been healthy for my professional networking, but that's about it. I still consider it useful, but had I skipped the CS degree I wouldn't do it. Nor would most people.
- deleted 7y ago[deleted]
- celticmusic 7y agoand many people throughout history have also learned math on their own, this doesn't devalue the worth of a math degree.
- Fellshard 7y agoExactly this. The way I think of it: It expanded the space in which I can search for solutions. I have enough underlying detail of the computer science map to pinpoint where fruitful design opportunities lie, and what patterns are likely to fit, /and/ which concepts would make a poor mapping for a given problem, leading to bad abstractions.
- spamizbad 7y agoIs there any reason to suspect a self-taught developer couldn't also self-teach themselves simple compiler writing?
- jhall1468 7y agoNo, and my post never implied anything like it. On the contrary, my point was that I was forced into it by degree requirements. I'd know nothing of compiler design or implementation today without being forced to learn it. It's a valuable skill to be sure, but not one I'll ever use professionally because I find it frustrating and boring. And that's my point. If you're self-taught you have to be willing to learn things you find completely uninteresting (or boring, hard, whatever) if you want to be as well-rounded as a CS graduate. Most successful self-taught programmers do exactly that. Most people don't.
- taradinoc 7y ago> If you're self-taught you have to be willing to learn things you find completely uninteresting (or boring, hard, whatever) if you want to be as well-rounded as a CS graduate. Not necessarily, you could also just find all that CS stuff interesting.
- munificent 7y agoI suppose I'm an evidence proof of the contrary. I'm about 3/4 of the way through writing a book on implementing interpreters and compilers [0]. My day job is as a software engineer at Google working on the Dart language. My highest attained degree is a high school diploma from a shitty public high school in southern Louisiana. I went to LSU for a year and a half and dropped out. [0]: http://craftinginterpreters.com/ http://craftinginterpreters.com/
- cr0sh 7y ago> But the fact remains that I can write a compiler. I can program in C or C++. I do understand pointers. EDIT: Note - I see your replies and reasoning with others on what you meant; I do agree with you there, too. --- I know you can do all of them without a CS degree. Where a CS degree really helps, though - and this is something that I know I lack (but real-world experience has taught me enough that I can get by) - are what could be almost considered CS fundamentals: * Data Structures * Sorting Algorithms * General Algorithms Fortunately, in the day-to-day realm of most programming, you don't need to implement any of them from scratch, and most of them you can learn the basics of (or "best common examples") fairly quickly, which is where I am at mostly. The problem happens when you run into a situation that isn't seemingly addressed by that level of knowledge (which again, thankfully, in most day-to-day work is extremely rare); by having that prior exposure via a CS degree, you would at least potentially know some words or phrases to look up to refresh your memory on concepts. Further, you would also have the knowledge (or refreshing of knowledge) to be able to understand any new developments that may have occurred since you were taught (and so could easily read any research papers on the topics). If I were in such a situation, I would need to break out some google searches on various xyz (ie structures and/or algorithms), use whatever understanding I have to understand those to a level to be able to pick out potential candidates to study in more depth, and maybe hope to run across more recent stuff that may be better (and pray I could understand it enough to implement it). The one upside in this day and age, though, is that for all of these, for virtually any language I currently understand, someone has likely written an implementation of it - which can be extremely helpful both in the solution to a problem, and in understanding that solution. But a CS degree would make things much simpler, were it something I had time to pursue. I could probably find the time, but the cost vs benefit ratio no longer works out to my favor, beyond self-edification, given my age and current life obligations.
- zshrdlu 7y agoThe failing here is that you have put a (rather low) ceiling to what an auto-didact can achieve. There are no hard limits to a self-taught scholar of computing, certainly not things as elementary as data structures and algorithms.
- Corazoor 7y agoThere is actually a difference between being self-taught as you describe it, and being an autodidact. The latter is able to identify holes in his own knowledge, and find appropriate material to educate himself on. That ability is what defines an autodidact in the first place. This is also the very same thing you get taught in basically all sciences: How to aquire knowledge about a subject matter you yet know nothing about. So, an autodidactic Programmer without a degree will most certainly have similar knowledge as a CS graduate, simple because that is how such people "tick". It's just that not every self-taught programmer is an autodidact. And in that case I agree with your argument.
- danielscrubs 7y agoIn a cs degree building a compiler would not give you any points what so ever. Writing about Operational semantics would: https://en.m.wikipedia.org/wiki/Operational_semantics https://en.m.wikipedia.org/wiki/Operational_semantics Writing a compiler is just the side effect of showing it could be useful. It’s not hard programming equals cs. It’s the science part of computer science that matter.
- Zaskoda 7y agoThe CS program taught me the history and context for Computer Science. It taught me the fundamental physics that make a gate work and how to put those gates together to make a logic circuit. It then built on this one step at a time, walking us through each layer from how machine code manipulates bits to how to properly evaluate the run time of a complex algorithm. CS told me the comprehensive story. Earning my BS and then my MS did not increase the amount of money people were willing to pay me to build things. However, I can generally tell when I'm working with someone who is entirely self taught and I assume others with degrees can tell also.
- neilv 7y agoI'm imagining a funny verification process: 1. "I can just tell that person is self-taught." (No, they went to a contemporary dotcom feeder vocational CS program, and spent all their time adding the latest framework keywords, and drilling for the leetcode whiteboard interview.) 2. "It hasn't occurred to me that other person might be self-taught." (Yes, they are.) 3. "100% so far."
- umanwizard 7y agoI am absolutely confident that you couldn’t tell I’m self-taught if you worked with me. All the stuff that your CS degree taught you is also possible to learn by reading books.
- cloverich 7y agoFurther, the book on which the curriculum is based. Diligently going through them will often teach you more than the structured class based on them. When coursera first came out I was very excited to take CS classes from top universities. Then... I was surprised at how generally poor quality the lectures and material were. Outside a few standouts, I think you are vastly better off reading quality, well reviewed books / papers than taking a course / watching lectures. (Unsurprisingly this felt true of my actual degree's as well).
- Zaskoda 7y agoDo you consider yourself the rule or the exception?
- manfredo 7y agoAt my University, CS mostly meant learning to program and hack on things unless you specifically did the theory track. Only two of the required classes were theory classes. Compilers and operating systems had some theory in it, but it was mostly about learning how these things work by building your own.
- thanatropism 7y agoEffectively a "hard" degree is an IQ test. General cognitive skills exist and they're especially useful in software development. ITT people are focusing too hard on the content of a CS program and too little on the more general goals of an undergraduate degree: - expose you to multiple fields of knowledge while focusing on a main thread - help you develop generic thinking skills that should translate to a variety of fields of application (there are many CEOs with art history degrees) - lead you through a first approximation of a scientific project, qualifying you for graduate-level research - signalling to the world that you have the chops and the work ethic to go through with a major project with many frustrating stepping stone - etc.
- ColanR 7y ago> signalling to the world that you have the chops and the work ethic to go through with a major project with many frustrating stepping stone i.e., hazing.
- willhslade 7y agoOr, less dismissively, commitment.
- ColanR 7y agoEh, both. You demonstrate commitment by surviving the hazing ritual.