

Ask HN: How can a CS undergrad gain real-world skills? - fyarebox

Hey HN. 
I&#x27;m an undergraduate computer science student. For a while now I&#x27;ve been trying to gain some real world experience, for my own development, and to (hopefully) make me more appealing to employers.<p>I try to build projects in my free time to build up a portfolio. However, I&#x27;m always stuck for ideas; a lot of my ideas are either out of my skill (or require a lot of research&#x2F;expertise), or seem too trivial. I&#x27;ve tried looking for open-source projects to contribute to, but have honestly had a really hard time finding projects that I could benefit.<p>I&#x27;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 &amp; OctoberCMS [http:&#x2F;&#x2F;octobercms.com] as a starting point). 
My main skills are in PHP&#x2F;HTML&#x2F;CSS&#x2F;JS, C#&#x2F;VB.NET, python, and a tiny bit of Node.js. My uni teaches Java, and at the moment, I&#x27;m trying to learn Rust.<p>Recently, I&#x27;ve been trying to get small jobs freelancing on sites like http:&#x2F;&#x2F;peopleperhour.com&#x2F;. While I&#x27;ve received one or two small tasks (integrate an API, fix bugs), I&#x27;ve never received a proper &#x27;project&#x27; that I could call my own.<p>Although I think that I&#x27;m more skilled and have a more experience than most other students at my level, I also feel as though it&#x27;d be easy to go out of my depth doing freelancing. However, I really want to gain some skills&#x2F;experience that will make me stand out of the crowd.<p>Hopefully this is an appropriate Ask HN. I think it could benefit a lot of other students in my position.
======
bonobo3000
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.

------
Warewolf-ESB
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](https://github.com/Warewolf-
ESB/Warewolf-ESB)

------
CyberFonic
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!

------
itzfx
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.

------
Yenrabbit
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!

------
shultays
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.

~~~
EnderMB
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.

------
themechanic
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.

------
v_ignatyev
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.

------
fiatjaf
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?"

------
seekingcharlie
What is your email?

