3 ms·
The differences within groups far outweigh the differences between them. I'm a 30yo self-taught programmer. I've worked with many CS grads over the years. The
by asher_ 12y ago
The differences within groups far outweigh the differences between them.
I'm a 30yo self-taught programmer. I've worked with many CS grads over the years.
There are pretty big gaps in my knowledge of what would be considered fundamentals, some of which are more important than others. I think the type of software you write largely determines how important these gaps are, and that being aware of the gaps in my knowledge has been more important than actually having the knowledge itself. If I need to implement something that requires some knowledge I haven't yet picked up, I learn what I need to know as I need it. Sorting algorithms are an example of something that any CS grad would know way more than me about because the need to understand all the alternative ways of sorting is not something that I've needed to know.
An important distinction is the difference between knowing something and knowing the language to describe that thing. I understand the time complexity of algorithms, but I didn't learn Big O notation until recently.
I don't know if this observation is true in general, or more common for the CS programs where I live, but I've noticed that CS students and recent grads are terrible programmers. That is, their ability to produce well-written, maintainable code is horrible. This can probably be said of all new programmers, even if they are self-taught, but I think the difference is that many of the CS students I've worked with have the illusion that their CS knowledge is what is most important when they write software, so they are more ignorant of their ignorance.
Learning all the fundamentals of CS in the classroom is no doubt a huge benefit, but many of the other things that make a good programmer come down to experience in a lot of cases, and the classroom is not going to be a substitute.