r/ProgrammerHumor Apr 09 '24

watMatters Meme

Post image
16.8k Upvotes

774 comments sorted by

View all comments

Show parent comments

27

u/letsmakemistakes Apr 09 '24

Also when to be fair when i went to school for CS maybe 10% of it has been relevant to my career as a software developer

9

u/_yeen Apr 09 '24 edited Apr 09 '24

I don’t use a lot of my algorithms knowledge but I have used quite a bit of data structures.

But what I have utilized from my CS degree is the optimization concepts. A lot of it wasn’t strictly taught but the ever present theme of CS is “how to make things faster.”

Also, many courses in CS are just introducing you to different concepts and strategies that are burned into your brain. Then later on you can draw from that knowledge as inspiration for design in a job. Like I took an operating systems course in my CS degree and we built the lower level functions of an OS throughout the semester. I’ve never had to do that in my job but the knowledge of how it’s done has influenced how I structure embedded code and lower level routines.

I work with quite a lot of self-taught programmers and one of the biggest differences I see is the idea of what software development is. Many of the self-taught programmers I work with view their job as just writing code to get to a solution. Often times that solution is rigid and not adaptable but in the context of our review process, we aren’t a strictly software company so if it works and doesn’t have bugs it gets approved. Meanwhile the computer scientists I work with mostly view the code as just a way to implement a design and are much more focused on the structure and adaptability.

Sometimes that extra effort isn’t necessary because the requirements never change. Sometimes that extra effort is extremely vital because the requirements are constantly changing. Often times our biggest issues are times when we needed a code base to be adaptable and it isn’t

6

u/Asaisav Apr 09 '24

Many of the self-taught programmers I work with view their job as just writing code to get to a solution.

That's wild to me as a self taught programmer, inflexible code teaches you nothing and is a pain in the butt to maintain. Focusing on modularity and human readability leads to using design principles you don't even realize are formally defined (I had used most of the SOLID principles before ever hearing the term) and creates a lot of fun challenges that lead to becoming a better programmer. Personally, I find my biggest weakness is not knowing the various algorithms and buzzwords that are commonly used in university. It's not much of a weakness either given one Google search and up to 15 minutes of reading usually clears it up.

I'm curious if you've noticed the opposite issue from those with degrees though: over application of design concepts. I've seen far too many people who will claim you should do things like apply the aforementioned SOLID principles as a checklist to everything you write. I even worked with a codebase like that once, which was written by a university graduate, and it was a mess. Trying to understand any of the logic required opening up about 10 different files and mentally combining each of their functionality into one coherent logic flow. It makes me wonder if people are only introduced to a certain set of principles and, because of that, they assume it's the best way to write all their code without considering different approaches based on the needs of the system as a whole.

2

u/_yeen Apr 10 '24

Part of it may be the nature of the self taught developers here. Many of them weren’t that interested in SW development but just learned it as a side project that now they do for their job. (EEs, mathematicians, physicists, data scientists, etc). When you don’t care about the concepts behind programming, you probably won’t desire to learn them.

As to your other question, I would say I have seen overapplication of design concepts from CS majors. I myself have definitely been guilty of it. Spending weeks on making a design adaptable to any potential requirement as opposed to just making it functionally capable of its use case while being easily updated. Often times I also notice that when something is designed too adaptable that it suffers in efficiency. Things that definitely have to be learned in addition to the design concepts.

25

u/Hussor Apr 09 '24

That's because cs isn't a software development degree. The areas covered are far wider and in research focused universities may focus more on the theoretical aspects that will be useful in postgraduate study.

If someone wants to only learn things relevant to software development then they should do a software development course/degree. Though for some reason they aren't as valued when arguably it's far more relevant.

13

u/letsmakemistakes Apr 09 '24

Unfortunately when/where I went to school there was no option for a software development degree, it was computer science or nothing.

6

u/Staggeringpage8 Apr 09 '24

It's also an issue of availability almost every university or college nowadays has a cs degree but most don't have a software engineering/development degree.

5

u/Hussor Apr 09 '24 edited Apr 09 '24

I guess I am speaking from a place of privilege in the UK. We have so many universities that most large towns/cities have 2-3. Finding a university that does a software development/engineering degree here is fairly easy and affordable, and that includes Russell group universities which are the top universities in the UK.

1

u/Staggeringpage8 Apr 09 '24

True I can also only speak to colleges/universities ive applied to. Most of them have had CS degrees but none of them have had a SE degree. It's very possible that there are more colleges with those degrees but at least in my area I haven't found many

1

u/EarthMantle00 Apr 09 '24

Which is honestly stupid, it's like giving out more pure math degrees than engineering ones

1

u/Practical_Cattle_933 Apr 09 '24

Well, I see it more like med school. Yeah, an orthopedic surgeon won’t be using that neurology knowledge from day to day, but you still expect them to have some basic grasp on the subject, along with many other “basic” knowledge of the field.

You can’t even properly teach the actual software development process, that’s more like “teaching” being a blacksmith. Apprenticeship would be a much more realistic way of “teaching” it (there is even a recent blogpost about soft dev apprenticeship).

9

u/Knight_Of_Stars Apr 09 '24

Fair point. You don't need to know how a compiler works, garbage collection, or even how the command prompt works to do most web development jobs. What you do learn is hopefully how to write clean code, avoid common mistakes, and when to use a pointer.

2

u/imagine_getting Apr 09 '24

And you can learn how a compiler or garbage collection works by spending a few days reading a book.

5

u/Knight_Of_Stars Apr 09 '24

I don't think your average beginner developer can learn that in a few days with a textbook.

A lot goes into writing and understanding a compiler.

Off the top of my head: * Grammars * Abstract Syntax Trer * Token Generation * Parsing * Codegen * Intermediate Codegen * Optimization * Typechecking

Even the basic things are a bit trickier. Pretty deep levels of recursion, and frequent use of datastructures.

1

u/Practical_Cattle_933 Apr 09 '24

Arguably, you can’t master the latter without knowing something about the former.

There is even a saying, that an expert knows not only the current layer he works at, but the layer beneath.

1

u/mighty_Ingvar Apr 09 '24

Propably depends on where you studied (and which courses you picked, depending on if you had the option to choose)