How to build your own blog in 2020 today
Tags: webdev, productivity, javascript, gatsby
Published: 2020-01-23 19:55:08

## Why I'm blogging

I'm blogging to improve my writing, increase the clarity of my thoughts, and show what I'm working on.

With each blog post, I feel like a slightly better communicator and better teacher.

The compounding effect of continuously improving is staggering.

[![tiny gains](https://jamesclear.com/wp-content/uploads/2015/08/tiny-gains-graph.jpg)](https://jamesclear.com/continuous-improvement)

The trick to seeing these gains is consistency and playing for the long term.

> The purpose isn't to please the critics. The purpose is to make your work better. - [Show Your Work, Seth Godin](https://seths.blog/2016/03/show-your-work/)

## So which platform do I use?

I've started a `Blogger` blog (this was _before_ Google bought them). Remember `.blogspot.com` domains?

I built a couple different WordPress blogs, both free and self hosted.

I've started company engineering blogs, internal and external.

I tried building my blog from scratch.

Medium, Confluence, Twitter, LinkedIn, Blogger, Dev.to, WordPress, self-hosted, doesn't matter.

> Pick a tech stack and platform that you will help you write consistently.

The trick is getting posts out there, improving over time, and staying in the game.

Using my experience and following principles from James Clear, Tim Ferriss, and more, I've come up with a few rules for starting a blog as a developer in 2020.

I'm building my own blog that uses GatsbyJS hosted over at [drew.tech](https://drew.tech?ref=dev)

# Principles

## 1. Stick with what you know

We need blogging to be one of those habits we _actually_ stick with. In order to do that, we need to make it
as simple as possible.

To remove friction in the process, we should stick with:

- a platform we know
- a familiar tech stack
- content you're _somewhat_ familiar with

#### Example

I'm comfortable in React, JavaScript, and markdown. I've built a GatsbyJS site and am familiar with GraphQL.
I'm not great at styling, so this blog is a Gatsby theme called [Novela](https://novela.narative.co/).

#### Counterpoint

Want to use your blog as a project to learn some new tech? Want to explore new topics you know nearly nothing about?
**That is okay**. Just know that it's likely blogging won't be a sustainable habit for you.

## 2. Easy deploys

This one sounds really simple, but it can make a big difference on if you are or aren't going to post regularly.

Deploying needs to be simple. If it's not, you won't post. Dragging files to an S3 bucket does not count as easy.

You might think I am lazy because of this. Trust your instincts.

#### Example

I can deploy all of my side projects via pushing or merging changes to the `master` branch in GitHub (I commit on `master` frequently 🤠). Each time I push, a new version gets deployed.

[Zeit Now](https://zeit.co/home) and [Netlify](https://www.netlify.com/) take care of a lot of the hastle that is devops.

I use Zeit Now for all [NextJS](https://nextjs.org/) and Netlify for all my [GatsbyJS](https://www.gatsbyjs.org/).

#### Counterpoint

There are no excuses for bad CI/CD 😉

## 3. Don't build from scratch

Starting from scratch can seem tempting; don't.

Lean on existing frameworks like NextJS and GatsbyJS that get you started with built in routing, performance optimization, and a plugin ecosystem.

These things will help you spend more time writing, and less time tweaking code. I'm all for tweaking code, but you're here to create a successful blog,
not to fiddle with code.

#### Example

This blog relies heavily on:

- GatsbyJS
- Gatsby Theme [Novela](https://novela.narative.co/)
- gatsby-plugin-google-tagmanager
- gatsby-plugin-twitter
- gatsby-plugin-sitemap
- gatsby-plugin-mailchimp
- gatsby-plugin-feed
- [ConvertKit](https://app.convertkit.com/users/signup?plan=free-limited&lmref=l_QK4w

) (get started for free)

That's a lot of coding hours saved that I can use directly on writing.

#### Counterpoint

Like I've said before, feel free to use your blog as a playground for learning.
If that is your goal, **that is okay**. It isn't the best approach for creating a
consistent writing habit.

## 4. Collect blog topic ideas

In order to write a blog post, you need topic ideas. Instead of sitting down and thinking "what do I want to write about?",
pull up your list of ideas and write about what you're most inspired by at that moment.

Here's how I've built my list:

- Googled something and couldn't find the answer
- Found an answer, but it was buried _deeeeep_ in a forum
- Notes from a good book or podcast
- Predictions
- Learning in public and documenting

This list is different for everyone and depends on what type of content you want to share.

## 5. Less is more

I had a different UI on my previous blog. It had a lot going on. I removed all the distractions and "features" as a test.
People actually spent more time on my site the fewer "features" there were.

By not creating extra features on your blog, you free up yourself to spend more time writing content.

And you know what they say:

> Content is king.

## Ready to get started?

![novela theme](https://developerspin.com/static/10a318341a01337ce5fc7ce72ac382f4/1b494/gatsby-theme-novela-hero.jpg)

1. Click the `Deploy on Netlify` button below
2. Connect your GitHub account
3. Deploy
4. Celebrate 🎉

<div style="max-width: 240px; align-self: center;">
  <a
    href="https://app.netlify.com/start/deploy?repository=https://github.com/narative/gatsby-starter-novela"
    target="_blank"
  >
    <img src="https://www.netlify.com/img/deploy/button.svg" />
  </a>
</div>