Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: How can a CS undergrad gain real-world skills?
15 points by fyarebox on Jan 7, 2015 | hide | past | favorite | 11 comments
Hey HN. I'm an undergraduate computer science student. For a while now I've been trying to gain some real world experience, for my own development, and to (hopefully) make me more appealing to employers.

I try to build projects in my free time to build up a portfolio. However, I'm always stuck for ideas; a lot of my ideas are either out of my skill (or require a lot of research/expertise), or seem too trivial. I've tried looking for open-source projects to contribute to, but have honestly had a really hard time finding projects that I could benefit.

I've had one quite large project that I managed to get through the family of a friend which involved developing quite a large PHP site with a lot of functionality (I used Laravel & OctoberCMS [http://octobercms.com] as a starting point). My main skills are in PHP/HTML/CSS/JS, C#/VB.NET, python, and a tiny bit of Node.js. My uni teaches Java, and at the moment, I'm trying to learn Rust.

Recently, I've been trying to get small jobs freelancing on sites like http://peopleperhour.com/. While I've received one or two small tasks (integrate an API, fix bugs), I've never received a proper 'project' that I could call my own.

Although I think that I'm more skilled and have a more experience than most other students at my level, I also feel as though it'd be easy to go out of my depth doing freelancing. However, I really want to gain some skills/experience that will make me stand out of the crowd.

Hopefully this is an appropriate Ask HN. I think it could benefit a lot of other students in my position.




Adopt a beginner mindset - you are a beginner. Sounds like there a few things you know you are good at, and the rest is "out of your depth". Build a new depth. Jump into something you have never done before. Sounds like you have some webdev experience, so do something else, something you know nothing about. Some ideas - use an NLP library, or something in distributed systems, or learn a very different language - e.g lisp/haskell, or build a parser/compiler, analyze images, make an AI for a game, make mobile apps... anything different. It should be confusing,hard,time-consuming and completely new all over again.

Alternatively, maybe you are a just little burnt out. In that case, stop programming, reading about programming, thinking abut programming etc. for a few weeks.


Looking at your "main skills" it looks like a "jack of all trades, master of none" situation. Ok compared to other CS students you might see yourself as more experienced, but relative to what is needed to address real-world problems you have lots more ground to cover.

If you want to solve real-world problems get out of the office (Steve Blank). Talk to business owners, clubs, etc and find a need that strikes a chord with you and solve it. If you do this well, it could even be your capstone project.

Good Luck!


Work on an opensource project! There are tons available on GitHub, some with really basic stuff. It will look great on your CV, you'll learn a lot from other devs, and it's good for the open source software movement (i.e. everyone!).

We're always looking for contributors, you can check out what we're doing here - https://github.com/Warewolf-ESB/Warewolf-ESB


I'm not sure if you've thought of this but you should apply to internships/co-ops while you're still an undergrad. If you have a summer break from school, a summer internship in Silicon Valley would give you the skills and experience that will make you appealing to future (post college) employers. Importantly, this will teach you how to work with others; I'm not sure how much experience you get with that from freelancing.


Try to find some work. If you're free over a summer or something, an internship or a job for a month or two will teach you a ton of stuff. I've just finished a gap year and am about to head for uni, but I already feel that I know more than a lot of people with a degree simply due to being chucked in the deep end and having to figure stuff out for myself. Plus, you'll get some $$ so it's win-win :) Good luck!


Internships maybe? And people don't really expect too much from your first job applications. You don't really need to do big projects to stand out of the crowd. When I graduated, my CV was mostly some of my bigger personal projects and 2 internships and I easily got a job a known company in my country.


I can't agree enough with this advice.

You could be the best CS student on the planet, but when you start at a company that all goes right out of the window. Not only is it an entirely different environment to academia, you'll (very slowly) discover that what you lack is the soft skills that more experienced programmers may have. You learn how to speak to clients, how to work alongside others in a non-technical setting, how to handle expectations, and most importantly how to say no; the kind of things that just can't be taught properly in academia.

I interned at a medium-sized company where I live, not expecting anything too great. I probably learned more in the nine weeks I spent there than I did in an entire year at university. Sure, I went to a crappy university, but I've worked alongside people from top universities (Oxford/Cambridge/ICL/UCL) that really struggled. They had their own issues alongside my own. They went into work as top students in their class, solving fairly complex problems, to maintaining a crappy web app that would fall over twice a day because the company that originally built it did it under an unrealistic timeframe, and dealing with clients that couldn't care less than Newy McNewerson had written a Raytracer in C++ over the weekend, because their site was down during a sale.

I cannot recommend internships enough. It'll kill some time over the summer break, you'll earn some money, and it'll set you apart from most of your peers.


Open any freelance site like oDesk.com and search for opened job offers. You can see what is current ask for software development and make some money. If you can't get "big project", then you're doing something wrong, for example you don't market yourself properly.


Checkout the issues list of the open-source projects that you care about on Github, pick the ones that interest you and submit pull-requests for them. You mentioned rust, you can join the #rust channel on irc.mozilla.org when you get stuck, you'll find very helpful people there.


Build a scraper that runs throught all the forums of the internet fetching the answers that were given any time someone asked the question: "how can a CS undergrad gain real-world skills?"


What is your email?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: