Beginner Programming Q and A
[schema type="review" name="How I Explained Programming to a Novice" description="Here is how I answered a question about programming to a novice programmer. The answer I gave back is based on my experience of programming and learning." author="Rob Attfield" pubdate="2013-03-17" ]
Recently, I had a member of my Facebook page approach me with a question about how to learn programming, and for some direction on how to get started. This was the first time I had someone, offline or online, come to me with this question – one that I was willing to take the time to answer. It was quite humbling having someone come to me for guidance – and I also felt good that my Facebook page influenced the member’s curiosity in programming.
Below is the copy of the question by the member (whose name I will make anonymous, due to privacy considerations), and my reply to them. While my answer might not necessarily be the best, the answer is based on how I came across programming – and used learning concepts (from areas such as learning Japanese and German, learning about geography, etc) to try and make sense of programming languages I came across.
I would like to learn to program I know its a wide topic and am not sure where to start. Would you be able to point me in the direction of some good tutorials and maybe give me an outline of programming/hacking?
- Facebook page member
Your question certainly discusses a broad topic, so my feedback might not suit your preferences. It also depends if you want to learn programming for web development or native software applications (e.g ones you use on your PC/laptop). My first real programming language was Python – it was relatively simple to grasp, then I moved onto Java – slightly more complicated. I have also learned C# and C++ (C++ is quite hard).
If you are good with logic, and have some good basic maths skills, then learning how to program will be easier for you. If you have learned foreign languages, and became relatively good at it, that will also help (I’ve learned German and Japanese and used to be quite proficient at them).
From my experience with programming, having patience and determination is key. I’ve encountered many fragments of code that have made me want to pull my hair out – but if you take a few deep breaths and work through the code in logical steps, you will be rewarded – nothing beats making a program work after 6 hours of frustration, trust me :).
Also, I can say don’t try and be the next Bill Gates or Mark Zuckerberg straight away – it would have taken them years to get to where they are now (I have been told that it takes on average 10 years to be an extremely good programmer – but don’t let that put you off). Start off small, and work yourself up the ladder, and keep revising on concepts you learn along the way.
If you want to know a programming language you should start off with, I can recommend Python as a starting point. Learn the basic components of programming (loops, variables, variable types, arrays, object oriented programming, syntax, etc), and then challenge yourself to something more complicated once you have got the basics.
If you are after some tutorials, you can always use Google to search for them (I know everyone would have told you this by now). I do have a collection of resources on my blog that point to some tutorials (not much on Python though, as I haven’t actively coded it in a couple of years) – which is on this post. Since you are (probably) a novice programmer, you will most likely come across some beginner tutorials – feel free to share them with me as it has been a while since I have been a complete novice at programming.
You may also be interested in a post on my blog – which details my programming (mainly web development) learning experience.