David Fisher's Tech Blog

On Ruby, Rails, Heroku, AWS, iOS and scalability

How to Find Your First Programming Job

So you’ve been spending time learning to code, either through teaching yourself or a more formal program, and you’d like to get your first job but you don’t know where to start. Here’s my advice for how to stand out from the pack.

Put together your resume

I worked as a headhunter for a while hiring legal staff. After seeing thousands of resumes, I realized that most people have no idea how to put together a decent resume. There are countless blog posts online describing how to write better resumes and I won’t attempt to replicate those. But here’s a few tips:

  • Make it a single page unless you’ve got a PhD or over 10 years experience. Since this is your first programming gig, make it a single page.
  • Whitespace is awesome. Choose your fonts wisely. This isn’t a good time to use Comic Sans.
  • The templates that Word or whatever give you are terrible and encourage overly crowded resumes. I’ve seen too many of these.
  • Less fluff, more content. I want to know what you can do and how long you’ve been doing it.
  • Less is more. I’m going to glance at your resume for 15 seconds on first pass. If there is too much stuff, I might miss the important parts.
  • Skip personal statements as they are always fluff.
  • Make sure your contact information is on there. Just phone & email. Address is optional- I don’t put one on mine.
  • Listing Microsoft Office as a skill never helps anyone. Think about what real unique skills matter and list those.
  • Send your resume as a PDF. They view well on almost all devices and retain formatting very well.
  • If you know a foreign language well, you should definitely list it.

Things that turn me off when reading a resume:

  • Huge lists of acronyms. I saw a resume that had the following list: IGMP, RTP, RTCP, DHCP, NTP, NAT, SNMP, SONET (EoS), ATM, MPLS, BGP, RIP, WDM. Those are great things to know, but even as someone who understands those… it isn’t good to read.
  • No whitespace. Everything crammed together.
  • Non-relevant jobs. The grocery store you worked at when you were 16 isn’t interesting.
  • I personally don’t care about your GPA. I’m not going to call the University and check up on this, so you could have put anything. Or maybe you took easy classes. Who knows?
  • I know that you’ll give me references if I ask for them. You don’t have to put that you have them on your resume.
  • I probably care less about your education than you do. Some of the best and brightest people in the industry were more of the “Turn on, tune in, drop out” people. Dedicating 6 lines to this probably isn’t helpful.

My personal resume is a bit non-standard, but it gets amazingly fast responses from potential employers and clients.

Cover letters, meh

I don’t like cover letters. You’re sending me a resume. I know you’re interested, and I just need you to confirm which position you were looking at and maybe your general availability. Anyone can write that they are a responsible team member who will contribute a lot to the organization. I skim the cover letter, if I read it at all. Probably the most important thing you can say in a cover letter (since it doesn’t fit elsewhere) is if someone that both of us know has referred you to the position.

Get on LinkedIn

I’m not in love with LinkedIn either to be quite honest with you, but it can be pretty useful for job-hunting. The main thing I use LinkedIn for when hiring is finding out who in our network we have in common. If you’re in my city and we have zero 3rd degree connections, I’m wondering why you’re not in the development community more (meetups, etc). If we have connections, then I can ask them about you. LinkedIn is a nice place to also have other more filler-like stuff that clearly doesn’t fit on the resume. You can put stuff about your interests, group memberships, papers you’ve authored, leave every prior job you’ve ever had on there, etc…

Github is your real resume

Github allows me to read your code. With this, I can realistically see what languages you’re comfortable in, your coding style, if you write tests every time, contributions to the open source community, how well you document things, and how well you work with others. This is far more valuable than anything you list on your resume, which I largely have to take your word for. It is an amazing tool, and for the most part its free!

Projects

Having projects shows me that you’re creative, driven and can ship code. They don’t have to be huge or earthshaking, but if they are that doesn’t hurt. So make a site that shows a different Harlem Shake video every hour, or tracks how many licks on average it takes to get to the middle of a toostie roll. Having a project (or ten) that you’ve created and I can see is probably of similar weight to seeing Harvard on your resume.

In fact, I’d rather hire someone who is self-taught, contributes a ton on Github, and has lots of cool side projects than someone who just has a nice cover letter and a piece of paper from Harvard and nothing else.

Network, network, network

A mediocre developer who networks nonstop will probably have more job offers than an amazing developer that no one knows about. Get on Meetup or a similar site and find out what is happening in your area. Most events are free, and if you’re totally strapped for cash and its a paid event let the organizer know that you’re looking for your first job and they will probably let you in for free.

On Recruiters

Non-corporate recruiters (headhunters) are a mixed bag. If you get an hourly job through them and you’re getting $15/hr, they are probably charging the company $28/hr. If you get a job offer for $80k, they will want a $20k check from the company for placing you. As you can see, this significantly increases the cost of hiring you and makes you less competitive vs someone who was going directly to the company.

Also, many headhunters are filling jobs that they are having a difficult time finding talent for. Sometimes this is because they can’t find someone with a specific skillset (but you’re new to this, so probably don’t have a terribly unique skill) or the company is boring. This isn’t to say that you should never use a recruiter, but know that 90% of them will be a waste of your time.

Instead of talking to recruiters, network.

Interview time

Don’t be afraid to say you don’t know. It is far better to admit that you’re new to this, and that you’re willing to learn than trying to fake it. If we’re at the interview stage, then a good portion of what I’m sizing up is if you fit overall with the company. The above items already mostly validated your skills for me. Find out if the company is the right fit for you, asking appropriate questions to find out if it is a good match. Express why you’re passionate about coding, and what challenges you enjoy.

Summary

When I’m hiring a developer, new or experienced, it comes down to just a few things. I want to find someone who is interesting (projects), capable (already knows or is willing to learn), and likable (interview time). It is worth noting that I am not every hiring manager, and some care about things that I don’t care about- you can’t please everyone.

For you, even if this is your first job, the good news is that there are a ton of jobs out there for developers in almost every medium-sized and larger city. And there are plenty of companies that will accept remote work, but I wouldn’t suggest doing that for your first job.

How to Use Git for Collaborative Blog Editing

Introduction

I’ve had a few blogs prior, but I wasn’t happy with how unfocused they were and I never blogged consistently on a topic. As I’ve been programming more, I have realized how useful technical blogs have been and I would like to contribute back to the community by having my own where I can share how I have solved problems I have encountered.

However, I don’t feel that I am the strongest writer out there and asked a friend, Rae Alton, to help edit this blog to give it a more consistent tone, pacing and style. Since I am blogging using Octopress, which is based on Jekyll, and I am a huge fan of the Git workflow I asked that she would also use Git and Markdown in the editing process. The only catch is, she has never used Git or another version-control system so some documentation is in order. This just happens to create a great blog post demonstrating how one might use a workflow like this for blogging. So here we are.

So back up, what is this Git thing?

Git is distributed version control. It was written initially for better management of the Linux source code. It is Free Open Source Software. Essentially, it allows multiple people to work on a document (or series of documents) all at once, and generally not step on each other’s toes.

Github is a platform for storing, sharing and working with Git repos. A repo is a set of related files which one or more people can work on.

Collaborating on Writing and Documentation via Github

Git via the command line can be daunting. Thankfully, there are several tools that can make this significantly easier, including Github; a web-based hosting service for software development projects that use the Git revision control system.

To start, sign up for a free account on Github. Then, go to a user’s repo that you’d like to help edit, such as the repo for my blog. Blog post files are kept in the source/_posts directory. Click on a blog post such as this one you’re reading. If you hit the ‘Edit’ button, you will see an editing window with the contents of the blog post in Markdown.

Markdown is pretty simple, especially just to edit.

When you’re editing hit ‘Commit Changes’ and initiate a Pull Request. I can now merge it into my blog and update the changes. This should initiate a Pull Request, which will let the maintainer of the repo (and blog) that changes have been made.

Other uses of Github for writers

Git and Github can be amazing ways to collaborate on documents. One thing you’ll find when browsing Github, and trying to get various programs to work, is that programmers are often terrible documenters. We make a lot of assumptions. But if you can figure out how to make something work, and you edit the documentation- then you can help make it easier for the next person to use.

Modern E-Commerce Isn’t Enough

We are reaching a time in the development of the internet that one could assume that everything that is obvious, monetizable and useful has been developed, patented and tested. Yet there are still several basic problems to be solved, with riches going to those that solve them.

One such problem is shopping. Amazon takes the cake for selling everything, or alternatively with a quick Google search you can find a vendor for practically every product. What is missing?

This evening, I realized that I didn’t have a copy of Jessica Livingston’s Founders at Work on my bookshelf which I wanted to re-read for an upcoming project of mine. Like many 20-somethings, I am impatient. I want it now. Sure, Amazon could have it here tomorrow, but that isn’t really now and tomorrow is a busy day.

Google is my go-to search engine and yet the primary search and the Google Shopping return no useful local results.

Of course, I know that this is a book. And books are generally to be had at local bookstores. Yet, searching the Borders and Barnes and Noble sites show that all local stores are out of stock.

There are local bookstores, but I’ve just moved to town and I don’t know them well. Mom and pop stores are unlikely to have great online inventory systems, and the effort in searching and calling all of them seems prohibitive. I really just want to drive there and get it - now. Plus, its almost 7PM and many non-chain stores will be closing shortly. Also, search engines do not generally indicate if the store holding what you want it currently open.

This is a search problem that the internet fails at completely. An eBook could seem to be the answer, but as we’ll see that doesn’t work for every product.

Or let’s say I’m in midtown Manhattan. I’ve got an hour until a job interview. I hop into a Starbucks and get a coffee. Unfortunately I trip on the sidewalk and manage to spill coffee all over my pressed white dress shirt. No time for dry cleaning- I need another shirt. Clothes are abundant in New York. It just so happens that I’m interviewing at the intern level and money is tight. I really can’t spend more than $30 on a plain white dress shirt. Having something that vaguely fits would be nice too, and I’m a very small (or large) person, and I find that many stores don’t have my size.

Pulling out my phone and Googling for ”White dress shirt NYC $30” doesn’t yield anything useful, nor does it take into account my real location, my price range, sizing, or availability. Calling places won’t be helpful, as stores that stock cheaper clothing in NYC aren’t always great about customer service on the phone. What do you do?

Even a simple query of ”cheapest bottle of aquafina water within 3 blocks” isn’t something we can currently do on the internet.

In essence, someone needs to get smart about combining search, location, and inventory systems and put it online and easily accessible via mobile.

The difficult part is getting the information from merchants and keeping it up to date. Thousands of merchants in the US still accept cash only, use mechanical cash registers and manual inventory systems making a software solution is difficult at best. In working with merchants it is important to stress that such a system would increase competition, make sales more effective, and blur the line between online commerce and main street commerce.

I’m confident that if someone tackles this problem and overcomes its challenges they will change the face of business forever.

UPDATE 1: It seems that a site called Milo is already doing this to a degree. It seems to only be big-box stores, and for many it has me call them to verify the inventory, but it seems to be a start. They’ve got the interface right, but the part about getting small businesses onboard is still the hard part and unsolved by Milo or others from what I’ve seen on a level that really makes it worth it.