A great essay on why programming is hard:

It’s harder than you think. Right now you’re probably underestimating the amount of frustration and discomfort you’re about to experience, without realizing that by doing so you’re creating all sorts of subtle barriers to obtaining a deep understanding of programming.

Language does matter

I find this part extremely true: my first language is Java. Every programming language I’ve tried since has been through comparing it to Java. I’ve had criticism of each different language based on my assumptions. Scripting languages being prone to bad coding because they are not strictly typed, having to do tedious work with languages that require memory management (my time is too valuable!).

Your first programming language provides you with a base vocabulary through which you begin to understand all other computer programs.

Programming is the best way to learn programming.

Also another trueism. The best people in my class in college were those who had done the most code. But to transfer that to industry you have to have interpersonal skills, be willing to compromise, work well in a team etc. It sounds fluffy, but once you realise how much as a team you rely on other people (and how bad code merges, bad commits can cause a lot more work)1.

It’s OK to suck at math; you won’t be using much anyway.

Also I’ve found this to be true. I wouldn’t be the worlds greatest at math (in fact they were the classes I felt most unease at in college)2. The author here is spot on about command of English. Professional programming (not necessarily what the article is about) requires a lot of communication. Like I said above, interpersonal skills is without doubt the most important attribute besides being technically competent. If your customer/stakeholder/manager can’t give you a design specification or you can’t read and understand an API, you’re instantly a lot less valuable. I’ve seen this in college also, a very proficient programmer who consistently did badly even at programming modules - because he never bothered to understand what was required in each task.

I’ve commented enough, but it’s an excellent article which I find myself agreeing with all the way through.

  1. I’ve been responsible for both, bad merges and bad code. Its a fact of life and being too young and eager. You realise the value of the veterans is the cool head and measured approach they bring from years of experience. 

  2. Although I felt the most unease at maths, it’s mainly because of a poor attitude towards maths. I never felt confident in it until I went to college (I actually had very reasonable grades in maths modules). Maybe it’s because like a lot of children and teenagers I was told I wasn’t good at maths or maybe I told myself that and actually believed it.