Ask HN: How can a CS undergrad gain real-world skills?
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.
11 comments
[ 4.1 ms ] story [ 40.0 ms ] threadIf 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!
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.
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.
We're always looking for contributors, you can check out what we're doing here - https://github.com/Warewolf-ESB/Warewolf-ESB