A thread on Lobsters got me thinking…what would I want out of an ideal emplyoment situation?
Since I am cheerfully funemployed as of August, I figure I have the time to delve into this a bit. This is all dreaming big; I am under no illusion that any place like this actually exists. It’s naive, but after a decade in industry I think it might be nice to take a break from pragmatism. And yeah, some of these are not the way I live my life currently for one reason or another.
The sort of work I’d like to be doing would fall into:
The topics of work I’d like to be involved with would be:
Things I specifically don’t want to work on due to moral issues:
I’d like to work on a team with a wide range of experience, both inside and outside of software as it relates to work.
It’s important to have folks earlier in their careers who are excited and don’t understand how much bullshit there is; it is equally important to have more experienced folks to reign in the worst excesses of that. It’s a balance.
I’d like to work with folks that have experience in problem-solving, and who have multiple languages/skills to draw on for solving problems.
My ideal workplace would be remote and distributed, which helps encourage knowledge capture and also diversity of opinion and background; location shouldn’t be a factor in compensation.
I want to work somewhere where everybody is on the same page about why we’re there: to make money. If we didn’t care about making money, we’d be doing something else. I’ve seen many places where a lot of internal friction exists because some people are idealists and some people are there to pay rent. One of the best jobs I ever had was at a place where we sold cardboard boxes; nobody was under the illusion that our job was to do anything but make cardboard boxes and get paid.
I’d like to work in a place without identity-based backchannels–no “here’s the good old boys backchannel, here’s the Texans backchannel”, etc. My experience has been that backchannels form hidden power structures that are robust against the normal organizational feedback mechanisms and inevitably become toxic.
I want to work somewhere were the business and engineering folks are able to directly explain how the work they are doing contributes to the company’s bottom line. Any work that doesn’t have a dollar sign attached to it shouldn’t be happening–no ego projects, no stupid spikes, no bullshit.
This perfect company would have a culture of blunt honesty. If something isn’t working, it gets pointed out. If something is too complicated or reductive, it gets called out.This would exist regardless between power differences–I want an intern to be able to tell the CEO during all-hands that those sales numbers don’t make sense with the runway we have, and I want the CTO to be able to tell an engineer “hey, we specifically said we weren’t gonna do this and you did it and it broke prod, what the hell?”.
Similarly, I would like to work at a place with a culture without fear. I want to work somewhere where people aren’t having tantrums in public channels about the end of the world, or about wringing their hands about how a deploy might go sideways, or refusing to try something because it might go wrong, or declining to speak up because they are worried about repercussions. It’s expected that a person will be afraid to one degree or another–show me a good engineer who isn’t! But, I have no desire to work with people who are so consumed with fear they will not do their jobs.
I want to work at a place where everybody is expected to have different quirks and issues but also to be fundamentally non-malicious to each other. A lot of problems go away when you can say “okay, I know Jane doesn’t actually want to murder children, she’s just venting about pager duty at 0300.” I want to work with kind people that are robust and who can afford to be because nobody is actually a bad actor.
I want to work at a place where everybody has at least a passing knowledge of workplace politics, and isn’t blind to how their actions impact others. In the large, I don’t want a place where sales puts engineering in crunch mode, or where engineering starves the money funnel by screwing around instead of shipping features. In the small, I don’t want a place where people are oblivious to how their reviews of coworkers will impact that coworker’s career trajectory.
I want a culture where everybody in the company views themselves as responsible for success of the business, and is empowered to act that way.
I want a company culture where people recognize that employment is a temporary arrangement of mutual arbitrage and so don’t hold grudges when people come and go as circumstances change.
I want a culture of engineering where people pay attention to how their work impacts other people at the company and where if somebody breaks other developers’ workflows they immediately back it out, apologize, and try to fix it–and if they can’t , they maybe abandon it.
I want an engineering culture where people celebrate all of the work, large and small, and attach praise to the names of the people that worked on it. I want to see leaders promote their teams and call attention to specific contributors, because their job as leaders is to help career growth.
Conversely, I want a culture where failures are shared, and where nobody individually is singled out in public. Blameless postmortems go a long way towards the early idea of fearlessness.
I want an engineering team where we have clean liminial spaces for the different modes of maintenance, development, and prototyping. Feedback and resources would be appropriate to whatever mode a project is in, and expectations set accordingly. I’ve seen critical maintenance work starved to death, and hopeful spikes smothered in policy and procedure.
Decisions would be shoved down to the lowest level where they could be made, with continual investment in a shared engineering philosophy to make those decisions unsurprising to others.
I want a culture that knows on any given day where its innovation tokens are and how many it has to spend.
I’d like an engineering culture where everybody is expected to lead teams at different levels and people are rotated through to make sure they have that experience. This is also really helpful in preventing people from failing to understand the pressures their leaders are operating under.
I want a culture that spends like 5-10% of its time training on relevant technology, and at least 10% of its time in unregulated development. One of the most successful projects of my career so far hinged on the ability to get unfettered Friday afternoons to try and fix things without being sucked into process.
I want a culture where everybody is expected to be able to fill in for anybody else, and where people can’t throw up their hands because they work in a different part of the stack. This one in particular has caused me great vexation at companies large enough to support such attitudes.
I want an engineering culture where everybody has empathy with their teammates and is trying to find ways of helping them out, or at least recognizing that the teammate is just trying to get their stuff done too.
I want an engineering culture where people criticize approaches and ideas fairly and thoroughly but who then shut up and help when it is time to get the work done or when the time for discussion has passed.
I want an engineering culture that is always striving to be better and get more done with less effort.
I’d like a place that covers health insurance.
I’d like a place that offers meaningful equity–I don’t want new computer money when some bozo is getting yacht money, if I’ve been propping their product. I don’t want to work at a place where the employees aren’t invested in the bottom-line because they’re wage slaves.
I’d like to retain ownership of IP developed outside of work hours, and a clear demarcation of when that is.
I’d like a place that has no non-compete without some significant compensation for my time–pay me if you want me to do the job of not competing with you.
I’d like a place that officially supports side ventures, and would even exchange help (billing, lawyering, whatever) in exchange for some stake in my project.
I want a place that gives full and public credits to anybody who helped ship a product, and which doesn’t speak ill of past employees.
It’s a stretch goal, but I’d love to see compensation pegged directly to some useful portion of value created. If I say the company a million dollars, I should see an actionable chunk of that! People will be amazed at how clever folks can be if the reward for doing so is big bucks.
Since it’s sort of related, I’d also like this company to be open to us talking about our work as much as we want. Nearly every company benefits from what we as engineers have learned off-the-record, and it’s just such a farce that only hurts engineers to have us act like we’ve memoryholed our work at a place. If we could talk freely, we could all get better faster and develop the state-of-the-art much more easily.
Looking back on it, this is a list both far shorter and far longer than what I think I meant to say. I think everybody should draw up a list like this, so you at least have an idea of what you care about and what you are compromising on when you decide to sign on somewhere.
I definitely left off some of the more controversial things for now– Liberté, égalité, fraternité !–but I covered a lot of other stuff I think is important.
It’s kinda amazing to me in retrospect just how many variables go into evaluating a company’s fit for your career and this was a good reminder.