3 ms·
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
by steve8918 14y ago
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.
- eel 14y agoThis may be a bit tangential, but may I ask what led you to decide to learn web programming? My background is in web programming, though I have much less programming experience overall than you (~5 years). For me, I feel like learning C/C++ would lead to increased understanding of general programming and better career opportunities. It seems to me that C/C++ (C++ in particular) is still relevant, and is becoming even more relevant. And by learning C/C++, I mean really learning C/C++, not just relying the three classes that I took in college that used one of them. Lately I've been working on a C++ Windows TFTP server which has caused me to learn TFTP (very simple) and WinSock (complex so far). So I'm just curious what your thoughts might be.
- steve8918 14y agoTo be honest, I first started out trying to learn iPhone programming, simply out of interest. Unfortunately I got caught in between the transition between Xcode 3 and Xcode 4, where the interfaces and some of the terminology changed and the books were all based on Xcode 3. It got frustrating and tedious trying to convert concepts from Xcode 3 to 4 and back, so I decided to jump to web programming, since I envisioned the back-end of many iPhone apps would be web-based, with the goal of returning back to iPhone programming. During that time, I made some pretty good progress with the web stuff, and it was pretty enjoyable so I just stuck with it. Pretty soon, I'll get back to learning iPhone programming. Personally I think C/C++ is still relevant, and it's my language of choice, but I'm not close-minded about it. For example, in developing my OCR functionality, I discovered how wonderful Python was, because it was a sane programming language, and allowed for much quicker development and progress than C++. I'm now a Python convert, although I still have many more miles to travel before I can become a competent Python programmer. In addition, Javascript is a lot more powerful that I imagined, and it looks like a lot of people are turning Javascript into something a lot more powerful, ex. Node.js. If I had to put my money behind the languages that might really blow up in the near future, it's Javascript and Python. As to the career opportunities of C++, I can't really speak for that because trends change quickly. The key is to be flexible and open-minded, and not get stuck in a particular pigeonhole otherwise you'll find yourself like COBOL programmers in the late 90s. You will definitely learn a lot by going the C++ route, and being "closer to the metal" as some people say, you can and will learn a lot of different concepts that aren't available to many other languages, like memory-management, etc. It might make it easier to take up other languages in the future, as well, so it's not something I would discourage anyone from learning.