Ever since July 2013, on (some) nights and most weekends, I have been trying to broaden my computer skills.
The main advantage is that it removes all the messy stuff involved in actually creating a web page. For instance, usually you need to buy a website name or domain from a vendor, e.g. GoDaddy, Network Solutions, then you would need to upload images and configure the vendor’s settings with your computer. Code Academy’s main benefit is that the user can skip all that and begin to feel like he’s doing web development.
Once I began doing a fair bit of playing around, I recognized that Code Academy does not go into the level of detail necessary to gain proficiency. There are too many tricks and standards that Code Academy could not address.
Learning web development was overwhelming. More importantly, I didn’t feel like any of these skills would help me in my normal work, namely analyzing large quantities of data and/or data mining. My goal is to be able to automate the evaluation of large quantities of time series data to look for patterns.
Code Academy gave me the confidence to learn something more esoteric: a “real” computer language. Starting last December, I began with C++ but then discovered that I also needed to learn how to use an integrated development environment (IDE) like Eclipse. The online manual is exceedingly dry; it felt like reading a dictionary. I also recognized that I would need a compiler. Ahhh! I just wanted to start learning to program but was spending all this time figuring out how to get the parts working together on my computer.
My sister also pointed out that one of the most popular languages now is Java. Sure, I’d still need an IDE but by then I was looking for something more user-friendly than Eclipse, e.g. NetBeans. I also realized Java offers a way to compile your programs through a virtual machine. I thought, Great! Let’s get started. Then I began reading some websites about which language a newbie should start with. One thing that some websites mentioned was that Java is very forgiving in how its language is structured. For a seasoned programmer, that feature offers flexibility; for a newbie, it could lead to bad habits. The starter course at MIT suggests using Perl; another website suggests Python.
Brief Foray into VBA
F*** it! F*** it! I thought. Many programmers are not fans of the Microsoft platform for a reason. I didn’t know what those reasons were exactly but I knew enough not to start with Microsoft. But I relented and gave in to trying to learn VBA (Visual Basic). I discovered, however, that if I typed exactly what was in my book into VBA it wouldn’t work. It wouldn’t work! I got all these different run-time errors. Not an encouraging start.
Back to Finding a Language
I’ve learned that since many languages are a mishmash of conventions built up over time, each language has strengths and weaknesses; more importantly, they have quirks that can help set the newbie with bad habits or good ones. Considering how I would be spending a significant amount of time with this language, I thought I’d better pick a friendly one.
So I decided on Python. In fact, I found Zed Shaw’s book to be a very good starter manual. It compels the user to do the most rudimentary tasks in Notepad and Windows PowerShell that I finally feel like I’m getting to know my computer. PowerShell looks like that screen that most non-computer people get intimidated by.
Right now, my goal is to get through Zed Shaw’s book in a month. Then I will try to more complicated tasks like those in Wes McKinney’s Python for Data Analysis. After all this time, I’ve finally figured out what an IDE is. I’ve played around with the one from NetBeans, Aptana Studio, and even the one for Microsoft’s VBA. I think I’ll be ready to return to Eclipse in the near future.