I took this entire year off to learn new things, like web programming, etc. I have around 20 years of programming experience, with a background in C/C++, so I had a very significant advantage over the writer of the article in terms of getting started in that direction.

But I did come across similar things that the writer talked about. I first went about it by choosing Python/WebPy as my backend, and then switching to Wordpress as a front end for my website because I got tired of having to do every single little thing, and subsequently learning PHP. Then I started focusing on Javascript, jQuery and AJAX. My website is hosted on EC2, so I needed to understand how that all worked (not nearly as difficult). Then I tried learning how to make a Facebook app, so that ended up taking a few weeks, since the documentation is amongst the worst I've ever encountered in my career. I needed to figure out how nginx worked in order to get certain things working, and I also needed to learn the basics of Photoshop and Illustrator and basic graphics techniques. Luckily I have several friends in design that helped me get over this hump.

These last 8 months haven't felt like an exercise in learning how to program more so than 8 months of constant problem solving. Sure, I learned a bunch of new technologies, but my main goal was to get up some web-based projects, and every step of the way I encountered problem after problem, and my job was to solve these problems by any means necessary. Solving these problems entailed me having to learn Javascript, jQuery, Photoshop, Illustrator, etc. I didn't relish the idea of having to keep learning new stuff, but I did it because I knew it was the fastest way to solving my problems. I can't say I'm an expert in any of the technologies above (I constantly get Javascript and Python syntax mixed up in my head, and I google 80% of what I need), but I can solve just about any problem that I've come across.

I think this is the key to bootstrap yourself and doing anything related to technology, be it programming, sysdmining, etc. It's not so much the love of constant learning, but rather not giving up in the face of constant roadblocks, and constantly attack problems over and over and over and over again until you solve them. Don't get me wrong, I've very much enjoyed learning these technologies, especially Javascript which is a wonderful language (despite its flaws), and so much more powerful that I ever thought. But I know I've only started the scratch the surface.

As well, another big factor is keeping a high level of emotional energy in order to keep pursuing your goals. One of the things I was working on was using Tesseract to do OCR on uploaded image files. After 3 weeks of trying to get it to work, I achieved about a 97% accuracy, but because of some underlying bugs that I didn't understand, it wasn't good enough. I was frustrated and disappointed and finally gave up on it, and moved onto my next project, which I finished in about 2-3 weeks. But after that, with renewed energy, I decided to give it one more go at my problem, and spent another week at it. This time I used OpenCV in conjunction with Tesseract, and achieved almost a 100% accuracy, but more importantly, I figured out a way to get around the bug that had been dogging me on my first attempt.

I'm at the point now where I'm not a "great" web programmer, but I definitely can take a design from one of my friends, and implement it, pretty much to spec. I'm not fast, and I'm not creative, but I'm confident I can solve just about any problem I need to in order to finish my task.