Skip to main content

Command Palette

Search for a command to run...

Jack of All Trades

Updated
5 min read
Jack of All Trades
W

My 7-year career journey has taken me from pharmacy to biostatistics and data science, and then to web development. Starting on the front-end side, I built multiple websites, application UIs, and analytics dashboards custom-made for pharmaceutical companies. Now, I'm finding my niche in the back-end side thanks to the elegantly simple Go language, which I used to build Gopen, a CLI that helps me quickly open projects from a terminal, along with some REST APIs and full-stack applications. I love tinkering with software, I write about it in my personal blog, and I'm always looking forward to a new challenge or problem to solve.

I have been learning programming for almost 6 years now. Instead of writing a bullet list of every technology I learned in that time, I opened GIMP, threw in any technology logo that I could think of until the image was filled, and used it as the cover you're seeing right now. If I spent enough time with it to learn its fundamentals, it is (most likely) shown above.

So, my learning journey has taken me from statistics to data visualization, web development, and a lot of in-between stuff. I was able to impress many colleagues and potential employers (and my current employer) with the amount of knowledge I accumulated over those years starting from absolutely nothing.

That's such a great feat to achieve... or is it?

The Ideal Skillset

Let me start with what I think is the end goal. I heard this a long time ago, and it still resonates with me to this day, and that is the concept of a T-shaped skillset. The idea is to combine the depth of being an expert in one skill with the breadth of having some knowledge in other stuff. It makes a lot of sense to me. Specialists can be too narrow-minded, and generalists aren't "good enough" in any single thing.

So, this T-shaped skillset is a great goal for you to strive for, and I do strive for it.

Specialists vs Generalists

Let me start this segment with a question... Does being a generalist mean you're an impostor? A jack of all trades, master of none? Well, yes and no.

One of the other discussions I heard on this topic was that generalists might not be very good in whatever skills they learned, but that makes them excellent candidates for leadership positions. This makes sense to me. Knowing the basics of many things gives you some ability to be able to manage and communicate with a team where each member is an expert in a single thing.

In another way of looking at it, one could argue that good leaders have the skill depth in leadership and soft skills, so they are T-shaped after all. For the sake of this discussion, however, I am concerned about technical skills only. Soft skills are important but not my main point of discussion here.

In some situations, it might not need to be a situation of choosing between one or the other. Successful teams have both generalists and specialists, each complementing the other and contributing their part in the T shape. This is a great point to consider when hiring and putting together a team. However, this is not an option when working solo. It's either taking the time to build that T or accepting the tradeoff of picking a side, and that takes us to my personal rant story in this context.

Reflecting on My Journey

Assuming the cover and the article intro did not give it away, I'll say upfront that I consider myself a generalist at this point in my career (and it causes me more pain than pride, but more on that later). A huge chunk of my learning journey involved getting started with a new technology, learning until I became good enough to be dangerous, and then finding something else to learn. Rinse. Repeat.

Admittedly, a big reason for tech-hopping was my curiosity, especially in the first couple of years. I was getting started with programming in general, and I didn't have a particular job market as a target, so anything was open for me to learn. Also, my first language was R, which is despised by many programmers because it isn't a "real" programming language somehow. So, I was curious to explore other languages and see what else is there.

In the last couple of years, my job has become the reason why I'm pushed to try new things. Small companies favor people who are "good enough" at multiple skills rather than specialists because they usually want to ship products fast and don't need to meet enterprise-level standards of quality. What I consider being a generalist was highly appreciated in my company on many occasions. In fact, my company was the reason my web dev journey was revived after being dead for a couple of years.

I think learning many different technologies is very effective in opening the mind in terms of knowing how to express ideas in code and grokking languages, paradigms, philosophies, etc. It helped me a lot that way, and I am grateful for it, but...

The Problem So Far

You see, after years of learning lots of new stuff both by myself and on the job, I never went beyond the "good enough" phase in any single language or stack. I'm still hacking my way through web dev, and I'm not a pro statistician by any means, and that's a problem for me. If I were to choose between being a generalist and being a specialist, I would choose to be a specialist every single time.

Nothing against generalists, but that's my personality. When I get into a language, say, I'm not looking to hack together a product, I am more interested in learning the language and its philosophy to make sure that it's comfortable and/or enjoyable for me to "speak" that language. I am kind of an idealist this way (and I did contemplate idealism in a previous article), and the constant feeling of not being able to achieve any form of "mastery" is truly irritating to me.

I often imagine having poured those past years into only one or maybe two of the gajillion things I learned, and what I could've become if that happened. Maybe it doesn't make sense to think that way, and I'm not really into regretting something in the past, but I do entertain the thought from time to time.

What's Next?

At this point, I think I should be more organized and targeted in what I want to learn. I am too deep into data science and web dev to try something outside of those two. However, there are lots of decisions to take within those domains tech-wise. I might need to filter out some of the stuff I'm doing and focus on one or two things.

It's not that I won't try new things from now on, but I think it would help me to pick something to go deep and not spend my whole life in generalist-land.


T-shaped skillset image source: https://www.zerounoweb.it/cio-innovation/metodologie/agile-transformation-come-cambia-il-modo-di-lavorare-per-affrontare-la-trasformazione-digitale/

D
Daher2y ago

I read your article, and I felt identified with you. I'm a generalist too, not only in my work but also in my personal life and hobbies. I have a wide range of interests, and I'm always trying to learn something new. Some time ago, I felt that being a generalist was somewhat of a curse because I really wanted to excel in one specific area. I've read numerous articles and meditated on this, eventually finding peace with my generalist skills. This is because I feel that I have a bird's-eye view of situations and can connect the dots – not just one or two but many more since I have more pieces of life's puzzle. So, I decided to improve my T-shaped skills while truly focusing on my generalist abilities.

1
W

I appreciate what you say about being a generalist. I'm still finding my sweet spot, but maybe I'll come to peace with it at some point like you. Thanks for reading and sharing your thoughts!

1

More from this blog

wipdev

38 posts

A Work-in-Progress Developer