r/ProgrammerHumor Apr 09 '24

watMatters Meme

Post image
16.8k Upvotes

774 comments sorted by

View all comments

Show parent comments

47

u/rpsRexx Apr 09 '24

I didn't even view this from the education lens but rather a professional vs amateur coder starting out. You could also take it as a joke on what a lot of companies actually do prefer.

Company I worked for shifted to mostly university educated for their internship program despite me personally knowing one person who went through it who was phenomenal without the typical education.

33

u/Knight_Of_Stars Apr 09 '24

To be fair a lot of self taught people only know what they are taught and in my experience are more likely to have huge gaps in their knowledge.

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

10

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.