Thursday, November 8, 2012

Things I’m learning from learning Python

While I am very busy balancing my different jobs during certain times of day and week, I also have some nice open time built into my schedule, especially during the workdays when Caroline is at MIM and I am not going to Bici Verde. I thought a good way to make use of this time is by trying out one of these new free online courses that a lot of universities are offering.


For my first course, I decided to take 6.00x from MIT, which is the online version of 6.00 – Introduction to Comp Sci and Programming. The class covers some conceptual stuff, but mostly it is serving as a good introduction to the language Python. So far I’m about half-way through the class, and just took the mid-term. I’ve learned about programming, but beyond that I’ve also learned some more general useful things:


I do much better at sticking with something when I have some outside accountability.
The class has automatic grading of assignments (has to be automatic since there are 9,000+ people in the class!), and also gives you an ongoing grade in the class. The grade doesn’t really count for anything, but it sure helps keep me on track! I do my problem set every week, and even set aside time on a weekend to do the mid-term. I don’t think I would be this dedicated without some sort of grade. As a person who has trouble holding myself individually accountable for getting things done, this is useful to know about myself.


Algorithmic thinking is something I really enjoy.
I’ve always really enjoyed working in Microsoft Excel at previous jobs, so I guess it should come as no surprise that I’m finding that I really enjoy writing code. So far, the assignments have been pretty small and simple, so I haven’t had to deal with the headaches of QA or all the other things that real developers face, but on this small scale I’m really enjoying the type of problem solving needed to write code that works.


Programs in Python require waaaay less code than I thought.
Previously, my only coding experience was with LogoWriter, the language we learned back in like 3rd grade to move a little turtle around the screen. It’s very similar to BASIC. Well, programming languages have progressed a lot since then, and now I can’t believe how few lines of code are often needed to accomplish quite a lot. I imagined there would be all these IFs and FORs, but often just single clever loop or recursion does the trick. It’s very satisfying!


There is still a huge gap between knowing the basics and knowing how to make software.
I have always felt like I didn’t really understand how a pile of code becomes a full-fledged program, and even as I’m learning more about coding, I find that I’m still mystified. I realize this is partly because I haven’t done anything with graphics yet, but it is still totally a mystery for me how a bunch of code adds up to even something simple like…well, I don’t even know what qualifies as a simple program!


This whole process has definitely made me gain respect for my friends who write software for a living. While solving a little problem set question has been very satisfying, it has also given me a glimpse into how complex coding can be. It’s especially tricky to read through a sample function that doesn’t have good comments to explain what it does – I can only imagine how tough that is if the code is pages and pages long!


In the meantime, I’m enjoying the learning process a lot, and I’d highly recommend taking an edX course to anyone who has time for it.

No comments:

Post a Comment