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?
Top comments (74)
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... 😅
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.
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 ...
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"
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:
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
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.
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 :)