My senior year in high school, I was taking linear algebra and multivariable calculus – the most advanced math class that my school offered – and I had a teacher who would ask me all the easy questions. I usually got them wrong.
I could tell he was asking me the easy questions, that he didn’t think I was very smart, and I felt nervous. So, I’d fuck up. Fortunately, because it was my class senior year, my grades didn’t matter. I still remember the look of surprise on his face when I told him I’d gotten into MIT, a sort of polite incredulity. But, I can remember that feeling – that feeling of just *knowing* you can do something, but being unable to execute on it.
I’ve been getting it recently with my newest client. It’s a remote gig, and they have a slightly unique system setup – nothing over the top, but something I’d need a little help to getting going. Unfortunately, I never really got setup correctly, and I’m only on it like 10/15 hours a week, so I don’t really have the time to fully figure it out. So, I ask a lot of questions. Anyway, I just feel – dumb – and it gets to me. It’s a Ruby on Rails project, and I have years of experience with Rails. Like, 6 years of experience. And, I find myself just fucking up things I already know.
My other client is working on a Python project. I didn’t know Python at all before starting the project, it was a totally new language and a totally new framework. But the clients *trusted* me, and when they trusted me, I trusted myself. Somehow I could just get everything working. When something doesn’t work with this client, they’ll email me and say “we couldn’t get this going, so we’re just going to wait for you to come in and fix it.” Sometimes, when they want to work on something they’re unsure about, they’ll say “can you just sit with me while I work through this, in case I get it wrong?” Can I? I’d be happy to!
When people treat me as competent, I find myself becoming competent. When people don’t trust me, I lose trust in myself.
This isn’t a reflection on my new client. I’ve never worked on a remote job before, so it’s natural that I would feel a little bit shakier about it, but it is a reflection on how my awareness of other people’s perception of my shapes my own behavior. With my old client, I know they trust me, so I take risks. If I tell them I’ve pulled down staging for 2 days because something went wrong, they’ll say “oh wow, that must have been a really difficult problem.” With my new client, if I pull down staging for two days, they’ll say “oh my god, this new hire is an idiot.” Because of that, I’m much quicker to ask for help when anything goes wrong with my new client, and I haven’t gained the confidence of being able to solve problems myself when I’m working on their system.
Anyway, this trust – this given trust – I think is a major problem for women and racial minorities. Women, for instance, are generally rated as less confident in male dominated fields (and, interestingly enough, men tend to be rated as less competent in female dominated fields like nursing.) What that means, is it takes people a little longer to trust women, and they don’t build up this competence as quickly, if at all. I can only assume the same thing happens to racial minorities.
Actually, I remember one time one of my black coworkers made a fairly large mistake which ended up deleting about weeks worth everyone’s of work. All my white coworkers were really nice about it, “it could have been any of us,” kind of thing, but I always sort of wondered if that was an ignorant approach. Part of getting the easy questions is that everyone is nice when you fuck up because they sort of expect you to fuck up. Like, his mistake in no way got expelled from his system – he was forced to internalize it. If it had been two white dudes, I’m *sure* some shit would have flown. At least a “dude, that was fucking dumb” would have been said.
What I think actually should have happened, is our CTO should have taken him aside and said “Drew, that was a pretty big fuckup. I know you’re better than this, so why did it happen? Why didn’t you ask for help? We’re trusting you with the most important parts of our website, and no one person can know everything, so I need to know my team members will ask for assistance when they are in an area out of their expertise.”
Children don’t get in trouble for their mistakes, adults do. Competent people do, it’s part of being competent – when you fuck up, it matters. I think when someone makes a mistake, you should either fire them, or discipline them *while reassuring them of your trust in them*. Never hire someone you don’t trust, get rid of them. It’s bad for you, it’s bad for them.
At the end of the day, that is really my main worry with this client, “are they so desperate for developers, they’re going to keep me around even though they don’t trust me?” Women and minorities think a similar thing, “are they just keeping me around for diversity reasons?” These questions are no good.
So, what to do? I was talking to my friend, and he (no joke) suggested reading lean in. To try to learn techniques to help women seem more credible in the workplace, and that’s fine, but I’ve been down this path before. I’m sick of looking outside myself for confidence.
Right now, I have one client that thinks I’m awesome, and a waiting list of about 3 more clients. I’m done trying to prove my worth with gimmicks like not sitting on my feat when I code. My contract is up with my first client, so I’ll probably have an honesty moment – why not? Either I’ll get my shit fixed, or my contract won’t get renewed, and I’ll get to try again with a new client.
Firing or disciplining people for making mistakes while operating a complex system tends to screw up your post mortem process. People will fear the consequences if harmful actions are attributed to them, so they will spend energy covering up or deflecting blame rather than accurately discovering the narrative behind the outage.
Operator error is inevitable in system management. A well-designed system should be robust to errors. When operator error occurs, you blame the system for its weakness, not the operator for doing the inevitable, and the proper response is to fix the system so that it is no longer vulnerable.
Firing, and lesser punishments, should be based on consistent patterns of low performance or bad behavior, not isolated mistakes.
But maybe we’re using the word “discipline” in different senses. Having a frank talk with someone about why they made a mistake doesn’t seem like “discipline” in the sense of “punishment”. It has no negative career consequences and is more a way of helping your employee develop skills than anything else.
Yeah, you’re right, I guess punishment for the sake of punishment doesn’t really work. The absolute ideal would be if the person who made the mistake can be the one to fix their mistake, but sometimes it’s not possible. What often happens with mistakes is someone “more experienced” will go in and clean up the mess, but I think this is very dis-empowering for the person who made the mistake. I think it happens disproportionately to women and minorities and other types of people who they want around for diversity reasons. Many women programmers are seen as “needing” more help than male programmers, but I think part of that is male programmers *like* working with female programers and will “cover” for them so they don’t get in trouble.
But, then these female programmers won’t learn how to do tasks by themselves. At some point in my learning cycle, I had to make the personal decision to refuse help from other engineers because in their effort to help me succeed, they were actually getting in my way.
I guess what I was really trying to get at, is having women/minorities/people we’re trying to get more of in tech take responsibility for their work – and, sometimes taking responsibility is linked to taking the heat for mistakes. It’s a delicate balance though, and I’m not sure I know the exact right solution.