Category Archives: Work

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 .

Questions for prospective employers

So I’m starting interviewing this coming week, which means I have to distil my long list of questions to ask employers into something more manageable. The following is very much a work in progress and I’ve not tested it in the wild yet, but I think it roughly matches what I’m going to want to use. If I change what I actually use then I’ll update it appropriately.

First off, how to raise these: I was originally thinking of mentioning right at the beginning of the interview that this is going to happen. Something along the lines of:

Hey. Up front warning: I have a long list of questions I need to ask your company in order to determine if this is somewhere where I’d like to work. It’ll probably take about half an hour to an hour, and I’ll need at least one developer and one non-developer present. I’d sortof expect this to happen at the end when we get to the “any questions?” part, but really we can do this at any point in the interview you like – we can even schedule a separate interview for it afterwards if you don’t want to take up this much time on it today – but I really will need to do this.

My friend Daniel Royde pointed out in the comments that this is something that I should really be mentioning before I arrive for the interview, so they can actually incorporate this into their schedule. He is 100% right about this.

The one non-developer and one developer thing is very important. I want to see how different their answers are and how they interact.

The actual questions I’m planning to ask are as follows:

  1. What do you personally like about working here? What do you dislike?
  2. What’s your office culture like? Can you describe the typical sense of humour?
  3. What’s your racial and gender diversity like in the company? Does this vary from team to team? If it’s not good, do you know why and is it something you’re trying to change? How?
  4. What is your company doing to have a positive impact on society? (question suggested by my friend Alex White)
  5. What’s your staff turnover rate like? Is it different from team to team? If it’s high, do you know why people typically leave and is it something you’re trying to change? (question suggested by Jamie MacIver, my brother)
  6. How do you deal with failure? When something goes wrong, what do you do to make sure it doesn’t happen again? (question suggested by my friend Kat Matfield)
  7. Who in your company is completely indispensable? Tell me about them (question suggested by my friend Elisabeth)
  8. How much technical debt do you have? What are you doing to address it? Is it working?
  9. Can you tell me about a change you’ve made in your development process recently? What prompted it? (question suggested by Michael Chermside)
  10. How do you decide and manage what to work on next?
  11. Suppose it is decided that a feature is needed and should be part of the current work priorities. What happens between now and the point where that feature hits production?
  12. What’s your business model like? Is it working? How would you know if it wasn’t working, and how would you go about fixing it?

I feel like this is a bit too long, but there really aren’t any questions in there I’d be willing to take out. If anything there are questions I’d like to put in that I’ve not!

UPDATE: I’ve decided the bit that follows is a bad idea. Real interviews are too chaotic for voice recording to be practical, and some informal polling suggests that people are bothered enough by the idea that it’s not worth the headache. Left in for posterity.

The other thing I am currently considering is how to handle note taking. Specifically, I’d like to record these question and answer sessions. I’m considering offering this with a speech something along the lines of this:

So I need to take notes on this bit for later review. If I do that by writing, this will slow everything down and it’ll be a pain for all of us. Would you object terribly if I record this bit? I promise never to publish any part of this recording, or even a transcript of it, and at the end I’ll give you the option to delete it before I leave. If you take that option I’ll ask for a few minutes to write down some notes and reference the recording before you do, but will be completely happy to comply.

I’m also thinking of mentioning at the beginning of the interview that I’m going to have a long set of questions to ask them and that I’m happy to do them either at the end of the interview or at whatever other point in it they’ll find convenient.

What do you think? Does this sound like a terrible idea?

This entry was posted in Hiring, life, programming, Work on by .