I’m hunting for a new job right now: that’s always a tricky thing, and it’s easy for it to make me nervous. I’m in that bootstrapped/self-taught bind where my skillset and résumé look weird to the corporate world— I taught myself Python and then fell in love with Emacs Lisp, especially its overlap with Common Lisp; I’m proficient with both of those and speak JavaScript at the high-school Spanish level. I’m also reading up on Objective-C, have brushed up against Ruby a few times, grasp the basics of Perl, have put together a cohesive LaTeX document, think of Git as a basic requirement of any remotely serious project, and can run basic SQL queries. I have a GitHub profile that I’m gradually adding code to, and this blog where I’m getting back into the habit of article-length writing. I am, in other words, an engineer entirely capable of finding their own ass with both hands.
“That’s nice,” said my management-track pal. “What do you want to do? Where do you want to work in particular—what kind of work do you want to do—what are you doing to do for them?”
That takes some more thought. I’m just far enough along to be conscious of the green-engineer fallacy of wanting to work with a language instead of wanting to work on a project, so I can’t say something as facile as “I want a Lisp job!”; similarly, while I identify with Bay Area startup culture pretty strongly, “I want to work at a startup!” isn’t going to cut it either. Those are features I want a job to have, not the job itself.
So in response to my friend’s challenge, here are three specific jobs I’d like to do.
Work on the Unix toolchain for Apple: new releases of OS X show up with new terminal utilities, and the intersection of Unix beard and Apple fan makes this a job I’d love to do.
Work on the API team at Stripe or Square: these are two of my favorite startups, and I think that payments are a hugely important place to apply the lever of technology. Unevenly distributed information and bad liquidity are two longstanding problems: with a smartphone in everyone’s pocket, radical improvements in our solutions to these problems are possible, and Square and Stripe are doing awesome work on that. I’d want to work on the API team to make the services that Stripe and Square provide as language-agnostic as possible— the intersection of mission and language-diversity makes this a job I’d love to do.
Work on open data and developer relations for CalTrain, Golden Gate Transit, MUNI, and the Bay’s other transit agencies. “Which transit vehicles are where, and where will they be next?” is a question that people want answers to so badly that they more or less inflicted an API on MUNI. I’m a cyclist and a public transit rider; I think that better mass-transit is good for everyone, and the interesting benefits that the transit agencies themselves could derive from good data, make this a job I’d love to do.
The nice thing about this exercise is that it reveals that there are a lot of interesting challenges in the world, even when you filter it down to “software engineering jobs in the Bay Area.” I’m going to keep looking, but I’m grateful to my friend for pushing me towards this exercise. Meantime, if you’re reading this and you’re willing to take a chance on a bootstrapped afficionado-of-weird-languages hacker who wants to help change the world, you should check out my résumé.