So I’m a hobbyist game developer for years whose day job is writing reports/troubleshooting database issues with MSSQL.
I’m a bit over half way through a CS bachelors degree!
I’m aware of three ways to get experience to help me find a job once I graduate, and wondering if one is superior to the others, or if there is another way!
-
Personal projects. There is a very large programming project I’ve been working on off and on for 2ish years and I feel like after my recent programming classes I can probably start it off right and trash all my previous prototypes.
-
Work on open source projects. This one is a bit scarier at this point, as I’d have to find one I like, one that is active, one that my skills fit with, one I can get accepted with, etc.
-
Find entry level freelance things. I’m aware I could maybe do cheap tasks on Fiverr, or sign up for things like Data annotation, to earn a bit of money and have “something” directly related to programming on my resume.
3.5 Could do coding challenges, but most of the ones I’ve seen don’t seem super relevant to making large programs, but solving convoluted puzzles. But would love to hear if there is a site that has more real world challenges.
My personal experience for previous projects (and favorite programming class so far) has been python (shocking I know). Hoping I’ll fall in love with C# programming once I get into the advanced classes with it, as I know that pairs much nicer with my MSSQL experience. Oh my game dev has also been in Game Maker, which uses GML, so not superrr helpful experience.
So any thoughts/opinions?
I wouldn’t bother with the Fiverr thing but interesting personal projects and FOSS contributions are both good. Sizeable FOSS projects mean you’re working with other people which brings both benefits and challenges, and more closely resembles the “job” world. You could also look for actual paying work (not gig work like Fiverr, that is crap) if you have the time for it (summer job might be possible). Look at the monthly “Who is hiring” thread (first weekday of each month) on news.ycombinator.com, look on craigslist, etc.
Getting involved in FOSS is pretty simple. Find a project with a list of open tasks or an issue tracker, find something that interests you, say you are interested in working on that task, and start contributing patches. Usually if the project is not a high-visibility one with a lot of contributors already, it will welcome any help it can get. Lots of such projects have Freenode IRC channels where you can chat with the other devs in real time. I’m less comfortable with the ones that use Discord, but that’s just me.
I work full time while also going to school so no freedom during summer or anything.
I’ll see if any foss projects look interesting!
If your school has Hackathons, try to do those, ideally with friends. The atmosphere is honestly a bit horrible in my opinion and you may get instant imposter syndrome, but it gives you a project to talk about.
No hackathons from my school, I do game jams, and so maybe doing one using only code and not a game engine would be an interesting challenge. Plenty of game jams where the goal is to have the game be like under 10 megs, so straight code is the only way to go.
In addition to what everyone else has said: internships.
You’ll understand a bit more about how to play the corporate tech game, and there’s an absolute fuckload of stuff that school just straight up does not touch on. Also, it’s a great way to start off your network. Also also, since “entry level” jobs commonly have “required” experience, you can say that you’ve got a year or two experience with a straight face (and not be bullshitting about it, because you do at that point).
As someone who has hired lots of CS students, the successful ones tend to:
-Have a public GIT repo where they have all of their personal and class projects publicly available. You put this on your resume and potential employers can browse at leisure.
-Have done a student group like robotics or satellite club.
-Have interned somewhere with a name. Doesn’t matter what the job is, just get that name on your resume. Sadly, what you know and can do is less important than where you interned and overworked or unmotivated hiring managers really need bullet points that they can grab on to and then move on.
I’d go for open source projects. They usually have bigger code bases and good practices, that they enforce on their contributors with code reviews and such.
It’s a good way to get feedback on your code, something miss out on personal projects and get much less of in university and corporate projects.
You could also go to the physics or biology wings to see if you can help them with simulations.
#1 will be your best bet because the motivation comes free with something you’re more passionate or engaged with such as a personal project. And, on the mirror side of that, reproduce existing programs/applets in a language of your choice. For example, an HTTP client or xxd.
Getting a job is a multi stage battle. Options 1, 2, and 3.5 won’t get you past the first stage, the inept HR screener. Doesn’t matter if it’s an entry level job, your resume looks worse to them than anyone with any professional experience. Option 3 kinda works for it, but even better would be an internship or two. That looks like real experience to the HR monkeys. Once you slay them, now you’re to the manager resume screen. This is where options 1 and 2, and maybe 3.5 can help. Score an interview with them, then it’s up to your shining personality to get you the rest of the way.
Every job in the industry has hundreds of applicants these days. It’s no longer enough that your resume meets the requirements, it’s got to actually compete. Since most jobs allow remote these days, it’s got to compete on a national or even international scale. Apply to on-site or hybrid roles to limit the market of competition. Make sure your resume screams that you’re better than the rest.
Good luck!
If you have a particular job focus for after you’ve graduated with your CS degree, would an internship with a related company be an option? Experience with web will be of limited use for an embedded job, and embedded experience is of limited use at a quantitative analysis company.
That’s not to say the experience is entirely pointless, since many skills across the various disciplines of CS are transferable.
If I could get an internship that could pay all my bills I would love one. But I have a mortgage as I’m currently 30. I probably don’t have time for college, my full time job, and a part time internship!
If there are any internships paying around 70k a year I mean I’ll start it in a heart beat XD
Make things!
Whether you’re working on FOSS project or your own personal projects, building cool and diverse stuff that you’re passionate about is the best way to get experience quick.
Regarding your personal project, starting over is usually not a bad idea. Especially if your own skills have grown a bunch since starting. Make sure you keep old versions around for reference!
I’ve personally never gotten much out of freelancing or coding challenges. I think it depends on if you see CS more as a career or more as a passion (both of those are perfectly legitimate). I should also mention, a lot of professionals don’t do any programming outside of work. You don’t need to dedicate time outside of work to be good at this job.
The most important thing is to have fun and not to burn yourself out. Take care of your body and mind!
I’d love to disagree, but it seems like any job opening right now goes to the engineer who all but lives to code.
At what companies? I don’t think half of my team spends much time programming outside of work and they all still got hired
this was true 20 years ago so your mileage is absolutely going to vary today; but it worked for me:
- if you haven’t graduated: intern
- if you have graduated: contract