Theory vs. Practicality

: …when I went to University
(here, starting around 15
years ago) we did some practical computing work but the emphasis
was on computing theory. So, we did compilers, languages, databases
and so on but we spent more time on computability, coding theory,
linear algebra, automata, grammars, algorithms and complexity
analysis and so on.

The thing that’s always struck me about this is that during
my career these things remain constant whilst the technologies
around change on a constant basis – I wonder what happens
“tomorrow” if you spend 70% of your time learning how to do today’s

When I was at university (for the record
here) one of the
criticisms I had was the lack of practical teaching. It felt like
few of the lecturers had real world experience and that they were
churning out graduates with little more than pure mathematics
degrees and little actual programming skill. I often wondered how
most of the students would fare in a real software development
role. I thought I gained more practical knowledge on my own time in
the labs than I ever did in lectures.

Now, after more than 10 years in this industry, I find myself
often referring back to topics covered during those lectures.
Understanding that an algorithm is O(n^2) or knowing the theory
underlying concurrency issues with threading or databases is
something I now treat as common knowledge/sense. It isn’t though –
it’s that theoretical background shining through. Today I’m ever
grateful for the time spent looking at things that seemed somewhat
pointless at the time.