Why write?
Published on November 15, 2022.
One question I wanted to think through properly and formulate an answer to when starting to write on this website was why bother? Why spend the time writing at all? Surely my time could be better spent elsewhere than spending hours writing posts that will be read by close to zero people? This is my attempt to articulate what I think the value is.
Written communication is a key part of being an engineer, especially as you get more senior
In the first few years of being a software engineer, your written output is judged primarily, if not almost exclusively, on your ability to write code. As you grow as an engineer your ability to communicate in written form becomes more and more important, especially as you move into more senior roles. In fact, I'd say, there is close to a zero chance that a software engineer will make it to the senior level if they are not able to write effectively. This requirement for written communication manifests itself in a number of ways:
- Writing Technical Design Documents / RFCs - writing high quality technical designs which detail the problem space, considerations, trade offs, solutions, alternative solutions and so on.
- Technical discussion - being able to articulate yourself and engage in robust discussion and debate with other engineers across various mediums (TDDs/RFCs, Slack threads, etc)
- Code reviews - providing high quality, easy to follow, and easy to action feedback on other engineers' code.
- Documentation - being able to write with clarity and precision for engineers and other users of your services (not all of whom may be engineers!).
- Presentations - here I'm considering the writing of presentations as a subset of writing as a category. Like it or not, as you move into Senior, Staff+, and management positions, you're going to be presenting a lot more than you are as a mid-level software engineer, so it's an important skill to practise and improve at as you develop in your career.
There is a good reason that written communication becomes an ever increasing part of the job. As you start on the software engineering ladder, you start by focusing on individual tasks (usually involving coding) which relate to your team. The focus is narrow and there is a low level of ambiguity. As you progress into Senior, Staff+ or engineering roles, you will be thrown tasks which operate at the team or inter-team level, are highly ambiguous with many potential solutions, often do not involve coding directly, and whose impact and importance are not immediately apparent. The role of writing in this context is to document and solve more complex and ambiguous problems across a larger set of people, creating alignment and a space in which ideas can be robustly discussed and stress-tested.
In short, your ability to process beyond being a competent mid-level software engineer will depend in no small part on your ability to write plain English as much as it will depend on your ability to write in the programming languages of your company.
Writing improves your ability to think and reason
Writing is an incredible process for forcing you to structure, examine, and demonstrate your thoughts. When thinking through a system design for example, it is very easy to think through the happy paths, and think things through in a somewhat haphazard way which allows us to avoid its more difficult aspects. Writing allows us to structure our arguments in a more rigid way, sketching out our thoughts into themes, sections, and order them in such a way as to produce a much more robust and complete argument. Elements of the argument which were easy to gloss over in thought become impossible to escape when having to put into words. We can hide from our hand-waving and assumptions in thought. It is much harder to do this when writing. In return, as well as producing the final document as an output, the process of writing is going to help us think through our argument more completely. In essence, writing can be seen in some ways as enforcing best practices upon our thought, providing a structure for our reasoning, and improving our ability to think.
Writing helps you learn
Writing helps enormously with retention. I used to struggle a lot with knowledge retention from what I'd read. I read a reasonable amount, but often felt that I wouldn't be able to recall much or any of a book just weeks or months after reading it. This has improved massively since I started writing more while reading. Writing helps us in a number of ways when learning, compared to simple passive knowledge transfer. Writing helps us learn by forcing us to think through the points being made and summarise them when producing written notes. Writing as an active activity is far more stimulating to the brain and likely to force enduring neural pathways than passive consumption. Writing also has the added benefit of producing an enduring artefact at the end of it. The notes you take on books, articles, talks etc will endure and serve as a fantastic reference to future you. Our ability as software engineers is not determined by knowing how to do everything, it is in our ability to know how to learn and apply previously acquired knowledge quickly. Learning, taking notes, and having a bank of personalised, distilled notes to hand for a multitude of topics is an incredibly valuable asset.
For example, I recently learned more about CAP theorem from a system design course I am studying. While in a few months time I am sure that I will not be able to spontaneously recall all the main intricacies of CAP theorem, having a bank of notes on the key points, personalised to me, and instantly discoverable, will allow me to bring myself back up to speed with the details extremely quickly and be able to utilise the knowledge effectively, far more quickly than without any kind of notes. If you want to go really deep into this aspect of the value of writing, check out Tiago Forte's book Building a Second Brain which goes deep into how to organise your digital life and utilise it for creative ends.
Because I'm not very good at it!
Finally, I want to write more because I'm not very good at it. Part of this will be a tendency towards self-criticism, but much of it is true. There are many areas I'd love to improve in my writing. I find it uncomfortable to write, over-analysing my writing and being self-conscious about sharing it with others. I tend to write in long sentences which are difficult to reason about. I often use overly complex words and sentence structures when simpler devices would suit better. I'm slow to write and frequently hit writer's block (which magically disappears when I have a deadline in front of me — funny that!). I often don't know the meaning of brevity. I dislike editing and find knowing what to take out hard. I find it too easy to dive into the weeds of technical complexity instead of outlining the salient points.
So given all of the previously outlined values of writing, and given I'm not very good at it, what better way to get better than to just dive in and do it? Having and developing a growth mindset requires constantly positioning yourself up against the boundaries of your abilities, putting aside your discomfort, lack of ability, and doubt, and just doing.
So that's why I'm writing.