I Took An Online Coding Class, And Now I Have A Huge Appreciation For What Programmers Do All Day
But when it comes down to it, my liberal arts degree gives me little ability to understand the difficult work programmers spend all their time doing.
I had heard about Khan Academy, the nonprofit online learning platform backed by big-name investors like the Bill & Melinda Gates Foundation and Google, and how effective and fun its programs are.
When Salman Khan, the founder of Khan Academy, started the site in 2006, it was just a series of YouTube videos he had made during his time away from work as a hedge fund analyst.
Eight years later, Khan Academy largely follows the same video format, though on a much greater scale. As of February 2014, the site had 10 million monthly visitors, a huge leap from 144,000 at the beginning of 2010.
Even Bill Gates himself has endorsed the platform, telling TIME, "I've used Khan Academy with my kids, and I'm amazed at the breadth of Sal's subject expertise and his ability to make complicated topics understandable ... He started by posting a math lesson, but his impact on education might truly be incalculable."
I decided to give it a try.
How It Works
Khan Academy has a huge selection of classes in subjects ranging from biology and organic chemistry to world history and macroeconomics. In the computer programming section, they offer courses in introductory JavaScript, games and visualizations, and natural simulations.
Since I'd never taken a computer science class before, I chose the easiest class, "Intro to JS: Drawing & Animation." A menu showed all of the tasks I would complete in the course - 101 in total.
Like other Khan Academy classes, the JavaScript course is structured around a series of video walk-throughs. The student is then given challenges and projects to try out each skill.
First, I learned how to code some basic shapes. During a five-minute video, Sophia, one of the Khan Academy instructors, drew some rectangles at various points on the screen.
It seemed simple enough. In my first challenge, I used the commands I had just learned to make an "H" out of rectangles. It took just three lines of code.
After a bit of tweaking of the numbers, the computer determined that I got it right - and gave me some points as a bonus. Those points would later go towards earning badges and upgrading my profile.
To the left, you can see the code I wrote, with the results on the right. A fun character congratulated me.
Things Get Tougher
The course quickly became more challenging, and in the second section, I learned how to color in shapes. That wasn't too tough in itself, but the end of the section brought on the first of the projects, which I would later come to dread.
Projects are when the program gives the student a set of objectives to achieve in his or her code. Since each one involves a good deal of creativity, other Khan Academy students or coaches are asked to evaluate projects to make sure they met each objective.
In the first project, I was asked to use the shape commands I had learned to make something that looked like dinner. I decided to use my drawing and coloring skills to make a pizza.
It took me a bit of time to figure it out - I'm new to programming after all - and I was happy with it for the most part. Another user gave me a passing grade on my pizza.
One cool aspect of Khan Academy's projects is that once you finish a creation, you can save it to the system as a "spin-off," and anyone else in the programming course can build on it.
When I finished my pizza drawing, I scrolled down to see what the other Khan Academy coders had come up with for this particular project. The system displayed the drawings that had received the most votes from other users. Those were much more impressive than mine.
I tried not to be too disheartened by the comparison, though some of my drawings took me quite a bit of time.
As you can see in the evaluation criteria for my next project, the program asked me to draw an animal with at least five shape commands and variables for width and height.
He was pretty cute, though I probably made the coloring too light.
Again, some people were able to make some amazing things from what was a relatively simple assignment. Here were some of the most impressive spin-offs from the "Draw an Animal" project that I drew the penguin for.
It got even more fun - and complicated - when I learned how to animate my drawings. I could do things like make a train drive across the screen, or make a sun increase in size until it exploded.
Of course, that was child's play compared to what experienced programmers could do, but I was excited about how much I was learning in such a short amount of time.
And as I learned more and more skills - text, strings, functions, loops, arrays, and object-oriented design - I was able to incorporate them into more and more complicated code.
It was difficult, but I started to really enjoy the results.
What I Thought
As I worked my way through the course, it seemed to become more difficult to get evaluated. I'm not sure if it was because not enough people had progressed through the course to have the skills necessary to evaluate my work, but sometimes I would have to wait a few days before someone would give me a passing grade that would allow me to move on.
I found that a little annoying since I was trying to complete the class after work hours, but someone with more spare time might not.
Overall, realizing how difficult coding is gave me an entirely new appreciation for the apps and programs I use every day. Small things like an extra semicolon or improper placement of a line of code could set off an entire program.
The skills I learned were elementary in comparison to the work that professional programmers do regularly. That was pretty eye-opening.
Though I found programming difficult, I thought Khan Academy was a fun and accessible platform on which to learn it. I could tell that the course was geared towards younger people, with lots of cute characters with their own names and personalities. When I made a mistake, I didn't get a glaring "ERROR" message but an adorable little creature that said "Oh noes!" Things like that helped when the going got tough.
I don't think have a future in programming, but I'm glad to have gotten a new perspective on the industry I cover. Plus, knowing that I was using a nonprofit organization that seeks to help anyone get access to a free education was an added bonus.
Bill Gates would definitely approve.