Computer Science and Software Engineering are often compared with each other. While there are overlapping skills in both fields let's take look at how their approach to programming differ.
What is Computer Science 💻👩🏽🔬?
Computer Scientist are typically preoccupied with developing new theory and technologies. This can be the next ground breaking Machine Leaning model like GPT3 or the next version of HTTP.
Computer Scientists often work in Academic Institutions or Research & Development departments researching the building blocks of tomorrow's technology.
What is Software Engineering 🛠📱?
Software Engineers apply traditional Engineering theory for developing to not only develop software products, but deploy, maintain and manage the people involved in the process. Software Engineering applies established theories and methods for building and maintaining software products under constraints.
Picture of SCRUM which is a popular agile development methodology
Software Engineers can not only be found behind any software product but even in companies that do not sell software as their main product or service.
How does a Computer Scientist Code?
All scientific fields strive to push the known theoretical boundaries through research and innovation. As such, when it comes coding, computer scientist are very much concerned with maximizing the efficiency of their programs and models. Computer Scientists place much emphasis in the design and the empirical analysis of their algorithms.
How does a Software Engineer Code?
The goals of Software Engineers are much different to that of the Computer Scientist. Software Engineers spend time in various activities other than development such as software specification, validation and evolution.
Often Software Engineers find themselves in a tricky balancing act between deadlines, stakeholder expectations and the non-functional requirements of the product. To such an extent that even code efficiency can take a back seat if the returns are not worth the effort. Instead, more focus is given to the quality of the code, so that it is easy to extend and maintain.
Software Engineers clearly specify the goals of their code and minimize the effort spent in achieving them precisely.
Should Engineers care about Algos & DS?
We all hear about the dreaded code interviews of the big FAANG companies. Some devs are of the view that such focus on algorithms and data structures is unnecessary because they have never need to write something like a binary tree for production.
I think this criticism is misplaced. The reason FAANG requires mastery of algorithms and data structures is not only for their implementation sake, but rather for you to posses the profound analytical and problem solving skills you gain with them. It also helps with cutting down their huge application pool. You can say that these companies prefer a software engineer with a strong set of Computer Science skills.
However, this is for really big tech companies. You may very well find yourself in an software engineering job without a CS background, but I argue that the best engineers are likely to have it.
Conclusion
Of course there's some nuance to this as it really depends on what you work on. If you are an engineer that never looked into Algos and DS, I am in no way saying you are bad at your job. The good news is if you are interested about learning CS theory there are many online resources that are freely available.
Top comments (0)