For hire

Published: April 11, 2018. Filed under: Django, Meta, Misc.

Update: I am (as of August 2018) once again gainfully employed.

Since a slightly-wider circle of people know this now, it’s time to just go public with the news: my last day at now-former employer was toward the end of January. At the time I told a few friends, but wasn’t in a huge rush to find something else immediately; I’d been getting ready to depart for a little while, and there were some things (a bit of travel, catching up on some open-source projects, and a bunch of writing) I wanted to do before committing full-time to looking for the next gig.

But now, with travel completed, open-source projects mostly caught-up, and at least some of the writing done, it’s time to turn my attention to the least fun part of what I do for a living: finding a new job in tech.

In hopes of making that process a little smoother, I want to take a little time today to talk about what I’m looking for, and what I’d like to bring to my next employer. My usual postings about Django, Python, and security and Unicode curmudgeonry will resume later this week.

And I’ll link it again toward the end, but if you’re hiring and you’d like to talk to me, you can get in touch using my contact form.

Who I am

I was not a Mozartian wunderkind who hand-built an ALU at age 3 and wrote a compiler by age 5. A lot of people seem to think this is necessary background to become a successful programmer, but as a toddler either I didn’t get that memo, or else I ate it.

I also have never taken a computer science course in my life, which is another commonly-asserted requirement for being a “real programmer”. I have a degree in philosophy, and did not own a computer until my sophomore year of college. I learned to code by reading books and online tutorials and guides, and by lots of practice and trial-and-error.

I started out building websites and later web applications during my college years, and at first I was doing it as a hobby with the occasional bit of paid work. But since late 2004 I’ve been exclusively coding for a living, initially as a freelancer and later as an employee of various companies. Initially, I was known for PHP and Perl work, and for being handy with a couple popular-at-the-time content-management products.

But if you know anything about me, it’s probably because of Django. I fell in love with Django almost immediately after its initial public release, and when the opportunity presented itself I took a pretty big risk: in early 2006 I packed up everything I owned and moved across the country to a little town in Kansas to accept a job at the newspaper where Django was originally developed.

That gamble seems to have paid off. I spent five years at the Journal-World, picked up a commit bit on Django and became its release manager, and learned a heck of a lot while I was there. And Django got to be pretty popular, so my experience and work with Django opened some doors for me; after the Journal-World I went to Mozilla, where I spent four years working on the Mozilla Developer Network. The last couple years I was at a startup, helping to build health insurance that’s actually good.

I don’t do much work directly on Django’s codebase these days (though I have a pull request open that I need to go clean up, and a slightly larger proposal I want to get written up soon), but I still wear several hats for the framework:

I also maintain several open-source projects, some related to Django and some not. And I’ve given a lot of talks about Python, Django, and various other tech and tech-adjacent topics at local, regional, national and international meetups and conferences; next month I’ll be in Cleveland for PyCon US, where you’ll be able to hear me explain how the Python bytecode interpreter works. It’s more interesting than you might think!

What I care about

My last three jobs were, in reverse order, a startup working on better ways to do health care; a nonprofit dedicated to protecting and promoting the open web; and a century-old newspaper company trying to rethink how news organizations work in the online age. I like working at places where I can feel there’s a purpose to what I’m working on, and that what I’m building will have a positive impact on the world. And no, I do not consider “slightly increment shareholder value”, by itself, to be a positive impact. Nor do I consider “get people to spend 0.17% more time looking at this ad-filled feed” to be a worthwhile endeavor.

In addition to that, I have some causes that I’ll advocate for wherever I find myself working:

I am committed to making tech as an industry open and accessible to everyone. I believe that anyone who’s sufficiently motivated can become a proficient programmer, and I have neither patience nor tolerance for people who want to put obstacles in the way of that. If you end up interviewing me, I will ask you some questions about your company’s diversity and inclusiveness efforts, and the answers will be significant factors in whether I decide to accept an offer from you.

I also believe our industry desperately needs to get better at technical interviewing. The typical tech-company interview is, frankly, awful for all parties and often works at cross-purposes to the actual goals of the company. I’ve written a fair bit about interviewing, both here and elsewhere; I’ve done conference speaking on improving interviews, and I’ve put in a lot of effort trying to develop better interviewing practices at places I’ve worked. I will ask you questions about your interview process up-front, and I hope I won’t have to break out some of my “fun” solutions to common screening problems.

I am fanatical about good technical documentation. I think a big part of Django’s original popularity was how good its documentation was, relative to the typical open-source project, and a lot of my contributions to Django have been documentation. I’ve also given a couple conference talks about writing good documentation, and tried to maintain high standards for my personal projects as well as trying to improve internal docs at a couple employers.

Finally, I believe strongly that tech organizations should spend as little time as possible talking about technology. My experience is that the happiness and effectiveness of a dev team is inversely proportional to the amount of time they spend talking about their tech stack. If that’s a frequent topic of conversation in the office, it’s a sign that something has gone wrong and the team isn’t able to spend time talking about the things they’re actually trying to build. This is something I only realized after I’d been working in tech for quite a while, and although it’s a very difficult problem to solve once it crops up, I’ve advocated for taking the hard route and trying to genuinely solve it over trying to find workarounds.

What I’m looking for

Obviously, Django and Python are pretty major strengths for me. There certainly are people who have more experience with Django than I do, or who know the internals of the framework better, but I’d bet that’s a small group and I probably know most of them personally.

Unfortunately, that kind of strength can also lead to being pigeonholed. I’ve done other types of programming, and worked with other tools and languages — for example, in the health-startup world I recently departed, sooner or later everybody on the software team has to pitch in and work on pipelines and data parsers; working in a newsroom environment in the late 00’s was a similar experience, and involved doing a little bit of everything — but usually I get cast as “the Django guy”.

Now, I like Django and enjoy working with it, and I like putting my experience with and understanding of Django to use. But I’m wary of letting it become most or all of my job description, especially since there are other things I’m interested in, and being perceived as one-dimensional is not a super comfortable position to be in.

So here’s what I’d like to offer: if you want to hire me because you’re using (or thinking about using) Django, and you want someone with a ton of experience with Django who can help you with that, I can be that someone. I’m always happy to help build things with Django, and to use what I know to help improve the knowledge and productivity of the team I’m working with.

But I will give priority to any role that gives me opportunities to be more than just “the Django guy”.

For example: I’ve spent a lot of time on Django’s security team, I’ve given a couple in-depth tutorials on doing secure development with Django, and quite a few of my personal open-source projects are either directly security-related, or try to do common things while caring a lot about security. But I’m in that spot where I know enough about security, as a topic, to know how much I don’t know. So I’d love to work someplace that gives me a chance to learn more (especially since most of what I know is concentrated in one area of a typical tech stack) and build a different skillset. There are several other topics and areas I’d love to grow in or learn more about, and my ideal role would allow me to do that while also taking advantage of my experience with Django.

There are a few other things that I’d like to find at the next place I work:

I’m currently in the SF Bay area, and would prefer not to move cross-country for a job (I’ve already done that twice), but I have experience working remotely and am willing to do it again.

Also, for the record, I have no desire ever to be a manager.

Let’s talk

If you’re hiring and any of this sounds good to you, get in touch. As mentioned above, I’ll also be at PyCon next month, and I’m happy to sit down for an in-person chat. And I’m based in the SF Bay area, so if you’re local and want to meet up I can probably make that happen, too.

I’ll close by saying that, much like the last time I embarked on a job hunt, I’m not in a huge rush to find something; I’d rather start a great job a couple months from now than start an OK job in a couple weeks. There is a good chance that too much funemployment free time will leave me bored, though, so I’m also open to short contract gigs to give me something to do.

Finally: next week I hope to have another interesting announcement, so watch this space.