DEV Community

Cover image for Jack Of All Trades or Master of One?
Katie Adams
Katie Adams

Posted on

Jack Of All Trades or Master of One?

One of these days, I'll write a article that isn't just thought dumping onto a page. However, today is not that day!

I pride myself on being a sponge for knowledge. Recently, however, I've been taking a little break from reading around and trying new languages to give my brain a well-earned pitstop. Picture my brain somewhere warm and sunny, with its sandal-clad feet propped up in a deck chair and a glass of ice-cold lemonade getting it's hand slick with condensation. (Do not question how my brain developed limbs and apparently a working digestive system.)

Whilst taking a few days to myself, a question appeared in my head that I've been unable to shake: is all of this extra learning doing me any good?

The more I read about interview practices and techniques, I realise how much I flounder when asked technical questions by people who purport to know a great deal more than me. The thought of going into interviews and being quizzed on my abilities makes me incredibly nervous.

Now some of this can be put down to imposter syndrome, of course, but I must also accept a degree of responsibility . I'm a lot more confident in my programming abilities than I was two years ago but still know that I might not appear the most proficient when quizzed in a time-sensitive situation.

I've also never truly known what I've wanted to do.

For instance, I love video game design and Development - because I love stories and characters and art and music. I want to be part of the process that brought my favourite games before me.

I also love web development. The feeling I get when I've designed a beautiful and responsive site that is also accessible and functional? I imagine it's how a peacock feels when they've just had their feathers done at the local peacock salon.

Software engineering gives me great joy too. Mobile apps, web apps, programs - you name it, I want to know how to make it!

I have something of a childlike wonder for creation, for making things and being able to say 'look, I did this!'

But where does it end? Where do I stop and realise I have to settle for one?

How long before my 'breadth of knowledge' begins to be described as a 'lack of advanced expertise'?

Has anybody ever had the same dilemma? Whether it's about you or a colleague, friend, or family member: I'd love to hear your thoughts. No matter what side of the interview table you were on, how do you handle this type of CV?

Top comments (81)

georgecoldham profile image

Im a firm believer in following your passion(s).

You look at everything everyone else is doing with wonder, you want to be able to do that (and that thing over there, oh and the one you saw yesterday, and that side project you looked at last week, oh and ....).

Over time you will develop a deeper knowledge of a few things you have to work on because of jobs or overwhelmingly strong interest to know about one thing etc. You will find yourself curious about more technical elements, and go deeper down the rabbit hole.

Value the ability to be able to learn quickly much higher than the ability to regurgitate technical information, Its a much more valuable skill. The ability to waffle technically will become easier the more you know about and have used.

If you have to interview, then spend a week learning the technical waffle and interview shit, then hope you really dont need it.

katieadamsdev profile image
Katie Adams

"If you have to interview, then spend a week learning the technical waffle and interview shit, then hope you really dont need it."
I love this advice so much. In fact, this whole comment is brilliant. Thank you so much. :)

simbo1905 profile image
Simon Massey • Edited

Interviewing is a skill you can cram for. The worst thing you can do is turn up to a dream job interview having not just been to a few other interviews to find your narrative and get warmed up. When I am looking for new roles I deliberately say yes to the first call to interview simply to practice even if the role looks far less than ideal. One day that might turn up a great role by pure luck but it always has me come out of the first interview thinking ”I am so rusty at this why didn't I say X and Y?”. I always feel more relaxed and better able to articulate my latest skills and experience at the next interview.

scottishross profile image
Ross Henderson

"A jack of all trades is a master of none, but oftentimes better than a master of one".

I think it's useful to be a "jack of all trades" and have a basic grasp of as many concepts as possible, but you should also specialise areas that interest you.

I am an Oracle APEX Developer. So I will become a master at APEX application building, Oracle DBA and other supporting works. But I have to understand Javascript, CSS, Python and many many other concepts just to find my footing.

katieadamsdev profile image
Katie Adams

I'd not heard this full version of the phrase before: I love it! Also, your experience is something I like a lot. I've just gotta figure out where my specialities/passions lie... 😅

picocreator profile image
Eugene Cheah • Edited

I have something of a childlike wonder for creation, for making things and being able to say 'look, I did this!'

An admirable mark of a great engineer! I cant speak for all employers, but my co founder and I have a soft spot for engineers who have such moments.

But where does it end? Where do I stop and realize I have to settle for one?

On the employer side, no you do not. Just keep growing! At what excites you!

Discuss with yourself and your team leader if you should focus on one area first (and go back to others later), or keep going along learning everything. There is no right answer.

For any company, there will be a large variety of work that comes down the pipeline, just to point to, internally our devs do ...

  • social marketing (yes our devs do take part in events),
  • lots of boring CRUD (how many times is it now?),
  • hard math / infra (our internal test engine does some crazy stuff)

And because different companies will have very different compositions of workload, there is never a right or wrong answer to this ... for even the most random of skills (like how origami, ended up being used in solar powered satellites )

The MMORPG gaming analogy I sometimes use is that everyone is equipped with skills across different elemental types, they can go learn broadly new elemental skills from a huge skill tree. Or to min-max and focus onto one skill path.

With all of us forming a team for guild raids, that faces random monsters and obstacles on a quest to save the world (or kingdom, timeline, etc).

As the "team leader" organizing the team, I then have to recruit party members to align accordingly to the challenges. And as per most RPG games there isnt 1 single answer.

For most startups : I can have the team consist mostly of generalist (a little of everything here and there), but when the level 99 fire element monster comes which none of them can damage, we call upon our level 99 ice mage (who cant do anything else, or a temp part timer for this quest only!). Who would not survive with the generalist protecting the glass canon.

Or I can have a team who is maxed out in 1 element each, and swapping roles when needed.

Or some complex mix inbetween the 2

Unfortunately, just like in some RPG's games, this can also mean that certain team members can end up as "dead weight" not because they are bad (their maxed on 1 element), but the company has entered into a new region, and they have bad compatibility with the given challenges. One way to avoid the above is to discuss with your team leader or company, and see if the alignment make sense for you (do not force yourself, you own your own development)

And that's alright, because they will then be able to find another team who they can help better.

katieadamsdev profile image
Katie Adams

I'm 100% here for that MMORPG analogy holy moly! It feels like everything just clicked into place in my brain - that makes so much sense :O THANK YOU. Gods above I cannot tell you how much I'm going to call upon that when I'm doing team building and project management work in the future. :D

picocreator profile image
Eugene Cheah

Plugging in my comments to another question "Flipping the coin: Should developers design?", on why being a jack of all trade is "ok"

In almost any job I know of on earth. It helps a lot to somewhat know the work of the person directly in-front and behind any process queue. With diminishing rate of returns further down the chain.

So for a hypothetical fancy restaurant example.

Doorman > Waiter > Senior Chef (cook) > Junior Chef (prepare ingredients)

  • doorman/waiter benefits from knowing each other jobs, as it will help them coordinate the flow of human traffic (smoker section, VIP?) in and out of the restaurant to their appropriate tables.

  • Waiter/Senior Chef benefits from knowing each other jobs, as it will help them manage and communicate the demands of the consumers as the orders comes in (especially as ingredients starts running low)

  • Senior Chef / Junior Chef needs to know each other roles, as it will help in similar fashion ensure the flow of chopped fish/veg/meat/etc.

However for example, its really not needed for the junior chef to know the doorman job, as it will hardly improve each others performance. (in most cases, there will be exceptions)

So back the programming + design? Strictly speaking nope its not required, just like the restaurent example.

However with thousands of corporate and government website being built without a designer (due to budget constraints, and that its not meant to wow or sell to users, who instead must use the system, rather then choose to do so)

As you have experienced, while technically functional (if given a manual). It would have been so much more better, if the developer had some simple (not fancy) understanding of design.

So yea, it helps a lot =)

My goto for developers, is to point to material design guide, and ask they try to learn as much as they can from there.

Also one of the key points of "devops" is to bridge this chain, by letting each specialise individual educate across the team (eg. security, educating developers) to help improve the overall product. To help smoothen such flows

Anyway for dev here is the "typical chain"

  • UX
  • UI
  • API for UI
  • Data Services API
  • Database / Infra services (eg. network file servers)
  • Infra Networking & security
phlash profile image
Phil Ashby

Thank you for bringing in an end-end delivery chain viewpoint! When I'm doing infosec awareness talks around the company, I emphasize the fact that a lot of security fails are because of gaps in that chain, disconnects in understanding each other.

This leads me to a thought - perhaps those of us who 'like a bit of everything' are actually well suited to infosec, able to see the gaps and help people close them? Does that appeal @queenoflilikoi?

Thread Thread
katieadamsdev profile image
Katie Adams

It may very well do, Phil. I'd have to look into what you mean by infosec: is it a shortened name for something? :)

Thread Thread
phlash profile image
Phil Ashby

Gah - sorry fell into the acronym trap: Information Security!

Thread Thread
picocreator profile image
Eugene Cheah • Edited

I heard a similar viewpoint from what I see is a growing "trend" in security.

The change from typical "pen test" and "checklist", to "threat modeling", which takes a more incremental approach together with the development team.

Improving a few items at a time as part of the sprint. Across the whole chain (even the segments manually done by humans), onto what makes sense. Instead of overwhelming the team with a 1000 pointer checklist.

In such a setup, the security team is part of the process of the entire chain, and advice accordingly.

As such, recent recruitment by some of these infosec companies are more on generalist, than traditional "infosec graduates". Much to the horror of some of the recent infosec graduates, who is surprised to now realize they are expected to learn programming.

katieadamsdev profile image
Katie Adams

Haha! I'll look into it :D

jessekphillips profile image
Jesse Phillips

James Bach made claim that everyone is a generalist in their field of expertise.

You may be a developer but you know web, game, media... Programming. You may be a web developer but you know angular, typescript, react, websockets... You may be an angular developer but you know...

Thus if you are a jack of all trades in Software development, you may not be a jack of all trades in the rest of your life.

Also knowning more things does not mean you know less about one thing, people have different capacities and knowledge overlaps allowing a generalist to know more about something they've never seen than one who has worked with that one thing.

As for interviews, try to show you are competent in learning new thing. Show interest in questions you don't know.

katieadamsdev profile image
Katie Adams

The idea of putting my skills into a kind of... tree is one I'd not thought about - and I'm loving it! It's also giving me some very interesting ideas for the skills section of my CV. :3 It's also a good reminder that you're right: everybody learns differently.

The interview technique is very unique. What do you think is a good way to actually demonstrate a desire to learn during an interview that isn't just saying 'I'm a fast/good/passionate learner?'

jessekphillips profile image
Jesse Phillips

That is a hard one to answer, which is where I think being curious during the interview is a good approach, you're unlikely to know every technology so if asked if you know some inquiry what it is and how it is used at the company.

You're likely worked with technology and formed opinions, give your opinions, including the bad.

mikeysanchez profile image
Mikey Sanchez

Hey Katie, great article. Your stream of consciousness style is refreshing.

I, too, struggle with this same "problem". As a fellow jack myself I've been absolutely humiliated in interviews by self righteous specialists.

If I ever figure out a way to get around this issue by somehow demonstrating my insatiable learning appetite and ability to soak up and apply new concepts and tech stacks, you'll be the first to know!

katieadamsdev profile image
Katie Adams

Haha, this was such a fun comment to read, Mikey. articles have at least taught me that any self-righteous specialist who declines me a job at a company where I know I'd shine is probably not a company I want to work for. Especially seeing how many and brilliant developers clearly have such an open-minded, encouraging attitude! It's something that needs to spread like a sickness in the programming community.

perigk profile image
Periklis Gkolias

This is a false dilemma IMHO.

You can be both and actually is what most companies look, at least from software engineers, at least from my experience.

The newest trend is being a pi-shaped engineer. The name comes from the Greek letter π which has two "feet" that go deep.

So you have adequate knowledge in many fields. But you specialize in a couple. By learning to specialize and learning to generalize you REALLY learn how to learn.

Correct me if I am wrong, but I have never seen a company looking for someone a) who is not great at anything b) is a one trick pony.

As you can see, I am assuming that you are targeting regular employee status, if you are planning to become a consultant, master of one usually pays better.

To conclude:

  • If you want to work for the web, knowing server side programming AND client side programming AND devops will totally not hurt. Feel free to pick two and become great on those while you have decent knowledge on the other.
  • If you like game programming, you can always do it as a hobby, even you work for a different "sector"
  • If you like mobile programming, the same goes as with web. Server side will help you understand how the things you consume are built. Or even wrote both parts. Client side will help more, on how to design proper interfaces (along with UX principles). Devops dont sound that helpful but who said that devops principles cant be applied to mobile? Eg continuous integration.

Hope it helps.

P.S: We are all imposters, you can find tons of articles in here that will give you insight. Having impostor syndrome can be good sometimes.

phlash profile image
Phil Ashby

This resonates with me too. Aim for T-shaped, keep an eye/ear/other limb on all the things that interest you, while dedicating some extra time to 'get good' (whatever that means to you - completing a course, solving a challenge, getting a job) in one area - probably Web dev at the moment. Then keep at it - move from T to Pi shaped, perhaps if you have the capacity/time/willpower go for Comb shaped! This of course will take time, and hopefully opportunities will arise that lead you through many learning cycles. Each 'deep dive' will also help your broader understanding across the field - some things may fit common patterns, new ideas may be applicable elsewhere.

You may find that some of your earlier expertise becomes less valuable (broken comb teeth?), and you can let it go (Delphi anyone?) or that you need to refresh it for the next challenge, where you will have the confidence of having been there already, and now have a better breadth to apply to re-learning ;)

txai profile image

I have the exact same """problem""", and the answer for me is in the phrase itself: "Jack of all trades, master of none. Still better than master of one". Working in a field where everything changes really fast, I think that the ability of keep new things on the radar, and learning fast and on demand is a crucial one.
As a bonus, the more you see new things, the more you can come up with new solutions and new ways to approach problems.
I would advocate to only learn something deeply when you are really using it to solve some sort of problem (be it creating an algorithm, creating an mobile app, web app or whatever), cuz that will help to polish the final solution

katieadamsdev profile image
Katie Adams

Your approach really makes a lot of sense and considers the ""problem"" in a way I hadn't considered before. :) I think it's why being self-employed appeals to me so much. I can learn or as little as is required to make a really good product.

ssimontis profile image
Scott Simontis

I am similar; I learn anything that interests me. I ended up becoming a full-stack developer. Full-stack in the sense of front-end, back-end, databases, web servers, CI/CD processes, analytics, marketing, etc.

I hear a lot of people talk about how you are holding yourself back if you don't specialize in something, but that has not necessarily been my experience. Maybe I could find jobs a lot easier if I was easily marketable as a generic developer, but I think the job search process moves too fast already so I like having more time to find the perfect opportunity for me.

I make sure to apply my knowledge to address my fears of wasted time. I use org mode in Emacs to document things I learn, and I try to find projects that let me use thw knowledge. For example, I have two servers that act as a homelab so I can learn system administration and DevOps, so I save all my scripts I use for operations and document problems I encounter when doing HW updates or network configuration so I don't make the same mistakes later on.

It has helped me find really cool niche opportunities. I am trying to get into freelancing, but I was contacted about a developer security specialist role which sounds like it might be really cool!

If you're happy, nothing else matters. "Best" practices and general advice that gets echoed is very impersonal; only you can be a light unto yourself.

katieadamsdev profile image
Katie Adams

I like your thoughts on the job search process. It's nice to be in a position where I'm privileged enough to be able to step back and look for the opportunities that really interest me.

And I can seriously relate to the fear of wasted time. When I'm not working, I'm project-hunting, or practicing my skills. My other half thinks I'm mad!!!

That developer security specialist role sounds excellent! Especially since they contacted you about it. Amazing! I really hope things work out for you - either with the application or the freelancing! :D

'"Best" practices and general advice that gets echoed is very impersonal; only you can be a light unto yourself.' ~ hi yes hello I'd like this on a teacup coaster please XD

devagr profile image
Dev Agrawal

I believe that "Jack of all trades" and "Master of one" are not two separate choices, instead it is a spectrum with the two at extremes. Almost all of us lie somewhere in between the two extremes. You might think that you're a jack of all trades, but in reality there has to be one thing that you can do a bit better that anything else on your skill list. I think I am a master of one, but in reality I have a bit of knowledge about a lot of things outside my mastery.

If you are wondering what location should we choose on the spectrum, the answer depends, I believe, on your career choice. If you want to be a developer or engineer (or any kind of specialist) then you'd be closer to the "master of one". But project managers and architects need to be closer to the jack.

katieadamsdev profile image
Katie Adams

This is a really fascinating theory - which I'm very inclined to agree with! It's very realistic given how peoples' careers and attitudes to learning can change so drastically. :)

sergix profile image
Peyton McGinnis

I face the same thought quite often.

There is nothing wrong with having a wealth of knowledge concerning topics you love and enjoy and desiring to learn more about those topics. Especially in your case where you enjoy designing software, websites, games, art, and whatever else you might like creating, having all those skills stretches you. Even if the skills might not have too much depth, having a diversity of them is definitely helpful.

Now, if you truly want to get a job in software, whatever the field may be, then you must decide on that field. It sounds obvious, and it is, but once you figure out what you are most passionate about then spend more time developing that passion. Think to yourself, "if I could only do one of these, which would I want most?"

Again, it's fantastic that you have so many interests, and never stop being passionate about every single one of them. But if you want to be successful in one area, then you need to decide which area that is. Once you have a goal, then stick to it.

kball profile image
Kevin Ball

I like the concept of a "T-shaped person" (originally I think from IDEO) with the concept that you want to have an area that you specialize in and have some depth, but then also a lot of breadth.

Certainly don't stop learning new things, but pick at least one thing to dive a bit deeper on. Going deep on a subject will not only provide you with a counter to the 'lack of expertise' argument/concern, but also will actually help you in learning many of your 'breadth' items better.

When it comes to web development in particular, because there's so many things going on, there is a tendency to get overwhelmed...feel like you have to learn frontend AND backend, and not only that, you need to learn React AND Vue AND Angular, plus node AND python AND whateverall else.

If you try to learn all at once, it is much harder to get to the point where you understand the bigger picture concerns or how things all fit together. On the other hand, if you pick one to dive deeper on, and use that as a mechanism for learning bigger picture concepts, you will then be able to later apply those bigger picture concepts to many things as you add breadth.

katieadamsdev profile image
Katie Adams • Edited

The notion that picking a specialisation will help me improve my 'breadth' items better is fab, and not one I'd considered :O And using that to then understand the 'bigger picture' of something like web development is just brill advice too

biciatoleandro profile image
Leandro Biciato

Of Course, all of us that are seeking a job think about it. I started learning frontend frameworks choosing Angular. I like it and have already studied it a lot but the major of job offerings is about React. That really let me down and because of that, i've started learning React. But I think, it's because that mindset that we find a lot of bug systems around. To build a complex and bug lesser systems, we need to go deep on tech we're using. So, that's a tough situation.

katieadamsdev profile image
Katie Adams

I can totally empathise with your situation. I'm currently looking at front-end and really loving Vue.js - but as you say, React is absolutely massive. You, however, look like you'll be in a good position to suggest Angular as an alternative if the situation presents itself, and that will make you a credit to the project you're on and the industry we're in. A pinnacle for change! Never let things settle :)

davidmm1707 profile image
David MM🐍

Jack Of All Trades or Master of One? <--- It is easy, be both.

Well, maybe it is not as easy.

When I started programming, I saw what local business asked for a developer. The requirements were pretty high.

I had to learn Java, Spring, Javascript, Angular and docker for just a junior position with no experience.

Not only that. One business was looking for an Android developer, other a C# backend programmer, a React + Node.Js developer, etc. So, in order to have more chances, I had to learn EVERYTHING, right?

That's what I did.

I bought an Udemy course on Android development, and then I knew how to create android apps! Another course on Angular, and now I can create Angular web apps! All in the same month!

I learnt a lot!!

Did I?

Months later when I tried to create, for example, an Android app, I froze looking at the screen.

On the other hand, you have ultra specialization in one thing and one thing only.

You focus on, let's say, being a Node.JS backend developer and your choices become are smaller. Or not.

By focusing on one thing, you become GOOD at it. You may say "I love being a Front-end developer" and learn Vue, Angular and React in one year.

But you'll be a 4-months Vue developer, a 4-months React developer and a 4-months Angular developer, not a 1-year developer. And you'll be stuck on the basics, nothing more.

By focusing on one thing, you do advanced things. And employers want specialization.

Let's say you need life-or-death heart surgery. Would you like a 5-year experience surgeon, of a doctor that has dabbled as a surgeon, but also as a paediatrician, ophthalmologist, and more, in 5 years?

So I'll say that being a Master of one is better and a Jack-of-all-trades.

But I said you can be both.

A concept I got introduced a while ago was the T-Shaped developer:

Broad knowledge in many fields, deep knowledge in one.

For example, your passion is backend, you can focus on that. Learn a bit of front-end (basic HTML, CSS and Javascript. Maybe a framework), a bit of testing (Unit tests), a bit of DevOps (how to host your website and configurate it, Continuos Integration...).

This way you'll be an expert of one thing, but that doesn't blind you from learning the basics of other.

Think about a masterchef on japanese cuisine that can make you tacos, pizza or a hamburger if you need.

I liked the T-Shaped concept so much I'm doing that focusing on back-end, but that doesn't excludes me from learning Vue or learning testing and CI (even mobile dev with Flutter).

If you want to learn more about being a T-Shaped developer, I wrote a post about it:

thomasjunkos profile image
Thomas Junkツ

I would distinguish between programming for fun and profit and programming on your daily job.

If you are at home, do whatever you are interested in: even not to program. That's fine.

On the job, it's complicated. It very much depends on the need of your current or potential employer. If you are working in a shop and you are a generalist, you are mostly known and liked for it. When it is time, that the company needs a more specialized you, they will tell you. Perhaps you go down the road and become the-goto-SQL-person (yay!) or the company asks one of your coworkers. Companies you work at - hopefully - know your value.

If you are looking for a new job there are these two perspectives too: the company looking for a generalist or which are open to the tradeoffs having developers without deepest knowledge in one singular topic but come with a breadth of different topics; and on the other hand the company looking for the specialist. And to make things more complicated: most companies do not know what they are really looking for and looking for the one when a better choice would be looking for the other.
Then it is up to you asking yourselves whether you want to work at this company. If you are a generalist, you have from my POV one big advantage: you could always say that you aren't specialized in something specific, but if they offer you the opportunity, you are taking the challenge of becoming specialized. The other way around is harder to argue.

My career decision was: I am open minded and not interested in becoming a specialist in one thing. That means in turn, many high paid jobs for specialists are out of reach. I know what my capabilities are and I know the many things I would never learn, so I was looking for medium paid jobs, where I could follow my interests best.

zejnilovic profile image
Saša Zejnilović

I have been thinking about my specialization for the past 5 years. In that span of time I have been doing things that were "current". Which means only things that my current team needed and in most of the times no one else knew.

Now I am a bundle of random knowledge about DevOps, Dev, QA, etc.* and I think it is helping me in many ways:

  1. I can learn things really fast. Get only the important stuff from a book and move on. I am not specialized but when you need someone to become a "specialist overnight", I am able to.
  2. I think about problems from standpoints of many fields and try to combine them to make the best product (how successful I am is not a part of this discussion)
  3. I am a master of integration and self-sufficiency. In a lot of cases, I know what to do to put all pieces together and to solve things on my own. E.g. I don't have to bug the DevOps guys for every little unstable deploy, but solve it on my own.

* I am still missing Security and it is killing me that I don't know it yet.