Hacking: The Best Way To Get Hired, While At SoC
Posted on by ejames
If you’re a School of Computing student, you’ve probably been told that the best way to get good at programming is to ‘just keep practicing’.
And this is true. We know this is true because musicians, painters and writers say the same thing; why should it be any different for programmers? Programmers get better when they program — with one unique difference.
The difference is this: code projects, the by-product of ‘programming practice’, are great additions to any resume. Employers will be able to read the code you’ve written. If they care about the kind of software you will produce for them, knowing how well you code matters.
Computer Science professor Matt Might argues:
Having emerged from engineering and mathematics, computer science programs take a resume-based approach to hiring off their graduates.A resume says nothing of a programmer’s ability.
Every computer science major should build a portfolio.
A portfolio could be as simple as a personal blog, with a post for each project or accomplishment. A better portfolio would include per-project pages, and publicly browsable code (hosted perhaps on github or Google code).
Contributions to open source should be linked and documented.
A code portfolio allows employers to directly judge ability.
GPAs and resumes do not.
Building a portfolio is something we should all be working on. (Matt Might links to MIT student Ed Yang, whose personal portfolio is staggering in its impressiveness).
So the question becomes: what should I practice on? Programming assignments are tedious when done outside class, for no credit. There are only so many Project Euler problems one can solve before getting bored.
The answer, of course, is to start hacking.
There are a number of reasons to hack, all of them good ones. I think it would do to share some of them here for posterity. I’ll end with a number of things you can start hacking on, and one place, next week, where you can do it with your friends.
Hacking exposes you to real world technology
SoC programming assignments rarely cover cutting-edge technology. This is not the school's fault: it's too much of a hassle to keep up with the bleeding edge. The school's job is to teach underlying ideas. Imagine updating your lecture slides every time Node.js changes. That would certainly get in the way of whatever concept you were trying to teach.No, professors and employers expect us to pick up production technologies on our own. They teach us the ideas — we’re supposed to use those ideas to learn whatever it is we need for our jobs. Sometimes that means learning Python over the weekend. Other times it means learning enough C to debug the bloody PDF library that seems to print a puppy over every document you try to generate.
Most importantly, however, it means that the student who spends his weekends and holidays picking up production-ready technologies is a step ahead when compared to his peers.
Hacking makes you better
We know that practice is good for programming skills. What that looks like in practice (pun intended, forgive me) is that things explode in your face, and you scramble to fix those things, and then you learn new things in the process.After which you become slightly better.
Hacking forces you into situations where you don’t know enough to begin building things. If you want to build a blog on top of MongoDB, for instance, you might begin by learning a web framework. After which you would need to learn to use Linux, because 99% of websites run on Linux. Learning Linux will enable you to install MongoDB and set up your web server. Then you’ll quickly realize that you’ll need to learn how to use a wrapper for MongoDB, which in turn will teach you how to find and read obscure documentation for a programming project.
Every trivial hack project brings with it a hidden cascade of things to learn. This is a good thing: it means you get to learn more the more hack projects you do.
Hacking puts you in touch with actual developers
One of the quickest ways to learn about the software world is to contribute to an open source project. Many coreteam members contribute to existing OSS codebases, one even implemented a new diff algorithm for Git. SoC provides students with a good Firefox course with which to learn about Open Source. Both approaches to OSS will eventually require us, as students, to meet with and talk to working, breathing developers.But hacking on your own projects are also a good way to meet other developers. If you’re solving someone else’s problem, he or she may find you on GitHub to contribute to your code.
Again, this teaches you things you might otherwise have to wait for graduation to learn.
Hacking gives you projects to show
Showing off matters in both sense of the term: hacking projects make you more attractive to future employers; and showing off to your friends keeps you motivated to continue hacking on things.The latter is sometimes more important than you might think: many a programmer has built a world-changing tool with the partial intention of showing it off to his friends. Facebook and Linux certainly started with some element of this.
Hacking is good for you; start hacking today!
Programming for personal projects makes you a better programmer,It’s not hard to start hacking - pick a problem you’ve always had, and think about how you might solve it with code. Alternatively, pick a cool new technology you want to learn, and find a way to use that to solve your burning problem.
If you’d like to get a head-start, come join us at our Hack & Roll Hackathon, on the 19-20th February. Sign up here, or read more about the event at this link. We’re trying to get more SoC students to hack on stuff, so if you’d like to learn how to start doing so, in the company of your peers, come join us. It’s only $10 per person, and even then for food.
In the words of a much-loved SoC lecturer: happy hacking!
PS: if you like this post, please consider sharing it with a friend!