Like many others I have decided to try and learn to code. I've made a variety of attempts to get into programming in the past few years, but none of them have really stuck. Sure, information has gone in, and bits of it remain, but I would still struggle to build anything more complex than a simple maths tool.
I've flirted with C, C++, Objective-C, Java and Python, plus a few other 1 or 2 day flings with Ruby, Javascript and a few more. Having not had any formal computer science education and only a minuscule amount of specific programming tuition I find myself wondering whether it's me that's the problem, or my programming partner of any given moment.
My first foray into programming was into iOS development. Going into that with zero programming experience seemed not to be a problem at first. I was powering through tutorials and worked through a good few chapters of a book that I'd bought from Amazon based on some good ratings at the time. All was going well until one day I just could not complete any of the exercises at all. I was out of my depth and severely demoralised.
Why had I suddenly not been able to complete any of the exercises? In hindsight, it's probably because I'd jumped into learning Objective C and then iOS development without any prior programming experience, let alone Object Oriented Programming. As such, I had vague ideas about objects, classes, methods etc, but really didn't know any of the specifics. Add that to attempting to wrap my head around building an interface and I didn't stand a great chance.
Attempt number two began with buying a Python book and working through that. I decided to work through page by page, methodically completing each exercise, analysing each example. That definitely worked better and I got further than I had done with attempt number one. I could start to see things coming together, but it was all a little too slow. Essentially I burnt out; I couldn't keep on powering through page after page of text. Perhaps if I'd had a project in mind that I could have begun working on then having that in sight could have kept me motivated.
Next up was a return to iOS programming, or at least that was what I had in mind. I had heard good things about the Programming Methodology lectures from Stanford University on iTunes U so decided to give those a go. The language chosen for the course was Java and I never quite got into it. The lecturer, Mehran, was excellent, but it wasn't enough to keep me going. Another attempt, another case of some huffing and puffing but no real progress.
Attempt four. I convinced myself that learning C would be the best place to finally kick my learning into gear. What better place to start than with something as popular as C, albeit not so much anymore. Again, the all too familiar pattern of strolling through all the basics of the language and then finding a whole section of exercises that seemed completely alien threw me off.
Next stop, Python. Again. This time via Udacity and CS101. I managed to get through this pretty quickly and without many problems. However, moving on to the Web Applications course taught by Reddit co-founder Steve Huffman proved to be a big step up. Well, Unit 2's exercises proved to be a big step up. I could follow and understand all of the lessons and then suddenly the end of Unit 2 made me stop dead. This theme was common amongst other users in the forums. I did eventually manage to get the first part of the exercises complete, but I felt that if the rest of the course was going to be similar, perhaps I'd best try something else.
Up next, C++, the language that my Dad used for at least the best part of a decade. What could go wrong. As it turns out, not that much. I like C++. Notice the present tense. In just over a week I will in fact be taking an exam in the "C++ Programming for Maths" module that I am currently undertaking. Sure, I don't want to continue on using C++ on my own, but in general I like the syntax, I like the feel of it all, and it's sticking.
Maybe the difference then is that when I have a guiding hand, in this case in the form of a fortnightly lecture, I can follow along much more easily and not get lost. Or maybe it's the fact that this actually counts for something, that being my degree in this case. Whatever the reason, it's working. As I said though, C++ is not where the future lies for me.
Now I'm jumping back into Objective-C with the final goal of programming for iOS and OS X applications. I've chosen to go with The Big Nerd Ranch Guide to Objective-C Programming. So far so good, but as the past has shown, I'm sure that what lies ahead won't all be plain sailing. But that's part of the fun. Hitting a block and then eventually, no matter how much ink, paper, coffee, sugar, fresh air it takes, finding the solution and getting that dopamine hit. Oh, it's so sweet. Fist pumps and cries of joy have been becoming evermore present when I'm sat in front of the glow of a screen.
It feels like I've finally managed to push through some sort of block and now the progress is more apparent. With a feedback loop things become that much easier and I can only hope that things continue as they have been of late.