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

Jack Of All Trades or Master of One?

katieadamsdev profile image Katie Adams ・2 min read

One of these days, I'll write a Dev.to 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?

Posted on by:

katieadamsdev profile

Katie Adams


Computing student; web developer; dog person.


markdown guide

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.


"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. :)


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.


"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.


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... 😅


I'm finding my passion lies in something like Physics and Math. Those things are well documented and stable. Development on the other hand is too valueless. What you learn today is obsolete by tomorrow. Libraries and frameworks and even programming languages are often so poorly documented it makes me insane. I get tired of poking and prodding to learn a new BS library that will be old news by the time I learn it.

I am glad I have learned so much about development, but most of it feels as solid as quicksand. Math and Physics build on concepts and there is consensus. You can't even find consensus on how a single library much less a programming language should develop. Soon comes Quantum computing. That means a lot of relearning. New languages. New tools. New, new, same, same.

It doesn't even take long to see the repeated cycles in development. Look at how most programming languages are trying to mimic each other either adding functional or OOP features and making a big pasketti soup of breaking changes all willi nilli style. It just gets old.

But I still code on.


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 uilicious.com, 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.


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

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?

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

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

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.

Haha! I'll look into it :D


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


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.


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?'


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.


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!


Haha, this was such a fun comment to read, Mikey. Dev.to 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.


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. irisclasson.com/2013/07/08/stupid-...

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.


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 ;)


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


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.


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.


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


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.


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.


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


Want to create some web applications for fun? We can do it.

Cause I really need someone or something which can inspire me to create software projects again.

Right now, I am looking and trying some other things which I know that it is not what I really love to do.

Creating applications just for a hobby and no one appreciates or using it (OR you cannot earn money from it) makes me wonder if I am in the right direction.

But yeah! Keep pushing and learning. Good luck with your journey. Have fun!


Oof, the money-making side of things is a point I keep forgetting about - especially every time I consider setting up my own business. You need a lot of confidence and self-motivation for that sort of thing because, as you say, it can be quite a thankless occupation.

Same to you with your journey!


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.


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.


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

Personally, I would and do hire people who show me this kind of passion without regard to what you know and don't know. I seek to hire potential more-so than the person that can fly through a grueling Google-like interview process w/o a blink.

Those with passion to never stop learning and who can show me they care about their craft and can articulate ideas back to me with intelligence will get hired over the rock star developer that knows it all, but can't work with a team or articulate and converse with others fluently.

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

Wrong question and mentality here. If hiring managers are being truly honest with themselves and who they hope to hire, what they should be looking for is the person that can apply the skills he/she has to solve the domain problems the company is dealing with. As long as you're learning and expanding your knowledge and increasing the sphere of problem-space you can proficiently solve, your value will always be going up. It's when you stagnate, stop learning new things, or exploring the fringes that you should be concerned.


I would love if your approach to hiring was commonplace. Unfortunately, too often hiring managers who can demonstrate their work under time constraints. I've even heard of interviews where programmers are asked to write their code to solve a problem on a whiteboard! The Google interview example is a very good one.


Yeah, I started writing about the Google Interview process and why it's so wrong for many companies (it may be right for Google, but it's not right for the majority of companies out there). But that got really, really long for a comment reply!

Here's the thing: Job candidates often fail to recognize this is their time to interview the company and just complacently move through the process dictated by the company. One should recognize that the interview process is very revealing of the company itself, so the interviewee gets a glimpse into the company culture based on how he/she is being interviewed. If you're interviewing, then leverage this time and observe carefully what's going on around you throughout the process. If you keep your focus outward instead of inward (i.e. the "is this company worthy of my time?" vs. "am I good enough?" mentality) and take notes and reflect on how you were treated during the interview -- which is admittedly hard to do when under pressure to land a new job -- then you can more readily recognize what the company culture is going to be like. Plus this primes you to question and probe and learn more about what the job at hand will entail and what the growth opportunities within the company are likely to be.

That's honestly such a great mentality: certainly one that I will be applying to my next interview. It might even help to relieve some of the stress by focusing it elsewhere instead.


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.


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 :)


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.


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. :)


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:



There are two things that are usually stressed in an interview, concepts and syntax. When you are a jack-of-all trades, you know more about a lot of things and get very good at learning new tech; BUT, you are competing with developers that focus on only one or two technologies and that can be hard to beat.

Interviews are as difficult for the interviewer as the interviewee, and they will gravitate to what they know. So, get really good at one tech and be able to re-gurgitate concepts. And cross your fingers ...


Either way, there are no bad answers.
I think being a Jack of All Trades is better since it can make you focus in various projects in case you work in a company, and if you work as a freelancer, then it allows you to depend less from any external consulting.
It's OK to focus on what you love and waht makes you feel more realized about your job and being the dungeon master of it.


Katie, read this book: amazon.com/Range-Generalists-Trium... and listen to this podcast: investorfieldguide.com/epstein/ - a lot of it will resonate with you and will motivate you to just keep learning more and not worry too much about having to specialize.


I've added them to the list - thanks for the recommendation!


This is me exactly except I've been doing it for 20 years...

I love all types of development but also Databases, DevOps and hardware related stuff. Always exited to learn every OS, and every interesting language. Right now I can't get enough Rust and Svelte!!

When will it end?? Anyway I feel the same way sometimes. Should I just be an OS guy? Just front-end with Vue? .Net Core back-end?

Will be reading the other comments to see what they think too!!



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

You don't necessarily. You can be jack of all trades and be valuable to your employer. The world needs all kinds of people. I'm the same way in that I don't feel like I've really mastered anything, but I can help my colleagues with almost anything, and I can put together ideas from different areas of expertise, and I can facilitate communication, and I can still build some pretty cool stuff.


I often find myself having similar thoughts, and the "Jack of all trades" is a concept that seems to resonate quite well with self-taught developers because while trying to build your own side projects will eventually lead you into many interesting directions and valuable learning opportunities.

My thinking is: on the short term, you might think that being super specialized is a better turn for your career, but in the long term this can drastically change. Being a "Jack of all trades" is more beneficial on the long run because you have more options to choose from, you are more autonomous, and you can figure a lot more things by yourself.


I believe I'm in the same boat. Here's a similar question I had asked on Twitter and tagged some prominent people I follow in tech. Hope it helps :)


Great article ! I saw myself in practically every line you wrote, as this has always been a struggle for me, and sometimes even turned against me.

Even though it may be seen as a flaw, I strongly believe you are better off being a jack of all trades. Why ? because it means you are being curious at everything. You let your curiosity drive you and ultimately, that will pay off, as you can adapt to a lot of different scenarios.

I found out that it also meant you are always open about suggestion and always be willing to learn. This can be a huge perk during an interview.

It is not forbidden to do what you love doing. And in the end, you don't have to "pick one technology and master it" as some would say: you will eventually and naturally find something you enjoy doing a bit more than the rest. This is what got me in web development, after years of hesitation when I was asked what to do next.

Can you imagine someone saying: "No, you can't learn that because you've already learned enough" ?
Me neither.


Ironically, I can also empathise with your comment a lot too. I'm also settling more towards web development (quite by accident too, as I used to be rubbish at the design sort of thing). This leaves me very hopeful that I'll be as open minded and willing to learn as you've suggested I will. :)

Can you imagine someone saying: "No, you can't learn that because you've already learned enough" ?
Me neither.

Killer ending to a killer comment. :D


Wow, I feel like i read a description of me. Always learning about anything and everything thats even a little bit interesting. Always wanting to make and learn new things. Always wanted to say 'I dids a thing.'

I don't think you should ever stop learning new things. There are so many overlapping pieces of knowledge, even if you think you've learned something new you've probably also gave something else in your brain a +1. Eventually leading towards an expertise in a couple of things and a wide variety of knowledge in other topics.

I once went to an interview and even though they talked about a lot of stuff I never actually worked with, i knew what it was and how it kinda worked helped a lot. They ended up offering me a position.


I've been doing the JoAT thing pretty much my whole career and yes, there have been companies that would refuse to hire me because of not being the "master of one" person. It could be tough.

My answer to that is to find a companies that actually need JoAT roles and it seems to have worked so far. But I must add that the older I get the more I tend to try to settle on a concrete direction, so I guess age may also be a factor.


I like this idea of finding a company that suits you as well as the company looking for me to suit them. It implies a really nice, mutually beneficial relationship which all employees should aspire to have at work. :) But you're also right, it must be nice to settle eventually into a role you know has progression and is a passion for you.


We need to have T-shaped skills. I strive to be a Jack of all trades master of SOME.

Perhaps one thing I am contemplating is learning a technology or stack that overlaps to what I already learned. Why learn Java or node for server programming when I already mastered .net? With the exception of job hunting, learning duplicate skill sets is wasteful unless the other tech offers new software patterns and methodologies that you can apply to the current skills you have.


I like the idea that learning new skills shouldn't duplicate - but a little overlapping is good for the learning process, to help bridge the gap. It's a very sensible approach that I'm definitely going to adopt a little more of.


I'm more of the person to focus on talent stacking by having your own unique blend of skills that differentiates yourself to stand out from the crowd.

This makes it much easier to find your own work that pays you for the unique blend of skills you had cultivated.

Which has work that started to pop up in recent years for the developer community like DevOps, DevRel, UX Design System Designer, Voice AI Assistant Developer.


The talent stacking article was a very interesting read!


This exact thing happen to me today!

I went in for an informal interview, it was an informational interview at a financial tech firm. And while sitting and creating at home, gives you the ability to properly research, try, fail, success.

In person is completely and totally different, especially when caught off guard. There’s a level of comfortability that's certainly taken away, when you’re stumbling into an interview.

I would say focus on the things you like, and dive deep into them. Everything else will fall into place as you focus on the topics you like, everything is connected.


I completely relate to each and every sentence you wrote.
Now I work on a front end specific job, but I love working with and building compilers, game engines, OSs, reverse engineering, utility tools, databases and a lot more things, even though I may never truly become the best in them.
I feel it's ok to be specialised in a specific area, at least on your day job. It gives you more authority in working in it (and cures imposter syndrome a bit). But I just can't stop working on all the other stuff. It would break my brain just thinking about one area all the time.
I think being a jack of all trades helps as you go. Not just to make you a better thinker, but also to use that knowledge, experience and passion to help in your seemingly unrelated day job work. I know it did for me. It gave me an edge in a lot of situations.
So I say, be proud of being a jack of all trades and a sponge for knowledge of all kinds.
Wishing you the best of luck!


I'm so glad you relate. It's great to know that experiences can be shared, especially in our community.
Goodness gracious I couldn't agree more with, "It would break my brain just thinking about one area all the time".
All the same luck to you, friend! Jack of all trades unite 😁


I would encourage you to spend a lot of time learning concepts that are widely used and that you will see often like the principal of a certain paradigm or design patterns.

I would also encourage you to spend time learning about the technologies that you are passionate about in fields you love. (Ex: if you love web development learn about about the front end Hydra)

Finally, if you enjoy are going to learn anything more specific, like a specific framework, stack, or tool. I would temper your enthusiasm with a justification for learning that tool. (Ex: you really want a job in that specialization or it would be immediately useful)

With that said there are of course exceptions for technologies you just adore. I am an angular/angular.js developer, but I'm learning about svelte because I think the technology is incredibly interesting.


Au contrair, why not jack of all trades and' one specialty. ;)

That's what i do, i am mainly a web-developer, but i dable in game-design/development, machine-learning, microcontrollers, etc.

And i like to think that dabling makes my brain more diverse, which allows me to look at my specialty with less biased eyes, and it allows me to solve problems that web-development only occasionally touches.


You had me at 'au contraire' 😂

I agree I do think that is the best way forward. :)


So Firstly, Thanks @katieadamsdev for starting this conversation.

I am somewhere parallel to you in this regard. Studying computing and trying to find what field I should specialize in when I get intrigued by various domains of tech. It's so fun being a Jack of all trades.

I am also confused whether it is good or not.

I read so many (not all) comments from this post. And Thanks to @phlash909 for giving me an idea to try my luck in infosec.


I'm glad the post could be as useful to you as it was to me. :) Certainly the general consensus seems to be: there's no right answer - but a mix of both can't be bad.


I did a triple major in math, physics, and chemistry, and a PhD in math where I took classes from many different branches. Toward the end of my graduate degree I often felt that my peers had a deeper understanding of their areas of expertise than I did. This made me feel like I wasted a lot of time learning about areas that didn't matter as much to my degree.

However, I've come to realize two things. First, being exposed to many new ways of thinking and seeing a diversity of thought has value. Second, putting in the time, being determined to finish, and having curiosity pushes you to become the expert in an area.

A few questions to consider are: 1) Do you want to be an expert in task A, or do you want to be proficient in tasks A, B, and C while also understanding the connections and differences between them, and 2) If you needed to, would you feel comfortable digging deeper into a specific area in order become the "expert".


I can empathise with your feeling of wasted time a lot. My university is simply called 'Computing' so I've learnt a little of everything whereas my peers have become dedicated software engineers or web developers.

These are great questions. I think you're right: I'd rather be proficient in multiple things, whilst understanding the connections between them.


I've been at it 15 years now. I started out in the front because I owned a company and some assclown screwed me out of a website. So I built one myself. I then had to learn PHP or PERL because I needed forms to submit and save data. I kind of just kept learning and learning over the years.


Very interesting. I too like knowing about everything. My current dilemma goes the other way, though.

That is, while I've used a lot of languages and techniques in my personal projects, my professional experience has all been in the same direction. And my personal projects often have not touched the frameworks that are big in the professional world.

So, now my work experience makes me look like a specialist. In the mean time, I think of myself as more of a generalist. And though I believe I could easily learn the relevant frameworks in barely any time at all, I do match the keyword searches for the specialist thing and not other things.


i hate interviews. Why can't people just ask for your portfolio and what you have been able to build overtime to cut a lot of the jargon and shortlist you to a final not so time sensitive interview?


I agree. Interviews are going to be a great source of stress for me, I can tell. 😅


You sound so much me. I was hoping for an answer to the dilemma though.


Definitely have a trawl through the comments then. A lot of great heads have put themselves together and given so much food for thought that I feel practically stuffed for knowledge! It's also allowed me to really think critically about what I want to get out of my career. Hopefully you can find something helpful too! :)


I'm the same and sometimes I have trouble just settling on one thing long enough.

Also I have changed careers which before I was a jack of all trades so I guess old habits die hard for me


life is short so id focus on

ONE cloud (ie OCI)
ONE distro (ie OL7)
ONE hypervisor (ie VBOX)
ONE browser (ie firefox)
ONE ide (ie theia)
ONE lang (ie node)
ONE db (postgres)


That's a really nice way of looking at it. One speciality in many areas. 😁


Your list is a really interesting one, least of all because I can tick a few things off of it already which is very reassuring. :) Do you have a favourite speciality?