Category Archives: Coding

Review of Udacity CS 101 – Progress through Lesson 3

As mentioned in my coding plan, my first step in learning to code has been working through Udacity’s CS 101 free online course. I read a number of reviews (most of the available reviews suck, though – this is the best one I found) before I started working through it. Most of the complaints seemed to be from people who had literally no background in any concepts of CS, and since I do have a bit of a background I figured I’d be okay.

I’m now well into Lesson 3, so I’ve gone through Lessons 1, 2, and 2.5, which was added after the initial course was put together. I’ve done the homework for each as well.

Overall, I think the course is great! The instructor does a great job of being clear, the forums quickly answer the typical questions that might come up, and the exercises build upon each other well. One thing I did do is to follow along with the course running my own Python interpreter locally on my Mac. I used IDLE (for more details than you want about how to get everything all set up, check out this post). That allowed me to play around while Dave was talking and generally gave me more flexibility.

Lessons 1 and 2 were a good review for me, and I imagine they will be a good though slightly challenging introduction for someone completely new to the world of CS. So, I was able to get through those pretty quickly. The course does a good job of making it seem like your progress is tangible because everything is being taught with a goal in mind – to build a rudimentary search engine. That really helps anchor the material and make it much more concrete. Plus, the goal is not some BS goal of building a simple program – building a search engine is serious business, and I imagine it serves as a good incentive to keep going.

Over the coming weeks I’m excited to continue onward, and will do another post on my progress after a couple more lessons!


Why I’m Learning to Code

There has been a lot written on why people should or should not learn to code. My reasons for wanting to learn to code are simple:

1) I find it intellectually stimulating to learn a new skill like this. (After I get to some level of coding proficiency, I want to learn how to play the piano, which I think will be much harder)

2) I like understanding how things work on a deeper level, especially something as fundamental to my life as “technology”

3) I’ve been working for web startups for over 2 years now, and I know that learning to code will make me a better employee, manager, or founder at any web company

4) Relatedly, I’ve been repeatedly frustrated by my inability to make even small changes to our site or help out with some of more trivial coding tasks we have

5) I’d like to eventually be able to build my own MVPs for ideas I want to test

As I said in my intro coding post, my goal is not to become a coding master – at the start, I just want to learn enough to be able to converse more fluidly with my CTO and to hopefully help out on smaller projects or tasks. Eventually I’d like to build some rudimentary web apps of my own…but I’m not expecting that to happen overnight.

Learning to code: The Plan

I’ll get into just why I want to learn to code in another post, but here is what I’m planning to do. Let me know if you have any suggestions!

Note: I’m not a total novice when it comes to coding. I did play around with Basic a bit in middle school, and HTML and C++ in high school. I also am reasonably proficient with R, which is my favorite data analysis software (and it’s free, unlike Stata / others), and I’m good with building functions in Excel (courtesy of my years at J.P. Morgan). So, it’s not much, but I do have a bit of a background which definitely helps.

This progression is geared toward ultimately developing in Ruby on Rails using tools like Heroku, Git, and AWS, since that is what Winestyr (and of course, many other sites) are built in.

Step 1: Take Udacity’s CS 101 course – this is a very entry-level course that uses Python to teach principles of computer programming while building a rudimentary web-crawler. I hope it’ll refresh what I learned long ago and set me up to progress slightly more quickly through subsequent courses.

Step 2: Go through “Learn Ruby the Hard Way” – I want to have some fundamentals of Ruby before I dive into Rails.

Step 3: Take the Hartl tutorial to Rails – I know there are lots of options out there, but I like Hartl’s approach, and it comes highly recommended.

Step 4: Take Coursera’s Startup Engineering class – A high-level class on turning academic CS knowledge into something actionable…covers some front-end stuff, databases, testing, deployment, etc.

From there I’ll re-assess and see where to go next!

Note: thanks to Kapil Kale, Mark Glenn, and Elliot Garms for some of the thoughts here.