Hacker News new | ask | show | jobs
by leovonl 3404 days ago
I sometimes find it hard to discuss some subjects with some of my co-workers that don't have some degree directly related to computer science.

For instance, it's very common for electrical engineers to work on software development and they tend to have a good grasp of how things work in the lower level, but when you start moving up in the abstraction ladder, the discussion starts to become harder. Compilers, types, and generally anything that is more related to math or "formalization" is not within their standard knowledge.

It could be argued the same could be said about some with CS degrees as well - category theory, what? - but that usually is a sign of a lacking education. A good electrical engineer does not need to know about context-free grammars, same cannot be said about a good computer scientist.

This is usually a problem when discussing solutions: "How are we going to solve problem X?" tends to be approached by a computer scientist from the POV of algorithms and the concepts involved (for instance, CAP for distributed systems, and how to deal with conflict resolution, etc) and then search for tools that match the criteria. OTOH, most of the time people that don't have the understanding of this area would want to choose a tool that best fits the problem by its description, without thinking about the underlying algorithm and the implications or trade-offs.

I also had some issues when discussing languages and paradigms - it's hard to evaluate the available options when you can't see the concepts and understand what they provide you with. Most engineers don't have the slightest idea of what is logic programming, though it is essential to a good number of fields in science and industry.

Either way, I don't think anyone should be forced to have a degree to be able to work with software, only reservation I have is when people say it doesn't make any difference, as "programming is easy, anyone can do it and understand anything without formal education". Sure, surgery is also easy... the hard part is to keep the patient alive.

1 comments

Can you elaborate (more) what would be required to "fill the gap" to an 80% sufficient extent? Perhaps a list of links / topics / keywords that should be checked out and read about? Perhaps it's possible to get up to speed with ~6 months of self-study...
Usually anything that deals with theory of computation, formal languages, formal methods, compilers, graph theory, functional programming, logic programming.

I assume numerical analysis, probability and even assembly are subjects most people from engineering would already have some familiarity with.

More specific subjects include relational algebra (for relational databases) and AI concepts like neural nets.