By John Sonmez June 8, 2017

Learn Programming Without Tutorials?

Almost every person that wants to learn something new, especially programmers and software developers, searches for tutorials, books, articles written about that subject, etc… None out of the ordinary, after all, following the steps of someone who has done this before and have already written a step by step guide is the simplest way to learn soemthing.

However, in the programming field, things might not always work like that. There are some cases, especially with open source materials and new technology, that there might not be any tutorials available.

What do you do, then? Do you give up?

How to learn programming without tutorials? Watch this video and find out!

Transcript of The Video

John Sonmez: 

Hey, what's up? John Sonmez here from simpleprogrammer.com. Tired of pushy recruiters sending you LinkedIn requests for jobs you have no interest in? Tired of blasting out resumes into the dark? If so, you should check out Hired.com. Hired.com flips job searching on its head by having top employers like Facebook come to you after you fill out one simple application. You also get your own job coach to help you on your next job search. If you haven't checked it out, I highly recommend you at least fill out the application. Just go to Hired.com/simpleprogrammer. When you get hired with Hired, you'll get double the normal sign-on bonus for using that link.

Today, I got a question about learning without tutorials. This question is from Etienne. Etienne, maybe, and he says, “There is this GitHub repo I'm trying to contribute to. The thing is that they've got their own framework derived from OpenTK. Since it's a private framework, no documentation or tutorial is available online. How would you recommend going about learning the framework or anything else without documentation available?”

Wow. It seems like I get this question a lot. How do you learn a framework or something without documentation available? This is the basic thing that I would recommend, especially if you're working on this GitHub repo, is that first of all, go and find their bug database and go and fix bugs. Fix bugs using in that framework. That's the best way to get familiar with it. You're going to be debugging through that which is start-off by trying to fix bugs in that GitHub repo. What you're going to do is while you go through that process, you're going to be debugging through and you're going to be learning how that framework works. Look for simple bugs, you know, little UI things that you can fix that you can trace back through the framework.

The second thing, I would say, is that start developing small little features. They don't even have to go into the actual repo, but just add some stuff for you. Add something like look for something similar and duplicate that. I talked about before that if there's like a form field on the UI, you could create another form or another field and you could create that and you'd have an example.

When I first started programming, the way that I actually learned how to program, the way I learned how to program in C, was—I'll date myself a little bit here, but there was this program. In fact, it was open source and there was no documentation. It was called a MUD, a multi-user dungeon. I downloaded the source, the Diku source, for those of you that are MUD buffs that are as old as I am. I downloaded that source code and I ran it on a server, and I made modifications to it, but I didn’t know what I was doing. I didn’t even understand programming, right? You've got a big advantage over me.

What I did understand was that there is a skill called kick, that you could type kick and it would cause your character to do—to perform the kick skill. What I didn’t know was that I could copy that kick skill and I can make Kick 2 or round house, or whatever it was. I can't remember at the time, but I made my own skill. All I did was I looked for all the places in the source code that had that kick skill and I saw, “Oh, look. There's some table here. Some lookup table where I have to add an entry here for my new skill.” I added my new skills entry there and I found all the places in the code that that kick skill was implemented. There was this lookup table and then there was a file called like Kick.C that had implemented some functionality for Kick. I duplicated that and I made slight changes to it. I increased the damage on mine. I almost did a complete duplication of that original skill, but by doing that, I learned all the places that I had to modify in order to create a new skill. Now, look what I have the knowledge of.

I knew that—that was a custom framework. There was no documentation on it, but now I had the knowledge of that framework because now I knew what it took to add a new skill, how the framework handled that. I added a skill that was different than Kick, that operated differently but was somewhat similar. I tested it and I could say, “Okay, I need to add something to this table. I need to do that.” That's how I learned the Diku source code, the framework there for that MUD. I did that with a lot of other things. I did that with adding items, inventory of items. I did that with the character stats. I added a new character stat and I saw all the places that that was calculated and used. That taught me the framework.

Same thing here with this GitHub project. Go and add stuff that's similar to something that already exist. Don't try to add something totally brand new, but look for as much similarities and then that's going to teach you to framework better than anything else because you're going to have to actually use that framework and you're going to see examples of that actually being used in working and you can lean on that. That's going to teach you.

Once you do that enough times, it's like I went to the—I actually have a video on this where I went to the Van Gogh Museum. One of the things that Van Gogh did as an artist was—and a lot of artists do this is they copy great works of art. They copied other artists like stroke for stroke as close as they possibly could. By doing that, they then develop the skill to create their own unique stuff. It's the same exact thing that you're trying to do here, is you need to copy what's already existing, and some people do this.

In fact, copyrighters do this. There is this good copyrighting course called CopyHour where copyrighting is writing advertised as marketing material. What they do is they copy great advertisements. They don’t make their own. They just copy them word for word. They're write it out in hand. Hand-write all the stuff out and then once they have that ability, once they understand “the framework” because everything has a framework, then they can improvise. Then they can innovate, then they can create their own works of art, then they can create their own marketing and copyrighting, then they can create their own frameworks or expand on the framework or utilize the framework.

That's what you got to do. That's what's going to help you the most rather than just you just pour through the code and through the non-documentation but read the comments in the code. It's not going to help. You need to actually be building, doing something. Start with copying. Start with really, really simple and then, eventually, you're going to get that ability to actually be able to innovate and to understand how it fundamentally works. Then like I did with the MUD, add your own skill. At first, it's going to be very similar to what's already existing, but then you'll understand how the framework is working and you'll be able to add something that is not necessarily as similar.

All right. If you like this video, if you haven't subscribed already, I don’t know what you're doing, click that Subscribe button below. I'd love to have you as part of the Simple Programmer community. It's a great community that we have here. Thank you all for your support. If you have a question for me, you can always email me at john@simpleprogrammer.com and I will talk to you next time. Take care.

About the author

John Sonmez

John Sonmez is the founder of Simple Programmer and a life coach for software developers. He is the best selling author of the book "Soft Skills: The Software Developer's Life Manual."