Dave Thomas

Programmer, author and editor

Dave twitter linkDave medium link
Szymon profile pic
Dave profile pic
Szymon profile pic
First things first, dark or light editor theme?
Dave profile pic
What's your favorite band or artist to listen to while coding?
Depends on my mood. I've recently been trying to get to like opera, so I'll often be coding to Italian sopranos.
Favorite book and movie?
The Magus. The Seventh Seal
Do you have a CS degree? If not, what's your background.
Yes: I was part of the 2nd cohort to go through the brand new degree at Imperial College.
Best advice on the programming you ever got?
"Tell them they're wrong, but do it politely" My very first boss told me this after attending a meeting with an important client. I brashly pointed out problems in their requirement, but then on the way home apologized to my boss for maybe messing up the relationship. He told me that they're paying us for our opinions; I just had to work on delivery...
The first project you got paid for?
I got a summer job with the local water authority in England, using punch cards to write a program that analysed rainfall. It was written in Nicol (which is a little like RPG). To compile a program, You interleaved your source code with the card deck that was the compiler, and fed the lot through the card reader. After a while, the system would punch our some new cards. You added these back into the deck at the right place, and fed it in again. And again, and again. This is how a multi-pass compiler was implemented when the computer had limited storage...
What's your editor of choice?
I spent 40 years using Emacs, and decided I was getting stale, so I'm now using Vim/Tmux.
What's the hardest part of being a programmer?
What do you love the most about programming?
The thing that motivates me the most is watching people use code that I've written. I get a real kick out of thinking that in some small way I've improved their lives.
What's your definition of a good programmer?
A good programmer has the foresight to learn new things at every opportunity, the wisdom to know when to apply those new things and when not to, and the courage to admit they are wrong.
What language/framework are you most excited about?
I don't think that is a meaningful question; it's a bit like asking a musician what their favorite key is. People get far too caught up in languages and frameworks. Both are just tools: a good programmer will know a number of them, and will know when to apply each. And a good programmer will also make sure they gather feedback on how each worked, so they'll be able to refine their selection criteria the next time they have to make that decision.
Any programming trend that you don't like?
I really dislike the way people drag in libraries simply because they want to use one small function. This leads to the all-too-common situation where a fairly small piece of code may depends on a couple of dozen libraries, that each also depends on dozens of libraries, and so on. The result is that even the simplest programs may end up having many thousand dependencies. Why is this a problem? Because each dependency is something you rely on. Each dependency is code that may contain a bug. Each dependency might make your code more complex. My rule now is that if I can just write something in (say) 10 lines or less, then I'll avoid using a new dependency.