Why I Love Being A Programmer in Louisville (or, Why I Won't Relocate to Work for Your Startup)


[Update: You can now view my talk on this subject.]

[Additional update: The more observant among you may notice I have since moved to Naples, FL. I have found a place that I enjoy even more, and for all the reasons outlined in this post, am still able to do my job from here. That is the point – it’s not about a specific city – it’s about finding your ideal city.]

For a while now, I’ve had the tagline you see on this site’s header as of this writing:

No, I don’t work in NYC, DC, or the valley, and I’m cool with that.

Like many (if not most) of you, I’m regularly contacted by recruiters. Unsurprisingly, they generally haven’t learned anything specific about me, aside from what they find on my LinkedIn or GitHub profile. If they have visited this site, they certainly haven’t read the tagline. I’m getting tired of sending out what amounts to the same e-mail (though still probably more customized than the typical recruiter e-mail) over and over again, so I hope those of you who primarily read this blog for useful bits of Ruby info will forgive me this brief and selfish digression.

I am a software developer in Louisville, Kentucky, and I am really freaking happy here.

Optimizing for Happiness

A common theme in the development community I most readily identify with (the Ruby community) is one of optimizing for happiness. I’d like to think this is largely because the language itself makes developer happiness a design goal. Whatever the reason, in the same way that GitHub has optimized their company for happiness, and Ruby has optimized itself for happiness, I strive to optimize my daily life for happiness.

Duh. Everyone does that, you might think.

Maybe. As I’ve talked to other programmers, I get the distinct impression that if they are optimizing for happiness, they’re being a good deal less intentional about it.

Let’s get this out of the way: Being a programmer is one of the most singularly satifying careers in the world. We get to wake up every morning and create things, solve interesting problems, and, if we’re doing our jobs well, make people happy. AND WE CAN DO THIS FROM ANYWHERE IN THE WORLD. This means that we get to shape our lives and careers in ways that are impossible in many professions. If that doesn’t make you smile, please see your doctor (who, by the way, doesn’t get to have as much fun in their job as you do).

Anyway, back to shaping our lives. Since we can do our job from anywhere in the world, and only a company that is either ignorant or supremely distrustful of its employees would insist otherwise (Right? RIGHT?), we can live anywhere, and that choice impacts so many other areas of our lives that we should pick a place that works for us, and then sort out the rest.

So, why did I pick Louisville?

Louisville is more than horse racing and fried chicken.

We also have bourbon. ;)

But seriously, I first chose to relocate to Louisville when I was 24. I remember joking when considering the move: “I’m not sure why I’m doing this, all they’ve got there is horse racing and fried chicken.” I was incredibly wrong, and it’s only gotten better since then. By the way, you should totally come visit: among a number of other rankings and recognitions, Louisville was named the #1 US Travel Destination of 2013 by Lonely Planet.

Aside from the obvious horse racing and tons of great dining options, it’s got a number of other things you’d expect from a “respectable” city:

There’s more, but the general point I’m trying to make is that Louisville has what you’d expect from any great city, the difference being that you can drive about 15 minutes in almost any direction and be in a more rural setting. This is a huge pro in my book, because…

Louisville Helps Me Manage Complexity

Ask any competent programmer his or her thoughts on managing complexity in code, and you’re likely to receive a lengthy response. We have an instinctive and universally negative reaction to the introduction of unnecessary complexity in our code, but somehow fail to maintain those defenses in our day-to-day lives.

I grew up in a very rural town in Pennsylvania. I enjoy the quiet, and, though you wouldn’t know it if you met me on the street or at a conference, I’m an introvert. Louisville gives me the option of plenty of stuff to do, but plenty of peace and quiet when I want to recharge. I work remotely, but having experienced what we call “rush hour” here, compared to other cities, even if I did have to work in a local office, I wouldn’t lose much of my life to the commute (more on commutes in a second).

I think I’m one of the only people in the country who doesn’t hate his cable company. They provide me with really reliable and surprisingly-high-speed cable Internet access (50/5 asymmetrical) for what I consider a reasonable price. This makes working remotely a breeze. This is important, because working remotely is a key part of my personal optimization for happiness.

Time is Not Money…

It’s often said that “time is money,” but nothing could be more misleading. Time is most definitely not money. Some of us have much more of the latter than others, but everyone has the same 24 hours in their day. Therefore, I value my time, and I protect it. When I do decide to “waste” time, I try very hard to do so on my terms. Here, again, Louisville helps me.

I already mentioned that I crave peace and quiet to recharge. If having that place to recharge meant dealing with an hour-long commute each day, or long drives every time I wanted to do anything even remotely entertaining, I don’t think I’d make the trade.

Because Louisville is basically a small town with big city perks, I can engineer a simplicity in my daily life that lets me conserve my time and energy for things I find important. It all ties together nicely:

  • Availability of extremely reliable, very fast Internet access makes working remotely a breeze, which eliminates a commute, giving me more time in my day, and allowing me to pick the location that makes my life simplest, instead of paying a mortgage to live in a location based on where my employer decided to do business.
  • I bought a house near my stepdaughter’s school, so she can walk to and from school, and transportation for extracurriculars is less of a problem.
  • The same house is 2 minutes away from my Koko FitClub. Since their program fits both weight and interval-based cardio training into 45 minutes, I can make a trip to the gym over lunch, and grab a protein smoothie before coming home. Because I’m working from home, until Google Hangouts support the olfactory senses, my coworkers needn’t suffer as a result of my choice. This single thing has been so key to increasing my quality of life over the past 4 months it can’t be overstated. Seriously. Find a way to make workouts work into your schedule, and if you have a Koko FitClub near you, check them out. Their system is exceptionally appealing to nerds like me who like seeing numbers. :)
  • I’m about 10 minutes from my place of worship, which is also a very important factor in my overall quality of life, and certainly my peace.
  • Louisville is the worldwide air hub for UPS. This means that everything I ship (or receive) is super-speedy for no extra cost, and makes online ordering even more of a no-brainer (which makes for less errands to run)

…But Money is Nice, Too

The really awesome thing about being a remote worker is that your cost of living is dependent on where you live, but your value to the company that’s hiring you isn’t dependent on that, at all. Living in Louisville lets my dollar go farther than any of the “usual places” recruiters are trying to convince me to relocate.

To be honest, it leaves me scratching my head at interactions like this one, an actual exchange with a recruiter from a well-known NYC-based firm:

Hi Ernie,

I work at ** in R&D.

I came across your profile today while searching for people with Ruby experience.

** is always interested in speaking with top notch technologists.

I would like to schedule a quick call to discuss current and future opportunities here at **. Can you provide some times and a phone number?

First, holy form-letter, Batman! But still, in the interest of education, I responded:

Would this position require relocation to NYC?

…and received this response:

Yes, we do provide relo package.

Right. Because the cost of moving would be what prevents me from taking a job in NYC.

Let’s assume for a moment here that I was anything less than completely satisfied with working for LivingSocial (I’m completely satisfied).

The cost of living in Louisville is 7.6% below national average. The cost of living in NYC is 123.8% above national average. In other words, I’d need to earn over twice as much money to maintain the same quality of life in NYC.

“So live in Jersey, and commute,” you say? See previous discussion about exercising control over how I spend my time. Also, Jersey is still significantly more expensive than Louisville.

Similar arguments against San Francisco, DC, and pretty much anywhere else that would require a lengthy commute to make the cost of living increase even bearable. Life’s too short to spend so much of it in between the places you truly want to be.


So, time and money are easy to quantify. Here are some other reasons I love working in Louisville:

  • We have generally mild winters without completely missing out on the change of seasons. I grew up with snow and wouldn’t enjoy living somewhere it never snowed (my wife will disagree with me on this one).
  • People are just nicer here. It’s good to live in a town where people still randomly say hello on the street. I don’t realize it’s odd until I travel and get strange “do I know you?” looks when I say “good morning” to someone.
  • I used to be depressed by the lack of a strong Ruby community here, but with recent developments (OpenHack Louisville, Code Retreat Louisville, and even Code Louisville) I’ve started to see this as a chance to help grow a community from the start, and especially to melt the brains of some of the Java/.Net-centric folks around here. I think good things are afoot in the Louisville tech scene, and I’m psyched to play a part in them.

Be Intentional - and Be Your Own Product Manager

If you aren’t a recruiter (many of whom I will no doubt be sending to this page) but a programmer, and somehow got to this point without getting bored:

  1. Congratulations!
  2. Since you’re here, let me talk to you for a second.

Are you happy where you are right now? Or, do you want to move to one of those “it” places when a recruiter asks you to? Great! I’m not going to try to convince you that Louisville’s a better choice for you (but it totally is). I just hope you’re taking a hard look at the choices you’ve made and the way you’ve always looked at your career. Be intentional about your choices.

I’ll leave you with this:

I was simultaneously encouraged and frustrated when I read Chad Fowler’s The Passionate Programmer. Encouraged, because he was eloquently and succinctly summarizing some of the things I’d come to realize over 15 years in software development. Frustrated, because I wished that I had been able to give that book to my 20-year-old self and prevent him from spending a decade in the cable telecommunications industry, being the guy doing things in a decidedly non-enterprise way, and being seen as the enemy for embracing “agile” techniques before I had ever even heard the term.

In the book, Chad dedicates an entire section to investing in your “product,” that product being yourself and your career. For many of us who grew up with parents who encouraged us to work hard and keep our heads down, that’s a foreign concept. These are the lessons I wish I had taught my 20 year old self, so he could be a better Product Manager:

  1. “Job security” is a myth created by big companies to trap you in a boring and unchallenging job. You will sign an employment-at-will agreement at every job you take.
  2. Being good at what you do does ensure that when that day comes that you’re looking for work, you’ll find (or create) it in short order. That is job security.
  3. Strive to feel stupid. If you aren’t regularly finding yourself uncomfortable with what you don’t know, then you aren’t pushing yourself hard enough. Don’t get comfortable. See #1.
  4. Don’t take (or keep) a job because you like the people. If you’re a decent person, you’ll find people you like (and who like you) at any job you take. More importantly, if you really like them, you will want them to invest in their “product,” even if that means they won’t be working with you any more. Take the job that makes you excited to get out of bed in the morning. If it doesn’t exist, create it.

Whew! That was a long rant.

Yeah, longer than I thought it would be, actually. Thanks for sticking with me. We now return you to your regularly scheduled Ruby ramblings.

comments powered by Disqus