Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: What should I have accomplished before graduating with a BS in CS?
13 points by ghrifter on Feb 22, 2015 | hide | past | favorite | 5 comments
Im currently a junior in college, getting a BS in Computer Science. I have a part time job doing pretty much junior fullstack web development(.NET stack and SQL) but I dont have any big projects done quite yet to add to my portfolio.

Anyways, what should I have accomplished to be a competitive prospect for some cool developer jobs?

Im guessing internship, and contributions to a notable open source software project would be best.

Sorry about bad formatting, on phone.



A bachelor's is the time to get a good understanding of your domain's fundamental principles, stuff that will stand you in good stead even 10 years from now. As a new college grad you will be tested on those concepts and not much else, esp. if your major is Computer Science.

I would look for extensive knowledge of data structures and algorithms, operating systems, networking and databases. If you are interested in a particular domain like machine learning or web development then it pays to know a bit about that as well.

More specifically for a job hunt, you should work your way through Cracking the Coding Interview, careercup.com and leetcode.com. These have questions marked out from companies like Google, Facebook, Amazon etc.


Disclaimer: I'm in a medium sized city in the midwest that has developer jobs but none for large corporations that sell software, so my advice here may be a bit skewed.

Co-ops/internships: this is where you get your real experience and in the trenches learning. Sure, theory is all good in the classroom but if you actually worked with something 40hrs a week for 4+ months, it says a lot more about what you can accomplish for a possible employer. I've only once had an interviewer look at my transcripts (to my knowledge, they may have been accessible to any of the co-op interviewers at my college) and it was for a co-op position and I had no previous work experience in development. After graduating, it's never been requested of me, its almost like employers really don't care what I did at college, just that I graduated. They are far more interested in what I have done professionally in my career and side projects, making things happen outside the classroom is what matters to them.

College: I would personally recommend being selective with your courses. Try to find ones where you will learn valuable information, not just get you the credit you need to graduate. This goes for field related (CS) and outside your field (e.g. business courses).


Have fun and travel.

By having a part time job in .Net you are already so far ahead of at least most of the people who were in my graduating cohort. If coding is fun for you then you can do that, if its not as fun as going to parties or traveling, do that instead. Unfortunately, unless you work absolutely stupidly hard, you will end up at the same type of companies regardless of how much work you put into your resume.

Contributing to Open Source and having a top notch github/stack overflow profile are so overrated. It is really annoying that some companies keep asking for them. In the real world every single piece of code you write is kept under lock and key, and i'm sure thats going to be the case at the places you are applying for.


Thanks. I keep seeing traveling advice pop up. And Im the position for it so I probably should travel asap


> big projects

> portfolio

> contributions to a notable open source software project

This might help, it is something you can talk about on the interview. I wouldn't spend a lot of time thinking about if it was notable or not. Just go to Github, look for popular projects, perhaps in a language you might know somewhat like C# ( https://github.com/trending?l=csharp&since=monthly ), browse the project issues page and pull requests and see if the maintainer(s) apply patches in a timely manner (since you're a junior, timely can extend to within a few months).

Find a project that seems interesting, and an issue you think you might be able to handle, and try to fix the issue. Sometimes it's a not-too-technical person who just had the application crash or something and they report the issue. So pick a project and issue that look promising and try to fix it. If you can fix it within a week (or a day, or whatever), perhaps move on to another issue or project. Perhaps do this a few times.

At some point a maintainer will look at your fix. They might just apply it directly, or massage it into the project, or they may reject it. They may have some comments you might learn from.

I wouldn't spend a lot of time dwelling on it and thinking about which project is "notable" enough to contribute to. Better just to dive right in. Just get your feet wet and fix someone's problem. After that, then if you want you can think about which project is notable enough to work with and what looks good in a portfolio.

An internship would be essential if you weren't work as a "part time...junior fullstack web development(.NET stack and SQL)". Since you're doing that it becomes less important, and is not necessary and essential. An internship would not hurt and might help, but since you're doing real work, an internship becomes a little less important.

> I dont have any big projects done quite yet

Big projects start as little projects. For myself, I took a college course in Java for a few weeks in mid-2009, and then went off and did like I mentioned above - I chose a random open source project and fixed a bug, which was accepted. Then in late 2010 I spent two months writing a self-contained Java app which did something I wanted to do, I released it as open source. Along the way I sent a bug report to a similar Javascript app - I noticed two bugs while comparing my app to their app - I did such heavy QA on both apps I probably QA'd their app more than they did. Not long after that I started programming simple Android apps, and then more and more complex Android apps - this was in 2011. Last month my Android apps made over $3000 in revenue.

So I would say don't worry about "big projects" and "portfolio" and "notable" so much. Just start small and keep at it. Things can build on each other as well. I learned programming. Then Java. Then enough Android to do a simple app. Then I ported a Java library and put an Android UI on it. Then I ported a C++ library and put an Android UI on it. Then I ported an OpenGL C++ app to an Android OpenGLES app. Then I did that a few times and am still doing it. It would be hard for a .NET developer to port OpenGL C++ apps to Android. But I started simple, and then using what I learned as a base I did something else simple, then using that higher base I did something else simple, and now I'm doing something which would be considered slightly complex.

I've become interested in AI and machine learning and am starting a project in a simple way. Right now I am putting the data together and playing with scikit-learn. Once the data is in good enough shape I will start playing around with it and get more familiar with ML prediction. My initial model is pretty simple - I go to a few local supermarkets and buy out all their juice (5-6 bottles). Sometimes I go back and see if the juice is back in stock yet - sometimes it is, sometimes it is not. So I am keeping tabs on this and will see if I can get ML to predict the probability the juice is back in stock. It's nothing earth shattering, but it will save me a trip to the supermarket, or at least tell me which local one to go to. I have more ambitious ideas for other uses of ML prediction, but this is simple and useful and is a good first step for me. Who knows where it may lead?




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

Search: