Soft Skills Engineering - Episode 161: Trapped as a QA engineer and trapped as a generalist

Episode Date: June 10, 2019

In 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)
Starting point is 00:00:00 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
Starting point is 00:00:48 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
Starting point is 00:01:31 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
Starting point is 00:02:20 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
Starting point is 00:02:59 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
Starting point is 00:03:51 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
Starting point is 00:04:37 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
Starting point is 00:05:22 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
Starting point is 00:06:09 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.
Starting point is 00:06:48 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
Starting point is 00:07:34 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,
Starting point is 00:08:03 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,
Starting point is 00:08:19 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.
Starting point is 00:08:49 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.
Starting point is 00:09:07 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.
Starting point is 00:09:35 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
Starting point is 00:10:09 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
Starting point is 00:11:18 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
Starting point is 00:11:58 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
Starting point is 00:12:34 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.
Starting point is 00:13:07 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
Starting point is 00:13:45 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
Starting point is 00:14:39 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?
Starting point is 00:15:21 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
Starting point is 00:16:08 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.
Starting point is 00:16:48 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
Starting point is 00:17:13 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
Starting point is 00:17:52 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
Starting point is 00:18:36 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
Starting point is 00:19:35 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,
Starting point is 00:20:19 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
Starting point is 00:20:54 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
Starting point is 00:21:44 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
Starting point is 00:22:25 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
Starting point is 00:22:55 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
Starting point is 00:23:28 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
Starting point is 00:24:08 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
Starting point is 00:24:55 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
Starting point is 00:25:37 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
Starting point is 00:26:16 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
Starting point is 00:27:01 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
Starting point is 00:27:46 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
Starting point is 00:28:33 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
Starting point is 00:29:10 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
Starting point is 00:29:53 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
Starting point is 00:30:35 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

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.