Category Archives: Job hunting

For Programming, Is College Worth It?

Today a friend of mine asked me if I had any advice for a cousin of his. My friend’s cousin is about to graduate high school and wants to get into programming work.

Here are my thoughts on how to think about the college/no college decision.

Right Choice vs. Wrong Choice Mentality

Most people seem to view the college-or-not question as a matter of what’s the “right” choice. I think right vs. wrong choice might be a false dichotomy. Neither one is right or wrong, it’s just a matter of what kind of experience you want to have. You can reach your ultimate destination—a programming job—via either path.

Let’s examine the pros and cons of the college route and no-college route.

Pros and Cons of Going to College

I went to college on and off from 2002 to 2007. For me the biggest benefit was unquestionably the social experience.

The best thing about college is being surrounded with a bunch of people who are all at the same stage of the same journey, and being in that situation without “adult supervision” for the first time.

Meeting people at work is usually not nearly the same as meeting people in college. As I’ve gotten older my social circle has shrunk. My free time for socialization has shrunk. My opportunities for meeting like-minded new people have diminished down to almost nothing. College is an opportunity to meet people who will become the closest friends you’ll ever meet. After college, for most people, that opportunity goes away.

One big con of going to college is of course the cost. If you’re not lucky enough to have outside help you’ll be paying student loan bills for a long time after you graduate.

A pro of going to college is that it can of course open up career opportunities. The quality and quantity of these opportunities depends on certain things like how good of a school you go to and how well you network during college.

There are a large number of programming jobs that are equally available to degreeholders and non-degreeholders given enough work experience. I would say most programming jobs. Certain types of companies are more picky about degrees. Big companies and government organizations tend to want degrees.

I wish I had given more thought to where I went to college. My options were limited because my grades in high school were bad. I never cared about grades because I didn’t think about why they mattered.

I’ve learned over the years that going to a prestigious school like MIT or Harvard can have some really serious benefits later on. It’s not just that it impresses prospective employers when you tell them you went to a place like Harvard. It seems like the main benefit of going to a really good school is the network you develop there. You’re more likely to meet someone at an Ivy League school whose dad can give you a sweet job, for example, than if you go to some community college.

Pros and Cons of Being Self-Taught

I don’t know what it’s like to go down the path of a 100% self-taught programmer because although I didn’t complete my degree I did go to school for Computer Science for some years.

I would strongly suspect that you can start your career younger if you skip college. If you start trying really hard to get a programming job right after you graduate high school, it probably won’t take you a full four years to get your first programming job.

On the other hand you might always have a nagging feeling in the back of your mind that you should have gotten your degree. There’s a genuine social stigma around not having a degree. You might always wonder how things might have turned out differently, especially if your career turns out not to be anything that grand. I have personally experienced this sense of lack although it has gone away over time. At this point I’m 100% at peace with the fact that I don’t have a degree.

What Matters More Than a Degree

In college I had two friends who both majored in Political Science. When they graduated, one moved to Washington, D.C. for a job in government. The other got a job at a pizza place.

I know developers who have had boring, undistinguished careers at no-name companies. I know other developers who have written books, get interviewed on podcasts, and get paid to travel the world working for household names. What matters much more than a degree is the level of resourcefulness and ambition you apply to your career. It’s what you do during your programming career, not before it, that determines the arc of your career.

My Advice

What would I say if a high school senior asked me if I recommended going to college? I would say go. The social experience is worth it.

And if you’re going to go, might as well make the most of it. If I could go back in time and talk to my 12 year-old self I’d say this: You don’t want to be stuck in a crappy career your whole adult life. Study how to get into the best colleges so you open up as many career opportunities as you can. Try to get good grades. If you have to do all this stuff anyway you might as well get as much out of it as possible.

How to Find Programming Job Leads on Craigslist

Hunting vs. farming

There are two general strategies you can use to find programming job leads: hunting and farming.

“Hunting” can get results quickly but it only has a short-term benefit. Hunting includes things like scanning job boards and connecting with recruiters.

“Farming” methods can take longer to bear fruit (to continue the analogy) but the results are more permanent in nature. Farming can include things like building a technical blog, writing a book and giving technical talks.

In this post I’m going to talk about hunting, specifically using craigslist. But before that, let me describe a more general job board strategy.

Job board strategy

Geography and money

If you want to get a job that pays a lot, you should work for a company that has a lot of money. Companies that have a lot of money tend to be in big cities. So if you don’t live in a big city, your options are either to move to a big city or get a remote job working for a company in a big city. Either way, the geographic scope of your job search will be big cities.

The goal of a job ad response

When you respond to a job ad, your goal should not be to sell the employer on hiring you. Your goal should be to sell the employer on responding to you. The job of the first email is to get on the phone. The job of the phone call is to get an in-person interview. The job of the in-person interview is to get the offer. Don’t make the (extremely common) mistake of selling them on hiring you in the first email.

Volume

Most people apply to way too few jobs. You should apply to a lot of jobs. I recommend you shoot for a minimum of 5 per weekday or 25 per week. Also, don’t pin your hopes on any one particular job. And don’t let your foot off the gas just because you’re starting to get calls back. That’s the time to step on the gas more because what you want is as many concurrent conversations as possible, leading to as many concurrent job offers as possible, meaning you have more power and options at the time of the offer.

When to apply, when to wait

How do decide whether or not you’re qualified for a particular job? The answer is don’t worry about it. Just apply. I hate to invoke the “You miss 100% of the shots you don’t take” quote but it’s true. Applying to a job you’re not qualified for has very little potential downside but a huge potential upside. You should of course prioritize the jobs that look like better fits over the jobs that look like worse fits. But if you’ve given yourself a quota of 5 applications per day and you’re only at 3, fill the remaining 2 with jobs you’re not qualified for. Think about the worst that could happen vs. the best that could happen.

And what if you have no programming experience at all? What if you’re trying to get your first programming job? The same principle applies. Just fucking apply. They might ignore your application. So what? They might call you back for an interview, and you might go down in flames during that interview. So what? Now you have some interview practice. Do enough of those interviews and eventually somebody will neglect to ask you any technical questions and you’ll get the job. You can count on this. It probably won’t happen on your first, third or twentieth try, but if you try enough times, getting an offer is inevitable.

How to get job leads using craigslist

Historically, most of the job interviews I’ve gotten have been from job boards, and the job board I’ve used the most is craigslist.

Which craigslists to use

Earlier I said that it makes sense to geographically scope your job search to big cities. The best big cities for tech jobs are probably San Francisco, New York, Seattle, Boston, Austin and Portland, in roughly that order. Let’s call these “Tier 1” cities.

Then we can list all the “Tier 2” cities. We can even just pull up a List of United States Cities by population entry on Wikipedia. The ones we haven’t listed in Tier 1 include LA, Chicago, Houston, Phoenix, Philadelphia…you get the idea of course. What you want to do is make a list of all these cities and put them in a file somewhere.

You can prioritize this list any way you like. For me, I live in West Michigan, so I prioritize Chicago and Detroit high on the list because they’re easy to get to. It really doesn’t matter a ton which cities are on the list and how you prioritize them. The point is that there should be a lot of them.

What to do once you’ve chosen your cities

For my list I do kind of a foreach loop. For each city on my list:

  1. Visit the craigslist for that city, e.g. https://sfbay.craigslist.org/
  2. Visit /sof and /web
  3. For both /sof and /web, search for my competencies (e.g. “rails”, “ruby”, “javascript”, “angular” – all separate searches)
  4. Start applying to stuff

How to respond

A deep discussion of how to respond to a job ad is outside the scope of this article but I’ll say this: Keep it short. Don’t write a commercial for yourself. Just invite the other person to have a conversation. Make it easy to respond.

In my mind, the fewer details I include about myself, the fewer excuses the recipient has to disqualify me. If I say I have 3 years of experience and the job ad says 5, then that’s a reason to disqualify me. But if I leave out my years of experience, then the recipient doesn’t know, and has to ask me in order to know. And by the time we get to that part of the conversation, the interviewer may no longer care about years of experience because my other strengths compensate. So my email responses are very short. I don’t even attach a resume unless specifically directed.

Be upfront about geography. If the job posting says “REMOTE WORKERS NEED NOT APPLY!” respect that and refrain from applying. If you’re willing to relocate, say so. If you want to work remotely but the ad seems to expect local applicants, address the matter.

By the way, just by following the instructions in the job ad, you’ll already be ahead of 90% of the applicants. I’ve been on the receiving end of job applications. It’s amazing how sloppy and careless so many people are.

Lastly, you might hear other people talking about how they’ve “tested” different email subject lines, etc. when responding to job board ads. That kind of claim is pure bullshit. There are way too many variables involved, and way too small of a sample size, to be able to test the effectiveness of various email tactics when responding to job ads. The best you can do is to gain an understanding of human psychology and apply what you’ve learned to your email tactics.

Persistence

I want to leave you with some advice regarding persistence. One of my favorite quotes, attributed to Ben Franklin, is “Energy and persistence conquer all things.” The shortened version I chant in my head is, “Persistence conquers all things.”

When you’re early on in your job search, it will all feel like a waste of time. You’ll apply to what feels like hundreds of jobs and hear nothing back. You’ll probably feel very discouraged. But then, all of a sudden, you’ll get a flood of activity. It always works that way.

And depending where you’re starting from, it will take shorter or longer to get to where you want to be. If you’re an experienced developer and you just want to relocate, it might take you as little as a few weeks to find a new job. (I’ve heard of job searches that began and concluded inside of one day.) If you’re just starting out, it might take you multiple years to get your first programming job. But however long it takes, don’t let any excuse allow you to cease your forward motion. Do something to move yourself forward every single day.

If you’re persistent and you keep moving no matter what, eventually something will work.