Some useful info for tech interns

I’ve spent 4 weeks working for the team at npm, and I can firmly say that I knew little to nothing about how software is produced. More often than not, I don’t know how to do something despite all the time I spent looking at the monitor trying to fix the problem.

This gif best describes my experiences as a software developer.

http://giphy.com/gifs/kkpcRessCvNyo

Since I am a benevolent person and I don’t want you to throw your $2000 macbook to the ground, I’ll give you some useful advice I’ve picked up over my 4 weeks.

1. Version control.

First of all, whatever company you’re at should be using version control, if they’re not leave your job immediately – they are doing it wrong. Version control is probably among the most important skills you need as a developer. With that being said, remember to use it often and to use it properly. Make a new branch for any new features you’re thinking of adding, and most importantly remember to commit any changes you make to your code. You don’t want to throw your computer across the room because you wanted to add some great new functionality to your module breaking your code and happiness.

2. Node/Python/Rails console.

Any of these are excellent tools for when you want to get a quick understanding of how something might work. This week I’ve used the node shell to play around with poorly documented modules, figure out how the array.splice() method behaves with negative indexes, and understand how closures work in javascript. As a software developer reading can be very helpful, but there is no substitute to actually playing around with the software.

3. Shave the yak.

If you’re not familiar with the term, I wasn’t either, you can find a good definition here. All though it may not seem immediately useful, doing little things like adding a few extra shortcuts inside your vimrc or your gitconfig file will speed up your workflow and allow you to focus on your code that doesn’t work.

4. Testing.

This is without a doubt the part of software engineering I hate the most, but will save you from publishing broken code for millions of people to use. So if you don’t know how to already, learn how to write tests with whatever paradigm you like (TDD vs BDD). Also try to write your tests while you’re building what you’re building, this will allow you to assure what you’re writing actually works before you write anything that depends on it.

5. Learn how to ask questions, and communicate effectively

This is the most important skill a student/software developer/professor/grocery store clerk/any person could have. When you have to articulate why your code isn’t behaving properly “It won’t work” won’t really give the person trying to help you any insight to the problems you’re having. Therefor you should learn how to walk through and explain what you’re doing to someone else, often times talking through a problem will inspire a new solution. If you’re given an assignment, and aren’t sure what they’re asking of you, start asking questions until you fully understand what they want you to do. Studies show that 99/100 managers prefer answering questions over getting incorrect work.

 

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>