Soft Skills Engineering - Episode 161: Trapped as a QA engineer and trapped as a generalist
Episode Date: June 10, 2019In this episode, Dave and Jamison answer these questions: Hey guys, I’ve graduated with a CS degree 8 years ago, but due to circumstances I accepted a QA job because I wasn’t getting any ...other offers. Well 8 years later, I’m still stuck in QA and would love to move into development. I tried transferring within companies and applying to developer jobs, but the QA brand is holding me back. Any advice on how I can become a developer when I’m pigeon-holed in QA? Hi folks! I need your wisdom! Please help. TLDR: Senior as a Programmer, Junior as a Mobile developer. When I first came to my job as an intern, my manager asked me what I wanted to do more - backend stuff, testing, or mobile development. I went randomly and chose the latter. It became my profile and I’ve grown to really like it. Over the years, life has thrown me back and forth, I’ve been on multiple different projects not related to mobile, so now I can do… everything? Or rather, nothing. I know a little bit about .NET, a little about web development, writing Visual Studio extensions, IoT, machine learning, Unity game dev.. This is good because I can now quickly learn new things, know a lot of tricky stuff, know how to communicate with customers. I have a decent salary and good feedback. But the huge downside to that is that I stayed exactly at the same level of mobile development as I was 3 years ago. I know basic stuff, a little bit of advanced stuff, but I have zero experience in all the ““hot”” things like RxJava, Dagger, Kotlin. All the job vacancies I’ve seen require a strong knowledge of something particular: be it Android or iOS development, backend or frontend. I’m suffering from a huge imposter syndrom - yes, I have all the ““good”” programmer qualities, I’m smart, but I have no advanced or even medium knowledge in anything. What can you advise me? Huge thanks and… love the show! ❤
Transcript
Discussion (0)
it takes more than writing types fan fiction to be a great software engineer this is episode 161
of the soft skills engineering podcast i'm your host jamison dance i'm your host dave smith soft
skills engineering is a weekly advice show where we answer all of your non-technical questions about
the technical field of software development what is types fan fiction so do you know gradual type
systems stuff like flow and typescript and then there's some in ruby and elixir and a bunch of
dynamic languages have these type annotations that you can add and i've heard a detractor
describe them as types fan fiction especially at the boundaries between the client and server
where you're just saying like i'm pretty sure the server is going to give me something that
looks like this and then you write this fan fiction about what you what you think the type
will be and then you just build the rest of your code off that that is such a good name i need to
find where i heard it from it's some blog post somewhere i'll find it and put it in the show
notes it's not canon it's no it's not yeah and it's therapeutic to me i love just writing out
types and making them flow through the program but it's not productive
anyways that's not what this show's about nope we have some wonderful patrons do you want to
thank those people yes i do thank you to those that are contributing at the level that gets
them a shout out every week including some new ones this month uh so we have matthew voidovich
the agile ventures charity zach grannon tails the weird orange squirrel thing i guess
luis santos nick cantar sean iva robotnik sunny tie sonic the hedgehog and marie rousseau and
chris hogan thank you for donating and if you'd like to contribute you can go to softskills.audio
and click on support us on patreon and you can put any name of any weird video game character
you want or fan fiction i guess yeah any character any principal character really i want to talk
about another benefit you get from being a patron you get to join our slack team and we've had some
cool stuff happen there there's some fun discussions a recent one was about a recent bootcamp grad who
has no experience but has a world record for speed running a megaman game and the question was should
they put it on their resume or not obviously the discussion was interesting yeah it was there was
some there were some perspectives on both sides there was also a couple of offers to give mock
interviews to this person it was cool there's there's cool stuff going on there there's a
little community of people that like talking about this kind of stuff so if you want to join you can
contribute and then we'll send you an email inviting you all right cool question time i'm
just gonna leave it hanging there and whoever grabs the question first wins yoink i'm gonna do
it oh you got it hey guys i've graduated with a cs degree eight years ago but due to circumstances i
accepted a qa job because i wasn't getting any other offers well eight years later i'm still
stuck in qa and would love to move into development into development i tried transferring within
companies and applying to developer jobs but the qa brand is holding me back any advice on how i
can become a developer when i'm pigeonholed in qa ouch so i have a confession to make which is
i guess implicit here in the question some people have a lesser view of qa in terms of what it says
about your engineering prowess and i i'm certainly guilty of this sometimes if i see a resume come
through for a developer role and it's all qa experience then part of me thinks like oh they
just couldn't hack it like they couldn't handle the massive complexity of moving buttons around
on the page fixing the test that is flaky or whatever we actually do right in our day jobs
but but yeah i have a little bit of snootiness and i don't know where it came from maybe i was
born that way yeah right he came out of the womb with his bias yeah but i think that comes from the
industry and i have absorbed it by being in the industry i don't remember anyone saying hey qa is
this job that is easier than software so people who do it are not as skilled but it's just there
in the air and now it's in my lungs and then it got into your bloodstream and now it's in your
brain yeah so this confession has a purpose which is to make you all hate me but the other purpose
is to to say i think that's what's going on here i think i think you're experiencing that as qa
experience is not developer experience so it doesn't it it doesn't get seen as qualifying
you for a software developer role even though it's very technical and and at some places it
can be incredibly technical i know google has software engineers in test where they
write automation and they're software engineers but the code and product they produce is to help
test software that's the end okay that's all the words even the software development engineer and
test role sometimes is stigmatized in the industry i think is it i've never worked at a place that
has them so huh turns out there's lots of stigma in our industry in lots of different ways there's
a lot of ways to do it wrong yeah sadly a lot of things you can do that people say oh that like
using the wrong editor yeah the wrong lint rules it used to be monoliths and now it's switching
to be microservices where those aren't as cool anymore oh you only use microservices instead
of functions as a service but then there are still people who are saying oh use microservices
instead of monoliths and it's just little subgroups everywhere sneering at each other
you know what i'd like to see is some research on qa engineers who convert to regular developers
and the bug rates that they produce oh that would be fascinating yeah if they have superpowers
if they've looked at so many bugs that they can see them in the future yes this character
will create a bug and so i will not type it yes stop yeah bug coming
so how would you do it how would you transfer into into software if you're experiencing this
barrier because it's certainly not like someone saying oh eight years of technical experience
all right you're a senior developer and you'll get hired like that's not what they're experiencing
right i think i think the dilemma here i think there's three aspects to this dilemma
the first one is the stigma that jameson already mentioned which i think is absolutely real
the second one is you have eight years of salary growth that have made you probably a senior level
QA engineer, which now might actually work against you when you're applying for developer
jobs and hoping to get that same level of salary, but you have zero on paper developer
experience.
And the third aspect, I can't remember.
But everything has to come in threes.
So make one up real quick.
it's that you wrote quality assurance and that okay you said something earlier about
bug rate that's what it was i think there's something there about how you can recast your
experience in qa as relevant experience for software development so you wouldn't lie and say
i'm not actually a qa engineer but you would you would play up the parts of it that would
apply to software. So if you are like a QA automation engineer, if you write code to do
that, play up the parts about writing code and building systems. And if you feel like you've
learned a lot about how bugs happen, you can play up that part and say you reduce defect rates on
code. And that's a skill set you bring to writing code. I think you could also push for more
automation if you feel like that's not happening in your current role. A common refrain I've heard
is that folks would like to have more QA automation.
So if that's a project you're really interested in
and it would get you closer to this goal
of working as a software developer,
then you can start writing more code there,
figure out how do you set up like a CI process
and how do you, I don't know,
build some tools and products
that help you do your QA job better
and also get experience in software development.
Yeah, that's a bridge.
And I think that depending on the company you're at,
you can really expand this role
and get a lot of really valuable development experience.
And I'll tell you two different scenarios I've seen engineers, well, test engineers, effectively, who have written automation.
At my last company, we had these engineers.
They were very, very hard to find good ones who could create automated tests that were fast and reliable and actually produced valuable bug reports.
And they were extremely rare.
And the good ones were so valuable.
I mean, we hung on to them like gold.
We loved them.
And that's one route you could take.
The second route you could take is more in my current.
Then they're even more pigeonholed.
It's impossible to move.
No, no, no.
Well, yeah, sorry, I haven't gotten to that.
The next step is as a automation engineer, you are gaining valuable development experience.
And the crossover is that sometimes the product that you're testing needs changes to make it more testable.
And you can justify working in the product code base itself to make those changes to enhance the product's testability.
Oh, so we definitely had that case in my last job.
So we would actually have like special HTML attributes that needed to exist to make the
tests more reliable.
And our automation engineers would actually submit code reviews occasionally to make changes
to the product.
And it was great.
It was like, okay, they get to participate in the regular life cycle, you know?
So then now you actually have product development experience.
So the first scenario is as an automation engineer, you're just writing the tests and
the tests are your job.
The second scenario is you are actually building tooling so that the developers on the team can
write their own tests. And that I've seen be very successful where you're actually building a
product, but it's an internal product. So it's not necessarily customer facing. And so you,
I think, get a lot more exposure to the developer ecosystem and tooling and lifecycle that way. And
I think that experience is a lot more translatable on paper and in the eyes of future employers.
Or it could just be what you want to do. I mean, the question asker didn't include this, but I'm interested why they want to make this career switch. Maybe they can turn their current role into something they'd be happy doing. Or maybe it is going to be a stepping point, a stepping stone, not a stepping point. That would hurt. A stepping nail. You just stomp down on it.
so i mean i think if you're looking to become a i'll just use the term regular developer so
you're not doing testing or qa outside of the normal qa and testing responsibilities that
every developer should already have maybe they break bad they're like this testing stuff's the
worst and then they just become the developer that never does any qa or any testing i've had
too much of this stuff in my life i want to never be like think about my code actually working ever
again just payback yeah so i think like if you want to transition to that role i i think those
are two good bridge options one is you know doing automation which by the way like i said good test
automation engineers are very hard to find and i think that's in part because a lot of them feel
this poll to move into regular developer roles. But because of that, they are extremely rare
and super, super valuable when you can find them. So I mean, I wouldn't necessarily discount that
as a career path long term. But if you do want to move into a regular development role, I would say
moving as much as possible into test automation and away from manual QA would be absolutely helpful.
Yeah, that makes a lot of sense as something you could potentially do in your day job.
i do think i don't know this advice is so cliche and i don't i feel weird about giving it but
i already started the sentence and i can't stop an unstoppable bad advice train
you can do things outside of work to get experience too so if you want to be a software
developer then working on code that other people can see as evidence of your software development
skills is a good way to do that so open source stuff or your personal projects the open source
That's all signal that shows, hey, I have all this QA experience, but look at this code
I wrote.
And there are some trade-offs to this approach, but I do think the world is sort of moving
towards a little bit more of a place where you can judge people's ability by the output
that they've produced.
And that's an option that's more available to individuals and companies are more open
to looking at it.
And so it doesn't matter as much what it says on your resume if you can say, yeah, I've
been doing QA for eight years, but check out this cool project I made and look, the code's
pretty good. And it shows I understand the web or systems or whatever domain you're tackling,
mobile, whatever. Sure. My resume says I've been doing QA, but check out the speedruns that I can
produce. Hand-eye coordination is an important aspect of software development. That's right.
Yeah. I mean, the caveat with advice is always like, it's hard to have a life where you can
have a day job and then go have a second unpaid job producing artifacts that get you your next
job and not everyone's in that position for sure in fact speaking of not everyone being in this
position what do you think the chances are that you could take these eight years of qa and just
say forget about all the salary growth that i've had during those eight years i'm starting over
from ground zero as if i was graduating with my cs degree today i'm not even going to put that on
my resume and i'm going to go apply for my first developer job you would have the graduation date
though right yeah you'd have to fall oh okay all right i'm just kidding that makes sense i was
gonna say you got a gap there yeah you could just say i've been backpacking for the last eight years
i've been working on my speed and not doing qa and believe me i did not try to quality assure
anything the quality of my food unknown just ate it
that feels bad but i don't know why maybe because it's lying oh the lying part yeah that part feels
bad because it's lying but the part about just saying well i have all this experience that feels
irrelevant i won't include any of it i think it's better to recast it as a positive because
i believe that all of that experience has made you more fit to be a developer than someone
fresh out of a CS program because you've had some experience on technical projects you've seen
and worked with a lot of different kinds of people like your your soft skills are probably
better than a fresh CS grad or whatever you were like as a fresh CS grad okay let me ask you this
then so you've had eight years of QA you try to spin it in a positive light for being a developer
you go to your next job interview and you say look I know it says I've been out of school for
eight years, but I am not looking for an eight plus year salary as a developer. I'm looking for
a one to two year salary. So please interview me and offer me compensation with that context,
not with an eight years of experience context. Do you think that companies would not short circuit
if you said that to them? Would not short circuit? Yeah. Like, could they actually process that?
Oh, I think maybe before the interview, if you applied to those roles, that might be a better
fit but those roles don't even i mean it's such a common complaint to hear that there are no junior
developer roles so right yeah i mean i think if you say hey i'll work for cheap then the companies
can usually find a way to make that happen for you you can find a way to make you pay yeah
what about internships in this position would you apply for internships no i wouldn't why i have to
say why don't i can't just say yes or no to these things yeah you do show your work i mean i don't
think i would fit in with what they want out of interns in my mind interns are generally fresh
college grads unless they have specialized programs that are aimed for career switchers
or bootcamp grads or something like that sometimes but most internships are fresh college grads and
there's a lot of babysitting and handholding involved and the process is all geared towards
people that have no experience at all in the industry. And that's not you. I think it's the
same reason why I wouldn't leave out all my QA experience, because I think you can do more than
an intern would be able to do on average, even if you don't have eight years of professional
programming experience. I think you just need to start bending the arc of your QA career more
towards software, whether that's in your free time or on your day job, and then use that to
have more recent relevant experience, even if you have this long backlog of less relevant experience.
Okay. Well, did we answer it?
I think so. Yeah. You made me show my work and I feel like I showed it. I said words.
Good job.
Thank you. Do you want to read our next question?
All right. This comes from an anonymous listener who says,
Hi, folks. I need your wisdom. Please help. TLDR. I am senior as a programmer,
but junior as a mobile developer. When I first came to my job as an intern,
my manager asked me what I wanted to do. Backend stuff, testing, or mobile. I went
randomly and chose the latter. It became my profile and I've grown to really like it.
over the years life has thrown me back and forth i've been on multiple different projects not
related to mobile so now i can do dot dot dot everything question mark or rather nothing i
know a little bit about dot net a little bit about web development writing visual studio extensions
internet of things machine learning unity game dev this is good because i can now quickly learn
new things i know a lot of tricky stuff know how to communicate with customers i have a decent
salary and good feedback but the huge downside is that i stayed exactly at the same level of
mobile development as i was three years ago i know basic stuff a little bit of advanced stuff
but i have zero experience in all the quote hot things like rx java dagger and kotlin all the job
vacancies i've seen require a strong knowledge of something particular be it android or ios
development back into front end i'm suffering from huge imposter syndrome yes i have all the
quote good programmer qualities i'm smart but i have no advanced or even medium knowledge in
anything how can you advise me that is the key to a good programmer quality is
media media knowledge no advance or medium knowledge in anything this is a really good
question i want to go back to something though dave you uh you said you expanded iot to internet
of things but how do you know that's what it actually stands for what if it's like indigo
or teal what if it's color theory okay maybe it is inside or terrace if you're trying to decide
where to sit at a restaurant is that what the waiter means when they say iot to me this is an
iot enabled restaurant yeah i think so i'm gonna need an acronym okay expansion from you though
before we can proceed i'm just kidding yeah so this person is kind of more of a generalist and
would like to be more of a specialist i do want to point out i don't know what most of those hot
mobile things they said are rx java i guess i can infer because of rx js or reactive extensions
it's probably reactivity stuff i have no idea what dagger is kotlin isn't that like a compile
isn't that a JVM language that isn't one of the other JVM languages? That's all I know. It's
another JVM language. It's hot. Okay. Yeah. I guess my point is, I don't know anything about
mobile. Now we've established my credibility. Okay. Good. I wonder how common, here's my actual
point. There's a difference between stuff people use to get work done and stuff that shows up on
Hacker News as the cool technology in that industry. And I wonder if the question asker
is being a little bit biased by feeling bad that they don't know all the cool Hacker News stuff,
when really, I imagine most of the day-to-day life of the average Android developer is not
governed by Dagger or Kotlin or RxJava. I don't think that necessarily disqualifies you from
being a good mobile developer. What do you think makes a good mobile developer? It's like,
you know the platform SDKs really well, and you care about user experience, kind of, right?
I think RxJava is the only thing that makes you a good mobile developer.
You went on iOS?
Oh, yeah.
You spend all your time scaffolding and infrastructure so that you can use RxJava to build your iOS app.
Yeah, I think you're onto something there.
Also, I think don't read too much into the technologies listed on job descriptions.
sometimes those are listed not because they are requirements but because they're trying to attract
you to to work with them because they have all the hot stuff yeah you'll notice it never says
and our code is really good to work with too it's a lot easier to say we use dagger than to say
you will want to use daggers on your own eyeballs when you see our code base
yes yes it is so this this speaks to me in a way because i i am so deeply a generalist i i love
well a generalist except i don't touch mobile that's like the one area i never do anything
with but everything else i i love all of it and bounce back and forth between a lot of it
and that does cost you something in depth yeah and you know now that you mention it all the
mobile developers i know which admittedly is a small number maybe half a dozen or so
none of them cross over into other technologies not okay one or two of them have occasionally
but by and large like once you go mobile you kind of lock in and uh the people also like
on other on my teams i've been where i do have generalists the generalists don't touch the mobile
code base it's like there's a mobile team and they own that that kind of matches my experience too
i think some of the mobile devs i worked with are are really talented and they are able to work in
different areas but they're definitely mobile specialists and the non-mobile specialists
generally haven't worked in mobile very much either what is up with that because like every
back-end dev is like oh i could do front-end sure i just choose not to you know but then on mobile
it's like they're like oh i couldn't do mobile that's special skills maybe it's like approachability
where it's a little bit easier to just dive into front-end and feel like you can be productive
with less specialized knowledge
where the platform APIs are such a big part of it.
As a backend dev, you often are working with HTTP
and that general world of HTML.
And I don't know, lots of backends will render HTML.
So maybe the domains cross over a little bit more
where mobile and backend,
the only thing they share is kind of data transfer stuff.
But there's still some stuff you can generalize
about generalist versus specialist
the question asker wants to break into or get hired as a specialist and feels like they have
too much general experience and not enough specialized experience right i think so it's
like the broad themes that apply to lots of things machine learning iot unity game dev i feel like
those are all areas you could specialize in that's true so yeah what do they do i mean i think that
there may be this might be much ado about nothing where you know you're worried about all these job
openings that you see and they seem to have requirements that exclude you but in reality
i would try and just go for it anyway and frankly you can probably get proficient enough with a
little bit of outside time study in some of these hot things like rx java dagger and kotlin even
though you can't put it on your resume i mean everyone is sympathetic to the to the developer
who says i'm interested in kotlin i've done some projects with it i want to know more about it
but my employer it wasn't right for them at the time and so we haven't been able to use it at work
right like everyone says that yeah i can tell a couple stories about that so one my current role
i was hired despite very clearly not having some of the required qualifications in the job
description and i talked to my boss about that a while after i was hired and he he basically said
we described the ideal person and we were pretty sure that we weren't going to get them we would
have to kind of make trade-offs in one area or the other where there's it's unlikely that someone
with these qualities would with with expertise in everything we've listed here would apply for this
job so uh i think people are generally pretty okay making trade-offs with requirements another
thing we just barely hired a person on my team who um is is explicitly joining because they want
to work in this technology that we're working with and they don't have professional experience
with it they've been kind of poking at it and trying to learn it on the side and and have some
personal experience but they don't use it in their day job and we're totally okay with that
can you hear these loud sirens yes this is jameson disrupts the podcast episode oh they're gone now
okay well i think yeah they better be gone because they caught the bad guy yeah so i i have had that
same experience both as i've applied for jobs and as i've looked for candidates in fact i've
started changing the way that i hire from instead of saying you have to have this laundry list
of experience like you know like this list that we see here in this question but instead i've said
things like i want you to have experience with two or more of the following and it's like eight
different things and it's not so much that i care that you know how to use tool x it's that i i care
that you know how to learn new tools and that you're interested in like being a polyglot right
like i specifically am interested in generalists because even though you see rx java and dagger
and kotlin from this question on this list those are not going to be the technologies that you're
using in two or three years, right? And so I'd like to hire people who can demonstrate the ability
and desire to learn new things so that we can carry our company technically into the next
generation of quote, hot technologies. Yeah. I wish I knew more about mobile to answer this
question. I haven't hired mobile developers. I've just worked with them as a colleague. So
some of this is speaking from ignorance, but I feel like a lot of mobile is centered around
user experience and it feels like a really good case for a demo project to just really sell the
the skill set you have where if you make something that has a cool interaction that feels really fun
to use or demonstrates that you've are able to think about building good user experiences i think
that would carry you a long way and probably matter more than your specific deep knowledge of dagger
i have to go look that up i just looked it up what is it it's yet another dependency injection
framework okay that makes sense like dag directed acyclic graph is that what they're going for oh
you're probably right huh okay you probably already know this
yeah that's the other thing i think a strong generalist has some pretty unique advantages
for jumping into a specialty where because you've done a lot of different things you've seen a lot
of different shapes of technical work and i i bet a lot of mobile stuff kind of looks similar to
those shapes when you squint at it so i think i think it can enhance your ability to pick up
these specialized skill sets i will tell you this though like mobile does have one very special
property that makes it hard i think for non-specialists to be super productive and that
is there are so many sharp corners in the mobile world when i talk to some of my android developer
friends and they tell me about things where they're like oh yeah well android offers four
ways to do this three of them will lead to ruin and and the good one changed in the last release
it used to be this other way but they switched it yeah or the good one only runs on 10 of android
devices yeah and it will only lead to ruin next year when we figure out all the problems
so it's like there are just so many sharp edges and things that you can do wrong in mobile and
i think a good mobile engineer has the the experience to not lead your project down those
dark alleys and get mugged by Google. So I don't know, you know, and iOS is I think a little bit
in the same boat. Your, your, your metaphor just caught up with me.
Yeah, so true. I mean, that's what they all complain about. They're like, Oh, yeah. And
then Google told us we couldn't do that anymore. You know, anyway, so, so you do have that to
contend with, I think it's a lot less about specific technologies and more about, you know,
I've got all these all this scar tissue that tingles when I see code going down the wrong path.
Yeah. So, you know, that that you just have to earn, I think, with experience. And that's one
thing that I think you're going to be up against here. And you might get caught out in an interview
situation where they're trying to tease out whether you have that experience to know whether you
should use, you know, feature X or Y in the Android ecosystem or iOS ecosystem. So so that might be a
headwind that you have to fight against. But generally, I would say just go for it. I don't
think it's going to be that big of a problem even though as we've pointed out there does tend to be
this this bifurcation between mobile developers and the rest of the developer community we've
said this before but the cost of applying to a job that you might not be qualified for is so low
like yeah worst case they send you a nasty gram and say how dare you yeah you apply but real worst
case is they just never respond and best case is you get in and get interviewed and it goes well
so yeah i don't i don't think you have to worry too much about the imposter syndrome part for
applying to these jobs i i do agree with you dave that my impression from the outside of mobile dev
is that it requires a lot of specialized platform knowledge maybe i have a lot of specialized web
platform knowledge and i just don't see it because i know it but you probably do from the outside
mobile there's just a lot of sdk specific stuff you have to know yeah but good news you can learn
that because you learned inside or terrace and machine learning and all that other stuff inside
or terrace and and the good news is you're not an imposter you just bring a ton of ancillary
knowledge to the space that all the other mobile developers probably don't have just based on my
experience with mobile developers like how many mobile developers do you know that are also like
this level of experience with all these different things yeah that's a good point yeah you're not
an imposter go for it you're the genuine article yeah okay have we answered the question i think
so good luck good luck if you want your own questions answered you can go to soft skills
audio and click ask a question and if you like what you hear you should subscribe you should
rate this on whatever rating app you use that allows you to rate stuff like your text editor
yeah just figure out how to type the utf-8 star character and then just type it in whatever open
text field you have uh yeah that'll help we'll catch you next week
