Category Archives: Work

Selection pressures on company behaviour

Epistemic status: Speculative. Almost certainly not an idea that is original to me, but it’s hard to google for this without being swamped in people who don’t actually understand what evolution is.

Evolution is not only real, it’s everywhere. The set of criteria required for an evolutionary selection process is so mild that it’s almost weird to find things where it isn’t a factor (though it may not be the dominant one).

In order to be subject to evolution, roughly all you need is the following:

  1. Heritability – the ability to reproduce and create new things that are in some way “based” on the original and share its traits.
  2. Mutation – a certain degree of random changes to traits as you reproduce.
  3. Selection – reproductive success must be influenced by inherited traits, usually due to some sort of interaction with the environment (e.g. “survival of the fittest”, but also things like traits that make you more able to attract mates)

This absolutely includes evolution in the classical, biological, sense. A while back Dawkins proposed memes (in the original sense that just means “ideas that are subject to selection pressure” rather than pictures of cats with words on them. There’s also a fairly significant evolutionary process in how language changes), but really it’s just about everything. Programming languages evolve, natural languages evolve, genres of literature evolve, etc.

Often there is some mix of evolution and design going on (evolution is not design!) but the evolution is still there, the design is just a major part of the inheritance and mutation processes.

Note that evolve doesn’t mean “improve”, it just means “adapt to selection pressures”, and often that adaptation again isn’t one that we’d particularly think of as a good thing. As Dawkins (again. Sorry. In my defence this was all from before his evolution transformation into his current profile as chief new atheist ranter) pointed out in The Selfish Gene, evolution of our genetics doesn’t select in any way for our well-being, it just does whatever makes the numbers go up (which is why you get things like genes that work great when you have one of them and kill you when you have two. Statistically it’s a great deal!)

One thing I’ve been noticing for a while is that company cultures are absolutely in the camp of things that are subject to evolutionary pressures. A company culture:

  1. Reproduces as people leave it and join or form other companies, or as people outside the company are exposed to ideas about how the company works.
  2. Mutates, as people change their opinions over time through their natural growth and change and through exposure to other companies.
  3. Is selected for, because company culture is a large part of determining company success.

I’ve previously thought of this as a mostly neutral thing with some interesting implications. e.g. it probably tends to mean that over time we evolve companies which are more or less rational economic actors even if they’re not made out of rational economic actors. Not that I necessarily think that’s a good thing, but it’s at least a useful thing for reasoning about company behaviour.

But I realised this morning a rather unfortunate problem: Although having highly profitable companies which treat their employees great and make economically rational decisions is one perfectly viable reproductive strategy in this model (where in that case reproduction tends to come more from people trying to emulate you than from people leaving, although there tends to be enough turnover in even great companies that it’s both), there is another extremely adaptive model.

That model is to basically just be incredibly dysfunctional and haemorrhage employees as a result.

This might not be good for the survival of the company, but it’s not the company that we’re considering here, it’s the population of company cultures. If the company goes under and all its employees go off and form five different companies that look exactly the same as their parent company, that’s evolutionarily speaking a great success.

The problem is that people tend to reproduce the cultures they’re used to. Even when they realise that those cultures are bad, they will typically only pick up on a few of the ways in which they were bad, and will tend to just carry the rest of them along without ever really noticing.

As a result, dysfunctional company cultures are fairly actively selected for, and will tend to thrive even as they destroy the companies they live in.

This is perhaps analogous to r/K selection theory – some animals reproduce by having a small number of offspring that they invest a lot of effort in to ensure they thrive (K-selection, roughly analogous to well functioning company cultures that reproduce slowly but tend to promote the survival of the companies that have them) and those that produce many offspring, most of whom will die but enough of whom will survive to adulthood to continue on to another generation (r-selection, roughly analogous to dysfunctional company cultures that destroy their companies but are passed on when the employees leave for other companies). The analogy isn’t perfect because the mechanism of “gene” transmission is so different, but it’s at least suggestive.

Which one is more adaptive varies from niche to niche, and there are plenty of niches, so it’s unlikely that either type of culture or organism is ever going to out-compete the other and replace it, but anecdotally it certainly seems like we have enough niches for the dysfunctional company cultures to thrive in right now.

So that’s the problem. What’s the solution?

Good question. Unfortunately I’m not sure of the answer. Culture is hard.

But I do think that whatever the solution is, it’s going to have to work with the evolutionary dynamic, not against it – evolution is going to happen regardless of whether we want it to or not, but we can try to shape it so that it selects for things we want.

So here are some ideas for how we can try to guide each of the three aspects of that evolution:

  1. To control how dysfunctional cultures reproduce, we can can reduce how much hiring we do along friendship and network lines – when a company fails and people leave, they tend to bring their friends at that company along with them. This is a perfectly natural thing to do, but tends to perpetuate the culture they are used to. (That being said, I don’t think it’s a good idea to actively avoid hiring people from dysfunctional companies – that will just send them to companies that will happily reproduce their culture. Also it punishes individuals unfairly for things that are not their fault. Just… maybe treat their opinions on how things should be done with a grain of salt.)
  2. To control how culture mutates, we can be more actively involved in designing our cultures for the traits we want – culture isn’t just a thing that happens, it’s a thing we create. If we let it emerge purely organically, we will tend to reproduce what has come before. If we design it, and in particular design it to avoid things we know are dysfunctional, the mutation will more actively push us in the directions we want.
  3. To control how dysfunction is selected for, we as individuals can more actively avoid working for dysfunctional companies – investigate the culture before we join, and leave sooner rather than later once we realise there are major problems we can’t fix. Where possible, if we know a company has actively bad culture we should warn people off, though whisper networks and doing this in public have problems that I don’t entirely know how to solve.

I don’t necessarily think those ideas are either necessary or sufficient, but I do think they will probably help. Evolution is hard to manage, and tends to do things we don’t expect, but a certain amount of selective breeding is possible, and I think we need to start thinking about how to do that for the cultures we create.

Of course, when we’re doing that, we need to be careful about going too far in the other direction.

(Thanks to Jess for the conversation that lead to me thinking about this stuff again and lead to the realisation that sparked this post, and Kelsey for acting as my consulting biologist)

This entry was posted in Work on by .

A time and a place for work

For an Inclusive Culture, Try Working Less is currently doing the rounds. It makes the argument that having a rigid 8:30-5:00 working day creates a more diverse environment by including people who a so called “more flexible” set of working hours would not.

I think he’s probably right. Certainly I’ve seen a lot of implicit judgement towards people who had leave early to e.g. pick up the kids from school (or just because they wanted to have an evening to themselves), even when they arrived at work early (which was of course invisible to the people who rocked in at 11).

But at the same time I will never work at a company which enforces those hours. It’s simply not going to happen, even though I fully support the right of other people to work those hours if that’s what works best for them.

I have a low grade sleeping disorder. Many people have far worse experiences than me, but mine are still bad enough that I’m going to take a hard line that if you’re going to make my sleeping experience worse then I’m not going to work for you. Forcing me to conform to your schedule in the mornings definitely counts as making my sleeping experience worse.

What’s interesting here is that I don’t think I’m unusual in this.

I’ve been noticing for a while that tech seems to have a disproportionately high number of people with sleeping disorders in it – I definitely know people with sleep apnea at a higher rate than the background rate would suggest likely, and it often seems like most of the people I know in tech have some sort of problem with sleep.

Some of this is probably caused by tech – high caffeine consumption, sitting all day, lots of blue light, and a cultural encouragement for obsession are all things that can cause sleep problems. But enough of it (including mine) has a physical root cause that it’s definitely not all caused by tech.

My working theory is simply that flexible hours mean that a job works a lot better for people with sleeping disorders, so people with sleeping disorders will tend to gravitate towards jobs with flexible hours. For better or for worse, that currently includes tech.

I don’t have data to prove that sleep disorders are atypically common in tech. It sure looks like they are, but that could just be selection bias at work.

But regardless of whether it’s more common than usual, it’s certainly common enough that I and a lot of people I know are in this situation, and any work environment which demands we turn up to work at 8:30 is going to be throwing us under a bus.

It’s not just people with sleeping disorders either, there’s a broader ableism issue. Have you ever tried taking a wheelchair on public transport in rush hour? I haven’t, but I’ve helped take someone on the London underground not at rush hour and even that wasn’t much fun. Demanding people all arrive at the same time is a great way to seriously disadvantage people who need a wheelchair (I imagine it’s not great for people with any other sort of mobility issue either).

Sure, you could make exceptions for all of us who have sufficiently convincing reasons. That would be better, but it means we now need to be singled out as special cases, which inevitably makes other people annoyed about our special treatment – I have seen a huge amount of ill will towards developers from coworkers whose jobs require them to be in the office during a particular time range, and I can only imagine it would be worse from people you work more closely with.

And what about those for whom it doesn’t really stretch as far as a disorder or a disability, but is merely a really strong preference? e.g. even if I didn’t have sleep problems (here’s hoping for that future) I really hate crowds and as a result I would very strongly prefer not to travel during rush hour even if I’m awake. I’m not saying I can’t take a rush hour tube, but I’m still going to preferentially select for companies that give me the ability to come in an hour later, and I’m going to really unhappy if I don’t have that option.

People like me in this regard are sufficiently common in tech now that it’s really unlikely that you’ll ever get a situation where an early start is the norm – we’ll just avoid those companies in preference for ones that don’t require us to do something really unpleasant and harmful to our mental and physical well-being, and the result will be a tech industry divided into two distinct groups of companies with a relatively small intersection moving between them. That’s not a great situation.

Fundamentally the problem is that there is no one-size fits all solution. No single set of office hours is going to work for everyone, so what we need is a diversity of options where people can work whichever hours they want or need.

But that’s what we have now and it doesn’t actually work.  Everything I’ve seen suggests that flexible working hours doesn’t really mean flexible, you just converge on a new cultural norm of working later – people tend to gradually conform to a later (and longer) schedule, because when you leave work too early you feel subtly or not-so-subtly judged by your coworkers (whether or not you are being judged, but you usually are), which creates a strong pressure to conform or leave.

Even if the original article about the diversity implications is wrong (I do not think it is, but would like to see data before I believe it wholeheartedly) and this isn’t excluding women, it still means we’re creating an environment that is just as bad for early birds as an 8:30 start would be for night owls and others with sleep problems.

So what’s the solution?

Well, I think it’s probably remote work. By separating out the need to physically be there, and allowing a lot of work to be asynchronous, you remove a lot of the implied social pressure to conform to a particular set of hours.

And as a bonus, by opening yourself up to remote work you potentially open up a whole bunch of other opportunities for diversity – even without rush hour, commuting in a wheel chair is hard, and for other disabilities (e.g. people who are immunocompromised) it might not be safe for them to come into the office at all, but they might still be perfectly able to work.

A lot of diversity problems (I’d guess most diversity problems that don’t stem from up front flat out bigotry? I don’t know) come from trying to pretend we can fit everyone into a single mould, and thus silently excluding all the people who can’t fit into that mould. Rigid working hours don’t fix that, they just choose a different shaped mould. I’d rather break that mould altogether instead.

Of course, remote work is itself another mould to try to fit everyone into. It doesn’t work for everyone (though some people who think it doesn’t work for them can learn to love it – I did), but you can fix that to a large extent by e.g. renting them desks in a co-working space or having an office people can come into if they want. You can also probably get a lot of the benefits by allowing partial remote work – e.g. I personally would be mostly happy if I could do a couple of hours of work in the morning and then come in. Other peoples’ needs will differ, and that definitely won’t be enough for everyone, but even small accommodations help to include more people.

So it’s not perfect, and it certainly won’t fix everything, but nothing is and nothing will. I still suspect that starting from the principle that presence isn’t required and then fixing the problems that causes is going to be a much easier path to diversity than trying to force everyone to be in the same place at the same time and then trying to fix all the problems that causes.

This entry was posted in Work on by .

My time: Now available to the highest bidder

This is an experiment.

Would you like me to do some work for you? Specifically, one day worth of work?

Well, that option is of course always open to you and you can email me to talk about it. But maybe you’ve been worried that I’m too busy, too expensive, etc. Or maybe you just haven’t got around to it.

So I’m going to try an experiment: I am auctioning off one work day of my time next month to the highest bidder. It can be for anything you like – Hypothesis, writing, having someone come in to take a look at your business and give you some pointers on your software development, or really anything else at all. This can be more or less whatever you want as long as it’s something I’m in principle willing to do for money (and if it’s paying me to do a concrete thing like write some software or an article rather than general consulting, I’m happy for this to include rights assignment).

Why am I doing this? The prompting thought was that I’m looking into ways to fill precisely one day of my time per month once I start doing my PhD, which will hopefully be in September – PhD stipends are a lot lower than developer salaries or day rates, so a top up would be nice, but I don’t want to do my PhD part time.

But once I thought about it I realised that it just seemed like a really fun experiment to try, so I figured I might as well try it now! Worst case scenario, we all learn something interesting and the cost of a day of my time.

Here are the rules:

  1. You are getting one day of work. If I think what you have asked for cannot be done in one day I will tell you up front, but if it takes longer than expected then I’m not going to continue working on it for free. I recommend picking things that either are intrinsically time bounded or can be stopped at any time and still be useful, but small projects that I’m confident can be done in a day are OK too.
  2. The auction will be a Vickrey auction. That is, the highest bidder wins the auction and pays the second highest bidder’s bid. That means that you will usually pay less than your bid (And also means that the game theoretically correct amount for you to bid is exactly the amount my time is worth to you).
  3. If there is only one bidder then that means they get a day of my work for free.
  4. The auction will run until midnight BST (UTC + 1) on April 30th. No bids made after that point will be counted.
  5. If there is a tie for top place then I will pick the one I most want to do among them (or flip a coin or something if I’m torn) and charge the full bid.
  6. If I judge a job to be illegal, unethical, or I just really don’t want to do it for any reason then I will remove it from the list and not count it for either the top or the second place bid. I will let you know if I do this if you would have been the first or second place bid and I don’t think you’re being deliberately abusive.
  7. I will publish both the winning bid and what they actually paid (and, if it is acceptable to the winner, who won) once the auction completes.
  8. The day of work must be redeemed at some point in May, after which I will send you an invoice. If we can’t come to a mutually acceptable time in May I will rerun the auction without your bid and offer the spot to the new winner and you won’t get charged anything.
  9. If the job cannot be done remotely I will also invoice you for travel (and, if necessary, accommodation) on top of the bid.

Note that yes you can bid ridiculously small amounts, or even zero, and if that’s the winning bid then I will honour it (though I will probably not repeat the experiment for very long if that happens). You can also bid ridiculously high amounts and hope that the next best bid isn’t ridiculous, but I don’t recommend it (and may query your willingness to pay before accepting…). The winning strategy really is to bid what you think my time is worth to you.

Interested? Just fill out this form! I will let you know if you win the bid, and we can then arrange dates accordingly.

If you’re still on the fence, here are some ideas for how a day of my time can be useful to you:

  1. I can write a short article (or story if you prefer!) about something I already know a reasonable amount about. Very few of my blog posts take more than a day of work.
  2. I can read a paper and discuss it with you and/or try to write a short precis and introduction to its ideas (whether this is feasible will vary based on the paper, but I can get a pretty good idea if it’s going to be with a brief skim).
  3. I can add tests using Hypothesis to a small Python project.
  4. If working with someone who knows that project well, I can add tests using Hypothesis to a larger Python project.
  5. I can come in to your company and answer peoples’ questions on a subject of your choosing, which will probably be Hypothesis, but could be Integer Linear Programming, Voting Theory, or general software development.
  6. I can come in to your company and take a look at your development practices and processes and offer you tips on how to improve them.
  7. I can come in to your company and help with improving your interviewing process.

Those are just some ideas though! The point is that I have a variety of expertise, a lot of which can be usefully applied in under a day if you pick a reasonably small project or just use me as a general consultant.

Note that if you do have any general desire to bring me in as a consultant you should put in a bid, because you will almost certainly get a very good deal on this auction compared to my normal rates.

This entry was posted in programming, Python, Work on by .

A freemium model for scheduling

As a software developer I like proposing algorithmic solutions to social problems.

As someone with an unhealthy addiction to startups, I like business models (actually I’m not sure that follows…).

As a Brit, I obviously fucking love queuing.

As a leftie, I think socialized healthcare is a fundamental human right and I love the NHS to bits.

So when tell you that this is a blog post about a queuing algorithm based business model inspired by a question of socialized healthcare, you can understand how it might be difficult to convey my excitement about this idea without, frankly, being a bit inappropriate.

It also works well with randomized algorithms, a pet love of mine, so there’s that too.

Best cup of tea ever by alittlething, on Flickr

For some added Britishness…

Continue reading

This entry was posted in rambling nonsense, Work, World domination on by .

What are developers bad at?

I’m currently trying to put together a post about different modes of thinking that I think developers are not very good at and traditionally leave to other roles to prop them up on, but I’m not having much luck. It occurred to me that a large part of the problem here was that I am, in fact, a developer so most of my perspective of this is from the inside looking out. I’d like to fix that.

As I’ve previously expressed I think having a good team who you can rely on to support you in areas you’re bad at is a wonderful thing, but I also think that relying on them too much and not meeting them half way will create unnecessary blockages and inefficiencies in your work flow – you’ll have to wait for someone else to do something you could have done in 5 minutes really, and so it will instead take several hours and may be indefinitely delayed.

When I’d previously written about this I was thinking in terms of different types of development, but it now occurs to me that exactly the same problem occurs when developers work with non-developers.

So, people who work closely with developers: What are we bad at that you’d like us to meet you half way on? What would it make your life easier if we all got a little bit better at? Can you offer concrete advice on how to do so?

This entry was posted in programming, Work on by .