On ADHD and Lack of Direction
One challenging thing about ADHD is its binary nature regarding creative interests: writing a novel, creating music, or even writing a technical blog. “I have so much to say about software engineering”, you think haphazardly throw a few dozen random topics into your notebook. You even managed to write a few blog posts over a few months. Analytics suggest that maybe ten people looked at them in total, and knowing the current state of the Web, that’s probably four actual people in total, and then six bots trying to find the comments feature, which in my case is very conveniently disabled. But that’s fine! Just letting the thoughts out is a reward in itself.
Then, one morning, you wake up, look at the list of topics, and suddenly understand that none of them interests you. You can power through a few more blog posts, but you look back at the existing content and understand there is no rhyme or reason, just incoherent rambling. “I am not good at this” meets “This feels too much like work”, and that’s the end of your venture into technical blogging. There is no in-between here. Either you are excited about your idea and spend weeks obsessing over it, or it feels like torture.
The problem is, of course, that nothing changed. I am good at software engineering. I do have a lot to say about its best practices, patterns, architecture decisions, and writing clean code in general. ADHD has given me the power to jump in and drive hard. What it hasn’t given me, though, is a sense of direction. It hasn’t given me the power to take a step back and ask myself, what do I want to say? What is the narrative that I want to convey? I have given it a lot of thought over the last few months, and instead of compiling a haphazard list of incoherent topics, I want to impart some structure and definition to what I am trying to say.
I have moved all my posts back into the drafts. I don’t think they were bad. I still mostly agree with what I have said in them, but they do not follow a singular path. I want to try again. Instead of glorified Quora answers, I want to spend time refining my thoughts and building up a story, chapter by chapter, of my understanding of how to build highly distributed, highly performant and, most importantly, highly maintainable software systems. I doubt it will be book-quality writing, but I will try my best.
I want to emphasise that almost nothing I will be writing about is my original ideas. Indeed, one of the recurring themes in my casual participation in software engineering circles is that, time and time again, the topics everyone gets hyped about have been covered in some textbook from the 1990s, and all we are doing is rehashing the same ideas and putting a different label on them. Software engineering spent several decades growing exponentially, leaving us in a state of perpetual inexperience. Most problems in software engineering have already been solved; it’s just that no one remembers what the solutions are. A minor goal of my blog will be simply reminding people of the knowledge and wisdom that already exists.
As a final note, let me offer an anti-disclaimer of sorts, as I don’t want to repeat it on every post hereafter. “It depends” is probably the most used phrase in software engineering discussions. It gives people’s statements an aura of thoughtfulness, weighing up pros and cons and deliberate decision-making. To this, I say, nonsense, it almost never “depends”, and people use this phrase too much as an excuse for making bad decisions, to try and rationalize them. In my practical experience, there has never been a single project where the principles I am going to lay out have been broken, and it did not lead to a very predictable meltdown in code quality. It does not matter that your code can produce an incorrect result very quickly, and no one wants to touch it because they cannot understand it. As such, whenever you see words like “wrong”, “must”, “should”, “cannot”, etc., keep in mind that it actually means exactly what it says. There is no “it depends” in my writing unless explicitly mentioned, and then I will have a paragraph or two describing exactly what “it” depends upon.