Conf42 JavaScript 2021 - Online

Five Tips for Success: How To Thrive At Your First Dev Job

Video size:

Abstract

During this talk, we’ll go through 5 tips that are crucial for getting through those first six months at your first dev job. They may sound fluffy or even obvious, but they are absolutely essential to keep in mind when your feet are on fire and you don’t know what to do

  • Ask and You Shall Receive
  • Write Now, Worry Later
  • Go Deep, Not Wide
  • Don’t Put Your Teammates on a Pedestal
  • Pseudocode is Your Friend

Summary

  • How to thrive at your first dev job. Five tips for success. Riaz Virani is a freelance web developer. You can read more of his stuff at Riazv me.
  • I want to take a second and have you introspect a little bit. Think about what your experience was like when you did join the industry. I want you to channel that energy because it'll help you empathize and help other people on your team as they're joining.
  • Our character Ruby musters up the courage to go join a software bootcamp. She soaked in a ton of knowledge and information. She does everything in her power to get a job. Some of you may have had a struggle to get to this part.
  • A number of people, especially now that I've been doing this for like twelve years, really struggle when they join a team. There's a lot of commonalities in the struggle that first year devs experience across companies. These are some of the tips.
  • A lot of junior developers, they just don't ask enough for help when they get stuck. Don't put your teammates in a pedestal. You cannot wait forever to ask for help. The final tip is more of a tactical tip. It's called pseudocode is your friend.
  • You're going to write a lot of mediocre code as you improve. That doesn't mean you're bad, it just means you're learning. The thing within your control is kind of how you respond and the answer isn't be perfect.
  • Sometimes boot camps teaching way too many things or people on their own. Focus on one specific technology that your team needs help with and then specific expertise will give you the credibility and the ability over time to be productive.
  • Don't put your teammates on a pedestal. Your job is to communicate about the code across your team. Tell the senior developer what you found and ask for clarification. The earlier you can communicate, the better benefit you'll have.

Transcript

This transcript was autogenerated. To make changes, submit a PR.
Hi, everyone. Welcome to my talk. My name is Riaz Virani. I'm a freelance web developer and you can read more of my stuff at Riazv me. Today's topic, the thing I'm going to talk about is called five tips for success. How to thrive at your first dev job. And forgive me, this next slide is designed obviously for a talk that's live. But I do want to take a second and actually have you introspect a little bit because I'm assuming that a number of you especially are kind of from this perspective of like you actually are breaking into the industry. You either are about to start your first job, you're either in a boot camp looking to finish your first job or, sorry, finish the camp and get your first job. Or maybe you're just in the throes of the challenges I'm going to talk about in the first few months. If you're not, if you've been doing this for a few years, this is kind of your chance to just take a second to reset yourself and think about what your experience was like when you did join the industry and kind of break into your first job. I want you to kind of channel that energy because it'll help you empathize and help other people on your team as they're joining. So I'm going to tell you a little bit of a story. Right. It's going to kind of guide us through this talk. So I want you to meet a friend of mine. Her name is Ruby. She wants to be a developer. And yes, I am a ruby developer. So that's kind of the inside joke there. Sure, some of you don't like Ruby or rails or whatever, that's fine, you don't have to, but our character is going to be named Ruby. So Ruby musters up the courage to go join a software bootcamp. It's one of these bootcamps that is sort of fairly common. It's a huge source of sort of developers into our industry. One of these like three to six month things. She's a little bit nervous and anxious, as you would be if you're leaving your job and entering something new and paying a lot of money. Those of you might notice there is a boot on top of the building because it's a boot camp. That's what they did. So Ruby comes in and kills at the boot camp, right? And some of you may have actually felt that you struggled a bit in the boot camp, but in this case, doesn't really matter. Our character, Ruby, did a fantastic job and soaked in a ton of knowledge and information. She finishes the bootcamp and she is really diligent about working all of the things that the bootcamp and everything on the Internet is telling you about how to get a job. She does everything in her power to get a job. She builds a portfolio site. She's out at meetups, networking. I guess in today's age, if you're in a place that is mostly doing virtual work, you're networking on slack or other sort of online technology groups. She's doing open source projects. She's doing codecadas to prepare for interviews and she lands the job. She does an amazing job at her interviews and she lands the job. Some of you may have again, had more of a struggle to get to this part. And I don't want to dismiss how much of a challenge it is to get someone to trust you when you don't have a ton of experience to say, yes, I'll take a chance on this person and give, give them a shot and have them join my team. It is actually quite challenging, and a number of you probably are in that phase where you're trying to get it. But now here comes the next question. Now what? So the gist of this talk is not about everything we've talked about so far. It's that a number of people, especially now that I've been doing this for like twelve years, really struggle when they join a team. I'm a freelance developer right now, but in my past life I've been a CTO, I've been a project manager and run teams. A lot of new developers have come onto my teams. It turns out that there's a lot of commonalities in the struggle that first year devs experience across companies. Again, first year. I'm talking specifically about their first year in programming in general as a professional engineer, not necessarily just their first year at that particular company. I'm hoping somebody can sympathize. Yeah, there's a lot of challenges that kind of occur. I just don't think we talk about it enough. We talk so much about how to get people jobs, we don't often talk about the things that they need to do to succeed at those jobs when they break in. And there's a couple of skill sets that aren't even purely technical that I found consistently help people out. In some ways, I'm actually coming to this talk from the perspective of actually had a lot of challenges, just like everyone has when I'm also helping first year devs as well, because it's a really big adjustment. And I think a lot of the failures actually come from people like me and leadership who don't actually know how to onboard those people. But if you're a junior dev, you can only kind of control what's in front of you, what you can do. And these are some of the tips. So here are the famous five tips. Here's the meat and potatoes of this talk. I put kind of catchphrases around them and we're going to dive into each single one as we go along. The first one is ask and you shall receive. So the idea there is to make sure that you are not just struggling silently like there is a time and a place to ask for help. And knowing when the right time is is kind of an art that sometimes senior developers have gained over time. But a lot of junior developers, they just don't ask enough for help when they get stuck. Secondly, it's called right now, worry later. And that's really about not being afraid of your code. You're going to make mistakes, you're going to write a lot of stuff that doesn't work, and you need to have the courage to kind of just go through that process. Three is go deep, not wide. Specifically, this is a response to a lot of boot camps that try to, as a marketing pharmaceutist, teach you a lot of different things because you can kind of say, oh, I learned this. I learned how to do iOS development and python development and front end development and Ruby development, but it's not actually the right way to approach it. When you're trying to enter a company and make sure that you can contribute in a way that's productive and respectful of your team and for your own growth. Fourth, dont put your teammates in a pedestal. So the crux of that idea is to not assume everything that a senior developer tells you is actually the right answer. Most of the time, they're your peers. They're figuring it out as well. I've seen a number of times where I might give someone an idea when they ask me for help. Turns out it's a bad idea. And they didn't tell me when we kind of went through it, when they worked on it for a little bit because they were afraid to tell me I was wrong. And this just came from kind of the culture of that company, which causes a lot of problems because people actually need to be able to voice their opinions freely. The final one is more of a tactical tip. It's one of the few that's less sort of abstract. It's called pseudocode is your friend. The idea here is when you're joining a new company, you're starting out, you don't actually have the syntax of second nature of whatever programming language you're in and senior developers generally do. And so to separate out the stages of when you're programming into different phases, that'll actually help you get through the logic and then the syntax separately. But let's get into detail. So the very first tip, ask and you shall receive. So we're going to go back to our story. Ruby's going to join us along the way. She's our friend, of course. So Ruby gets a ticket, but she's not sure how to proceed. She's afraid she's going to do it wrong and be found out as a fraud. What does she do? So this is the classic, like imagine you're a brand new developer, you join a company and they're like, great, they do some onboarding, but at some point they're going to ask you to write some code and they give you a ticket and you're sitting there. Some cultures, they may pair program with you and that's great, but in many they don't. In which case you're sitting there being like, I don't know how to approach this, or you may have an inkling of how to approach it, but you're absolutely terrified of being found out as an imposter. And sort of impostor syndrome in the software world is a really common thing. And that probably should have been the title of this section. So here's a really important point. You cannot wait forever to ask for help, or you cannot just throw your hands up and give up. I've kind of seen people generally, when they're doing this wrong, oscillate on one of the two extremes. They'll get a ticket and every morning in a stand up they might be saying, I'm working on this, I'm working on this. Without telling anyone. They're really struggling and they have kind of just been thrashing around. They haven't really figured out how to tackle it. And the other one is they at some point get so frustrated, they come and say, I just can't do this, and they throw their hands up in the air. And that tends to be sort of the worst outcome. Also the fact that more time they spend on it now, the harder it is to ask for help. And therefore, like, you'd be kind of being, obviously, I haven't gone anywhere in three days and I've just been giving an update that I'm just working on it. Obviously the answer is to ask for help, but I want to kind of address a quick point. Usually whenever I do these kinds of presentations and I've been in the audience, there's an element in me that listens to sort of the proposal of the sort of soft skills thing to do. And there's always a hidden part of my mind that's kind of like, yeah, it's not that easy. And there's this sort of like secret internal link of what the argument is that doesn't really hang up. And the argument here is a junior developer could say, but won't I annoy people if I ask for it? Won't I be found out as an imposter? And there's kind of a very specific answer here, which is you have to ask, but you have to ask intelligently. And I just put a paragraph in here of what I would say if I was in that circumstance, which is probably the best illustration. Right. I'm just going to read it out loud. So let's say you're in a morning stand up. Hi, everyone. So I'm currently working on x feature. I'm still working through the right approach for it, but right now y seems the best. I'm going to keep at it for today, but if I dont make good progress, I'd like to grab someone else from the team really quickly tomorrow to talk it through and get me unstuck. So kind of think through what happened there, right? I didn't just go and say, I don't know how to do this, and throw my hands up in the air and ask for someone else to come and get involved and just sort of give me the answer. I kind of was like, look, I do need to do some work on this. I need to spend a little bit of time thrashing to poke at kind of the approaches I'm thinking of. As a result, when I do have, if I can't make any progress and I don't feel confident with the approach, whenever I do ask for someone's time, I can be like, okay, here is the problem. I thought this, I tried that. I tried that. I looked this up online, it's not working. Help me get unstuck. And I didn't also ask. Unstuck is a pretty specific word. It's not do this for me. I can't do this. It's help me get the next incremental bit of information that I need in order to move forward to maybe the next part of the challenge. Right. The next part of the ticket. And as a manager, this would be amazing to me because I'd be sitting there going, okay, so you've identified there's a problem. You've given me those information that right now you're actually struggling. So I'm already forewarned about that. You've given me a timetable in which you're going to work on it yourself. And then you've told me what your next step is going to be, which is not to throw your hands up in the air. It's to ask for a limited piece of help to get you to the next phase. And I'm like, you have done my job for me as a manager. Right? You will gain so many brownie points if you try this approach where you're being very considerate about how much time you're drawing, but also making sure you keep progressing and communicating versus doing one of those two extremes of either working on it silently and thrashing or just giving up too quickly. So next point right now, worry later. So this is a little bit of play on words and we'll go back to Ruby to kind of get an example of what we mean. So Ruby does the best she can and puts up a pr to the ticket we talked about in the last point. The next day, it's got 20 comments and has been sent back. She will have to start over. She's crushed. She's not even sure if she wants those job anymore. If you're someone, and again, if, you know, if you're more experienced, this happened to you, right? And if you're a junior developer, it's definitely happened to you where you think you've got it and you put it in and someone just shits all over your code and it just really crushes you. So I'm not going to really spend a lot of time on the point that it's completely okay to mark up a pr, but if you recognize someone's new and they may really be trying to get their confidence, you should probably include a note in there being like, hey, by the way, I know this is a lot. You still did a really good job. Let's just work on these and we'll continue to improve. Like, giving them that little pat on the back can be really dramatic, but let's say you didn't get that because it's, again, as a junior developer, not within your control. Here's my answer, and this is somewhat controversial. When I've kind of talked about this with other people, the thing within your control is kind of how you respond and the answer isn't be perfect. And the answer isn't, oh, just feel good generically. You have to kind of get an understanding of the fact that you are new. You're going to write a lot of mediocre code as you improve. You need to embrace it and just ask your teammates to embrace the process as well. What I mean specifically by that is like, interview examples. You think about classic ways to get good at anything. You're going to be bad at it whenever you start. If you're just starting in the industry as the first time you're really writing code in a professional context, that means most of the time you're not going to be doing things as well as someone else who's doing it for five years. That doesn't mean you're bad, it just means you're learning. Fitness is a good example. You cannot beat yourself up. If you think of fitness when you go into the gym and you can't do the pull up like someone else can, it just means it's part of the process. You need to embrace the process and not necessarily be upset that you're not meeting some standard you've set out. So here's the sort of like, little voice in the back of your head, right, thinks it's like, right, so I just do my job poorly, just like, write shitty code and that's somehow okay, right? And have everyone look me that I'm the weak link on the team. Not really your job. This is kind of all of our jobs as engineers is really to try. And if you're new, I know there's a whole bunch of personal emotion mixed up in that because you're also trying to establish your own career. But there's a very big difference between someone who's trying their best and continuing to improve, and people notice that. And the thing I put on here is like, shitty code is very different from flawed code written by people trying their best. It just is. I mean, I'm sure everyone who's been doing this for a while has noticed people who just don't care. And if you are also consistently showing that when someone does point out a way to make your stuff better, that you really respond, they'll give you a lot of leeway in the sense that you're not going to be constantly battling people's response to you as like, oh, you're the one who's just doing stuff, really. So don't be afraid of your code. Like, the biggest point here is don't be afraid. Whatever it is, just keep going, just keep going, just keep going, you'll get there. All right, point number three, go deep, not wide. So as I mentioned earlier, this is really a response to how sometimes I've noticed boot camps teaching way too many things or people on their own because there's such a plethora of things you need to do to learn DevOps to front end, to backend to whatever in the world of web development, they just spread themselves too wide at the start. So let's go back to Ruby continued. Ruby loves learning. At her boot camp they taught her seven programming languages and frameworks. She feels overwhelmed with where to focus on her new job. It all seems too advanced compared to her boot camp. I think what kind of happens here, this is really what happens. Boot camps and those tech zeitgeist if you're trying to beat up on the news, especially in the JavaScript world, there's a little bit of an excessive obsession with the new and excessive variety and it's kind of your job not to get sucked into it. Not because learning new things is bad, but most junior developers don't fail because they dont know enough of a diversity of things. It's because they don't know any one thing sufficiently well to be productive on the team. So they're kind of like master of none. And that's kind of where you want to get in the long run. But in the immediate term when you're just new, you want to be able to get really good at one thing, and sort of voice in those back of your head is like, well, if I do that, I'll never really be a fully routed developer. The answer is not exactly focus is important when you start, you get really good at things when you focus on them, and so you focus on one specific technology that your team needs help with and then specific expertise will give you the credibility and the ability over time to be productive. Like you'll learn the rest. And what I mean by that is like hey, you're a junior developer, they know that you're going to need additional time, additional support, but let's say you have a good example is like there's a lot of developers that are more backend heavy and then I'm thinking from a rails perspective, right, because rails is backend heavy and then they'll learn JavaScript in the front end really just because they have to to deliver their application. But usually they're not design experts, right? Most back end developers dont really like CSS, so they've kind of hacked things together or maybe just used bootstrap or sort of a theme and they really struggle with that. Well, it turns out maybe you specifically like CSS and you like design and you like learning about that stuff even though you want to learn everything else. Focus in that area. Talk with your manager, be like, hey, what if I focused here? I really cleaned up our css. Well, now your manager has this sort of foundation so that when you're interacting with the team, you have a locus of expertise and credibility. You can be productive and contribute. And now you've got all this time, all those other stuff that goes on in that team is going to get absorbed into your head right, over time. Because you're probably going to go from CSS to more and more into front end stuff, right? Because you're going to be executing features and then from there you'll expand more and more to the back end and then more and more to the DevOps, right. It'll always be that there's another challenge you can focus on. But if you're always in training and not really able to contribute to the team, that's going to cause them to have a much difficult or different opinion on of you. Because if you solve the CSS problem and then you ask for help, well, now it's like, no, this person was awesome. They did a great job on that. It is worth my time to try to teach them and help them. So that's a really good thing to keep in mind. So next point, don't put your teammates on a pedestal. We talked earlier about the fact that senior developers are not magicians. Right. Software engineering is an art. So it's a very different perspective than maybe some other things that have these very precise inputs and outputs. So don't assume they always know what they mean or that they've communicated it clearly, or that they wouldn't try the idea they gave you and then realize, oh, it sucks, and try something else. Right. So let's go back to Ruby. A senior developer gives Ruby some guidance on the ticket, but it's not working. What does she do? She doesn't want to disrespect the senior developer by doing it her. Hmm. So what do you do? I think here it's kind of related to the first point and it's really about communication. But you do have to have some courage to realize that you cannot force a square peg into a round hole. And your job, like your responsibility to the team, is not necessarily to not say, I don't know if this is the right approach. I'm trying this and it's causing a lot of friction. It's your job to voice the pain and friction that you're noticing. That is actually the most important thing you can do. Oftentimes what will happen is it turns out like whatever you're noticing, if you actually point it out, the senior developer is going to be like, yeah, actually, now that I look at it, it doesn't exactly work the way I think. Or the other most common one is, no, you misinterpreted what I said because developers are pretty bad at saying, like, speaking code. I actually kind of mean this. And you're like, okay, that makes a lot more sense. Now, here's something that's really important. The longer you wait to do this, like you say, you take the approach, you start working on it for a day, it's like clearly there's something off. You wait two or three more days to bring that up. Now you've got a little bit of a politics problem because let's say there's a manager who's given that senior developer the assignment to guide you through this ticket. If you wait really long and then those becomes a problem, that senior developer now has to cover their ass because they have to make the points like, no, you're doing it wrong. It wasn't that I didn't notice that you were trying the wrong approach for several days. Right. So the earlier you can communicate, the better benefit you're going to have. And that's why again, the answer here is communication. Your job is to communicate about the code across your team. And the final point, again, senior developers are not God, they're your peers. Tell the senior developer what you found and ask for clarification. Half the time it turns out their approach was wrong and they'll admit it. Right? So pseudocode is your friend. This is the final point. Now, this is a bit different than the other ones because it's really a tactical point versus a sort of like philosophical point, but it's something I've noticed a lot. So, Ruby, go back to Ruby. This is our finale with Ruby. We're going to say goodbye to her in a second. She's starting to feel comfortable, but she's still writing code slower than other devs and team. How can she be more efficient? So here's this kind of really unusual point. I haven't heard a lot of people talk about it. Write your pseudocode in comments and pseudocode. If those of you who don't know what it is, pseudocode is basically where you write literally words describing your code, it's almost like someone had to translate the logic you're putting in your code as sentences, like the way you would talk about the code if you had to explain it in words. So it could be literally what you're seeing on the screen, your pseudocode. So if you write that first because you're thinking through the business logic, then be like, okay, I think that makes sense. Now just translate it into the syntax of whatever programming language you're in. You're kind of separating those two threads. And the reason this is effective is if you're new, it's very likely that the programming language syntax is not second nature to you. I don't really think about syntax much at this point. Personally. Whenever I'm writing Ruby or Javascript, like the languages that I'm most familiar with, I'm really thinking about the logic. But if you're new, you're actually spending a lot of those extra cycles being like, oh wait, where does the closing parentheses go? That kind of thing. So if you can separate those tasks out, it'll actually make you more productive because it becomes two simpler tasks instead of one more complex task. So the point here is, syntax sucks. Senior devs have been writing code for so long, the syntax of code is second nature to them. If you're not there yet, separate the process of thinking about the logic and writing the syntax of the programming language as separate, and that's it. That is the presentation. For those of you that don't know, gravity exists on earth. I love Neil degrasse Tyson. And yeah, just going back to my contact information mission, if you really are interested in some of the stuff I have to say, there's other talks and podcasts and other things that I put online, things, some of the things I've written. You can find it all at Riazv, me and I occasionally, but not very often, will tweet. Riaz. Virani. Riaz, thank you for joining me and enjoy your conference.
...

Riaz Virani

Curious Coder, Freelancer & Web Developer

Riaz Virani's LinkedIn account Riaz Virani's twitter account



Awesome tech events for

Priority access to all content

Video hallway track

Community chat

Exclusive promotions and giveaways