Wednesday, April 27, 2016

Codecademy vs. Google Python Class vs. How to Think Like a Scientist

Every day, like clockwork, I get emails from various free online course platforms to try out a new coding class. Like my CMB app, each email I receive is telling me that this course is the one. As with online dating, sometimes I wonder if the more options there are for these courses, the harder it is to gauge where I stand.

Don't get me wrong, having options is a good thing because it means I won't settle, and I like having tons of free resources at my disposal when it comes learning. However, it also means that every option is different--good and bad--in its own way, and it almost feels like I'm comparing apples to oranges.

When I first decided that I would delve deeper into the world of coding, I didn't know where I should pick up from where I left off a decade ago. Much of the code I knew, like my GeoCities page, had become obsolete (e.g., since when did <i> to Italicize words become <em> in HTML?). I had taken a course here and there on Coursera back in 2014, which to its credit has a great library of free classes from top notch universities, but an ambiguity in measuring a potential gap in knowledge when transitioning from one skill level to another. In other words, if you're taking Stanford's Intro to XX in one semester, how do you know you can pick up right where you leave off at Carnegie Mellon's Intermediate XX in the next?

After doing a quick Google search on free, self-paced online coding courses I stumbled across Codecademy, which was the perfect platform to segue into a variety languages without being confused by different built-in interpreters and such. There is simply one window where you write your code, one button to run your code, one to reset your code, and one window to display the output of your code.

After refreshing my rusty HTML & CSS skills in one Codecademy course and introducing myself to Javascript in another, I couldn't help but wonder--how does the pace and content of Codecademy stack up against other online courses? Was it simpler, more in depth, did it focus more on certain topics over others?

I went ahead and completed 60% of the Python course before I decided to explore what other introductory level Python courses were teaching, all the while reading How to Think Like a Computer Scientist on and off on my morning BART rides to work. I was at the point in the Codecademy course where they were giving me one exercise after another just for practice, so I figured I could always go back whenever I wanted to.

I've heard of the Google Python Class by Nick Parlante here and there and decided to give it a shot. It's definitely a breath of fresh air to put a face to an actual instructor, although I do have to admit that while Parlante's enthusiasm for the language and class is endearing, I would have been extremely lost if I didn't have prior exposure to the language before, . 

Everything is simplified in a way, and so are the exercises, but there are certain snippets of code and syntax rules that aren't explained very well, or simply glossed over. Much of the "standard" running code is already filled in the exercises, and all you need to do is input code where instructed. There is a lot of "there's xxx code here, but we'll get to this later", and "this" ends up never materializing in the course again, or so I'm guessing. So far I've made it through Day 1's lecture videos, and will be working through the reading material of dictionary before starting the exercises.

Perhaps this Google Python course was designed for people who have good experience with other languages and can easily translate that to Python without needing the know-how's and why's of all the code that ties a program together to make it work., nevertheless I'm determined to finish this course just to cross it off the list. If I really get stuck, I'll probably bring it up to one of the TAs at the PyLadies study groups.

Speaking of PyLadies, I just attended my first Meetup in this group last Monday. It was a Beginner's Workshop that focused on material and exercises from How to Think Like a Computer Scientist, which was great because after months of reading the book on my phone during my morning commute, I could finally see what these exercises were about. 

Like Codecademy, this book/course hybrid has its own built-in platform where you can input code and run it on the same window to see the output. The Turtles exercises reminded me a lot of Scratch, which I had to use back in UCSD for an Intro to Comp Sci class, dragging and dropping snippets of code to build out a program. It's a great way to visually map how a programmer should think about arranging their code, but not so much in giving you practice in hands-on writing code. Then again, I guess that is the point of the book, right? How to think like a computer scientist before your start writing like one.

Much of what I read during those two hours I already knew, but that's probably because I keep going back to the beginning by trying out different courses to see if the knowledge I'm being taught is even across the board. Makes me wonder, at what point do you progress from intro level to intermediate? Do programmers even define it this way? It's intimidating to think about joining study groups that are considered non-intro level because there's no way I can tell what level I am. For now I think it's fair enough to just say I'm intro level until I finish the Codecademy, Google, and How to Think Like a Scientist Python courses.

Anyway, at the end of the study group, I met three great Hackbright alumn ladies, who told me a bit about their experience at Hackbright and the admissions process. It was great talking to them because I'd attended a Hackbright Admissions info session a few months ago, but didn't get to really talk to the alums. Again with the theme of the night, they said their experience admissions really wasn't about how much they knew beforehand, but how they knew.

More on that in the coming blog posts. I have another PyLadies beginner's study group today. We'll see how that goes!

Thursday, April 14, 2016

Quarter Life Crisis, or Just the Road Not Taken?

The second Karen picks up a pen, she starts to draw. She draws through happy times, through sad times, through boredom.

At age 10, Karen is introduced to HTML in computer class.

Karen teaches herself how to build websites (on GeoCities, may you RIP) using HTML and CSS by age 11.

At age 12, Karen's artistic side kicks and she decides she wants prettier graphics for her website. She teaches herself Adobe Photoshop 6.0, and integrates her work into her website.

Karen gets her website hosted by a kind teenager who owns the domain digital-grl.net (now obsolete), and learns how to use FTP for the first time.

In middle school, Karen experiments more with graphic design and decides she wants to be a graphic designer.

In high school, all of Karen's friends decide they want to major in business for college. The FOMO side of Karen gets the better of her, and she decides to pursue marketing, somewhat of a cross between graphic design and business.

The idea of majoring in business doesn't excite Karen all that much. For her, it's always been about building something out of nothing. Amidst standardized tests, Karen finds solace in baking. She bakes cakes, cookies, and pies every week and brings them to school. She finds it wonderful to be able to throw together a few ingredients, heat the mixture up, and somehow create something that sustains life.

Karen attends UCSD for college. There is no business or marketing major, so she double majors in Economics & Communications, the closest compromise.

By junior year of college, Karen witnesses people enjoying their CS majors, and wonders if she should have taken the other path from the very beginning and chosen coding instead of graphic design. However, in her mind, she was 3/4 done with college and couldn't turn back.

At 22, Karen graduates UCSD and starts her career doing marketing in-house at a healthcare tech company. After half a year, she feels stagnant at her job. She was working in a slow environment, in a slow industry, in a slow city. She yearns for change and a faster paced life.

At 23, to stimulate her mind, Karen starts cooking a lot, and takes an introductory Javascript course on Lynda and a Java class at UCSD Extension. She wants to complete the three-part Java certification but gets sidetracked trying to find a job--any job--to get out of her safe but boring position at work. She decides to move to NYC to join her boyfriend.

Amidst interviewing for marketing jobs in NYC, Karen's now-ex breaks up with her. Confused and sad, Karen contacts her college roommate, a San Francisco native, and asks her what she should do.

"You've always wanted to live in San Francisco. Why don't you move here?"

Within 2 weeks, Karen finds a job at a marketing agency in San Francisco. She moves into a great apartment with her college roommate and old UCSD friends. She loves her friends, her apartment, her boss, her coworkers, and her job. She loves SF.

But what about coding? It's always been there, itching to push past all the things that came in between. What if she had continued coding? What if all the fortunate and unfortunate things that led up to Karen being in SF, the tech hub of the nation, was so she could finally, finally, stop wondering?

-----

Has this path been a long time coming or is it a quarter life crisis? Or possibly, both? This year, I've decided that I need to stop wondering "what if?" and find out. Hence, my journey to cooking up some code, and more, at age 25.