Staying Above the Ghetto

A few years ago, there were fewer libraries and little documentation. If you marched up to your boss and argued, “Our next project should use Ruby,” he’d say, “What’s Ruby?”

The Ruby job market has exploded. Consultants make a killing. There’s a wealth of books and libraries.

Our success has given us a first-world problem: copycats. I’m not worried. Rails developers are more expensive, difficult to find, and higher maintenance, but Rails is a luxury brand. You pay a premium for a better product. It’s Kia vs Mercedes or Windows vs Mac.

In the auto industry, luxury brands have a distinct design language. BMWs feature the “Hofmeister Kink.” Economy manufacturers with luxury marques, such as Toyota with Lexus, duplicate this design cue to signal luxury. When I see a new agile framework duplicate Rails syntax verbatim, I call it the “Has_many Kink”

Luxury brands don’t need to dominate. In 2006, BMW made a profit of 4 billion euros. There’s no need to fear Mercedes, who puts automatic transmissions in their cars. Our values and priorities define us. If a patent troll made it illegal to use Ruby and Rails, we’d find something another platform and give it our unique voice. Four values stand out in Rails:

  • Aesthetics: We value elegance, syntax, completeness, consistency, and brevity without obfuscation.
  • Pragmatism: We shrug off IDEs because we know speed isn’t performing actions faster. It’s skipping what doesn’t matter.
  • Freedom: We encourage you to do the right thing, but never tie your hands. The world is a scary, uncertain place, but we have faith in your best judgement.
  • Passion: We blog, screencast, shoot videos, create t-shirts, and write children’s books because we love what we do.

These are the values we choose in tradeoffs. Our aesthetics costs us performance. Our freedom removes safety nets. Our passion can make us look unprofessional. However, we’ve chosen values that matter most in high productivity business.

The only threat to Rails is to our community. Now that Rails is mainstream, we’re seeing an influx of developers. Some will be great, and they were only held back from Rails by their employer. Some are going to be “commodity” developers.

Commodity Developers

These are the guys at large corporations that write legally mandated corporate training sites, those sites with horrible slideshows about sexual harassment. These things only work on Internet Explorer, and even then just barely. These apps don’t need to be good, just cheap to produce. Perfect for commodity developers.

Don’t confuse them with junior developers, who just lack experience. Commodity developers have a fundamentally different outlook: “It’s just a job.” This is perfectly valid. 2/3 of Americans “do not identify with or feel motivated to drive their employer’s business goals and objectives.” 1/4 of Americans are “just collecting a paycheck.” Outside software, “9 to 5” is the norm. Hardcore employees are called “tools.”

So what do we do to stand out from commodity developers?

Well, we could enter a buzzword arms race. If we rename Rails something else, we could go a year before commodity developers claim they know it. Let’s call is Scurvy. Nobody likes Scurvy. ”I’ve been meaning to try Scurvy. I bought the book.”

Another option is marketing hacks. There was an article a man posted how he increased Twitter followers by phrasing his call to action, “You should follow me on Twitter.” This worked until everyone was doing it, and now it wreaks of desperation.

There is no predictable path to success. Someone could email you tomorrow with a dream job. Or you could ace an interview but someone at the company drops the ball. Weeks after interviewing a candidate, I asked a peer, “So what happened with that interviewee?” “Wait. I thought you were going to get back to him.”

When I graduated college, I recognized people had inertia. I had to move away or I’d be stuck in New England for the rest of my life. So I booked a flight to Los Angeles with two duffle bags and a laptop. No car, no job, no apartment. I spent at a week at a shady hotel called “The Gershwin,” featured in LA Weekly for the pimps and a guy who dresses as a pirate. Within one week, I found a job, apartment, and car.

What I learned is that you only control the present. Fill it with activities to make you a great developer. There is never competition for talent, and it will all work out.

Those activities fall into three buckets: learn, create, and share.

Learn. Create. Share.

Learn

Before the iPhone, nobody could predict the demand for Objective-C and Cocoa. Before multi-core, nobody could predict the demand for concurrent programming. If you wait until you’re forced to learn something, it’s already too late.

Create

You have no idea how many developers, faced with a technical interview, fail at fizz buzz.

Writing is a field everyone is trying to get into, but very few are talented enough to succeed. A standard way of “breaking in” is to write on spec.

Share

All your skills are worthless if nobody knows about them. The best way to market yourself is to give back to the community. This can be in the form of open source, blogs, or presentations.

A Laundry List

These are examples from my own life. These are not a path to success, but activities that have kept me engaged at one point or another.

Study Computer Science

Web development has a low barrier of entry. Today, it’s mostly about business logic. You’ll go some time before hitting CS problems. Unfortunately, you can’t recognize them without the knowledge. Too many people are happy to optimize bubble sort by dropping down to C.

Learn a Process

The other half of development is engineering. Visit Rails Matury Models, forget its name, and read every entry. Use them as a basis for your workflow.

Study an old language

“Classic” languages like Smalltalk and Lisp had an immense impact on development. If you can’t learn from their success, ask why they didn’t take over the world.

Diversify

Learn technology beyond web development. Learn desktop development. Learn image processing. Pick a topic that intimidates you, and tackle it head on.

A huge career misconception is the equation of popularity with value. Sticking to popular languages and frameworks means more competition. The secret to increasing your value is mastering a niche.

Work on Personal Projects

We give up going to the gym because we think about the pain and sweating. Instead, think about the results, such as muscles. Imagination is your strongest tool for motivation. Rather than read books, come up with projects that have a personal connection with concrete results.

Start a company

I work on starrup never expecting to become rich and famous. It’s more about learning how to maintain my own business, and trying new technology in production that I could never get away with at my day job.

Maintain a website

You must place yourself in a position to maximize opportunities, and one step is making sure you can be found online.

I got tired of being contacted by recruiters, so I converted my website to something that just pushed my film and acting, with a buried link to my technical accomplishments. I was still contacted with job opportunities.

3 Examples

Thumber

A filmmaker friend told me about “cinema redux.” You take a snapshot of a film at one second intervals, and end up with a giant image of the entire film. I told him I could probably write a Ruby script to do that in a night. I did, and spent another night on polish.

I put my app online and forgot about it. A week later, it was picked up by Kottke, then Waxy, and the G4 Tech TV Blog, among others. I saw a huge spike to traffic, and I continue to see it trickle in a year later. I have no doubt it’s upped my pagerank. The goal of the app was to play around with RubyCocoa. I didn’t do any marketing.

The real benefit was my exposure to Cocoa. In February, Yellowpages needed to form a team to write a native iPhone app for launch date. Of hundreds of engineers, it was only me and one other developer with Cocoa experience.

Hadoop

For my final project at Yellowpages, I needed to generate a sitemap from its 30 million listings. The simplest solution would be to write a Ruby script, but that would take hours to run on a blatantly parallelizable problem.

I used this as an opportunity to jump into Hadoop. From this project, I learned the ins-and-outs of setting up a cluster, and open sourced a helpful library or two.

Rails

In 2007, I placed in the first Rails hackfest, earning me hotel stay and a free admission to Railsconf. The deep dark secret is that this was my first open source project. Most of my contributions were unit tests, documentation, and fixing tickets on Trac. My contributions to Rails have served as outstanding job leverage.

There is no minimum skill level required to contribute to open source. If you want to help, you can fix wikis or write documentation or just answer questions on IRC.

You Have The Power

These activities aren’t a contest. These are habits you engage in over your entire career. Commodity developers set the bar incredibly low, creating a decoy effect. Regularly engaging in these activities is all it takes.

JavaScript is a dead simple language, right?

Friday night I was working on this presentation at Starbucks, and I looked up to see a beautiful French girl with a Macbook staring at me. She had 10 minutes to apply for a job online, and begged to use my wifi. I would have given her my social security number.

A few minutes later, she’s frustrated with the horrible corporate website. It was clearly only designed for Internet Explorer, and complaining about her filename. The filename is fine! She rests her face in her hands, and says in quiet resignation, “You wouldn’t be an engineer, would you?”

Thanks to commodity developers and the Safari developer console, this line of Javascript:

  validate = function(){ return true }

got me a beautiful French girl’s phone number.

Mahalo.