Since Dec 26th 2009, I have written regularly on this blog on a variety of technical topics. Suffice to say that I have had a lot of practice of technical writing!
I love learning, and I love sharing. What I learn I like to share through writing, as it also helps me solidify my understanding too.
Over the last 3 months, my posts have received around 75K views per month across medium and this blog. So the evidence suggests that my writings aren’t turning readers away at least!
So to help more people share their knowledge and insights, here are a few simple rules that I follow when I write.
Mind the “curse of expertise”
The most important rule of thumb is to always remember you are the expert of your domain. When you share knowledge & experience, you need to be mindful what assumptions you’re making of the reader.
Especially when you discuss the merits or problems of an approach. Always state your assumption and context explicitly up front. This helps the reader understand WHY you’re doing this, and the constraints you’re working with.
In the immortal words of Simon Sinek, start with why, which brings us to the next point.
Sell the problem, NOT the solution
Create the demand, then supply the solution.
Sell the problem to the reader. Help them understand why it’s a problem worth solving. The merits of your solution are irrelevant without an interesting and worthwhile problem.
Where possible I try to set out what a “good” solution would look like, and what properties it should have. After describing the solution I would then finish off with the tradeoffs I have to make. This would usually evolve around the pillars of cost, complexity and efficiency.
If you don’t define what “good” is up front, then it’s easy for cognitive biases to creep in. We often subconsciously bend the definition of “good” to fit our solution, and lose objectivity in the process. We all have this confirmation bias, there’s no escaping it. But defining “good” ahead of time helps keep us honest with ourselves.
Keep in mind that your solution might only work in specific contexts. If people adopt your solution without understanding the context in which it worked, then they risk failure. Worse yet, if the failures are not obvious enough, then you might have started another cargo cult…
Keep it short
On medium, you can see how long your post takes to read and how many people read it start to end. Unsurprisingly there is a clear trend that longer posts have a lower read %.
I compiled the stats for my posts related to serverless and this is what I see.
This is reflected in my personal reading habits too. I tend to finish longer posts over several sitting as I often lose my attention span midway. I’m seldom able to finish a long post in one sitting, even if I ‘m really engaged by it.
What that means to you is that you should keep things short, punchy, and to the point. Don’t linger with your words and try to explain things to the Nth degree.
If need be, use bullet points, and keep each to one line.
Write the post, then read it back a few times. With each run, cut out unnecessary words or rephrase sentences to make them more concise.
For example, “to be or not to be, that is the question” might be vague and leaves a lot to the reader. The longer, more expansive version is actually far less clear!
Goes without saying :-P
Picture says a thousand words
Apply common sense, too many pictures is also not good.
Also, keep pictures relevant. We all love cat pictures, but too much of it (or used out-of-context) is off putting.
I follow this advice when giving talks as well, and try to kick off a presentation or post with a strong message.
Think of your reader’s attention span as a currency. You have to earn the audience’s attention before you can spend them on technical discussions.
So that’s it, 6 simple rules that I follow whenever I write. The freecodecamp folks also have some very good advice for writing on medium.
I hope this post helps you improve your writing. If you have any suggestions on how I can improve my own writing style, please feel free to let me know via the comments below.
Happy Easter everyone!
Enjoy what you’re reading? Subscribe to my newsletter and get more content on AWS and serverless technologies delivered straight to your inbox.
I’m an AWS Serverless Hero and the author of Production-Ready Serverless. I have run production workload at scale in AWS for nearly 10 years and I have been an architect or principal engineer with a variety of industries ranging from banking, e-commerce, sports streaming to mobile gaming. I currently work as an independent consultant focused on AWS and serverless.
In this course, we’ll cover everything you need to know to use AWS Step Functions service effectively. Including basic concepts, HTTP and event triggers, activities, design patterns and best practices.
Here is a complete list of all my posts on serverless and AWS Lambda. In the meantime, here are a few of my most popular blog posts.
- Lambda optimization tip – enable HTTP keep-alive
- You are thinking about serverless costs all wrong
- Many faced threats to Serverless security
- We can do better than percentile latencies
- I’m afraid you’re thinking about AWS Lambda cold starts all wrong
- Yubl’s road to Serverless
- AWS Lambda – should you have few monolithic functions or many single-purposed functions?
- AWS Lambda – compare coldstart time with different languages, memory and code sizes
- Guys, we’re doing pagination wrong