6
$\begingroup$

Yes, I borrowed the title form a famous joelonsoftware post for my question because I didn't exactly know how to ask this.

I'm a professional programmer for a few years now and although I followed informatics courses in school there was a lot of stuff missing from the curriculum, as I now know but wasn't aware then. For example I didn't do any compiler theory, algorithm analysis (the Big-O), have no idea what P-NP meant etc.

So I want to catch up now!

But the field of computer science is big. Really big! So from here my question: What's the absolute minimum every software developer absolutely, positively must know about computer science (no excuses!)?

$\endgroup$
  • $\begingroup$ It might depend on what type of development you do. $\endgroup$ – Yuval Filmus Jan 23 '14 at 23:10
  • 2
    $\begingroup$ Should you not ask this on Software Engineering? It's a very broad question; what area are you interested in most? It's also an subjective question; you can enable objective answers by explaining a particular task you feel could profit from CS knowledge. You might want to check out our reference questions to get some ideas, too. $\endgroup$ – Raphael Jan 23 '14 at 23:35
  • $\begingroup$ @Raphael: I'm interested in the areas that would benefit a software developer nowadays, someone that does Java, PHP, C#, Java, HTML, CSS, JavaScript, MVC, CRM, eBanking etc work (i.e. the corporate developer). For example I'm learning Haskell right now and although lambda calculus would be a nice thing to know it's not what most developers do right now, and not in Haskell since from a company's point of view that's an exotic (i.e. risky) technology. I wish I could point to some topics, but as I said, the things I learned in school weren't much. $\endgroup$ – John Jan 24 '14 at 10:21
  • $\begingroup$ @Raphael: The more I think about it the more I think you are right. Although useful to CS graduates that will continue in the same domain and get jobs as software developers, posting on Programmers will produce more responses. How do I migrate the question? $\endgroup$ – John Jan 24 '14 at 15:00
  • 2
    $\begingroup$ @Raphael - even on Software Engineering this is overly broad, considered a poll and is generally unsuitable. $\endgroup$ – Oded Jan 24 '14 at 17:01
4
$\begingroup$

> What's the absolute minimum every software developer absolutely,
> positively must know about computer science (no excuses!)?

IMO every software developer should absolutely know (no excuses!) the quote attributed to E. W. Dijkstra:

"Computer science is no more about computers than astronomy is about telescopes"

:-D :-D

| cite | improve this answer | |
$\endgroup$
3
$\begingroup$

Programmers need to know enough basic logic (at least some first-order logic) so that they find it natural to write assertions and specifications in a declarative way. Most programmers tend to only see the imperative aspects of programs. This does not help when you have to reason about your programs, or design good interfaces for modules and components.

| cite | improve this answer | |
$\endgroup$
  • 1
    $\begingroup$ can you elaborate on your answer please? $\endgroup$ – John Jan 24 '14 at 11:22
  • 1
    $\begingroup$ I mean that, from a programming, and especially software-engineering perspective, it is more useful to know about first-order logic than to know about P vs NP. $\endgroup$ – phs Jan 24 '14 at 12:32

Not the answer you're looking for? Browse other questions tagged or ask your own question.