How To Gain Practical Experience Writing Code?

Written By John Sonmez

Writing code can be a tricky thing, especially when you start practicing it. Most developers end up reading a lot of books, acquiring a LOT of theoretical knowledge but when it comes to writing the actual code, they get stuck.

And this is why I get so many different questions about that subject.

Developers from all around the world ask me “John, how can I gain practical experience writing code?”. Wanna know how? Watch this video and find out!

Transcript From The Video

John Sonmez: 

Hey, what's up? John Sonmez from Today we're going to talk about how to get practical experience writing code, for those of you that are trying to figure out how I can actually get some experience. Sometimes it's like a catch 22, right?

The name here is Isis. “I'm not sure what exactly to do to gain experience writing code and honing my skills. I know it's a struggle early on but I'm not sure how to start. What program would you recommend a person use to practice writing code? Does it depend on what language you use? Thanks so much for your time!” Then he says, “I'm self-taught. I've had a few formal classes in CS, more so languages than CS theory.”

I mean there's a few different things that I would recommend. First of all, what you want to do—and always when you're trying to learn something, when you're trying to do something is you want to make it as real world as practical as possible, right? You don't want to—there's a place for deliberate practice, when you're working on specific things but the best way to really learn something is to just dive in, is to have some kind of real applicable problem that you're solving.

What I mean by this is I think a lot of programmers make the mistake, beginning programmers, they make the mistake or a lot of people in general just when they're trying to learn something is they come up with weird situations. They try to solve—they look for little problems to solve that don't really apply in the real world. It's sort of a dummy, like a—I don't know how to describe it, but it's not a real realistic scenario and so your training and your practice doesn’t help you that much.

What I would recommend that you do is you try to figure out, okay, what is an actual problem that you could solve? Now, keep it simple and make an actual application for you that can solve that problem. I always like to do things where I get multiple benefits, multiple results from what I'm doing. If I'm going to do something I want to have multiple things benefits that I'm going to get from that.

What I mean by that is so let's say that you're going to write an application, why not pick an application that solves a problem for you? Okay, that's result number 1 and it's going to teach you how to program in your programming languages. You're going to learn by doing that, so that's result number 2 and maybe it's an application that you could sell, maybe say an android or an iPhone application or a web application. Maybe you're not going to make a lot of money, but maybe you could sell it so that's benefit 3. Maybe it's something that's good enough that you could put in your portfolios to help you get a job, so that's 4.

You see what I'm saying? What you want to do is—that sort of—it forexes the value of your time because you're going to be able to get all of those benefits from the same thing. Try and figure out some projects that you can work on, right? I mean maybe it's something as simple as organizing your CD collection. I don't know why you still have a CD collection. You need to get iTunes or whatever. If you've got something like that or whatever it is, your stamp collection or comic books, I don't know, something simple that you have a problem with that you can solve that you can sell. IT doesn't matter if someone;'/s already done it and someone has already done it better, you can still sell something for 99 cents. You can still just put it out there and see. The goal—you don't have to stress about it and be like, “Oh, I've got to make money.” No, no, just have that possibility. It's going to be crap. You're just learning. That's fine. It's fine, but you're going to learn so much more by actually doing, by actually solving a real problem that you have than you will by any other means.

These forced practice problems and whatnot, they can be good especially for deliberate practice when you're like, “Okay, I'm really bad at this area so I need to do a bunch of problems that will help me to solve this, to get better at this thing. That's fine, that's cool, you can do that. That's called deliberate practice. Musicians practice scales, they do all kinds of stuff that's deliberate practice. Boxers practice hitting the speed bad, but the thing that's really going to help you learn that's going to give you the biggest boost when you're starting out. When you're an expert deliberate practice becomes more critical, but when you're starting out it's actually real world application, real world development.

So create a project. Do your own project and start working on it. I'll give you one other tip real quick here. If you want to get experience working with a team and working with other developers, go look at open source projects. Go to GitHub and look for projects and start contributing. Start contributing by doing the kind of grunt work that no one else wants to do. You've got to sweep the floors, you've got to mop the floors, clean the toilet, you know what I'm talking about, stuff like maybe writing documentation or picking up stuff that no one else wants to do and you're going to be able to get in that way because someone will let you do that. You can't take the glamorous jobs first.

That's really the key thing. My emphasis here, again, there are lots of ways that you could do this. I could give you tools and recommendation problems, but that's not going to help you so much as—let's thing principal wise. Principal wise is one, I want to do real world application stuff, something that actually solves a real problem in the world for me or for someone else and creating a real application. That's the best way to practice your coding. Number 2, you want it to have multiple beneifts. What type of thinking you do, what kind of project can you work on that's going to benefit you in multiple ways?

I just gave you a few, but you could come up with your own. That's kind of the key. This way you're maximizing your time and you're able to learn as quickly as possible.

All rigyht, that's all I got for this question. If you like this video, go ahead and click that subscribe button below. I've got another request for you. If you noticed this shirt that I'm wearing and you want to get one of these Simple Programmer shirts, Trust the Process shirts, Trusting the process is all about not focusing on the results when you're learning to become a programmer. This is something that you might want to have so that you can look at the mirror and remind yourself that you just need to trust the process because you'll eventually get there. If you're so focused on the results and I can—I created this shirt for me because I get focused on results and I need to remember to trust the process. That's been the secret to my success. I look at the mirror and I see this shirt and I say, “Okay, trust the process.”

So if you want one of these shirts go ahead and click on me and you could buy one of these shirts and I'll get it shipped right to you. Take care and I'll talk to you next time.