21 going on 22: What I wish I had done as a computer science undergrad
Fun, games, and internship applications
When I started at Vanderbilt University I was a fresh-faced student with little to no coding experience. I had never made a full fledged project (save for one calculator iPhone app) and I didn't even have any AP/college credits. But for some reason, I knew I wanted to be a software developer Now, I'm 21 and about to start my final year at Vanderbilt. Before I get into my tips, let's talk briefly about my background.
The Cool Counselor
I spent the past two summers working at summer camps. The first as a program assistant/social media liasion and the second as a computer science instructor for high school students. Going into my final summer in college, I put a lot of time into internship applications for real coding gigs. Currently I work as a machine learning researcher in a lab at Vanderbilt University. Was it my first choice? No, to be honest. I am enjoying it and I've learned a lot of applicable skills (AWS, TensorFlow, Python software design, etc.). However, my inbox is littered with rejection letters from Google, Amazon, Microsoft, various FinTech companies, and game studios.
I'm not a bad student. I'm not top of my class or anything. But I put effort into my studies. However, for most of my college career, I thought classroom experience was all I would need to land a prestigious position. For those who are also undergraduates with high aspirations, you may be laughing at me. Up until my Junior fall semester I had thought I knew plenty from classroom studies to ace any coding interview thrown at me. That was, until I was face to face with interviewers from Capital One and Amazon, asking about my "personal projects", "areas of interest", and more stuff I'd never even explored.
How to avoid my mistakes
Leave some time in your schedule for personal projects. I booked my schedule for two years with extracurriculars (I'm an actor and singer so I spent a lot of time in rehearsals as well as helping organize the yearly hackathon) and difficult, but non-requried, electives. Finally, I left some time in Junior spring to start coding projects for myself and I saw my understanding grow rapidly as I encountered and approached new problems on my own without prompting from an instructor or assignment. I was able to make what felt like solutions to real-world problems. I also participated in my first hackathon which turned into a weekend crash course in React.js I forced myself through. Truly if you thrive doing these things, you know you belong in computer science. Post as much of your projects as you can to GitHub to build a portfolio over time.
Join student organizations that encourage you to code. My current project is a comprehensive beginners' guide to Unity to be used at the upcoming VandyHacks event in November. This was assigned to me as a member of the organizing committee for VandyHacks. VandyHacks has provided me a slew of opportunities including learning web development and Unity to teach to interested parties. It also introduced me to MLH Hackcon where i will be presenting as a speaker in August. VandyApps is another organization that provides seminars for material outside of the curriculum of the typical Vandy classroom. I serve as their Treasurer and am encouraged to attend their weekly meetings to expand my knowledge of special topics in computer science.
Write! This is one I am starting with this post. Social developers are becoming more and more common in today's day and age and it is a field that is relatively unexplored by academics. Write about your personal project, your student organization, your day, your thoughts on a current event, anything! Companies like to see that you think about what you create and having an online presence where you can discuss CS topics with fellow developers is a great way to show that you are really passionate about your field. Writing a blog post can take some time, but hopping on Twitter to drop a short reply can be done in a couple seconds. These interactions build your social skills in the professional sense and sharpens your knowledge. Here are some popular avenues for developers these days:
- Hashnode - the blog platform this post is hosted on
- Twitter - you may have heard of it
- Mashable has a great (if slightly outdated) article to get you started on who you should follow on Twitter in the developer world.
- My Twitter - I AM a developer after all so might as well follow me. You can also go through who I follow and see some developers mixed in with all my real friends
- Discord - came out of nowhere and destroyed Skype as the preferred online chat platform for communities of all kinds, not just gamers
- StackOverflow - help build your own understanding while you help someone else!
- Hacker News - great discussion board for topics in technology (similar to Reddit but exclusively for developers)
Make connections. Never forget to tell your friends you are a CS major, even if you don't think they would be interested. Even mention you're on the hunt for an internship or full time job. I got consideration at a cybersecurity firm because one of my theater major friends' dad happened to be in the tech industry. Learn to be a LinkedIn ninja. I love LinkedIn because I can dump literally everything I've ever done onto it unlike those pesky single page resumes they insist on. Use the phenomenal job search function. Reach out to alumni who have positions at companies you are interested in. Build your network. It will help you one day.
Study towards interviews before you even have one. Pick up Cracking the Coding Interview by Gayle McDowell immediately and start reading. You can never start too early. A lot of it will be reinforcement from what you learned in relatively low-level computer science courses. That reinforcement is what you need though. In my interviewing process, I saw that I was much more likely to get a question on a topic correct if I had covered it again in my studies outside of class.
I still have a long way to go in my career. I start my final undergraduate year in a couple weeks and with it, I start application season for my first real, full-time job. I used to feel behind, like I started too late and I was doomed to move home and work IT for my old rural high school. But now, going into the fray, I feel more confident. I have some things under my belt and I really feel like I've found somewhere I belong, with the software dorks.
Also, have fun. Don't be a loser in college. You only get four years, after all. And they fly by.