Chris Franklin
Chris Franklin

Categories

  • interviews
  • internships

It’s that time of your again… time to interview the next batch of hopeful interns. And just like every year previous, I am sorely disappointed in the quality of candidates that are showing up. I work for a company that isn’t one of the top 5, but we are definitely highly respected and consistently rank in the top software companies to work for on sites like Glassdoor. So, we should be getting interns from top tier institutions.

Well, we are getting top tier candidates. From schools like Duke, UNC, Georgia Tech, Penn State, etc. These interns should be among the cream of the crop, and yet, I can’t help but feel like they are all missing vital knowledge about the way software is actually written. Don’t get me wrong. There are still some real gems in the batch. But I honestly think most of those would have been just as impressive if they had come to me from Cloud County Community College!

Most of my beef stems from a consistent lack of preparation on the part of the candidates. Most of these kids walk into an interview thinking they are hot shit, and instead, show their complete lack of preparedness and huge gaps in the knowledge of skills listed on their own resumes. I am not expecting a ton out of interns, but I do expect them to have done at least a tiny bit of work outside of the classroom to prep for their new career as software developers.

I have encountered more gaps than I care to admit, but here are the things that I expect any intern to be able to talk about. If you can’t answer even basic questions about the following areas, please spend some time prepping before you waste my time with an interview!

Things Every Student Should Know Before the Intern Interview

  1. Software Configuration Management (SCM). If the terms SCM, Version Control or Source Control are unfamiliar to you, get on GitHub and figure it out! This is an area that most schools don’t teach for some reason and probably the most fundamental aspect of my day to day life. If you can’t make a change and test it out without screwing up the entire code base for every other team member, I don’t want you on my team!
  2. Build Tools. This is especially targeted at ‘Java Developers’ because I see this most commonly with them. If you can’t function outside of an IDE (i.e. Eclipse), then you don’t know enough about your language. If you don’t have a way to automatically package up your application and you don’t know how to get it to a server to execute, you are missing a huge amount of knowledge. In Java, a basic understanding of Gradle or Maven will go a long way. And if you have knowledge of Ansible, Packer or Docker (to name a few), you will be short listed for an internship!
  3. Modern Programming Language (besides JavaScript). I have nothing against JavaScript but if you only know it, you are in for a rude awakening. JavaScript has brought upon a kind of prototyping utopia to backend development, but at a big cost. The performance is questionable for large, complex systems and the type systems can lead to a lot of stupid errors caused by programmers. If I need to prototype and launch an MVP, I will reach for NodeJS. But if I am building an enterprise scale application, I will always reach for a language like Java, Python, C++ and even Ruby before I use JavaScript. If you know one of those other languages AND JavaScript, you are in a very good space.
  4. Any Skill On Your Resume. If you put a skill on your resume, it is fair game. When I ask you a question about it, it is never acceptable to say “I really don’t know much about that skill.” If you don’t the answer to one question, that is fine. If you can’t answer any questions about that skill, not fine. List Java? You Better be able to answer questions about generics and inheritance. List JavaScript? You better understand what a closure is. List Rust? Explain the difference between the Stack and the Heap.
  5. Data Structures and Algorithms. Seriously. You just took these classes. You better know it. And you better keep knowing it. This is the numero uno topic for questions in every Software Interview. Ever.

I don’t expect Interns to know as much as full time employees. There is an expected gap of knowledge. But if every question I ask is met with a blank stare, don’t be expecting an offer any time soon. And if you are looking for a quick way to get the first three items off the table, go start a github project written in Java with a gradle file and send me the link. I promise I won’t spend much time on the first three bullets in our interview!