I've been thinking about a perhaps less mainstream insight (a little sarcastic coming from me):
You don't have to write blog posts, contribute to open source, participate in technical conversations, or do anything else that helps to be a Things about big shot engineers.
If the code stays in the office, that's great.
January 13, 2018
Although I admit that this is a bit ironic, my heart can't help but resonate. One of the things I tell potential employers since I was fired for refusing to take on more work is that I don't work overtime. At least you can't work overtime regularly. It's okay to have the occasional "Hell Week" because I know it's absolutely critical to deploy a specific update or fix a bug, but when the crisis is over, I step away and go home.
Ms. Abdalla’s tweet went a step further, and because of that, I suddenly found that my thinking could open to a new dawn. It seems that a large part of the reason why I choose this way of life (leave away and go home when the time comes) is caused by reason. Without clear boundaries on when I think about problems at work, I’ll keep thinking, and then all the tasks I haven’t completed and the problems I haven’t solved will gradually become a mountain that overwhelms me. I'm not the kind of developer who is focused on everything, and the act of establishing these boundaries helps me control my impulse to think outside the box.
The problem is, we never finish solving the problem. For a problem-solver like me, programming was filled with so many unsolved problems that even if I found satisfying entertainment and solutions, I still didn't feel like I could actually accomplish anything. I solved a problem! so cool! But so what? The process remains maddening, frustrating, and demoralizing. Burnout can still occur.
I blame it on my uncontrolled brain, so I have to set boundaries. I had to leave work at that point. I had to become a 9 to 5 developer.
I know a lot of developers who suffer from "Imposter Syndrome". Maybe you're one of them on some level; you feel like you're not worthy of your name - you don't know what you're doing and you're just trying to get by. And my problem is, if I don’t set boundaries, if I allow myself to keep working and exploring and solving problems, then the impostor syndrome in me gets worse. I wanted to know everything, but I couldn't because I couldn't, and then I started to think less of myself.
So, I have to set boundaries. Things like "work is work" and "take a break every once in a while" are my boundaries. Doing this helps keep my sanity in check and keeps me focused. This made me feel like I was not that qualified as a developer for a long time. A 16 hour coding session was a castle in the air for me because I couldn’t make it to the end and I had kids and a wife at home who needed my care and love. Let’s face it, code is not a person, and even if you love it like a lover or a child, it will never return your love. Despite this, I still wanted to do better and be a better programmer, like the great guys I looked up to, but because I couldn't do that, I started to hate myself.
Twitter and other social media are terrible when it comes to this issue. The really good programmers, the ones whose work I admire, will proudly say that they just write code all day long, and then they feel a sense of accomplishment. So I could only sit back on the chair, holding my head in despair as to why I couldn't do it. Why can't I work as hard as they do? Why can't I be as productive as them? Otherwise I could be as good as them!
It took me a long time to realize that my brain simply cannot handle this way of working. I couldn’t sit through a 16-hour coding session. I can't stay up all night until the task is completed. I will never be as “productive” as those people on Twitter say. I can not do it. But, as I’ve come to realize after almost 11 years as a professional software developer, that’s okay too!
It doesn’t matter because I can still perform well during those 8 hours a day. I can still do my job, and do it well. I can still lead my team efficiently. I can still come up with interesting solutions. I just have to do it within the boundaries I set. I realized I was no worse than those model workers on Twitter; I was just different.
I bet that most "silent" programmers just want to do their job and go home. These people don't stay up late at night trying to solve a problem that's been bothering them for weeks. These people don't blog, don't work on open source projects, don't hold technical conversations, or even have much interest in programs outside of their work capacity. Sometimes these people are disparagingly referred to as "9-to-5 developers." What I want to say here is that even if we work 9 to 5, it does not mean that we are bad.
If you are a 9-to-5 developer, it means that you are better at time management, but it does not mean that you are inferior to other programmers.
I am not discerning which way of working is better here. I just stated what worked for me, and I became a 9 to 5 developer because of it. All I want to do is get my work done and then go home and do other things (like blogging). I need to do this to keep my sanity in check. Even if you don’t have to be like me to be able to concentrate at work, you can still do it from 9 to 5! You don't have to spend a long time coding to be a good developer. You just have to think deeply about the problem and want to do your job well.
Happy coding!