How To Become A Better Developer?
How To Become A Better Developer? I receive a lot of different questions each day and most of them ask me how to become a better programmer. There are a lot of different variations to this question but most people want to know what can they do to improve their overall performance as a programmer.
There are a lot of different routes you can take to tackle down this question, but there are some key factors that play an important role when it comes to improving your skills as a developer. So… How do you become a better developer?
What are the key areas you should focus if you're really serious about becoming a better developer? Watch this video and find out!
Transcript Of The Video
John Sonmez: Hey, what's up? John Sonmez from Simple Programmer dot com and today I'm gonna talk about how to be a better programmer. I got a question here from Nick and Nick wants to know how he can be a better programmer. Well, I'm hoping that I can help you out, Nick because I want you to be a better programmer too. But before I get into the question here I do want to take a moment to thank one of the awesome sponsors that we have at Simple Programmer, which is Hired dot com. You can check them out here. They are basically … Well, how can I describe this, it's basically a service that makes it so that job hunting doesn't suck as a software developer, and the way that they do this is basically you go to Hired dot com, you fill out an application. In fact, if you go to Hired dot com, go to Hired dot com / simple programmer just to make sure that you get an extra bonus here, this will actually give you twice the amount of money that they normally give you when you get a job through them … but basically you go there, you fill out the application, they screen it, they match you with employers and then the employers actually send you interview requests, so you skipped that whole bs going back and forth step with all that stuff.
That's pretty damn cool, I think so. I mean, that would simplify things. Now, not everyone is gonna make it through the filter process, it is gonna be a pretty high bar for Hired dot com since you're going directly to the employers, and they want to keep the noise to signal ratio very high and sometimes if you're not in the area that they serve, or they don't have clients in that area, you might not get in so don't be all sad about that, but go check it out. Hired dot com / simple programmer and thank you Hired.
So, let's talk about how to become a better programmer. This question is from Nick and he says, when working with on sites like Top Coder, I find that even when attempting the easy questions, I get stuck very quickly and cannot come up with an elegant solution. I find that I can only come up with one or two solutions, which are nothing like the optimal solution. I am wanting to improve my problem solving ability. Do you think that TC, Top Coder, and similar are a good way to do this? And additional info he says I recently found Simple Programmer on YouTube and have watched tons of your content over the past week however, so good job.
So, this … I'm gonna just answer this question since this is specific really to Top Coder. Top Coder, if you don't know, I've recommended them several times. I'll still recommend them here. If you go into their algorithms section, you can actually, they have a little applet where you can basically compete and do algorithm type of problems that you solve so there's an easy, medium and a hard and basically when you go in there, you can do live competitions or you can through and do practices of the old competitions, highly recommend you do that …, and it gives you some problems like Joe has a button factory and Joe has three buttons and all those buttons can either be red, blue or green and Joe needs to sequence buttons when he gets a decoded message from a customer that says what the sequence is, can you write an algorithm to sequence the buttons, or something like that, right. And then you have to write your algorithm.
This is good, Top Coder is really good for improving your programming skills. There's a book I'm gonna recommend. I've recommended it a few times. It's called, Cracking the Coding Interview, you can check out the review I did on this book. It's really good for learning these types of problems but practicing on Top Coder is essential as well. Just that book might help you to be able to practice on Top Coder better. There's a couple of other resources you can utilize to do this, I believe. I should probably get a playlist together on algorithms and learning algorithms, do I have to learn algorithms because I've done videos on that so … let's see, hopefully there'll be a playlist here that you can check out that has a lot of algorithm type of content.
As far as Top Coder, as far as getting better at these problems, there's a couple of things I'd recommend. Like I said, first of all, go and look at that book, go read through Cracking the Coding Interview and go through the algorithms and solve some of those problems there because it's gonna give you some of the optimal solutions and really, this is the thing … this is what would make someone good, kind of make someone an expert … is that they're able to identify the patterns, and the things that seem like they don't have patterns to the amateur. When you look at these Top Coder problems, you're like, Ah, they're all different. I can't formulate a way, I don't know how to come up with the ideal or optimal solution for these things. I came up with solutions, and they worked, but they suck. Here's the thing, there's only so many, there's only so many, there's only so many data structures that exist. New ones are not being invented in the computer science world believe it or not. At least not in a very fast rate, we know what all the data structures are.
Guess what? New sorting algorithms are not being invented. We know all the sorting algorithms, pretty much. I mean maybe they'll be some new sorting algorithm that comes up in the next 10 years but there'll probably be only one, if any. We've probably hit pretty close to the limits on some of these things. We've got these solutions. So, there's only so many data structures. There's only so many sorting algorithms, there's only so many algorithms in types of problems in general. And so, if you can solve these kind of things, you can basically solve how to figure out how to convert something into a binary tree or red black tree and solve that problem or how to use the stack and how to use the Q and your familiar with how to create a link list and how to traverse a link list and all these algorithms. And then every single problem that you see, you're gonna have the solution for.
Now, there's a skill involved in converting what you see into that but when you know these patterns and you've worked on enough problems, you can immediately say, oh, you can sort of reverse engineer it right? You'll get to this point where you look at the problem and you'll say, Ah, I see. The person who wrote this question what they were doing is they were trying to make a question for traversing a link list backwards or whatever it was. Or finding the head of a link list and that's essentially what this is. And you'll see the nuances of it and you'll understand it and you'll be able to identify them and you'll be able to solve that.
So, that's the key, is to understand that that's how this works. That this problem domain is not like this, it's way smaller than you think. You're just not an expert yet but once you develop the expertise and you've solved enough of these problems and seen enough of these problems, then you'll be able to see those patterns and you'll be able to solve them. Another thing I'll say here, with Top Coder specifically, if you're familiar with Top Coder this'll make sense, if not, go and check it out, and you can see here but, basically when you go in and you do a problem. Let's say you're doing a practice problem.
One of the things that you can do, especially in the live matches as well … I'm pretty sure you can do … you can do it in the practice ones as well, is you can go and you can look at other people's code. The way Top Coder works, at least the way it did work when I was competing on Top Coder is you'd have one phase where you're doing your problem and you're solving it and then after that, you'd have a phase where you get to challenge other people's problems with different inputs, okay. So, you can put different inputs trying to break it, you're actually looking at their algorithm. And that's the phase where you can learn a lot. You go and look at how other people solved these problems and if you look at enough, your solving the problem first, and you're trying to break other people's code, and if you're looking at and understanding their code and see the ways that they solve it, especially some of the top rated people … you're gonna get a knack for it, you're gonna see some of the tricks.
I learned a lot of tricks in C++ and using the standard template library, it kind of dates me a little bit, but I learned a lot of tricks from looking at other people's Top Coder problems and then I used them in other problems. So, don't get frustrated. You just gotta keep doing this. It's gonna take some time but you can make it faster if you pick up a book like, Cracking the Coding Interview. Again, I'll put a link here where you can check that out. It's a real good book, there's some other ones out there but that's probably the best one right now. It's really important to learn this type of skill because it will actually make you a better programmer. You know, not everyday are you going to use … let me put it this way, rather than telling you not everyday are you going to use these type of algorithm problems … I'll tell you this, remember I said that as you become an expert, you can recognize patterns that don't seem like they have patterns to other people? You don't need these skills to solve the problems in your regular web development job, but if you have them you will recognize the patterns and you'll see shortcuts all of a sudden where you can use these skills, these algorithm skills.
I hope that makes sense. It's a little bit confusing but essentially if you develop these skills, you will figure out ways to utilize them and they will make your job easier or make you a more proficient programmer. If you don't have these skills, it doesn't mean you can't create a webpage, or can't do web development or whatever, you're just not gonna recognize these opportunities and these patterns. You're gonna be solving things maybe the hard way sometimes.
All right, I hope that helps you, Nick. Thanks for the question. Good question and keep it up with Top Coder. You'll eventually get there. If you have a question for me, you can always email me at John at Simple Programmer dot com. If you like this video, if you want to get more videos like this one in your inbox, I don't know, if you click the little bell you get it in your inbox. Click to subscribe below. I'll talk to you next time. Take care.