Please, for the love of all that you hold holy

This one’s for the college students.

As i mentioned in a previous post, I’m an engineer for Red Ventures. One of the tasks I fulfill is code reviews for college hires. This basically means that our recruiting team hands the student/potential hire a project from one of our repositories on github, and they’re tasked with meeting the code requirements in the described project.

That’s all well and good right? It’s a lot easier to do this stuff at home when you’re not sweating out pressure in front of another engineer you don’t know, wondering if you’re being judged based on your keyboard layout.

I’m writing this, however, because of a set of trends I’ve seen in people that submit their projects, and it makes me want to pull my hair out.

  1. Github sure is neat right? It provides a way to allow people to fork projects, and even do pull requests. This isn’t necessarily a feature native to git itself (at least I don’t think so?).

    This comes with a side effect though - we can see the files you mess with. If we give you a file to use as part of a data set, and then if you mess with it, we can actually see what changes you made. You may think you’re fixing bad data (and in some instances you may think you’re being clever), but what you’re actually doing is falling into a trap. I can’t imagine our company is the only one that does something like this, and the real world isn’t as orderly as you may have been led to believe. Expect crazy stumbling blocks like poorly formed html, or weird CORs issues.

    Actually, this leads me into the next item.

  2. Google is your friend.

    Did you know that we have a wealth of knowledge at our fingertips? We do! It’s called the internet! Try it out some time?

    I mean, holy crap. why would you spend 2 hours trying to get a database connection working in your language of choice without success, only to give it up because you can’t make it work yourself? why would you waste so much time when you could pull open a browser and ask the internet why you’re getting that goddamn error?!

    Overall though, this means that you really need to get comfortable with asking questions. When you’re on a team, you’re not alone. Your success means the success of others. We don’t want people working with us that are willing to stare at a problem for days at a time without having any way to make progress.

  3. At the start of the project, you’re going to be given a set of requirements. One of those requirements is “Do it in any language you’re comfortable with”. This does not mean “Do it in a language you would like to try”. Our recruiters want you at your best. If you don’t know node.js and try to do it in node.js, you’re going to be spending a lot more time looking up how to do a simple thing than actually doing the simple thing.

    Don’t be afraid do use something crazy like erlang or lisp if that’s what you are good at. I’ll tell you up front - our languages vary from PHP (which we’re moving away from), Node.js, GO, and C# (usually using dotnet core, but most of the engineers here have parallels so we can use both windows and mac). We also containerize a lot of apps in Docker, so if we have to set up an environment with your code because it uses a weird language, it’s really not that hard.

    However….

  4. PLEASE PLEASE PLEASE! Give us some kind of idea of how to get your project running. One would think that this would be a primary requirement for all projects in college (it was when i was in school, but then again, I am old and infirm, so my memory may be lying to me). If I have to spend another afternoon getting a program running because they didn’t document their project with a way to get their stuff running, I’m going to be a sad panda. I’m also going to be very harsh on their review. As I said before, we work in teams, not alone. Often times, our teams change. If you’re unable to explain how the project works, how can we rely on you to explain projects you build while employed with us?

I’m going to admit - these points aren’t going to apply to everything. We’re not the only company out there. However, I would think that this is a fairly obvious list of things that should be taken into account by anyone with experience.