2 ms·
> Computer science is a tiny subset of software engineering. In practice, almost all of computer science is encapsulated in a few, tiny standard libraries - the
by seabass-labrax 3y ago
> Computer science is a tiny subset of software engineering. In practice, almost all of computer science is encapsulated in a few, tiny standard libraries - the places where bubble-sorts and hash maps live.
I agree with that...
> (This mistake is consistent, and leads to "leet code" style interview questions which are irrelevant to actual work).
...but not so much with that! Computer science is immensely useful in real world work: it helps to be able to look at a task and recognise it as an application of a few, general theorems, say in the field of graph theory or distributed systems, and let that knowledge guide your implementation. Just knowing that the problem you're facing is mathematically undecidable tells you more than weeks of experimentation would, for instance. Perhaps it's often a mistake to ask about it as an interview question, but it's not a mistake to familiarise oneself with the theory.
The issues are twofold with the relationship between computer science and software engineering.
Firstly, typical computer science courses are simply not advanced enough. At the pace of a typical university education, one would need to get to doctorate level before being able to reliably make novel developments in a given field, but that probably won't sound like a good investment of time and money when one could be earning significantly above-average salaries in industry even without the education. I personally believe that making more intensive courses available would be ideal for a large number of otherwise very competent programmers who are limited by their lack of academic computer science education.
Secondly, computers are too luxurious of an environment to necessitate rigour! If you're building a shelving unit, you won't need to perform complicated calculations to measure stress-strain curves or cantilevering forces. The tolerances are so wide that you can get bolt together about any planks of wood and make a piece of furniture that is mechanically adequate. Does that make cabinet-making alchemy? I think it makes it more like craftsmanship, but it's definitely not engineering! Likewise, most computer applications always have CPU cycles to spare, data storage on tap and flexible timing requirements, so innovation only really happens at the limits of the technology: hyperscale applications, safety-critical or embedded software.
I still think it's slightly unfair to say that software development is alchemy, when it is to me more like a well-established but rather conservative craft, which is only occasionally pushed into academic study and engineering rigour when the stakes are high enough.