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
297. How Can I Be More Productive in Software Development
Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.
How can I be more productive as a software developer? Sometimes, things seem to drag on forever. Projects take too long, practicing what I learn takes too much time, and my progress as a developer seems to stay in place. How do I continue to see gains in my career as a software developer? 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/
As a software developer, sometimes it feels like you're stuck in place, like today is Groundhog Day all over again. You do the same job every day, you never seem to take the next step in your career, and you just don't seem to make any progress in your job. Side projects take too long. Practicing what you learn just doesn't seem worth it. And overall, you feel like nothing seems to change. Breaking out of this cycle and not only becoming productive, but also feeling productive is important both for your job and your career, but also for your sanity. So let's talk about how to do that in today's episode of Dev Questions.
SPEAKER_00Welcome to the Dev Questions Podcast with Tim Corey.
SPEAKER_01Software development is more than just writing code. So let's talk about the rest of it. Specifically, let's talk about being more productive as a software developer. Let's talk about this in the light of three different areas. Be more productive in your current projects, in learning new things, and in your career. In all these areas, there are three overarching principles that you'll need to keep in mind. And when we talk about specifics, we'll kind of point back to these three principles in most of those specifics. So number one, slow down to speed up. Too often people try to move fast, move fast, move fast. And the result is they just get bogged down. When sometimes you need to slowly take steps. And by taking those slow plotting steps, you actually move faster than if you rush. Number two, limitations bring value. Too often people think, well, if I had unlimited budget, I could do some really amazing things. If I had unlimited time on this project, I could do some amazing things. And the reality is that that's not actually what happens. When you look at the movie industry, the game industry, to other industries where people have a blank check to do whatever they want, you find that things take forever. GTA 6 still isn't here yet because the fact that they had almost a blank check to do whatever they wanted, and it just drags things out. If they were told, hey, you have two years, that's it, and they knew that was a hard deadline, that changes what they would have done. And we can see that with a lot of different projects in the game industry as well as the movie industry, where when they have constraints, when they say, hey, you can't go outside this, when you have this limited budget, or you can only work with these certain things, that it actually brings more value. Well, for developers, it's the same way. When we have just a blank slate of we can do whatever we want, usually the applications become messy because they're overscoped and they're and they do too many things. When if we focus down, we get better results. Well, your career, we need to work on limitations and in order to bring actual value. If we just say, I'm gonna learn to be a better software developer, that's actually gonna be harmful to your career because you'll kind of wander from this thing to that thing. We need limitations. And the final overarching principle is perception is reality. Too often people discount how it looks or how it feels because, well, that's not reality. But the reality is that yes, in some ways it is. Because it doesn't matter if you're being successful if you don't feel that way. Because if you feel like you're not being successful, even though you are, you're going to be depressed about it. You're gonna be wanting to give up because it doesn't feel like you're making progress. So perception is reality. That means we need to address not just reality, but also the perception of how it feels. So keep these in mind and let's talk about your current projects. Now I have some steps to think or things to do for each of these categories. Let's current project number one is keep a to-done list. Not a to-do list, a to-done list. To-do lists are great. And if that works for you, awesome. Then do a to-do list. I like a to-do list. But I also like to have a to-done list, meaning things that I have accomplished. You write down, even if it wasn't on your to-do list, sometimes you have a to-do list, it's nice to have that crossed-off feeling where you don't make it go away. It's it's still there, you just crossed off. So you can see at the end of the day or the end of the week or the month, you get this whole list of things that you've done. When you push a new version to production, creating that change log where you say, I fixed these 18 things and I added these two features and I changed how this works. All of a sudden, when you start adding all that up, you're like, wow, that was a lot of things I did. And by doing that, you can visualize that yes, I have been accomplishing something. Again, changing that perception. So keep a list of what you have done in your current projects. That way, when you talk to your boss, it's not like, well, yeah, I worked on fixing stuff last week. You can say, I fixed these seven things. I added this feature, I changed these things. And be specific enough so that your list isn't just one thing or two things. Sometimes when you're working on a feature, you just have that one feature, or maybe even a part of that feature. It's not done yet. So by being more specific about I did these things, it gives you a better sense of accomplishment, but it also gives your boss a better sense of what you accomplished. Number two, make things a little better every time you touch them. This is the Boy Scout principle. In our day-to-day lives, we're gonna have little things that grind our gears a bit, a little bit of stain in the gears, right? Where it's a little bit of frustration, but it's not really a big enough deal to actually do something about. Figure out how to solve that. So when you look at your code base and go, man, there's just, it's it's poorly written, it's not formatted well, it needs some comments in order to be more clear as to what's going on. These things all slow you down a little bit. Well, if you're working on a method to fix a bug, fix a little extra. Make it a little better, format the code better, make it more in line with the current way you do things. Make it a little better every time you touch it. That way, after a while, you will see real impact in your code base. Your coworkers will go, man, it feels a little better to work with a code base now because things are a little better. But that's not gonna happen overnight. You can't just say, let's change it all, let's document it all, let's reformat it all. That's just too much. And you're not gonna be able to do that. But as you're already doing work, make things a little better every time you do. It's not gonna be a big thing, it's not gonna be a thing that changes overnight, but you will see a difference over time. Number three, identify and eliminate small pain points. Again, this is the sand in the gears. So there's gonna be things that you do that are just a little frustrating, but they're not enough to actually do something about normally. And really, by fixing these problems, you may be spending more time to fix them than they actually cost you. But that can be okay. Here's a simple example from my life. On the side, I do amateur photography. It's it's a hobby of mine. It gets me out of the office and get me walking around nature. And what I do is I will bring back my memory card. I will plug it into my computer or my laptop or my desktop. And then I open up that file, I find the right set of files, I copy them over to a certain location on my hard drive, then I eject the memory card. Well, that's a little pain point, right? Like I have to do a number of steps to get those files from the memory card to the right location. And really, I need to start renaming those files too. I haven't done that yet. But what could I do? Well, I can write a small little application that says, hey, just double-click this and it will do those steps for you. Now, I may spend more time, you know, writing the application, maybe 15, 20 minutes of writing it and testing it, versus the two minutes it takes per tie a plugged up memory card in. But now that step is a little nicer. It's a little happier, it's a little easier, and it feels a little less frustrating. And so that frustration is part of the cost of doing that step. Well, identify those little areas in your life. What's a little thing that you do? Maybe it's submitting your hours you worked on a project where you have to add them all up and you have to put in the right format. Maybe write a little application to do that for you. Or maybe it's the fact that you get these error files and you have to parse things out. Well, what if you were a little parser, right? Find little things that take up a little bit of time and see if you can eliminate them, not only saving you a little bit of time, but also making your life a little better along the way. That also helps when you're in the midst of a crisis. Um a number of times I've had bosses that kind of breathe down my neck during a crisis to say, hey, this is going on. And they're kind of leaning over my shoulder, like, we need to get this solved right now. All eyes are on me, and we need to fix this problem. Well, if I have these little pain points solved, then my boss sees that. And they he sees that, hey, that was a little faster. And how did you do that? And what did you do to do that? And all of a sudden he's starting to inquire about why I'm a little faster, a little better at this job. And it appears as though I'm a bit better because of the fact they have all these tools in place. That can make a big impact in your career. So that also it changes the perception of your boss. Number four, practice techniques to keep yourself sharp and to keep mistakes out of real code. When you are a software developer, you're gonna take on a lot of different uh pieces of knowledge. So you have this whole list of I know how to do data access and error checking and logging and all these other things that you probably don't do on a daily basis. And sometimes you forget how to do them. Practice makes perfect, right? Well, you never get perfect. But if you practice in practice projects, and if you figure out, oh, I have to add logging to this section right here, and I don't remember how to configure the logger. Well, do it in a test project. Keep the mistakes out of your real code by doing it first in a test project where you can start over, delete it, redo it until you get it right, and then put in your real code. It keeps yourself sharp and it keeps bugs out of your real code. Number five, focus in on one area to have a bigger impact. This often comes with a communication to your boss talking through, hey, you know what? The ticketing system, it's laggy and buggy, and you know, it's not a high priority, but something that I really want to tackle in my free time. Now, you know, if you have a job, you probably just laughed when I said free time. That's not usually a big thing. But what you can do sometimes is maybe direct which tickets you work on. Start becoming more of a subject matter expert on that one system where you're taking more of the errors in that area, where you're taking more of the features in that area, where you're doing more of that Boy Scout principle of cleaning things up in that area. You can have a big impact by just focusing in on one area instead of just taking tickets from anywhere and focusing on anything. If your boss gets on board with this, what can happen is you can become the go-to person for this area. And then, as you are making things better, as you are learning how to do things because you're doing more work in this area, you can start to make changes, start to make bigger changes that impact the overall performance of the system and make it so that it's a better running system because of your impact. That can then be much more visible to the rest of the organization, including your boss, where they say, hey, this area is working better. And Tim is the subject matter expert on this area. Tim is responsible for the majority of the work done here. And so with that, you continue to move your career forward in your current projects. So there's a lot of different ways you can move your career forward in your current projects, where you can be more visible to your boss. You can have a better working environment where you can continue to grow and change your skills and apply it where you're at and become more and more valuable, where your boss is saying, Hey, I recognize that that you do a good job here. So there are things you can do to actively improve on your current projects. That will both help your perception of what you're doing in your career, it'll also help your boss's perception of what you're doing in your career, and it will help you move forward instead of being stuck. Instead of just going about your day-to-day job, you have a strategy to move forward. Now let's talk about learning new things. How do you move forward with learning new things? Well, number one, limit how many new things you're learning. This is the big one. I think this is the one that really trips a lot of people up, where they they look at learning everything. There's so many things that are changed. I have to learn this, learn that. And what happens is you don't really learn it. You pretend to learn it. You think you learn it, you trick yourself into thinking you learned it. Where you watch a tutorial and you go, oh yeah, got that. And then you move on because there's something else. But you never actually practiced it, you never actually applied it, you never actually made sure you knew it. So instead of learning everything, realize that you can't. Instead, focus in on a specific area. I do this. My job is to teach, and part of that job means I have to continue to learn in a lot of areas. But there are areas I don't where I go, you know what? It's just not what I can do. So I focused in on specific areas and said the rest of that stuff needs to wait. Because if I try and learn everything, I will learn nothing. Instead, focus. Number two, practice right away and more than once before moving on. Slow down to speed up. We talked about this in the in a previous dev question about how to practice what you learn, but it's important that you don't just move on. Because if you do, you're again, you're going faster, you're going faster, you're doing the next tutorial. But what you did is you actually failed to learn from any of them. If you at the end of the week go, what did I learn? You might not even remember which videos you watched, let alone actually know how to do those things. Too often I hear people say, I've watched a ton of your videos, I cringe a little bit because I'm hopeful that what you're saying is I watched a lot of your videos over time and that I actually applied what you taught me, versus I see some people comment on three, four, five, six, seven of my videos in one day. Where that can be great if you're applying a bunch of things at once, but the reality is you're probably just watching and moving on and using me as entertainment. And quite frankly, I'm not a great entertainer. I think there's better entertainers out there. I would encourage you, instead of using me for entertainment, use me to help you take that first step on your learning journey of a specific topic. Slow down to speed up. Number three, learn things that are most applicable to your career right now. There's lots of cool, shiny stuff out there. Different languages, different ways of doing things, different features and systems and everything else. Focus in what's best for your career. Curate. Say, you know what, I'm not going to do these things. If you have a fruit tree or a fruit bush of some type, it's important that you cut off some of the limbs, cut off some of the branches, because otherwise, what happens is a little bit of resources go everywhere. And then none of the not enough resources go anywhere. The same thing is true when it comes to the things you're learning. Cut off some things so you have more time, more effort going to a few things that you learn well. Grow those into something valuable rather than having a little bit of rotten fruit everywhere. Okay. So learn things that are most applicable to your career right now. And finally, again, keep that to done list. Keep that list of these are the things that I've learned, I've practiced, and I've applied. This is helpful not just for yourself, but also for your employer or for your future employer to say, hey, here's what I'm doing, here's how I'm making progress. It shows you that you're making progress. Because when you go slow, sometimes it feels like you're not going at all. But by seeing the fact that, yeah, I've learned these five things in the past month, that's progress. Keeping that to do to done list is important. Now let's look at your career itself. So we've talked about the idea of how to work with your current project, how to make progress in your current project, how to make progress in your learning of new things. But your career is really important, whether you are looking for a career, looking to get started, or looking to take that next step in your career. Number one is to be more productive on your current project. You need to take step one or section one, where he talked about your current projects. Be more productive there first. Number two, continue to grow and change. So that's section two, talking about learning new things. Continue to make changes. Your career will not progress just by existing a role. You have to continue to grow, especially today. Five years ago, developers could just say, Hey, I'm a developer and get a job, it felt like, because everyone's hiring. But we're back to reality. The reality is you're in competition. You have to compete. You have to put in the effort necessary to improve your career, to get that career. Because software development in the US, it pays double the median salary for the US. That's going to mean competition. And it doesn't require a whole bunch of education, it doesn't require a doctorate or going to school for seven years or anything like that. So, yes, this is a very valuable field, but it means there's going to be competition. You're going to have to compete. And that means being more productive in your current project. And it means continue to grow and change. Number three, it's going to mean showing off what you've been doing. That's the to-do-done list from your learning new things. That's a portfolio of here's the practice projects I've done, or here's the kind of the polished project I've done with those new things. It's showing off what you can do because employers often ask for things like years of experience. And you can figure out how to get years of experience sometime before you even have your first job. And I have videos on that. But also you can learn how to do that within a current job. Maybe you have a software development job, but you're not doing modern stuff. There's still a way of using your to do to done list of your training and learning your using your portfolio to show off what you can do and use your current years of experience at the job doing older code and kind of marry those two together in a way that employers look at that and go, oh, you're experienced and you can do these things. There's ways of doing that. So show off what you can do. Because if you just say, Yeah, I can do that, but there's no proof of it. You haven't done it for an employer and the, you know, you're not showing off any other way. Well, anyone can say you can do it. Prove it. So prove it. Number four, build and nurture your list of connections. Making progress in your career means building a list of connections, building a network of people that you know. And don't just try and do it when you need a job, but do it naturally. Meet people, meet other developers, meet people in the industry, and learn and grow with them. They will help you learn and grow, and they'll be a good source of connection when you need a job. So often the best way to be productive is just to think about how what you're currently doing and adjust it, but also evaluate it. Say, hey, you know what? I am being productive. And again, perception is reality, but then make subtle tweaks to it to be more focused in what you're doing. Other times, you're going to need to actually plan out what you're doing instead of just plotting along with no real direction. Just saying, I go in, I punch the clock, and I leave, well, how are you expecting to get to any destination when you're not really showing off in any way that you're going a certain direction? If I start walking outside my front door, am I going to get to the nearest town? Maybe, but probably not. I need to pick a direction and be focused on that destination. So, whatever the case is with you, I hope you've identified what your next step should be, and I hope that you take that next step. Thanks for listening. And as always, I am Tim Corey.
SPEAKER_00Thank you for joining us for this episode of Dev Questions. When you're ready to learn to think and code like a professional developer, head over to I amtimcorey.com and enroll in a course.