Can I become a really good self-taught programmer?

Here is what I can tell you about becoming a self taught programmer. The rational of becoming a self taught for something is strong. However, it depends on how far the first initial pushes will get you, because that ambition will need to fuel you to the rest of the way. That is one way to determine how bad or good one could become at something.
Building a mantra or lets say a rough plan can be helpful. I would say a rough plan, since plans tend to be cute, beautiful and motivated like babies, but they need to be changed often. Being ready to change them is a key here. Avoid things like four steps, or 10 hour guides, since if one get stuck at a step, it will feel like an overwhelming task going around it, the better approach is a following the rough plan.
So here is my rough plan:
  • Fun: This needs to approached as a fun activity to do rather than a learning path that might never end or an office routine, because being a self taught is a bit different than going to school. Here is what I mean by a fun approach:
    1. Gamers: They always want to mess around with their video games, tweak it, make a mod or just break it in some sort of way, hence I became a programmer (Yad's answer to How many boring steps in programming were there for you, before it became exciting?)
    2. Researchers: They want to automate some of the boring tasks they have to do in return to get the fun results they need, thus they learn most of what it takes to get those things out of the way.
    3. Puzzle lovers: Computation power can always come in handy to do some calculations that we don't want to redo every now and then over the path of solving a big puzzle. (Puzzle here is a metaphor for big problems).
    4. Sales & Marketing ?: Welp, that is for you to answer what's fun in pursuing the field in the first place and now you can bring in programming power.
  • Same goes to any other field, since nowadays technology and programming have evolved enough to effect every field of work & entertainment.
  • Fundamentals: Getting to learn 101 programming is not hard, in fact there are hundreds of websites and academies online that teach 101 programming. But the other important part is learning the fundamentals of computers and how they work, otherwise you could get carried way and not knowing how all this gibberish on the screen is showing up.
    1. Reading books that introduce simple aspects of computers are important.
    2. Learning about data structure of a desired programming language can be quite helpful.
    3. Exploring algorithms and why the heck this thing is even important and how it can make life of a programmer easier.
  • Proceed: Once something is in place to learn, then trying to use that piece of info to create something out of it. Perhaps, some schools capture this aspect in a good way. The students spend 16 weeks or so of a semester to learn 7 to 8 concepts of programming and solving few problems a week using that concept.
  • Learn by doing in terms of the small pieces of information can be your boost to:
    1. Get rewarded pretty quickly and try new things.
    2. Assert the knowledge once your brain tries to use a concept to solve a problem.
  • Community: You need to find some partners to be doing what you are doing, luckily nowadays hundreds of online forums and websites can help you make this happen. Choosing a technology or a programming language can always become a tricky thing, but you can always turn to the one that has a bigger community and beginner friendly.
  • Repeat: Once you get a hang of how you learned one part, then you can go back and repeat that same process on the other parts of the programming language. Being obsessed with learning something can help find fun, learn basics and build further.
I can say for sure that it takes time. Being patient is important to avoid calling quits early. It takes practice and building various bigger pieces to get perspective on how to approach larger problems.
There are a lot of resources out there, but I recommend using something that is comprehensive & self taught friendly content.
Online Paid Courses:
  • Lynda.com have very long courses that goes through the basics of numerous programming languages.
  • Tuts+ have some of the best short courses that can be handy, but not too detailed due to the short episodes.
Free Courses:
This is very well recommended by many:
There are free courses from MIT open-courseware MIT open-courseware introductory Programming Courses and also rest of the available ones on Coursera. Here is a rough list of the course lists:
  1. Here's a list of 154 free online programming/CS courses (MOOCs) with feedback(i.e. exams/homeworks/assignments) that you can start this month (June 2015) • /r/learnprogramming:
  2. prakhar1989/awesome-courses
  3. Table of Contents:
    • Systems
    • Programming Languages / Compilers
    • Algorithms
    • CS Theory
    • Introduction to CS
    • Machine Learning
Don't get lost or feel overwhelmed by the amount of content. Just choose something like an introductory programming course and go with it.
Books To Read:
Aaah, there is just a lot, but I would still recommend reading some of them if not most, because books are a different source of information that once can't replace.
Also one last piece of advice, getting attached to a specific technology, learning the concepts are better. Specially in the case of programming languages folks feel violated when they are told a language has become obsolete. Hopefully you will become a great self taught programmer. Adapt and learn once there are new key technology players in the field and remember to have fun.

Comments

Popular posts from this blog

Good schedule to follow for becoming better at competitive programming for beginners

Forget Efficiency and start solving easier problems

How to study CLRS?