Some Advice to Future Grads
by Matt CholickAs I'm getting close to wrapping up my graduate degree, one piece of advice occurs to me for my peers working on their computing graduate degree: spend some time picking your capstone project. Spend a lot of time if you have to. Set aside a weekend or even a week to brainstorm. Think about it every night for a month if that's what it takes. You're going pour at least a couple hundred hours into the project, so make it interesting. Don't just let a professor hand you something or find you a random client who needs something implemented.
My portfolio project has been some of the most enjoyable development I've ever done. It's a perfect mix of complete freedom coupled with deadlines and pressure to build something impressive. The big reason it's been so great is because of the level of control I had in both choosing what to implement and how to implement it.
It's a really rare opportunity to get such freedom in a development project. Treasure it. Outside of an academic setting, the guy who gets paged when your software goes down is going to put a halt on developing with the 0.1 alpha version of that really cool experimental library. Or people with architect in their title are going to hand you a set of designs to implement. Or you'll be constrained by your team's technical expertise. Or your company's infrastructure will limit your choices. Unless you're working for yourself, the professional world is never going to hand you the requirements: "Build something that's cool and appropriately sized" ever again. Jump at the opportunity and jump at the choice.
This is a chance to speak to potential employers as well. One of the listservs I'm on announces all the undergraduate and graduate capstone project presentations. The other day I saw a project that consisted of a networked card game with a desktop client. I'm not in the position of making hiring decisions, but I am in the room for a lot of technical interviews. If this person were applying fresh out of college, my feedback would be "Don't hire" in all caps. The student either waited until the last hour to turn in their topic or they're completely bereft of creativity. Either way, they're certainly not someone I'd want to work with.
Even a boring problem domain can get interesting when coupled with enough new and unfamiliar technologies. The sad desktop card game could have been transformed into "A networked card game running on a Node.js server backed by NoSQL with web, native Android, and native iOS clients". In that case, the project becomes a chance to explore a whole stack of new technologies but with a familiar problem.
Your capstone project is a rare chance at a greenfield project in a technology stack completely of your choosing. Embrace it. Celebrate. Don't let someone choose for you.