top | item 32379492

(no title)

wildmanx | 3 years ago

Sometimes I'm wondering whether this is the future, or whether we (as an industry teaching the next generation) are taking shortcuts that will hurt us in the long run.

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.

discuss

order

wanderingmind|3 years ago

Just remember everything that has been formalized and condensed down into a course structure was an outcome on tinkering and hacking over longer timescale. Courses and curriculum gives you a condensed outlook that might give you an initial uplift, but in the longer run, its the true hacking spirit that in my opinion differentiates good software engineers from the rest.

epolanski|3 years ago

If you want to say that on average a degree will give you stronger fundamentals, well, you are saying something obvious and clear as water.

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

Having already obtained another degree (philosphy) and wanting to apply computer technologies to the humanities (which I later deviated from), I thought it would take too much time to do another degree in computer science. Nevertheless, I knew from my previous education, how important the fundamentals are. So over the years, I worked myself through many of the most important fundamental textbooks. Sometimes it was quite a rush (the textbook on Turing machines and Lambda calculus I read in 3 days); but here my goal was not to memorize everything, but to just understand each step in the thought process. There are still some areas I have not covered, because they have never been of much importance for my work and have not caught my interest otherwise (for example hardware beyond the bare basics). And some others, where I have some basic knowledge, but feel that I should learn more about (for example some mathematical concepts such as category theory or fuzzy sets). However, I have no idea how I would compare to you and your colleagues. I would reckon that it might be difficult to come to a definitive conclusion, because there are obviously some areas (as already mentioned), in which I lack the fundamentals, but others were I have deeper knowledge due to my philosophical training (in which I took a particular interest in logic, semiotics and the philosophy of language, among other things).

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

> There are still some areas I have not covered, because they have never been of much importance for my work

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

As a self taught dev, I can confirm that observation. I did not spend six years of my life studying all those details that, though not crucial to my day job building a JS Frontend, might sometimes help with the big picture decisions. And I am fully aware of all the things I don’t know.

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

I think CS degree is good but such courses are also great and more affordable when it comes to time required and accessible to younger audience. I would love to know this book existed when I was 12 years old.

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.