On technical blogging

The dev community has a love-hate relationship with blogging. On the one hand, we are grateful to all people who share their knowledge for free and help us solve our problems. On the other hand, some programmers see blogging as a waste of time o a privilege for people who have too much free time.

I started blogging in 2017 because I realized I had some opinions about programming, and I wanted to impose them on other people. There. I said it. I wanted to see more programmers working in a certain way, so I started writing about it. There was no schedule. I was publishing an article whenever I felt like doing it. Quickly, I realized I hadn’t had as many opinions as I had thought, and I stopped writing for six months.

It took me six months to have something new to share. I was interested in data science and machine learning, so I started publishing my notes and code written while learning. The texts I wrote in 2018 were a mix of data science tutorials, opinions about writing code, and book reviews.

At that time, I was already blogging regularly three times a week. I had a scandalous writing manner which allowed me to churn out texts at such a fast rate. I was publishing the first draft without editing. I wasn’t even reading my articles before posting them. I was publishing as soon as I had been done writing and fixing all mistakes found by Grammarly.

This didn’t change much in 2019, but I focused on one topic: data science. Gradually, I switched to writing about data engineering. Later, I sort of went back to my early days of blogging because I found a niche to write about: trustworthy data pipelines, which embodies data engineering, and my opinions about writing software.

I have also shifted to a more manageable schedule, and I write only once a week. However, during the last 100 days of 2020, I experimented with publishing a data engineering tutorial every day. I managed to write 100 articles in 100 days, but I hated the experience.

How to write a blog post

My process was changing over the years. As you already know, in the beginning, it wasn’t even a process. I was writing whenever I had an idea, and I was publishing the text right away. We are not supposed to publish a draft, right?

I don’t think so. It takes time to appear in search results when you create a new website. In the beginning, when almost nobody reads those articles, when you are trying to get traction and learn how to write, it is better to publish as fast as possible than spend hours perfecting a text no one will read.

I continued publishing first drafts for three years, even when the blog had 30k readers every month. It was a mistake. I got far beyond the point where I should start editing texts before publication.

What I do now is different. I split the writing and editing into a series of tasks happening on different days. On Mondays, I do the research, write the code, and comment on my observations. On Tuesday, I write the first draft, but I don’t edit it. I don’t even use Grammarly at this point. The text is full of language mistakes, but I don’t worry about it. Nobody is going to see the first version anyway.

Thursday is the editing day. First, I read the text and change everything I don’t like anymore. Afterward, I try to shorten the paragraphs and sentences. I have an informal style guide, so there are a few changes I always try to make. For example, I try to remove all of the passive voice, use “we” as a pronoun (obviously, not in this article), and avoid words like: “that,” “simple,” and “easy.” (BTW, the first version of this article had over 30 occurrences of “that.” Could you tell?) When I am more or less satisfied with the result, I copy it to Grammarly and fix mistakes I didn’t notice while editing. In the end, I do some visual editing like making some sentences bold, setting the proper code highlighter, etc.

What you want to write about vs. what people want to read

The majority of my readers come here because of their interest in data science and machine learning. I don’t write about it anymore. I switched to data engineering, MLOps, and testing data pipelines under the umbrella topic of “making data pipelines trustworthy.” Still, all of the essential data science topics and machine learning tutorials are more popular. We have done an excellent job advertising data science as the sexiest job of 21 century. It is awful because we need far more data engineers than data scientists.

Nevertheless, I understand why people want to read those tutorials. Many of them want to become data scientists. I know. I was one of them. After all, I wrote those tutorials because I was a data scientist wannabe. It was my dream job for a very long time. Eventually, I got the job at a startup, hated it, and switched back to data engineering. But that is another story.

How many readers can you expect?

If you have just started blogging, zero is a pretty good guess. At least for the first two or three weeks. Eventually, the search engines are going to find your text, and someone will read it.

During my first month of blogging, I published three texts, and 84 people read them. In the second month, I got one lucky day, and one article generated tons of traffic. In total, 1259 people read the blog during my second month of blogging. I was lucky again in the third month because 3533 people visited the page. It ended in the fourth month. I had only 721 visitors during the whole month - what a disappointment it was.

In the beginning, most of my traffic was generated by a few lucky (and controversial) posts when someone posted a link on Reddit or Twitter. I had 700 visitors one day and 13 readers every other day of the month. For the next few months, the number of people reading my texts was between 120 and 400. Per month!

Things started changing after a year (!) of blogging. I was getting 40 readers every day, and the number was (very) slowly growing. It skyrocketed after I started writing about data science. In October 2019, I had 32k visitors every month. Unfortunately, Google made a change in their search engine algorithm, and I lost half of the traffic. Nowadays, I have around 20k monthly visitors.

When language gets in the way

English is my second language, and it shows. I use the same conjunctions over and over again. Occasionally, I use a wrong preposition. I got stuck for minutes looking for the right word, just to repeat the same one again because I cannot recall anything better.

I have to agree with people advising to read fiction as a way to extend vocabulary. There is no better way. You can read business books, but they all sound like a broken record, not only because of repetitive content but also because of Business English. There is one problem with learning vocabulary, though. You have an urge to practice using it while writing.

There is also the problem of style. After reading “The Elements of Style” by William Strunk Jr. and “On Writing Well” by William Zinsser, I started recognizing the needless usage of pompous language (see what I have done here?). It is an annoying skill to have. When I read a tutorial written by someone working at “one of those” corporations, I imagine how the author looked while writing it, and I see someone trying to reach the minimal word count and sound fancy instead of trying to teach the reader.

Finding ideas

“I have no idea what to write about, what should I do?” I wish I knew. It happens to me all the time. Sometimes, I have a week full of ideas. Usually, when nothing works, my data pipelines break, and I have to google tons of stuff to fix them. A bug in production is generally followed by an article or two.

What about those weeks where nothing happens? What if your job turned into copy-pasting the same code and changing configuration? What should you do? Quit? Start an open-source project? Take two weeks off? Give up blogging? What if you just started a new job, and the only thing you do is learning about the project? I have no clue.

I created a “to-do list” of ideas, but sometimes, I don’t want to write about any of those topics. What should I do when it happens? Write another blog post about blogging?

Older post

Why do we use dropout in artificial neural networks?

How does dropout work in artificial neural networks?

Newer post

How to deal with days of the week in machine learning

How to encode week days as features for machine learning models