I've been thinking quite a bit about a particular tweet from Safia Abdalla:
A perhaps unpopular opinion (and a little ironic coming from me).— Safia Abdalla (@captainsafia) January 13, 2018
You don’t have to write blog posts, contribute to open source, give technical talks, or anything else to be a capable and great engineer.
You can leave your code at the office and that’s totally fine.
This particular position is near and dear to my heart, though I also recognize the irony. One of the things I've told potential employers ever since I was fired for refusing to work more is that I don't do overtime. At the very least, not on a regular basis. I will do occasional "hell weeks" where it is absolutely critical we get a particular change deployed or a bug fixed, but barring those I will show up, kick ass, and go home.
Ms. Abdalla's tweet goes a step further than that, and because of it I'm suddenly seeing my own thought process in a new light. See, I opted in to this mindset (show up, kick ass, go home) largely in order to protect my own sanity. If I don't set clear boundaries as to when it's OK to think about work problems, I'll think about them all the time, and that's an efficient way to become overwhelmed with all the things I haven't done yet, all those problems I haven't yet solved. I'm a distracted developer and the act of establishing these boundaries helps me rein in my impulsive thoughts.
The problem is that we never run out of problems. For a puzzle-hungry brain like mine, programming is so full of not-yet-solved problems that a mind like mine can find entertainment and solutions to their hearts content and still not feel like they've truly accomplished anything. I solved a problem! Cool! But so what? It can be maddening, frustrating, disheartening. It can be burnout-causing.
Due to my runaway brain, I've had to set boundaries. I've had to leave work at work. I've had to become a 9 to 5 developer.
I know there are a lot of developers out there inflicted with Impostor Syndrome. You probably have had this at some point; it's the feeling that you're a phony, a person who truly doesn't know what s/he is doing and is just faking it to get by. The issue for me is that if I don't set these boundaries, if I allow myself to continue working and exploring and solving problems at all hours, my own Impostor Syndrome only gets worse. I want to know everything and I cannot, and because I cannot I start to think less of myself.
So, I've had to set boundaries. Boundaries like "work stays at work" and "take breaks every so often". Boundaries that help keep my sanity intact and my distraction at bay. For the longest time I thought that made me less of a developer. I wasn't able to do 16-hour coding sessions, because by the end of it I'd be incapable of doing anything else and I have three kids and a wife at home who need my attention and love. Face it, our code will never love us back. But still, I wanted to do better, to be a better coder, like those I looked up to, and I hated myself for not being able to do it.
Twitter and other social media are the worst things when it comes to having this problem. People who are clearly brilliant programmers, people who I admire for their work, would proudly declare that they'd just spent all day coding and were feeling really accomplished and I could only sit back and despair about why I couldn't do that. Why can't I put that kind of effort in? Stupid brain! Why won't you let me be as productive as they are?! I can be just as good as they are, if only you'd get outta my way!
It took me a long time to come to grips with the fact that my brain simply does not work that way. I will never be able to do 16-hour coding sessions. I will never be able to be up all night and still get things done. I will never be able to be as "productive" as those people on Twitter say they are. I just cannot do it. And, as I've come to realize after nearly 11 years as a professional software developer, that's OK!
It's OK, because for eight hours a day I can still kick ass. I can still get my work done and do a good job on it. I can still lead my team efficiently. I can still tackle interesting problems with fun solutions. I just have to do it within boundaries. The trick is realizing that this doesn't make me any less than those Twitter people; it merely makes me different.
I will bet a lot of money that there are a "silent majority" of programmers out there who merely want to do their work and go home. These people do not sit up at night trying to mentally puzzle out a problem that's been bugging them for weeks. These people do not write blogs, contribute to open source projects, or give technical talks, or indeed are generally interested in programming outside the capacity of their job. These people are sometimes derogatorily termed "9 to 5 developers". I am here to tell these people that even though we are 9 to 5 developers, that does not make us worse developers.
If you are a 9 to 5 developer, it doesn't make you less of a programmer, it makes you better at time management.
I'm not here to tell you which way is better. I can only tell you what works for me, and that is that I am a 9 to 5 developer. I want to do my work, do it well, and then go home and do other things (like write this blog). I need to do it this way to keep my sanity. And you can too, even if your brain doesn't work like mine! You do not have to spend eons programming to be a good developer. You just have to think deeply about problems, and want to do a good job.
Guess what? If you are here reading this, you already are doing a good job. Now friggin go home already! The code will be there tomorrow, I promise.