Recently I was at a #DevTo meetup in Toronto – No country for old programmers. One of the questions for the 4 panelists was whether in their experience, it was better to have breadth or depth of knowledge/skills. At the time, I jokingly thought both. The reality for myself is breadth. This wasn’t a conscious choice at some point during my career. The fact is, I’m interested in many technologies. I started my undergraduate in Physics, switched to Mathematics part way through, and got a job as a programmer when I graduated. To get paid for doing a hobby was great, and I still think that today. But even today, I am still interested in many areas. A few months ago, I took a chemistry course at Duke University through Coursera. And I’m still trying to get a layman’s grasp of Quantum Mechanics without destroying my brain.
When I think about my closest friends, almost all seem to be breadth instead of depth as well. Which is good since when I or them make some obscure joke referring to some other area of technology, we both grok it. I don’t know if I tend to subconsciously gravitate to building friendships easier with breadth over depth people, or not. I think I find them more interesting since it opens up more areas of potential interesting conversation.
I’m reminded of a friend of mine who I also consider a Breadth over Depth kind of person, but who strived for depth when it came to learning programming languages. At least when I worked with him more than 30 years ago at an OCR company. We were programming Sperry Univac mini-computers, running an operating system called Vortex. We were writing in assembler. It was awful as far as assembly languages go, but it was my first full-time job after University and I was having fun (my next job was writing in VAX assembler which I enjoyed). Anyway, when I learn a language, I learn a small subset of what I think is important, and then I just start blasting out code. My friend however spent a pile of time learning the (assembly) language thoroughly before really doing anything. He knew which instructions and sequences would be faster, and spent time looking at the machine-code generated. I had no time to worry about efficiency and had to write real-time drivers for a machine to read postal-codes and pre-sort mail. The senior programmer had quit and I had an enormous amount of extra work to get done so we could deliver this half-million dollar machine. I believe the company claimed to customers that it could pre-sort 30,000 pieces of mail an hour. After I blasted out the code, we measured it at 45,000 pieces of mail. So my code was easily good enough for the performance required.
At the time I remember thinking that the way to characterize my friend and I is that he writes fast code, and I write code fast. And I believe it is the latter that almost all companies would look for. Thirty years later, I still do the same. I learn a subset of core functionality and start coding.
Anyway, yeh, it’s breadth over depth for me.
Now if you’ll excuse me, it’s 6am, I’m not tired yet, and I’m going to go read some genetics stuff…