DevQuestions with Tim Corey
I am Tim Corey. I teach coding online and my inbox is full of questions from current and future developers. I wish I could sit down with each of you and share the answers I know will help you go further, faster in the world of development. This podcast is the next best thing. On this podcast, I will answer the biggest questions people are asking! Send us to your suggestion for a future Dev Questions at https://suggestions.iamtimcorey.com/ To keep the podcast coming, like, subscribe, rate, and share it with your friends and colleagues. See why thousands of students have chosen to learn to think and code like a professional developer at www.DevForge.com.
DevQuestions with Tim Corey
136 What Soft Skills Benefit Software Developers The Most?
Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.
What soft skills are most useful for a software developer? What things should a software developer work on outside of programming? What will make me more marketable? These are the questions we will answer in today's episode of Dev Questions.
Website: https://www.DevForge.com/
Ask Your Question: https://suggestions.iamtimcorey.com/
Sign Up to Get More Great Developer Content in Your Inbox: https://signup.iamtimcorey.com/
Welcome to the Dev Questions Podcast with Tim Corey. Join us each episode as we tackle the questions you are asking about a career in software development, understanding the industry, and new technology. If you're just starting out or you want to grow stronger as a developer, this is the place to get your questions answered. Now, here's your host, expert developer and online educator, Tim Corey.
SPEAKER_02What soft skills benefit software developers the most? When we think of software development, the first thing people think of to learn is coding. What language do I learn? What uh database types do I learn? How do I get it to fit together and all the technical things that go into becoming a software developer? But there's more skills to know than just the technical. There's the soft skills. And I can tell you right now that the soft skills around software development can be as beneficial, if not more, to your career than the technical skills. So let's talk through what soft skills do I think are most important for software developers. Now, this is a question that's asked on the suggestion site. And if you have a question you want to get answered, you can go to suggestions.imtimcore.com and ask your question there. Hopefully you'll see it in a future episode of DevQuestions. Now, let's talk through this list, but I'm going to say Wrath of Bat. This is not a comprehensive list. There's lots of soft skills to master. There's lots of soft skills that will benefit you. But this is my kind of top four, the things that I think are most beneficial, and not necessarily in order, but there are some pretty high priorities throughout this entire list. So let's get into what are my skills that I think you should know. The first one is communication. Knowing how to clearly articulate what you want, what you're doing, what information you need to convey, knowing what questions to ask, knowing how to communicate with others is really important. There is this kind of stereotype that software developers, tech people in general are that, you know, back in the back of a closet kind of person that does not interact well with others. And this can be true, but I can tell you that if you can clearly communicate with others, if you work on that skill, it will elevate you in your position or in the industry as a in general. This happened to me quite a bit because I had a number of bosses that said, Hey, I can trust you to talk to people. You actually make sense. You're not talking in jargon. You clearly communicate to me what needs to be done, even though I'm non-technical. And that became a positive point. I worked with a person who was basically a salesperson that brought in uh jobs for software developers. And what she would do is she would find the job, she'd talk to the customer, get the job, and then bring it to software developers. And it came to the point in our relationship where she ended up bringing me along to customers because I could clearly communicate with them. And it was easier to have that conversation where she could trust me to be able to clearly communicate, to not step on toes, to understand the situation, so many other things, that became a much better relationship where we were able to do a lot more together and bring in a lot more sales and a lot more jobs because of the ability to clearly communicate. Now, where is this going to show up in your job or in your life? Number one, getting a job. When you go and talk to a hiring manager or an HR person or a recruiter, and you're talking about the job, being able to articulate what you can do, how you can do it, what skills you have, what lessons you've learned over time, these are all things that will help elevate you in the mind of that hiring person. Now, once you get the job, knowing how to work with customers or clients. When you're in software development, you always have some type of customer or client. Now, it may be internal, they may be external, they may be your boss, but whoever it is, knowing how to work with them, knowing how to clearly define a project, knowing how to put in writing, this is what we will do. This is what we're agreeing upon. Is this what you had understood from that conversation? Knowing how to clearly create defined set of parameters for a job. Because then when the job is complete, everyone looks back at that and goes, yes, that's what we asked for, and that's what he got. And yes, there's always problems, there's always things that go on, but the more clearly you've communicated, the better off you will be. And then if you work with a team, meaning if you don't have just one software developer on a team, but maybe multiple, you have to coordinate who's doing what. You have to work through issues, personnel issues, uh, interpersonal issues. And the better you can communicate, the better you can be clear on your expectations, on your frustrations, on your desires, the more clearly you will succeed on that team. So knowing how to communicate is a really big soft skill to master. Now, with each of these, I'm gonna give you some resources. And these are not comprehensive either, but there's a couple things to get you started. Now, the first one is one that people often overlook. It's grammarly. It's a tool that you can install on your phone, on your computer, doesn't matter if it's Mac or Windows, you can run it on the web. It's basically everywhere. And what it does is it checks your spelling, it checks your grammar, it checks your punctuation, it tries to help you rewrite sentences, and it's not always perfect, but it's so much better than what I see from some people. And people say, well, it's just a quick note, it's just a quick email. Get it right. Because when you communicate using bad grammar, poor punctuation, bad spelling, you subconsciously communicate a lack of knowledge to that person. Now, is that right? Not necessarily, because it may just be you're in a hurry. I've done that. I've mistyped things on my phone as I'm you know doing other things. I you know, shoot a quick email to somebody and it's not quite right. And that's that's gonna happen. But the more you can prevent that, the more you can appear articulate, the better. And grammarly is a very cheap or even free way to do that. Now, another one is Toastmasters. If you don't know, Toastmasters is an organization that helps people become better at working in meetings, at communicating, at speaking in front of others. And it's just a great organization that's mostly free. So check them out, try them out. Personally, I've never used Toastmasters, but I have a number of friends who have who have greatly benefited from it. I heard nothing but good from it. Now, it can be intimidating to get in front of people and to speak and have them and know that they are intentionally thinking through things like how many ums did you say? How articulate were you? Was your grammar clear? Were were you able to communicate a clear message? But doing that in a practice environment like Toastmasters will allow you to do so in a way that's not going to impact your career negatively. You're not in front of your boss and your boss's boss trying to communicate and going, uh, err, um, I think maybe. No, you've already practiced that, you've got that stuff out of the way at Toastmasters or an organization like that where you've practiced that and now you're more confident. You're, you've got more experience doing it. And so by doing so, you've elevated yourself in the workplace without going through all that practice in real life or in real situations. You're just doing it in front of a group of people who is who are really on your side and who are trying to help you get better. Okay. And the third resource, this is gonna be friends. Um, if you don't want to go all the way to Toastmasters or you don't want to, you don't have the opportunity to find a friend, find find two friends, present them, get up in front of them in front of a podium if you can, and present. Talk to them, ask them to interview you for a job, talk through how to uh set up different scenarios and then work with them to help you practice those scenarios. So that can be hard because you have to find the right friend. If your friend has horrible at grammar, if your friend is horrible understanding how to communicate clearly, you're gonna have a harder time, but you'll still have some practice. So if you use those other tools, that'd be great. But whatever you do, the key here, and with all of these is practice. All right, so that's number one, communication. Number two is kind of a catch-all category. Um, I couldn't find one word that fit everything. So there's three uh drive, persistence, and ethics. These are the three that really um encompass this category. So, first of all, a desire to get better. Uh that that push to become a better you, whether that's personally, whether that's in your job, whether it's in your relationships, the desire to be better. This is a very valuable skill. If I have an employee who has a desire to get better, that's awesome. That's encouraging. That's that's what I want. I would rather hire a person who doesn't have a lot of skills, but who has a desire to get better, over a person who has quite a few skills, but they're kind of content where they're at. Because that desire to get better will take you further. Now, next up in this category is a commitment to doing what is right. This is hard. This is something that you've got to work on because sometimes people aren't watching. And you have to have that commitment to doing what is right. What is right by your employer, what is right in legally, what's right in your organization. So knowing what the right thing to do is and then doing it, having commitment to doing that even when no one's watching. Because whether you realize it or not, you're probably being watched more often than you think. There is, you're gonna give off an impression if you're not careful. And so having a commitment to doing what's right is important. Being motivated without oversight is another part of this. Sometimes people say, well, I just need someone to look over my shoulder all the time to make sure that I'm doing what's right. That motivates me. That's great, but you know what? As a boss, when I hire someone, I really don't want to hire them to give me more work. I don't want to have to hire them and say, okay, well, now I've got to make sure that you're motivated, that I'm gonna keep on you being motivated, I'm gonna check in every day to make sure you're motivated. That's not why I hired you. I hired you to take work away from me, not give more work to me. And that's how you scale as a boss is not to hire people who give you more work to do. It's gonna happen somewhat because you still have to meet together, you still have to evaluate, you still have to set priorities together. But you want in general to have them take work away from you. And so if you are motivated without oversight, if you can do the job and say, I want to do this, and you you focus on doing it, that's huge for an employer. And with that, the ability to stick with an issue. This is huge for software developers. When you first get into software development, you want everything to work right the first time. And when things don't work right the first time, you get flustered and you ask questions. You say, you know, why is this not working? And you ask, you know, Stack Overflow, you ask on a forum, you ask, you know, other developers. And you probably see on Stack Overflow a lot of people get frustrated with people that do that. And I get both sides of this. I get why they're asking, but I also get why people are frustrated. Because there is not yet that realization that I need to first do everything I can, stick with it, even when it feels like I'm not making progress, to stick with the issue, to keep working on it, to keep researching, to keep looking and being persistent. Because as you get better as a software developer, you will realize that you're always gonna have problems that you can't figure out how to solve at first. And even at second and third, you know, you're gonna spend days banging your head against the desk, figuring out why it does not work, but you mean stick with it. That's when you really uh are able to push through and find that solution and also at the same time be independent. So again, you're not taking work away from others, not taking time away from others when you're working on a problem. This does not mean you never ask for help, but you ask for help after you have worked very hard at the issue. A simple example of this: I bought a new light switch for my outside lights. We wanted to have the outside lights turn on at dusk and then turn off at a certain time automatically. Well, it's a Wi-Fi switch, it's not a big deal to wire in, and I got it all wired in, no problem. But when it came to the connection to it, it wouldn't connect my Wi-Fi. And it was frustrating, and I kept trying different things. And, you know, one of the solutions was we'll contact the manufacturer. Well, I could have done that, and I could have spent two hours on the phone, they could have done all the standard debugging things. Or what I did instead was I kept with it. I tried more things, I tried different options, I persisted, I kept doing things until I got to work. And that was one of those things where I had to be persistent and I had to be able to stick with that problem. But because I did, I saved myself a whole lot of time and I didn't have to contact support, which takes somebody else's time. So that ability to stick with it is really important. Now, resources for this category. The biggest resource I can think of for this category, because it's all about sticking with it, working, uh, working hard, being persistent, getting better, all these things talk about a better use of your time. And so the tool that I have found most useful for myself is what's called the Pomodoro technique. And what this is, is a simple technique. And there's there's variations to it, and I vary on how I use it. But essentially what you do is you choose a set amount of time and you say, I'm gonna work on this specific task or this specific project, or I'm gonna train in this specific area for this amount of time. And usually it's around 30, 30 minutes or so. So I think 25 is the official Pomodoro time, but you choose the time. You say 30 minutes, and then you set a timer and you do nothing but that. You don't check Twitter, you don't answer email, you ignore the phone if you can. All these things, you try to focus on just one thing. And to do that, you usually use a timer. And this is important here because there's lots of apps out there, there's lots of digital tools. I highly discourage you from using them. Don't use a digital tool. Because how are you gonna use that? Well, you're gonna put it on your phone, probably. Well, what else does your phone have? Every pop-up known demand, you're gonna get new emails notifications, you're gonna get new you know, Twitter or Instagram alerts, you're gonna get whatever other alerts, your game that you know says, hey, come on back and play me again. All these things are gonna distract you from what you're doing. Instead, what I recommend is something very, very simple. For me, I have this tool right here. It's a simple cube timer. And if you're listening, I'll explain it. But it's it's got four different times on the four different sides. It's got a five-minute time, a 15-minute time, a 30-minute time, and a 60-minute time. Whichever time is facing up when I turn it up and show the LED display, well, that's the time that will start counting down. Simple. That's all it is. And when I turn it back down, it stops the time. That's it. Okay, so it counts down from that time. When I hit zero, it goes off an alarm. This is what I use to track my Pomodoro uh segments. So by doing so, what I can do is I can make sure that I'm focused on one thing. Because that counting down timer is actually really motivational. When I see I only have five minutes left, I want to get more of this stuff done, and I focus in on it. And when I know there's a set end time that allows me to focus in and say, nope, nothing else. For this time, I'm doing this. And then after you're done at Pomodoro, you have a mandatory five-minute break. And after a couple of them, you take a mandatory 15 to 30 minute break. And so during those breaks, you are not allowed to do any more work. That's kind of the idea. Now, this does not work perfectly everywhere. There's times when you say, I can't do this. I can't stop people from interrupting me. I can't stop. I get that. And it does not mean you do this the entire day, but you set aside times to do this. And you try to focus in on certain blocks where you say, I'm going to do that during these times. And for those five minutes, those 15 minutes, when you have those breaks, what you do is you get up, you walk around, you go outside if you can, you get a drink, you talk to people, you do something else, you check Twitter, you whatever you want to do that's not just sitting at your desk. By doing stuff like that, it will greatly increase your ability to get better faster, to motivate yourself to do the right thing, to be able to stick with an issue. It just improves a lot of these areas. The other way to kind of help you in your motivation and your desire to get better and to continue to go forward and motive yourself is to use a journal. Create a get a small journal that just has one day, what you did, and kind of keep track. That way you can look back at how much you have done in a positive manner. These are all things I've done. That way it helps motivate you to keep going. Okay, so there's a couple of resources for this section. The next section is hard. It's called humility. This is one that this is a soft skill that is really, really hard to do, but it's really, really important as well. The first one is the first you know, kind of descriptor in here is to acknowledge your mistakes. This is not saying, oh yeah, I probably could have done that better. That's not really acknowledging your mistake. That's kind of pushing it off. Or, you know, trying to say, well, yeah, but you know, I'm not perfect. I'm not perfect. That's not acknowledging your mistakes. Actually say, I did not do that right. I made a mistake. Things of that nature are very clear. You're saying I was incorrect, I was wrong, I made a mistake, I was not correct in my thinking. Acknowledge that mistake. Because when you acknowledge something, you kind of reduce the defensiveness of somebody else. If your boss comes to you and is really mad and said, you did not turn off that machine at the right time, if you say, Well, you know, no one's perfect, is your boss gonna be happy with you? No, it becomes a fight. You know, and then your boss has to prove to you that you're wrong or prove to you that it's a big deal. But if you say, you know what, you're right. I am sorry, I made that mistake, I should have turned that off that certain time. I did not. I will, and then state how you will rectify it for the future. That disarms a lot of your boss's frustration and it makes for a better relationship because your boss says, Oh, okay, great, let's do that. And all of a sudden, it's no longer a me versus my boss. When you acknowledge your mistakes. Now, I am not saying that you acknowledge mistakes that weren't yours. Okay, so when your boss says, You should have turned that off this time. If it wasn't your job, you don't have to say, I'm sorry, I should have, when you shouldn't have. But you also shouldn't just fight. Try to be humble in your responses. Take accountability for your actions. The things that you do, take accountability for them. If you made a choice and it turns out it was the wrong choice, acknowledge that. Be accountable for that. And then another part of this is seeing the world from somebody else's viewpoint. When your boss comes to you and is frustrated because you didn't do something or because you did do something, then say, you know what? I understand how that might be frustrating. I was wrong. And I can see how that made your job harder. I can see how that puts you in a bind. And I'm sorry. And here's how it will change for the future. Being humble is really important. Knowing how to do it well without being a doormat. It's not the same thing. But being humble is really important as an employee. So one of the resources I have for this is a book by Patrick Lencioni. This is focused more on being a consultant, but a lot of the tools in here are really important. It's called Get Naked or Getting Naked, I'm sorry, Getting Naked by Patrick Lencioni. It's a really valuable resource and it's well written. He writes it in the um the kind of the system of a fable or parable. And so what it is is you see a scenario and you walk through that scenario and you see how the main character makes a mistake. And you can kind of see that in a situation. And then at the end, he talks about the principle and about how to take these principles that you can see now and apply them to your life in order to be more honest, to be more open, to be acknowledge who you are, to be more humble. So that's one resource. The other resource, and this is hard, but find honest friends. You may only find one or two, but find friends where you can tell them, please be honest with me. When your significant other asks, how do I look in this outfit? That's a trap. Okay? You don't want to be honest because you're like, if I say bad, that's gonna tick you off, right? Well, but if you can trust the person, if you have an honesty to say, you know what, I am going to be honest with you, but not because I'm trying to be mean, I'm trying to be helpful. My wife and I do this. So my wife, when she asks, hey, what do you think of this outfit? I can say, I don't like it. I don't think it looks great. And that's okay. Now, you know what sometimes she does? Gets it anyways, because she enjoys it. That's fine. But I can be honest with her. We've had this discussion about um when we're over at somebody's house. One of the things we early on in our marriage, we were over at somebody's house and we had dinner, and my wife says in front of everybody, what do you think of this to me? Well, that's a trap because I didn't like it. And so we talked later. I'm like, hey, you know, no big deal, but for the future, let's work on not asking that in public. Because if I don't like it, I don't want to say anything. I just want to, you know, it's not for everybody. I don't have to like everything. But let's not announce that. And if I do like something, I'll work to say it. Because being honest with each other is very important, but it's also a time and place and how to be honest well. So choose friends that aren't going to say in the middle of a crowd of people, hey, those shoes look horrible. That's not great. That's not gonna make you feel good. But if you have a friend that pulls you aside and says, hey, you know what? Those shoes aren't great for you. They make your feet look goofy. Okay, you know what? If you can take that, if you can have that honest friend, and you can be humble enough to hear that, you can be better. Okay, so humility is a great soft skill to have. It's just hard to do well. And number four, problem solving. This is one that probably software developers are best at because we do it all the time. It's really our job is to solve problems. But let's take it outside of just tech. And let's talk about being a problem solver at your job. This is something that I worked really hard at. And it's one that can be super valuable. When there is a problem, everyone knows there's a problem. Okay. And if you come to the table and say, hey, that's a problem, how are you adding any value? You're not really. At most, what you're saying is, I've identified something that maybe nobody else has, but that just makes things worse in some ways because now you know you have to solve something, but you have no solution. If you can identify a solution, or better yet, multiple solutions, that's huge. That's huge. Because now you can be part of the solution and you can take some pressure off of somebody else, primarily your boss. Now, with that, you need to think long term. When you solve a problem for today, if that's all you're solving it for, that's a problem. Because then tomorrow comes and oh no, the problem we solved today caused a problem for tomorrow. So if you can think long term, that's huge as well. Now, with this, be flexible and be realistic. Sometimes I came to my boss and I would say, Hey, this is the problem. Here are a couple of solutions I came up with that I think will help us long term. And my boss would say, you know, a lot of times he might say, Yeah, great. Other times he might say, We're not doing that. And I had to be flexible. Okay, what are we gonna do? And he would tell me, and I'd say, I don't think that's the greatest solution. And he'd say, I know, but you're gonna do it anyways. Okay, boss, let's do it. And you'd make the best of that situation. Because sometimes there's things you don't understand, things that you're not fully read into. Maybe there's a bigger picture you're not seeing. So being flexible is the ability to, hey, I'm trying to solve a problem here, but if you want me to do something else, I will do that. That flexibility is very valuable to an employer who might not be able to share everything. And then being realistic. You know what? I could solve a problem with enough, enough time and money, but maybe we don't have either. So what are we gonna do? Let's be realistic about a solution. And a big part of this is being part of a solution. Being able to not just say, hey, I think you need to fix that, or you know what, you need to dig these three ditches. Go do that. Well, are you the boss? Is that your job? Or are you just providing a solution that means somebody else does all the work? If you can be part of a solution where you do some of the work, where you say, hey, you know what, if I did this, this would help. That's again huge to your employer, huge to your boss, huge to your team. Being part of the solution with your problem solving. So the uh resources for this, a big one's gonna be experience. And I know that's that's hard because you're like, well, but how do I get experience? By doing things, by being in that room, be by being willing to be part of the solution, by trying things. One of the ways this is um directly impacts software development is when you build full applications. Because I see a lot of newer developers who have solutions that feel great. They're like, yes, this is the great solution. This is this is the solution. Have you ever actually built that solution? Because when you do, you realize there's this, this, this, and this, they're gonna cause problems. And the way to get that experience, this is why so many employers ask for work experience, even from junior developers, is the way you get that experience is by building full applications, by seeing the implications of the choices you make up front. So you make choices up front. I'm gonna choose this database, I'm gonna choose this language, I'm gonna choose this user interface, I'm gonna choose this structure and style. Okay, those are all choices. But have you seen how they carry out in the end? Have you seen how it actually implements? A big one for this is when you say, I'm gonna choose all these design patterns. You can really design patterns and not be chosen that way. That's not their role. But sure, you're gonna say, I'm gonna do all these things. And you start to actually implement it and realize, oh man, that causes this mess here. I got to create a workaround there, and I've got this and that, all these different things, they're kind of patches to fix and work around the design pattern I'm trying to implement or the design patterns. And all of a sudden you realize through experience, that's not the way I approach this. A better way to approach this is to figure out the structure of my application and then figure out what patterns will help make it better. And so by going through that full application, you go, oh, I've seen this before. That's experience. You don't have to do that in real applications. You can build practice applications. I have whole courses on imtimcore.com that are building practice applications because by doing so, you get that experience. You see the implications, you see the the outcomes of the choices you make up front. You can see how the planning actually carries out in the execution. You can see how the effects of your choices. So that experience, it's really important. And that's the best teacher for this category. Okay? So those are the four things that I, the four soft skills that I think will best help you as a software developer. I hope you enjoyed this. Thanks for listening. And as always, I am Tim Corey.
SPEAKER_01Thank you for joining us for this episode of Deaf Questions. Tim is committed to making it easier for you to become a developer. If you would like to help make more content like this possible, please like, subscribe, rate, and share Dev Questions. You can also send your questions to questions at IamTimcorey.com. Until next time, remember, you are too smart and your time too valuable to waste it making all the mistakes Tim did. When you're ready to learn to think and code like a professional developer, head over to imtimcore.com and enroll in a course.