- read

Please Teach Me

Garth Gilmour 42


Like many developers I struggle to keep up with current developments in our industry. I have a physical ‘shelf of shame’ where books go to die, plus extensive lists on platforms like Medium, YouTube and Vimeo. Recently I’ve been trying to pay back some of this debt, and the result has left me confused and somewhat embittered.

My Confusion

Let me give you a flavour of where my head is currently at, after many evenings reading and viewing the output of the great and good:

  • The Single Responsibility Principle is the work of Beelzebub
  • In fact all of SOLID has been misunderstood and misapplied
  • Duplication of code is now a thing we should all be doing
  • Version control is great, as long as you never use branches
  • Domain Driven Design is simultaneously essential and useless
  • Code need not be readable or performant, except when it has to be
  • Functional Programming is everywhere but somehow nowhere
  • Immutably is both a great idea and a pointless waste of CPU cycles
  • Scrum is great, as long as you don’t do estimation, sprints or stand-ups
  • Microservices are passée, Serverless is OK but Monoliths are back baby!

You get the idea. I could provide extensive footnotes but that would be beside the point. I don’t have an issue with what any single luminary of our industry is saying. Usually, when taken in isolation, they all have a strong argument and make good points. But when every senior figure in our industry is either contradicting another or poring scorn on the lessons of yesteryear it’s very hard on the humble educator.

My Big Problem

I am a teacher of software developers, and increasingly a teacher of teachers of software developers. So on behalf of teachers everywhere it would be very [redacted] useful if we all had some [redacted] [redacted] clue what wisdom we should be passing on.

Where We Stand

Don’t get me wrong, my colleagues and I have a battle tested syllabus of material that has:

  • Been built up based on extensive personal experience, our corporate track record and case studies kindly shared with us by clients and collaborators.
  • Received considerable praise, both at the time and in retrospect.

We know that what we teach works. Especially in this polyglot programming world of duelling platforms and frameworks, where expertise is perishable and everyone is running to stand still. I’d wager we know far better than most, for the same reason a wedding planner knows more than the average bride and groom.

But any teacher who isn’t continuously striving to pass on the best possible advice should hand in their chalk box and retire. We want to be able to build on top of solid foundations that have general agreement. Of course there will be complexity and changing fashions. But the current maelstrom of conflicting opinions does no one any favours.

The Appeal

As an industry I know we will never settle on a single language, framework or platform. But if we could agree on some common fundamentals as a profession that would be a really good thing.

Ultimately I am happy to teach Ada or ActionScript, Modula or ML, DDD or DFD’s, Kotlin or Kubernetes. But I want there to be a body of knowledge that will last more than a few years and not be locked into a cycle of devotion and denigration online. Surely that’s not too much of an ask?