It doesn’t matter what you majored in*

I’ve encountered a few people recently who have been trying to personally pivot. These people are largely in my age group, and mostly seem to have spent the last several years in an academic setting studying various non-computer-related subjects. And they all seem to be trying to get into computers.

My sampling bias is sky high on this one, especially given that I’m currently attending Hacker School, which more or less says “Come here if you’re interested in learning more about computers” on the tin. But Hacker School aside, I think the trend is something wider-reaching. People want to get into tech. Programming. CS. Hacking. Software Engineering/Architecting/Gardening. Really whichever aspect of computers you could feel like referring to, there seem to be a lot of people kicking themselves for not having been in tech already.

It’s through the maybe sound-bite tech-pop mantra that “software is eating the world”, or an interest in exactly what lies beneath this ocean of complexity in the technology we use today, or even a taking-notice of the sheer profitability of the tech space at-large.

I can relate to this predicament. I started my undergrad intending on studying mechanical engineering. I wrote my first lines of real code (save MSLogo and some basic HTML) during my second semester freshman year mandatory CS course, mandatory for engineering undergrads. I met a group of great people in college, all of whom seemed to be CS majors (or close enough to it) and I began to learn huge swaths of information just through my fantastically nerdy friend group. After some time I switched my major to neuroscience, all while continuing to learn about computers. And finally I switched again, to computer science, and stuck with it long enough to graduate. For me it was in large part through my interest in the brain, in building software that interacts with humans more optimally, and constructing software which ‘thinks’ the way we do. It was also a general disenchantment with academia, and the slowly dawning realization that having programming and computer skill can mean skipping grad school, wielding a powerful, arcane, and conveneintly marketable craft, and importantly (for someone who loves travel) being able to work from anywhere in the world.

Whatever’s gotten us here, I’d really like to say: It doesn’t matter what you majored in. As long as you, and your personal, mental operating-system is installed and ready to go, you’re in the perfect place to learn more about tech.

The whole history of subject-specialization has been one where people from seemingly unrelated backgrounds pivot into new fields, and quickly rack up major contributions because they see things in a different way from the homogeneity pervading the field before their arrival.

Tech is possibly the best example of this, for a couple reasons. The first is an idea I encountered while reading the always-wise ramblings of James Hague over atprog21.dadgum.com. In short, programming knowledge has more potential growing in the fertile substrate of a mind trained in a non-pure-CS field. Hague goes so far as to say that CS shouldn’t be offered as a major in undergrad, and people should only be allowed to minor in it, with a real subject as their major.

The other main key feature with pivoting into tech is the availablility of resources. Learning about computers is one of the best things that can be done with a computer. With other fields, biology for instance, the experts don’t spend all day sitting in front of the internet, so there’s inherently less of their accumulated knowledge available online in the form of blogs, tutorials, and git repositories.

All I really mean to say, at the risk of sounding patronizing, is: don’t beat yourself up for being in your 20s, or 30s, or 40s, or whatever, and feeling sad about not having started learning about computers or programming. There’s definitely a boatload of information to learn and grok. But there’s also plenty of time and resources available and waiting for you. You’ve figured out that you want to start learning about tech, so you’re already on that path. Assuming you’ve done something you’ve found interesting with your past several years on this planet, you will have insight both new and powerful to contribute.

On that note, I’ll wrap this up. I’ve been trying to pivot myself from computers into synthetic biology, and I have an experiment to attend to… maybe I should’ve majored in biochem.

(* It also doesn’t matter if you didn’t go to or didn’t finish university.)

Advertisements

Hacker School

What is Hacker School?

Hacker School (now called the Recurse Center) is a three month retreat, for programmers and people interested in programming. The ‘school’ is a floor of a lower Manhattan office building, with a row of desks running down the length of the room, surrounded by office chairs. Several smaller breakout rooms line the room, each labeled with the name of an important contributor to the the computing world–such as Babbage, Church, Lovelace, Turing, and Hopper.

I use the word ‘school’ loosely, it’s not really an adequate name for what’s going on here.

There are no classes, no (explicit) teachers, no assignments, and no homework. Instead, the chairs of Hacker School are filled with individuals capable of self-determiniation; people who, when left to their own devices, teach themselves. And explore difficult concepts. And build things for fun.

The application and acceptance pipeline for Hacker School filters for this sort of mindset. While there is a filter for making sure people know at least some of the basics of programming (including writing FizzBuzz in a favorite language and an online pair-programming interview), the process also really looks for people driving themselves to learn and explore for the sake of it.

As a result, the people around me come from widely varied backgrounds (and age groups). Looking around, I can sight people with CS bachelors degrees, CS PhDs, several with backgrounds in physics, statistics, microbiology, and sociology. Some of us have worked in the software industry previously, some are in grad school, some never went to college, and some even have children. All of us are either in front of our own laptop, or staring over at a neighbors’, and all of us enjoy learning for the sake of it.

Hacker School is not really at all like Fullstack Acadamy, or Dev Bootcamp, or App Academy. Where those programs are primarily focused on the zero-to-sixty of programming–getting people in, up to speed with a given development stack, and then out the door–Hacker school is geared towards giving people with some degree of experience room to play and explore without structure.

Every morning at 10:30 there’s check-in, where we break out into the little rooms in weekly choose-your-own groups and go around in a circle, talking about what we did the previous day, and what we plan to do in the current. It’s a bit like scrum, for those who’ve done that. This is probably the most structured Hacker School gets, and if you miss checkin, no one’s coming to hold you accountable.

There are also regular seminars and workshops given both by the hacker schoolers and by the 6 more permanent “facilitators”, who run the organization. The workshops are based on interest and expertise, where those with the latter can pass information to those with only the former.

#neverGraduate.

The Experience-As-A-Whole

Four weeks in, I cannot emphasize enough how awesome this program is. This is what university should be like. I’ve learned more here in 4 weeks than I have in whole semesters of undergrad, both because of the sheer focus granted as well as the beautiful lack of structure. There’s an interesting effect at play, with a room of ~60 people all working on at-least-vaguely programming related projects. When I find myself getting distracted, I can almost draw energy from the people around me. Of course I can get this explicity, if I ask questions and get help, and unstick myself from wherever I’m mired. I can also regain focus in a more subtle way, through the vibes of raw concentration in the room. Maybe I was hanging out with the wrong groups in college (I doubt this, s/o to my Purdue buddies), but I never remember being around this many people as engrossed in and excited about their work.

Some current and former Hacker Schoolers have a hard time with this lack of structure. We in general, as modern human beings, are so used to the structure imposed by the school system or by our offices, that when left to our own devices we have no ability to self-mediate or generate focus and direction. Some say that they spent the first third of Hacker School floating, drifting from project to project, in a sense mentally coming to fully grok the actual freedom that Hacker School gives. It’s not a stretch to say that even in this float-y case, the time ostensibly wasted was well spent, as a necessary tax for the time to spin up one’s ability to work in this sort of unstructured environment. In a way, it’s empowering.

Projects I’ve worked on

Traceroute implementation in python. I did this one half for fun, and half in honor of a former hacker-schooler friend of mine who also implemented traceroute, and through whom I came to learn about Hacker School. Github.

Haskell primer. I spent a few days working on learning Haskell, doing the first several chapters of the widely acclaimed CIS-194 course, taught by Brent Yorgey. Freenode’s #haskell pointed me straight at this course when aksed about learning resources, specifically the Spring 2013 one I’ve linked. There’s a great page here on more learning resources for Haskell.

Diffie Hellman Key exchange, generalized to n-participants, in Scala. This is the secret key exchange algorithm used in SSH as well as many other secure applications. Implemented as an exercise in learning both Scala and more cryptoGithub.

GoScore, an iOS app project using OpenCV to score the board game Go. Swift, bridged through Objective C to C++ is remarkably complex. In its current state, the app detects circles reasonably well, but we (myself and another hacker schooler) decided this is the wrong / overly complicated way to go about doing this. This project is on a backburner while I work up the courage to refactor and tackle OpenCV again. Github.

Rhythmic, an album-centric music player in Scala. I listen to music as whole albums generally, and music players are generally more geared towards an individual track experience. This is an experiment in building an album-focused music player with a clean art-heavy UI. Github.