#TechTalk #SoftwareEngineering #ComputerScience #Debate #STEM
Hey everyone! Today in class, my teacher made an interesting comparison – “Being a software engineer, having studied Computer Science, is like studying chemistry to be a chef.” 🤔 I’ve heard this before, but I’m curious to hear your thoughts! Do you agree with this statement? Here are some points to consider:
– Both fields require a strong foundation in theory and practical application
– Understanding the fundamentals is crucial for success
– Each field has its own unique set of skills and technologies
What do you think? Do you believe there is truth to this comparison, or do you think it’s a stretch? How do you see the relationship between studying Computer Science and working as a software engineer? Let’s discuss and learn from each other! 💻🧪 #CollaborateAndLearn
Yes, I think it’s a good analogy.
Along the same lines, shitting on a Computer Scientist for not being good at writing clean code is like shitting on a physicist for not being able to build a house.
Computer science is the science of computation, less so the actual implementation details.
It does have some truth to it although of course it is an exaggeration. Computer science is the scientific study of computation, information and automation which is incredibly broad and also abstract.
Software engineering is a subarea of it mainly trying to study how we can effectively construct new software and what the software development process itself looks like and what patterns we have discovered while doing it.
The practical side is even less connected to a lot of the theoretical study of software engineering, believe it or not, this exists too.
It may be more apt to say that being a chef is not the same thing as studying food science and biochemistry, just like being a software engineer is not the same thing as studying computer science.
Studying food science and biochemistry will help you understand why things happen in the first place and what happens when you cook with different methods and eat, how you can use the chemical and biological properties of food ingredients to manipulate it to your will, how you can study your bodies reaction to intake of food and how you can industrialize food production to a massive scale and economize it.
But being a chef is not a scientific endeavor and there are lots of practical cooking and artistic skills that food scientists and biochemists do not have. They might cook terribly in their own homes even if they can lecture you on why their foods are perfectly reproducable in most countries and scaled up for Martian colonization.
Same thing with software engineering, it is a much more practical and applied area.
Studying computer science might make you appreciate and better at certain aspects of it as you can always ask and analyze the whys, but it doesn’t mean you are actually very skilled at using git or know how to lead a team of software developers to not produce horrible code whenever the time comes to present a new feature to someone.
Most good software engineers have a very good and wide grounding in computer science and can appreciate and apply knowledge of the scientific study of computer science with practical concerns of actually producing good and economical software, having a clean development process and handle people politics in a company.
This is a really solid analogy.
Having a background in chemistry helps you understand the theory of cooking. But that isn’t necessary to get cooking. The kitchen will never be as pristine and controlled as the lab. It’s faster and more practical to just get in the kitchen and get your hands dirty, and focus on learning the fundamentals passed down.
You can study the process in a lab and advance the field, think gastronomic chemistry. But for the most practical applications, a home chef will do just fine.
The same can be said for software development. A home software dev can learn techniques to put software together and do just fine. They don’t have to advance the field through research.
A good home chef can look up a recipe and know how to adjust it and transform it into something else. Same can be said of a software dev and open source software.
A chemist will have a large body of knowledge of unrelated chemistry. Eg, the chemistry of mercury has no place in the kitchen. A computer scientist will also have a large breadth of knowledge of techniques that are not applicable for the problems they’re trying to solve.
It’s why Gale made the best coffee that Walter ever tasted.
Being one, and having known many, many chemists… They’re usually pretty darn good cooks.
I mean its not total bullshit, but there are many things that you can learn in a CS degree that can be extremely helpful in a software engineering job that you just will never learn if you only do a bootcamp or just code 100% of your education.
You need to strike a balance, but I do feel that many CS programs could do with more software development in addition to theory.
There are optimum practices for very large systems. Big companies like IBM, Microsoft and Fujitsu have all failed miserably at the task. Fujitsu in particular caused suicides and other terrible injuries.
There was a massive lawsuit, but the many victims of Fujitsu (British Post Office scandal) got very little money. Only the lawyers made out.
I think it depends on the further context, but it seems reasonable. Cooking is a lot of chemistry, and while you don’t need chemistry knowledge to be a decent home chef, you do if you want to be really serious about it
In some ways it has also been said that it’s the study of art by teaching you how paint brushes are made. There are ups and downs to this idea. But plenty of great programmers have no computer science degrees while many computer science grads are terrible programmers. In the end, as with any other industry, it comes down to applied knowledge.
As a chef I think you are (or at least you should) be expected to study some degree of chemistry.
Which is not to say they should have a phd in chemistry.
Same thing with software engineers and CS.
I’d say it’s more like studying physics and math to become a civil engineer. Which is pretty useful imo.
If you’re a web developer which is basically the vast majority of software engineers then yes. CS is overkill. But on the other hand, do you want to extend the standard library of C with new floating point functions? If yes then you need to do everything in binary. Do you want to work on compilers? There’s a bunch of meaty graph problems on compilers. Want to to work on operating system kernels? Then cs knowledge is necessary but for the average software role (web frontend and backend) cs is not needed