(no title)
wildmanx | 3 years ago
Honest question. I don't have the answer or am insinuating anything.
What do I mean? Well, I also acquired all that knowledge, but through a formal university CS degree. Before starting my degree, I was also "just" tinkering and hacking. I had been "programming" for like a decade before that, different languages, solving some problems that I found interesting or practically useful. During my degree though, I got all the details. I had full courses on hardware (transistors and upwards, all the way to CPU architecture), on mathematical logic, on compilers, on programming language paradigms, on algorithms, on complexity theory, on formal methods, in-depth on C++, Java, Prolog, computer networks, databases, cryptography, real-time systems, statistics, and a few more. This also allows me to in-depth describe a "nand to tetris" process, but obviously my education has been much broader than that.
Was it necessary to take that 6-year degree? Would that have been equally well covered by a bunch of Coursera online classes and then a few years of work experience? I really don't know.
I have a small sample set of colleagues who are self-taught and though ambitious are sometimes lacking broader perspective and in-depth understanding of CS foundations (that includes my boss), and of colleagues who went through a similar degree and do have a similar perspective as me, some of them not really remembering what was taught (or not caring), so those samples go both ways. I don't really know anybody without a formal degree who has the full fundamentals groked though. That would let me to conclude that the degree is a good thing, but frankly my sample is too small to tell.
wanderingmind|3 years ago
epolanski|3 years ago
But I don't think that having a degree implies that much either, that really depends on how one studies (to understand vs passing an exam). I've seen way too many software engineers who were absolutely clueless about software and engineering and even more computer science. In fact all of the worse devs I know have a degree, I came to the conclusion they signed up for whatever would give them the easiest good paying job.
Conversely the world has a lot of brilliant computer scientists and brilliant engineers who never entered university. Some are famous like Carmack, most you never heard about.
Archelaos|3 years ago
So yes: I agree that the fundamentels are extremly important. Not necessarily on the level of the individual (depending on her or his role), but for the field as a whole. For me personally the motivation to learn the fundamentals is not so much the need of a foundation to built on. Rather the opposite: When I want to do something, I start doing it and try to refine what I am doing in the process by going deeper and deeper.
wildmanx|3 years ago
I think that's a main difference. With a degree you tend to learn / get taught things upfront of which you don't know whether you'd ever need them, and you may not. You kind of trust, or hope, that what they teach you has some relevance and is useful.
Many subjects from courses I took during my degree I'd never have picked up "on the side" during my jobs that came after. But I can actually also confidently say that each and every course I took left some impressions/concepts in my head that later became useful in one way or the other. So for each course I took, had I not taken it, I'd be missing something. Of course there is opportunity cost: could I have used that time in some better way, i.e., even more efficiently? Not sure. There is also the question about the courses that I did not take because, well, there is only so much space you can cram courses into within 6 years :) but maybe there are diminishing returns as well, since many things tend to overlap.
personalidea|3 years ago
Would I like to study those details? You bet. But I came to that realization in my late thirties, after having changed careers twice, kids, marriage, the whole nine yards. I have responsibilities and am lacking the time and free headspace to sit down and study.
So a course on coursera or Udemy or whatever it is. And little by little I am patching my CS knowledge. Will it ever be as complete as that of someone who started programming in their teens and went straight for the degree? Definitely not. So I agree, if you have the luck and the opportunity to be in the situation to have a chance for a degree and take it, it’s a good thing.
At the same time, I think that it is a good thing that software development/ working with computers in some shape or form is open to people from many backgrounds, similar to the creative fields, because kn the end it is important that you can do your job, not necessarily how you acquired those skills.
Because it enriches the industry. Bringing all kinds of life experiences to the table is a good thing. It is a team sport after all. And T-shaped isn’t limited to software skills.
E.g. I might not have studied CS, but having taught adults in foreign languages for years gives me presentational and pedagogical skills that help me explain the things I do know to our junior devs, because I know how learning processes work.
So I would encourage a more optimistic view on the situation. Not asking what are your colleagues lacking, but asking what else do they know? What did they do, while you were studying CS.
machiaweliczny|3 years ago
Most programming doesn't require that much math. I had all that you mention in my 3.5 year degree but most of it was math that is not needed/practical for most of work and individuals.