This content originally appeared on DEV Community and was authored by Nicholas Mendez
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 maximising the efficiency of their programs and models. Computer Scientist place much emphasis is placed 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 applied 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 they require mastery of algorithms and data structures is not only for implementation sake, but rather for you to posses the analytical and problem solving skills you gain with it.
You may not need an understanding of CS concepts to find yourself in an engineering job but I argue that the best engineers likely do.
Conclusion
Of course there's some nuance to this as it really depends on what you work on. If you are an experienced engineer that never looked into Algos and DS, I am in no way saying you are bad at your job. The great news is if you are interested about learning CS theory there are many online resources that are freely available.
References & Image Credit
This content originally appeared on DEV Community and was authored by Nicholas Mendez
Nicholas Mendez | Sciencx (2021-09-12T03:44:38+00:00) Computer Science vs Software Engineering. Retrieved from https://www.scien.cx/2021/09/12/computer-science-vs-software-engineering/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.