Matt Ambrogi

Starting Point

This week I started Recurse Center.

My goal is pretty simple: learn a lot more about programming and get a lot better at it.

As I start exploring the little corner of programming I have chosen to focus on, I wanted to note where I am starting from. Then, when I'm done, I'll be able to look back and see how many branches of the knowledge tree I've explored - deeply or at the surface.

So here's a summary of what I know about programming.

In college I took Introduction to Object Oriented Programming I and II. I worked in Java. From those classes I have a pretty strong grasp of the basics of OOP. I also have a good grasp on basic algorithms and data structures. But I didn't take a class explicitly on algorithmic analysis, so this is an area to go deeper.

I also took an Intro to Web Dev class during college and continued to dabble with it outside. That taught me the basics of HTML, CSS, JavaScript, and Bootstrap.

When I began at Capital One as an analyst, I spent a lot of time teaching myself how to wrangle data with SQL and then Python / Pandas. This got me familiar with Python - which I quickly preferred over Java. I learned a lot more as a PM, I'll circle back to that.

I had a lot of design experience and built a new no-code apps. Then I decided to teach myself to build real code apps. About a year ago I taught myself a fair bit of Django. I built and deployed a handful of basic tutorials, like a blog.

I also built a few more complex apps. I built a Twitter clone with a horrendous UI. But I was proud that users could log in, have a profile, a feed, etc. I even figured out a follower system from scratch and was happy about that.

Then I built a platform that allowed users to create their own job board. There were 2 types of accounts: job board hosts and companies. This had lots of different functionalities - but again with an ugly UI.

It probably took me 20 hours to build that. But I had never made anything so complex before. Getting a taste of what I could make in 20 hours with so little experience made me wonder what I could do if I focused on programming full time. And that's what brought me here.

Since I put that project on the back burner, I've been reviewing the fundamentals of programming, how programs are structured and interpreted. I've been using composingprograms.com as a resource to do so. Which is a condensed, Python based, version of The Structure and Interpretation of Computer Programs. That's been eye opening and helped me really understand some of the things I learned in college on a much deeper level.

It's also worth noting that in my year and a half as a PM on Capital One's Machine Learning Platform, I learned a hell of a lot about software engineering and data science. I learned a lot about how models are built and deployed in industry. I learned a lot about Kubernetes, Docker, containers, and scalable software infrastructure. So I think that will help me bridge the gap from novice to decent programmer much faster than I might have otherwise.

I'll follow this up with a separate post on my goals for RC. But just to provide a glimpse, some of my immediate plans include:

#Programming #Recurse Center