Monday, March 4, 2013

How to learn programming


by Zeroeh (Edited; Grammar corrected)

When people ask for easy ways how to learn coding or programming, there are often the same of responses: Codecademy or similar sites where you can learn coding “really fast”. The main problem is that those sites often fail to teach the theoretical concepts or tie it up nicely with the examples.

Programming isn't just syntax and compilers, it's a whole logical thought process that shares the same process of building a home. You must have a great foundation of what computing is, how pieces work and how to really think abstractly.

Programming is great because there is never the "best" solution to a problem. Programming teaches you how to think differently. It teaches you to think abstractly. How does this work and why does it work this way? Your total thought process becomes a puzzle that you are constantly trying to solve.

To successfully learn programming you need a lot of intrinsic motivation. Programming is one of the most stressful and aggravating things you can ever do. Some people try it once and think: “What the fuck! I cannot do this!”, then give up. Others will excel at the theories behind computer science but during implementation time, they become overwhelmed and let their code "run-away" from them. They lose the complete picture of what they are trying to create and solve. Programming teaches you patience.

Learning to code through Codecademy or the like will most cerntainly benefit you. But let me show the dangers of learning it this way in an example:
You need to create a round-robin scheduling algorithm for a tournament? Your first step is: What is that? You look it up and say “Okay, cool, easy to do”. At this point, less experienced programmers will Google first ideas on how to implement it, then try to implement it. Normally they will not end up getting the problem on the first try, but that's okay! They try to see what the error or unexpected output is. Yeah, you can figure out where you're missing that “}” or “;” but what happens when your program gives you a “5” as result instead of the “3” you were looking for?

Most unskilled programmers become frustrated, start doubting themselves and search Google for more examples until they just try to copy and paste code into their program. This is what I mentioned above with “code run away from you.” They now have no clue what is what, where is this method? This is where most programmers give up, they can't figure it out.

A skilled and experienced programmer knows how to let their mind run free, they don't let problems and code run-away from them. They understand the complete picture and know what that FIFO, Queue, Stack, Binary Tree or Linked List is, how they are supposed to work and how they are implemented. How arrays work, what datatypes are best and which looping structures are better. This is something that comes with experience, not one day of googling and understanding it.

Everyone can become a "programmer". Syntax and algorithms will come with time, but patience and your thirst for success must be something you stride for.

No comments:

Post a Comment