Learning Progress

First post in March… how is it already March!?

I noticed that I tend to drift between the aspects of my learning, devoting most of my attention to one branch at a time. Sometimes I blog a lot, sometimes I code a lot, and other times I “hit the books” a lot. Usually the increased focus on one branch leads to less time spent on the others. I am trying to find a good balance, because all three of those activities help me learn.

I enjoy talking about programming and about learning programming. The social aspects keep me motivated. Exchanging stories and ideas with others who are at various stages of learning to program helps me through the rough patches. Also, getting my ideas out, “on paper,” or in a screencast or video, helps me understand those topics better. Figuring out how to explain something forces me to look at it from another perspective, and almost always it affords me a much better grasp on the subject.

Actually sitting down and writing code seems like the best way to learn, on the surface. I can get too caught up in it though and instead of learning anything about the language or the design, I just fall back on the three or four simple concepts I know and plug away. It’s not a totally bad thing, but I need to keep pushing myself forward. I have been learning a lot of advanced techniques, I just have to force myself to start using them. Lambdas and closures and currying and all of the beautiful things about first class functions, all that stuff is rolling around in my head. The sooner I put it in my codebase, the sooner I can really understand it.

For me, “hitting the books” covers actually reading books, as well as perusing documentation and other people’s code, and especially, it means things like freeCodeCamp, Codecademy and Code School. In the last week or so, I revisited the level 1 Angular course at Code School (give it a shot, that class and several others are free) and then used the momentum to finish their just-released level 2 Angular course. I also jumped back into their JavaScript courses. I had stalled out midway through level 3. It is some pretty heady stuff, but I realized that I shouldn’t back off every time something gets tough. So, last night at about 10:30 PM, I finished the last exercise with some fun prototyping tricks.

My friend Chris Gomez pointed me at an article by Eric Elliot that shines some light on a few ways JavaScript really gets it right. It’s an interesting article that everyone learning to program, for web especially, should probably read. I realized that I own his book, “Programming JavaScript Applications,” and so, after reading the article, I cracked the book open and dove in. It is definitely not beginner level reading, but it isn’t so advanced as to be unreachable. I’ve only been doing this for a few months, and although some of the concepts are still not totally transparent, he does a great job of explaining everything. It also dispenses with the (boring) beginner stuff that you’ve probably read in the first three chapters of every other JavaScript text you’ve looked at. He is concise and knowledgeable, and his style is approachable and very readable. I have a feeling this is going to be a great reference book for me while I incorporate “real” programming methods into my repertoire.

Next up, I want to try the Best Practices course at Code School and jump back into the challenges at freeCodeCamp. I also want to continue my series on Test-Driven Development and finish up my blackjack game. I hope everyone has a productive and happy March!



This should be a short update. A while back I talked about having a backup in case cloud9 was down or I couldn’t connect to the internet. Those two conditions actually have pretty big implications. If cloud9 is down and I can connect, I’d like to use another cloud or internet based ide so I can work on my chromebook. If I can’t get connected, I think my chromebook becomes an expensive (although not that expensive) paperweight. In that case, I can look at more traditional desktop IDEs.

There are a few big-name choices for working on JavaScript and other web focused programming. Visual Studio, WebStorm and Sublime are the ones that I have the most awareness of. NetBeans and Eclipse are in my peripheral vision and I am sure there is a slew of others. I have installed Visual Studio Community (I think that is how it is identified), but I haven’t done much more than open it yet. Upside, it’s free. Probably a good place to start investigating. However, I chose to take a run at JetBrains offering, WebStorm.

So far I like it. I may even love it, but I am still in the awkward learning-how-to-make-things-go phase. The hints and warnings are a lot more detailed and helpful (bordering on pushy). It plays nicely with GitHub, which isn’t a surprise but is still nice to confirm.  I knew I had some slightly sloppy code and sure enough,WebStorm pointed that out for me and offered to turn some of my lazier declarations into inline declarations. That’s an interesting feeling. I hope it makes me more aware instead of more blasé. I’ll go into more detail later, with before-and-after examples and other hints I have already picked up.

It’s a good product. I am using the 30-day free trial. I’m already tempted to just spend the $49, but I will restrain myself until the trial is up.  It is definitely worth a look.