(Hacker School: Week 2, Day 2)

In my first week here at HS, I felt like I learned a lot. I finished one textbook, read a lot of another one, and by good old osmosis I knew everything there was to know about Python. I pair programmed - a technique HS advocates as a way to learn alongside others, regardless of experience level - and had a valuable if challenging experience. I even got to talk to a ton of different people to understand their projects, learning goals, and interests.

Now we’re in week 2, and that feeling of progress has slowed. It’s easy to feel progress as I’m reading - every page I read and understand os a success. As I’m putting what I’ve learned into action, though, it’s easy for me to get frustrated, unfocused, and discouraged - especially when the implementation of what I learned isn’t as straightforward as I’d like.

For example - to get a bit technical - on Monday I read all about building an application in Flask. I went through the tutorial - a step-by-step guide to building a small app - and understood each piece as I followed along. Yesterday, I went to put what I’d learned into action - I wanted to build a page that tracks my to-do list.1 But when I went to start over and build a new app, I got frustrated - I didn’t remember certain steps, new and unfamiliar steps had to be introduced - and eventually got completely discouraged. Worse (in my mind), I know that building this kind of app (where you have a single page, connect to a database, and read and write from the database through the web framework) is about as easy as it gets in web development - a lot of tutorials and help guides try to emphasize how “simple” it is to build this kind of thing. And yet I couldn’t finish it in a day? “You must not be cut out for this, Jim” - me to myself at some sad point yesterday.

So I took a step back. Why am I frustrated and discouraged? It could be a lot of things, but I think it’s mostly due to the way I like to learn. Traditional learning environments - grade school, high school, college, work - never gave me this kind of frustration. And why? Because my learning was structured by someone else. Here is a textbook - read this chapter - do this assignment - here’s what you did right and wrong (or, for work - here’s what you need to know - do it - good/bad job - try again). If I did something wrong, or didn’t understand something, there is a clear way to better understand it (read it again, do the exercises again, talk to the teacher, get help from a classmate; ask a coworker, talk to the manager, let someone else do it). When I got a good grade, or a good review, that was always, to me, an affirmation that I understood something - and when I got a bad grade/review it was a signal to go back and try again, with some clear, directed feedback. This kind of step-wise learning - learn one thing, ensure understanding, then learn the next, until those successively more difficult pieces build up to the overall course2 - was, for me, at least easy to understand. I knew where I stood at any time, I knew how much more there was to learn, I knew what was and was not necessary to understand.

HS is pointedly non-traditional. Their about page says it all - “We don’t have grades, degrees, classes, or a fixed curriculum.” For me, it’s much easier to learn with grades, degrees, classes, and a fixed curriculum (or defined roles, set expectations/goals, regular reviews); I like having successively harder steps, with an external reward (grades, degrees, promotions, etc.) for getting to that next step. But I want to actively try to adapt to this new learning style - or, at the very least, mesh it with the way I learn. HS advocates this environment for a lot of reasons - but I think the main one is that extrinsic reward systems don’t actually encourage real, lasting learning or engagement with what one is learning. It just makes it a lot harder to start, especially for someone as used to and motivated by the traditional extrinsic reward system as me. So in the coming days, I’d like to get less frustrated and discouraged - and remember that just because I’m not given a grade, or am unable to finish a project, doesn’t mean I haven’t learned something.3


1 The world needs it.

2 Mel Chua, one of HS’s many residents, gave a great talk last week on learning styles - specifically in learning programming, but I think it can be generalized. This kind of learning (step-by-step) leans toward what she called Sequential learning - as opposed to Global learning, a style used to describe people who like to be immersed in the big picture. I am aggressively Sequential (it’s a spectrum, but man oh man do I fall on that Sequential side).

3 Some things I HAVE learned in the last two days upon some self-reflection: how HTTP really works, why web frameworks exist, why web frameworks maybe shouldn’t exist, how to authenticate users, what hashing is and how to implement it, what WSGI is, how sockets work, what a call stack is, what an ORM is, how to decide when to move on from a project, how to write footnotes.