Because everyone started once. I hope this will be a helpful article for the people who starts programming adventure.
This year (side note: it was at 2015) I've helped exactly 4 people to learn and start programming. It's worth mention, that every single one of them was totally different from each other and required different approach to learning process.
Today I would like to write a bit about beginner archetypes and what can they do to learn better.
Learn how to read documentation first, ask the question second.
As fast as you'll gain the ability to read all the programming docs, FAQs etc. the better programmer will You become. There should be nothing more shameful for you than asking someone (no matter whether in person or via Internet forum or something) a question that is already answered with details in the official documentation (or link to the answer is on the first google search results page).
When I was starting my road to programming heaven I didn't have this ability. I was asking many questions to my more experienced colleagues.
Now I realized how big pain in the ass I was. I'm writing this now to protect you from being the same. We are living now in golden age for learning IT-related stuff. We've got the net. Learn how to use it. Google, ask questions, find people who can help you (I will try to cover those topics in the next paragraphs).
Even now I sometimes catch myself on doing this and every time I realize it I'm ashamed for myself - and so you should do the same - if you haven't check the documentation it can be seen as you're lazy or you don't know how to read/search it.
Read the error messages
Every person I've introduced to programming didn't know how to read error messages. EVERY SINGLE ONE OF THEM. Couple years ago, when I was learning I had the same problem.
I don't know what is the reason of this state, but I think most of the beginner programmers doesn't know that in most cases they have hints in their error messages / logs how to solve their actual programming problems. When you understand it then you will become a better programmer (or you can start to name yourself as one).
I can assure you that when you copy the main part of error message to google and search for answer - you'll find it in no time.
Register in the appropriate social forum / fb group / mailing list.
Let the stackoverflow be your best friend now. If you're using some popular language / framework / tool and have a problem at baby steps level, then probably someone asked about it before and got answer already.
Of course don't be afraid to ask a new questions.
Sometimes you'll encounter a very similar question, but its solution will not exactly fit to your needs - try to explain why are you asking. Answerers will not check your question as doubled and sometimes you'll find solution by yourself because you realise that you really didn't understand your problem.
Read the industry news and / or participate in conferences.
Personally, I'm a hypocrite at this point a bit. I read tons of tech articles every day (and I think I should really reduce this amount) and I took part in exactly ONE conference ever (it was RuPy 11'). It was actually fun experience, I've met new people and helped organizers a bit.
Time goes on and I was learning more and more. One day I decided that I would like to attend another conference to learn something new. I started searching for moderate local ones. I've found couple of them but when I've seen the agendas.. I was disappointed. Almost all topics was already covered somewhere online.
I know that most people goes to the conferences because of people they can meet and not information they can obtain - I'm not in that group. That's the reason why we probably haven't met during any conference :)
But that's my point of view and I urge you to try it by yourself and decide.
Find the mentor.
Find someone who is more experienced than you. Ask your colleagues if they could help. Don't be afraid if they reject your request - maybe they're too busy, or just don't like to learn others. The key part is to find someone with whom you feel comfortable - learning should be a reward, not a punishment.
I didn't have any mentor - only couple more experienced friends with whom I chatted occasionally (which means here VERY rarely) but somehow I've made it to the point where I am (but I'm totally aware that it took me too long because I didn't have any real mentor when I most needed it).
Side projects
Spend some of your free time on personal side projects. This can be a great knowledge boosters for you. Most of my experience I owe to this workflow.
This burst creativity. Solving own problems will force you to search after new solutions, which in turn will lead you to get to know new tools etc.
Do I need to mention, that occasionally your side-projects can bring you money? :)
Don't lean on academics or books.. heavily.
There are tons of great IT schools in the world. Personally I have to admit that I've not chosen well my field of study. Only last year of my academics wasn't a real waste of time for me, but the rest of it… I think these three dots sums it really well.
Before making decisions about your academics future ask couple of actual students about it - sometimes (a.k.a. very often) the reality is totally different from the description from the academic leaflet.
Don't learn young technologies from books (e.g. brand new js frameworks etc.) - do it only in extreme cases when you can't find anything on the web.
Even with mature ones, try to narrow Your paper library to the minimum best titles. Times are changing, technologies too. The book You've bought yesterday can be already outdated by like a year.
Try to find online courses which are constantly updated as the technology (such as codeschool or codeacademy).
The best example of online book I've bought was discover meteor book. Authors of this title have been doing awesome work - they were updating the content as fast as possible when the new version of meteor.js is released.
Never give up
My first successful ruby and rails installation on Linux was.. after a week struggling with its command line, missing dependencies, additional system libraries and gems.
But I didn't give up. I was doing 20 minutes RoR blog tutorial for almost 5 days. I wanted to understand every detail of what I had to do, so I was searching for all the necessary information that wasn't included in the tutorial.
And this story repeated with every single new tool / programming language I've tried for the next 2 years.
After that I've noticed that learning something new takes me significantly less time than before. I've even named that state as learning my brain to think as a computer program. I've even noticed that in many cases I think and decide with extreme states - true or false, good or bad, ying or yang - but this is the topic for another article ;)
I wasn't born with brain of a programmer. Couple years ago I thought that I will be working on web design exclusively. I was really soft-skilled art creature. Academy didn't learn me how to program. Hard work and patience did - and it can help you as well, even if you have similar brain to mine.
Every moderately intelligent person can learn how to program. But it doesn't mean that it will be an easy task. Someone can do it in couple months, others will do it through decade.
Good luck!
There's no golden rule how to learn programming. Every person is different, every single one of us has own best learning methods - and I've wanted to share a list of my own ones via this article.
Programming is awesome. We are the craftsmen of the XXI century. We build stuff that is used by billions of people all over the world. When You create Your first successful commercial product you'll realize that you don't want to do anything else.
-- ł.
This is a re-post - it was originialy posted on my previous blog at 11/06/2015.
Click here to show comments