Code as a closet
Alice: How have things been at your programming job?
Alice: How so?
Bob: Well, imagine that you had this weird job where you had to go into a closet and put together outfits for someone.
Alice: Hm, ok.
Bob: Imagine that this closet hand thousands and thousands of different shirts, shorts, pants, socks, hats, etc. And you'd be given a request from your boss to pick out a very specific outfit. Eg. the yellow shirt with the pink polka dots paired with the teal pants, metalic sombrero, and brown socks.
Alice: Ok. So basically, a request for an outfit comes in and my job is to go into this enormous closet and get the outfit?
Alice: Ok, I'm with you so far.
Bob: Now imagine that the closet is a complete mess. Everything is just carelessly thrown around.
Alice: That sounds terrible. Why would I do this job again?
Bob: They pay you six figures.
Alice: Ok, I guess.
Bob: Anyway, that's how I feel a lot of the time.
Alice: I think I understand the analogy. You're given a programming task, and it's hard to do the task because the code is disorganized?
Alice: So why don't you just clean it up as you go? Like, using the analogy, next time you're in the sock drawer, instead of just taking the socks out, take some time to organize that drawer so that next time you're there, it'll be easier.
Bob: Well, sometimes you can, but there are various reasons why I often can't. The biggest one is probably a lack of time. They have this big backlog of outfits that need to be picked out. It's really important that my boss gets all of these outfits very soon. And cleaning up drawers is a non-trivial task. It takes time. I could do it if they wanted me to, but they'd prefer me to get them the outfits in the backlog as quickly as possible.
Alice: Wait, that doesn't make sense. I mean, maybe it does if these next couple of outfits in the backlog are super essential, but in the long run it'll be faster if you just clean out the closet.
Bob: Exactly! Maybe it takes three months to clean out the closet. But once I clean it up, I'll be able to pick out outfits so much faster! Maybe it moves me from two outfits a day to five outfits a day. In the long run, the investment will pay for itself.
Alice: Yeah, for sure. So why don't you just kinda go off by yourself and do it? Maybe put in extra hours if you have to. In the long run it'll make your life easier.
Bob: I'm not sure how true that is. Maybe this analogy is breaking down a bit. In reality, I'm working in a codebase with dozens and dozens of other people. If I clean out a corner of this "closet", the next person to work in that corner will be grateful, but chances are I personally will be working in a different corner, and won't reap the benefits.
Alice: Well won't your coworkers realize this and promote you?
Bob: Not really. The people who do the promotions are upper management. The same people who put in requests for outfits. They don't really have visibility into how the gears turn. They only have visibility into how many outfits each person is successfully churning out.
Alice: Hm, sounds like that is a really misleading way to evaluate people.
Bob: Yeah. And what makes matters worse, they also kinda judge you on how nice your outfits are.
Alice: Huh? I thought they were the ones who tell you what outfits to pick out? Like that one you mentioned earlier with the pink polka dots, it sounded kinda ugly to me but if that's your task are you supposed to tell them it's ugly?
Bob: No, not really. Some obvious things you can point out, but for the most part I'm just supposed to do what they tell me. They're the fashion people, I'm the operations person.
Alice: So then how can they judge you on fashion?
Bob: I think it's just human nature. Like if I am continuously churning out beautiful outfits, even if I'm not part of the fashion, it just kinda feels like I'm doing a good job, y'know?
Alice: Yeah, I see what you mean. It reminds me of the halo effect.
Bob: Yeah, that's a good point. I agree.
Alice: So maybe it'd be a good idea for you to be a little opinionated about the outputs they give you?
Bob: It's complicated. The fashion people don't really see me as someone who understands fashion. Sometimes they're open to feedback, but for the most part they just want me to get their vision out there. Plus, fashion is another thing that takes time to formulate. Time that I don't have.
Alice: I see. That's quite a pickle you've got yourself into. I'm not really seeing a way out. Other than, I guess, well, actually leaving the company.
Bob: Unfortunately, that doesn't really work.
Alice: Why not?
Bob: Well, for the most part, all companies operate like this.
Alice: Ugh, that's so frustrating.
Bob: Tell me about it.
Alice: Well how difficult is it to find the ones that operate the right way?
Bob: I don't know. It's kinda hard to say. You could go to their websites and look at the careers pages and stuff, but they all say the same thing. No one actually comes out and says, "we don't give a shit about keeping our closet organized". They all say they like to be organized. But talk is cheap. And then the interview process doesn't really help much either. It's the same problem of talk being cheap. Plus the whole thing only lasts a few hours. You kinda have to actually work at the company to find out.
Alice: Hm. Are there any companies where there does happen to be some sort of strong signal? All it takes is one!
Bob: That is true. And yes, there are some I have in mind. I'm not 100% sure, but I do get a good vibe from them. The problem is that it's not easy to get a job there.
Alice: Yeah, that makes sense. I'm sure those jobs are in high demand.
Bob: Not quite as high as you'd expect, but yeah, they're not easy to get. The whole hiring process is a separate mess itself.
Alice: Don't tell me. It's a review site!
Bob: I was thinking more along the lines of what it's like having to find a doctor, but close enough!
If you have any thoughts, I'd love to discuss them over email: email@example.com.