I’ve been working in the same place for over a decade now. In all that time, I’ve always worked on the same technology. While my work has been quite varied and rewarding, it has meant that I’ve atrophied in many ways. This year, I’ve started work on refreshing my tech skills again. It’s been a hard road so far because I don’t have a lot of time and because it’s been so long since I’ve done that.
I’ve been focusing on three different approaches
- Learning from good books and courses. I’m learning Python via Coursera.
- Taking quizzes. Nothing better than to know how much I’ve forgotten in a given space.
- Playing around with a project and a workflow very different from mine at work. I’ve downloaded a couple of Android apps from Github and am looking to contribute back.
Doing all this has shown me how much the world has changed in the two decades I’ve been out of college. At that time, there were fewer choices of languages to learn from, there was far more use of fundamentals at work, and it was possible to have decent depth across a number of areas. It seems to me right now that the explosion of technologies, approaches, languages, tools and frameworks means that most people are experts in a narrower area, and that we all have to depend far more on the work and knowledge of others to get our own work done, taking much of the our technology stack for granted.
In a sense, it seems to mirror the complexity of the physical world today, where a man can not even make something seemingly simple like a toaster by himself without transforming himself into a renaissance man and expending a great deal of time and expense.
I’m trying to re-frame my antiquated approach in these terms now – how much do I need to know of something to be effective in it?
- Do I need to know how it works? I think so. I wouldn’t want to use anything professionally where I treat it as a black box.
- Do I need to understand its philosophy? Yes, as that understanding would explain its idioms, practices and patterns and make my work better.
- Do I need to understand its internals and be able to build it from first principles? This is where I will draw the line for most things. The cost-benefit ratio just doesn’t justify doing so.
The more I think about it, the more I feel this is also the challenge one faces as their remit increases at work. More teams, more platforms, more projects, more technologies. It feels overwhelming. It feels shallow. It feels unsatisfying. How can someone who’s staked their career on knowing something well adapt to knowing enough about a lot of things? I wish I had a good answer to this question, it’s one I wrestle with every day.