I’m becoming a web developer!

My contract at Seneca Libraries came to an end last month (I knew there was no chance of extension). I had a fantastic experience, and I will miss my colleagues there. Thanks, everyone!

Though I’m sad to leave Seneca, I’m excited about my next career move: I’m participating in an intensive 9-week bootcamp to become a web developer. The program is called Bitmaker Labs, and it’s located in downtown Toronto (so I can easily take the subway down each day). Starting October 21st, I will be learning Ruby on Rails (and other tools) with a group of 39 other motivated students from a variety of educational and career backgrounds.

What does this mean for GrahamLavender.com? Well, I will be posting less about libraries, at least in the short term. When researching Bitmaker Labs, I found it helpful to read the blogs of students from past sessions, so I plan to document my own experience for the benefit of prospective students. The coursework will take up the vast majority of my waking hours, so I may not post as often as I’d like, but I’ll do my best.

Wish me luck!

Wearing my Bitmaker Labs t-shirt on the rooftops of Essaouira, Morocco

Wearing my Bitmaker Labs t-shirt on the rooftops of Essaouira, Morocco

Learning to code through Codecademy: a great idea, but not quite perfected

As a librarian with a strong interest in web services, I’ve always wanted to improve my coding skills. I’m comfortable with HTML and basic CSS, and way back in the day my friends and I entertained ourselves by creating text-based adventure games in DOS using some form of BASIC, but to be honest, more advanced programming languages intimidated me a bit. So several months ago I was intrigued to discover Codecademy. The claim on their home page caught my attention:

Codecademy is the easiest way to learn how to code. It’s interactive, fun, and you can do it with your friends.

When I first signed up, lessons were only offered on JavaScript, but they have since added HTML, CSS, and jQuery (which works with JavaScript), and more content is being added on a regular basis. In fact, the site offers a course called Code Year, which was designed for people who wanted to make a New Year’s resolution to learn to code. Each week, starting from the beginning of 2012, there is a designated set of exercises for participants to complete.

Registration is free and only takes a moment (Codecademy states that they reserve the right to charge for premium content in the future, but for the moment the site is entirely free). You can give it a try without registering, but I suggest you set up an account to keep track of which exercises you’ve already completed. Each exercise consists of instructions on the left side of the page, and a window on the right with a command prompt where you can enter code and then run it. In some cases there will already be some code to get you started, and at other times you’ll write all the code from scratch. After you hit the run button, you’ll see the results of your code and a link to the next exercise will appear if you’ve written the code correctly. Otherwise, you’ll receive an error message and you’ll have to change your code to make it work. The system makes use of gamification (also popular in libraries): each time you complete an exercise you receive points, and a running tally will show at the top of the page.  Then, once you’ve finished a section of exercises, you’ll receive an achievement badge (an icon that shows up on your profile with a name representing what you’ve learned, such as “Loops in JavaScript” or “Recursive Functions”). After each new concept you learn through these exercises, there is a “project” – that is, a set of exercises where you put your skills to use building a program (such as a blackjack game or a cash register program).

I think this is a great idea. Coding is something you need to actually do in order to learn it –  I’ve tried to learn from a book and found it frustrating to be always shifting my attention from the printed page to my computer monitor. Considering the service is free, I would recommend that everyone give it a try. However, there are a few aspects that still need some work.

What I like about Codecademy:

  • It’s much less imposing than a heavy textbook.
  • Each lesson is broken down into a series of very short exercises, and as long as you’re logged in to your account, this means it’s easy to work through an exercise or two and pick up later where you left off – even if you only have a few minutes at a time to work on it.
  • When you get stuck, you can always refer to the Q&A, which is a forum where you can post questions about a given exercise and other users can post answers. In my experience, I’ve always been able to fix my issues by reading what others have already posted in the Q&A.
  • It’s web-based, which means there’s no software to install and you can log in from any computer (it even works on my iPad, but let me assure you, having to move the cursor around so much on a touch screen is not a pleasant experience).

What still needs work:

  • There is a bit too much hand holding. Too many exercises provide the vast majority of the code for you, and just prompt you to add a line or two. Although this means you can get through more content more quickly, I feel there should be more opportunities to start from scratch. I understand that programmers usually build on existing code rather than starting from a blank page, but I find I learn better when I have created something from the ground up. Some exercises are also too simple, in the sense that they tell you precisely what to type and on which line. I would rather figure more things out for myself.
  • The “hint” feature isn’t used consistently. Usually, this space is used to point you in the right direction if you’re having trouble, and it is a useful feature. However, there are a few exercises where critical information is located in the hint; in other words, there’s no way you could be expected to complete the exercise without looking at the hint. There are also some instances where the hint provides information that isn’t critical but is interesting and helpful to know, which means that if you were to complete the exercise without looking at the hint you would miss out. Of course, consistency is difficult to achieve when the lessons are created by other users, but perhaps they could have an editor look into this.
  • They take the gamification aspect a bit too far. In the early stages it seemed that I was receiving a new achievement every ten minutes or so, which made each one feel like less of an accomplishment. And you earn points for each exercise, even the ones that don’t require you to do any coding (they provide some text for you to read and then prompt you to hit the run button to move on to the next exercise). I would rather have the feeling that I earned all of my points.
  • There are some small technical issues. On a few occasions, I’ve written my code and seen it run correctly, but the error message says I need to change something. Usually when I check the Q&A someone else has had the same issue, and the answer is that you need to use a very specific variable name or change some spacing; in other words, what I’ve done is correct as far as the programming language is concerned, but the Codecademy system won’t acknowledge it. In other cases, the message tells me I’ve completed the exercise, but when I check back later there’s no green checkmark to indicate I’ve completed it. When this happens, I have to redo the exercise in a different browser.

Overall, I am certainly impressed with Codecademy, but it might not hurt for them to slap up a big “beta” sticker while they iron the kinks out. To their credit, each exercise gives you the option to give it thumbs up or thumbs down, so I’m sure they are collecting data as to what works and what doesn’t. I would suggest they take this one step further and put a comment box next to the thumb icons, since there has been more than one exercise I’ve found frustrating enough to want to write down a sentence or two in addition to clicking on thumbs down.

Have you tried Codecademy? I’d be interested to hear your thoughts, so leave a comment below.