Teaching Yourself Programming – Behind the Scenes

Last year I’ve decided to learn how to program in order to change my career path, and by this I don’t mean going to school to get a degree, but learning by myself, at home. With only basic programming knowledge, which I’ve learned in high school (close to zero, now that I look back), I’ve started the long and difficult road towards success.

Because the beginning of anything is very difficult, and you might get mixed feelings about your decision, not knowing what to do and who to turn to, I want to share a few thoughts on this, with examples from my own journey, hoping that I will provide guidance to those of you who find themselves in the same situation.

truestoryAnd I will start with a friendly advice / warning: If you don’t have the passion for this, DON’T DO IT! If you plan to get yourself into programming only for the material benefits, you’re going to have a hard time. After learning intensively for a while now, I can tell you it’s not just a job, it’s a lifestyle, and it takes a lot of dedication, study and self-discipline. It might look easy at a first glance, but in order to become really good at what you do (where the real money come from), you need more than this. You need passion! And if you think the beginning is hard, wait until you pass the beginner’s level. This is only the start, and it will only get worse, before it will get better. If you don’t have the drive to learn, you will simply quit, as you can’t make any more progress. There are enough programmers out there who don’t really understand the concepts, and spend their whole careers copy-pasting code from different resources, bringing entire companies to the ground, when things start picking up, and the websites they built can’t support the traffic anymore. Don’t become one of them!

Beginner – Set. Goal. Wings to fly!

Like any one of you who decide to start walking down this path, I went online looking for sources and advice.With a positive attitude, and a goal in mind, I went through the information provided by a few websites like Codeacademy, W3schools, and a few more, starting with the basics HTML and CSS notions, combining them with a bit of Javascript, and later on, some basic PHP and MYSQL, as my dream was to become a web developer. And it worked beautifully. The knowledge clicked, and I felt like I can get down to business: ‘Wow, now I can build a website!’ And by website, I don’t mean the easy practice ones I did while learning, with: ‘Hello World’, ‘Here’s a picture’, ‘Thank you for visiting’, ‘Goodbye’. I mean a website with a complex menu, a sign-up form, login, database (you can probably see where this is going). Positive attitude? Maybe, or maybe lack of experience and knowledge. Obviously, if you try to run before you walk, you won’t make it! But sure, me being me, I thought I can do it, I have what it takes. Well, sorry to disappoint but, after learning this the hard way, I can tell you for sure, that it just doesn’t work like this. Oops … 🙂

while codingStill, not being aware of those, I wrote the pretty HTML and CSS code and after threatening my PC a few times with flying lessons, it all looked gorgeous, but … yeah, things were missing, others were working without me actually understanding why, and others were working but not doing what I wanted them to do, but what I told them to do (Yes, computers have this annoying habit to do what you tell them to, and not what you actually have in mind 🙂 ). Those links and tabs did nothing! Hmm …No magical leprechaun took on the responsibility to make them work after I wrote the code. Darn! Someone is going to get fired… Someone, anyone?

After realizing I’m the only man on the ship and I can’t fire myself, I went back to the drawing board. How do you code the sign up and log in? And, how does the website know who you are in order to show your profile page? And … how do you show a profile page, when it pops in the menu bar only when the user is logged in? How do I hash the password? How do I connect files? Where do I insert a chunk of code in another programming language? And how do I …? And where … ? Oh wait … Oh no … Oh my … And that’s how getting lost in the programming world starts…

Medium Level Knowledge – What … ? Where from … ? Panic!

The more you look for answers, the more you realize how much you DON’T KNOW, and you start to doubt even the knowledge you have. Random code and notions pop from every website you click on, in your quest for guidance. You want to get it, you think you did, but you have no idea what to do with the information. Where do you even start when there are so many things that don’t work, and you don’t know what to do first?

Well, first of all, don’t panic. I know, too late. Still, don’t do it. It’s normal to not know everything from the beginning. Also, there’s no way you can ever build something of the size an online community, when you have only basic knowledge of programming. We all went through the ‘going up really fast’ faze, feeling like we just got our cool set of wings to fly, when you think you can get to the moon and back with them, and then hit the ‘brick wall of reality’. And, it hurts badly, but it’s a good wake up call, making you realize what your level really is.

Going through online sources you will find information mainly for beginners or advanced programmers. Nothing for you, past beginner’s level knowledge person, but without enough experience to keep at it. Once you pass the beginner’s faze, and you do have some knowledge here and there, you will be clueless about what to do next. And you search desperately for answers, and the more you read, the harder it gets, and the more confused you become.

Ok, I did learn a lot. I did some reading, I know more stuff. But what do I do with the information? Where do I put the PHP / Javascipt code now? How … what do I do with the Database? How should I structure the website? What goes in which folder? What file should have what extension? Very hard to figure out, on your own.

This is the point where you have to keep at it, and don’t quit! Also, this is also the point where most beginners who got themselves into this only for the money, or for the wrong reasons, will quit. It’s a good faze of learning programming, even if it looks like the worse you’ve been through, so far.

The Solution To Your Problems

Sorry, no easy way out, no shortcuts. If there were such an option, I would have found it by now, as I looked for any possible way to learn faster, skip steps as I can clue in by myself as I go, get better with less reading and more practice with the code. If you are looking for the secret of getting there, I can’t give you the recipe, as there is none, but I can give you the method: WORK. Yes, a lot of work. Again, it doesn’t come easy, but when it finally clicks, it’s very much worth it!

From my own experience, here are a few steps I followed, which actually helped though the journey, by keeping me on the right track. They might not work for everyone, as we all learn in a different way and at a different rhythm, but they sure worked for me:

1. Don’t give up! So, it doesn’t work. So, what? No room for ‘Lie down. Try not to cry. Cry a lot‘ type of attitude! If you feel like this is your passion, and you have a call for it, remind yourself daily, as many times as needed, that you made it so far, you know a lot, even if it doesn’t feel like it, so it pays to focus a bit longer. I know you must go though a ‘I can’t do it‘ faze, but, with a lot of work and dedication, you can do it.

2. Get organized (after you get out from the previous panic moment 🙂 ). If you decide on a specific field / programming language, work on finding a structure, a content of the information you should know, and you want to / have to learn. You can find it in a book, or from a ‘learn how to program’ website. Regardless of your source, keep building on top every single point of the list, going from simple notions to the most complex ones.

3. Read from multiple sources. Websites like Codeacademy are great, but once you passed the rookie faze, you can’t rely only on the information you got from one source, as that will never be enough for you to reach your goal. I combined the structure previously created (see point 2) and built on top of it, by reading from beginner’s websites, one book (whichever one works better for you – find it and use it – start with ONE only, then move to a new one) and video tutorials on how to whatever you are currently learning. From everything, what I’ve found most useful were the video tutorials, as they gave me the visual and audio part of learning, which I was missing by focusing only on the reading. This also clarified a few questions I had related to the structure of a website.

4. Go small! Take you goal, break it into as many pieces as possible, and work only with those pieces until they work. When one piece doesn’t work, tackle one issue at a time. When you figure it out, then you can move to the next one. One by one, you will get them done, and you will put the puzzle pieces back together, to form the desired result. Don’t ever bite more than you can chew, or you will end up disappointed and discouraged, which slows down or puts an end to the progress made so far.

5. Practice, practice, practice. Once you read something, make sure you take the knowledge and apply it. This is the only way in which it will stick. You can’t memorize programming, you have to feel it and understand it. No other way. What really worked for me, was using a programming language to solve small programming challenges. Project Euler was probably my best teacher in the past few months, when it came to solidifying and testing my knowledge.

99 bugs6. Don’t be afraid to make mistakes! I know it might sound weird but mistakes are good, actually they are great! It took me sooooo long to figure this out, but every time you make a mistake, you learn. I know it must be hard to see, but believe me, you do. Fixing your own mistakes, will make the knowledge stick. Debugging has its advantages! Remember that the only people who make no mistakes are the ones who don’t try to do anything. If you want to learn, make as many mistakes as possible. You will get there!

7. Don’t expect immediate results. Yep, I am one of those persons who study for a while and then wants to move mountains. If I don’t see things happening, I feel down, and doubtful. If this is how you are as well, and you want to see the work pay off NOW, you can forget about it. When it comes to programming, there are only baby steps. If you set your mind on ‘going big or going home’, in the first months of learning, you will go home. You fill fail, repetitively, but it’s all about how you train yourself to keep on moving. Get up, and try again.

8. Trust in yourself, stay motivated! This is the hardest part, once things get hairy, but you are the only one who can decide to stay motivated or quit. Nothing can stop a motivated person with a positive attitude. It’s your choice entirely, which type of person you will be. With every new piece of information, and every new day of study, you can make a choice. Choose right!

Once it gets worse, it will also get better, as long as you hang in there, stick to your goal and don’t give up. No one said it will be easy, but if programming is what you really feel like you want to do in life, for sure you can get there! With the right amount of work and dedication, you can become a very skilled programmer. No overnight success though, but only a lot of dedication, reading, practicing, debugging, all for that moment when your code works perfectly, in one go.

Remember, it pays to be patient. Get busy coding!

Advertisements

18 thoughts on “Teaching Yourself Programming – Behind the Scenes

    • Thank you so much for reading and for your kind words! I wanted to share some of the road bumps I hit in the past few months because I know it’s important to receive some guidance. Also, it’s good to know what you get yourself into. I hope it will help others make the right choices 🙂 Have a lovely weekend!! ❤

      Liked by 1 person

    • Thank you so much for reading, Sue! I know this is not an area for everyone, but I’ve decided to write this post in order to guide others who struggle on their own. It’s pretty hard to not know what will happen next, or if you have what it takes. I wanted to inspire others to keep at it, if that’s what their passion is, even when they hit that brick wall. Hope the message will get out there. Have a lovely evening! x

      Liked by 1 person

  1. First of all, I wish you Good Luck! and I hope you achieve your goal of being a great programmer. It’s hard because you don’t want to be just a programmer that just copy-paste, as you said and it’s the best way to think like that. If you want to be the best, you need to think ahead of the others and even try things they haven’t tried yet. I liked the steps you provided with examples and you are totally right on the no 3 that we should learn about something from different sources and it’s really important not to stick with just one source. I think this rule applies in learning something new and even in life, be curious and don’t believe from the first source you read or hear. Also, we should take step by step and don’t forget to take a little break and breath a little.
    We are humans and make mistakes; we should try new things because we never know where this could lead. The step no 6 reminds me about a phrase ” Take a change because you’ll never know how absolutely great something can turn out to be”.
    Great post Lucy 🙂

    Liked by 1 person

    • Thank you so much for your lovely comment Alexandra! As you said, the steps I’ve suggested apply to every field, not just programming. Still, as sometimes it gets really hard, I thought some guidance might help others, as I looked for this when it was needed. It’s hard to pass the brick wall stage but once you succeed, it definitely pays off. Good luck in any goal you set your mind to. All the best and lots of hugs x

      Like

  2. I feel for you! My husband has been a programmer since 1962, mostly for NASA. I have watched the process, and can vouch that it is hard! Although he has been retired since 2000, he still does his own thing with programming for personal use, and still has the same excitement that he had when he worked. Programming is a lot different now, but still not an easy path. Best of luck for your success in this field. The passion is palpable.

    Virtual hugs,

    Judie

    Liked by 1 person

    • Thank you for your lovely comment, Judie and for sharing your husband’s experience with me! I’m sure his work was absolutely fascinating. The truth is, once a programmer, you’ll always be a programmer, even when you retire 🙂
      I wanted to provide a bit of guidance to those who start now and have no idea what to do next. I’ve been there so many times myself, and it’s good to know what will happen next. I hope the article will be useful for others.
      Lots of hugs and have a lovely weekend! ❤

      Liked by 1 person

    • Thank you so much for reading! Indeed, if you’re not motivated, it’s pretty much impossible to achieve. Still, I find it very rewarding, when I successfully complete a little project 🙂 Have a lovely day! x

      Liked by 1 person

  3. I studied computer science at university, but truth be told, most of the things I know I’ve learned on my own or at the current job. Thanks for making me laugh with the photos and some of the comments, haha, I know your struggle 😀 You seem very passionate about it, I wish you good luck! How long have you been doing this and what languages are you studying? 🙂

    Liked by 1 person

    • I’m happy to hear your enjoyed the article 🙂
      Unfortunately, the Romanian educational system doesn’t really allow you to LEARN. It’s all more like: here, copy this from the book on your notebook….I totally understand why you had to learn on your own, as well.
      Only for programmers the question ‘what languages are you studying?’ has a totally different meaning haha. I know JS, PHP, HTML, CSS, JQuery, MySQL. All learned on my own. And yes, I do feel passionate about it. It’s amazing what you can build with only a few lines of code 🙂 What about you?
      Have a great weekend!

      Liked by 1 person

      • I know all of these, although my PHP is a little rusty, since I haven’t really used it for a few years. I’ve mostly worked for developing web sites with Java, Javascript (and other JS libraries) and SQL. I also learned C at university and worked with C# and .NET, but I don’t really like them and I try to avoid them as much as possible, haha. 😀 If you haven’t already, you should look into Bootstrap and AngularJS, they’re super useful in building web sites. 🙂 Are you currently working as a web developer?

        Liked by 1 person

      • Pretty good I would say! 🙂 I did worked with Bootstrap already. Quite powerful tool. I built a few things with it.
        I worked on a few small projects, so far, but I am not employed full time for any company right now. Right now I focus on building up my skills even further 🙂

        Liked by 1 person

  4. Wonderful post…I’m standing on the same path where you were last year…want to change my career path due to passion in IT field…last year I registered myself for an online programming course CS50 on https://www.edx.org/ Great course, great professor and a totally helpful community on facebook and other social media, but was not able to complete it due to some personal reasons…I’m planning to start again…You too can have a look and find something of your interest…Pleasure meeting you 🙂

    Liked by 1 person

    • Pleasure meeting you as well! It’s great to meet more people passionate about programming. I hope you will manage to complete the course and see your dream come true. I also had to postpone it because of personal reasons, and it got harder and harder to start again, but I believe if you have the passion, is worth the time. Good luck! I’ll check out the link. Many hugs! 🙂

      Liked by 1 person

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s