Introduction
Have you always wanted to start your own dev blog? Do you have one now? Do you blog regularly or is your blog inactive at the moment? I asked these questions via a Twitter Poll and got a variety of responses.
- Twitter Poll: https://twitter.com/shahedC/status/1317093434440798208
No matter where you are in your software development career, this blog post will help you on your blogging journey. Format your content, improve the material and promote it far and wide. Below are some tips I came up with, based on my personal experience blogging about .NET topics.
If you’re looking for my ASP .NET Core A-Z Blog Series, you may go directly to the following URL:
Table of Contents:
- Headings and Sections
- Regular Frequency
- Relevant Content
- Advertising & Promotion
- Facebook Groups
- Twitter Interactions
- LinkedIn Outreach
- Revisions
- Code Samples
- YouTube Tie-ins
- BONUS: Mirror Sites
1. Headings and Sections
TIP #1: Format your blog content into sections with HTML headings.
HTML headings aren’t just for visual appeal. They can be used by screen readers to identify when a new section begins. They can also be used by search engines to identify those sections to be displayed in search engine results.
Take a look at these search results when you search for “Blazor shared libraries” in Bing and Google.
- Google search: https://www.google.com/search?q=Blazor+shared+libraries
As you scroll through the first page of results, you’ll notice that the excerpt for my blog includes rich formatting for sections and their headings, where applicable.
- On Bing, the H1 headings are extracted into clickable tabbed headers in the search results.
- On Google, the H1 headings are displayed as clickable links underneath the excerpt, while a “Jump to” link is provided to jump directly to the relevant section.
2. Regular Frequency
TIP #2: Publish new content with regular frequency.
If you publish only one blog post, you may get lucky if some Internet users stumble upon your blog. But if you publish blog posts more often, especially with a predictable frequency, you may get repeat visitors who look forward to new content.
Take a look at my blog statistics from 2018 through 2020, to see how regular blog posts brought new/repeat visitors to my site.
In the above chart, you can see the following:
Late 2018:
- 2018 Series: https://wakeupandcode.com/aspnetcore/#aspnetcore2018
- Before October 2018, I barely had 2,000 views per month, as I did not publish any new/exciting content. I was mostly using my blog to upload my PowerPoint slides after a live presentation.
- In late 2018, I published my first ASP .NET Core blog series, which ended up becoming a surprise HAPPY NEW YEAR series (revealed in December 2018). The 2018 series spiked in December 2018 (40k views) with .NET Core 3.0 coverage around Connect(); 2018.
January – June/July 2019
- 2019 Series: https://wakeupandcode.com/aspnetcore/#aspnetcore2019
- From January 2019 through June 2019, I introduced my weekly A-Z series for various ASP .NET Core topics. This series resulted in gradual increase in viewership, including a spike (54k views) around the launch of Visual Studio 2019 and C# 8.0.
- In July 2019, I released my free A-Z ebook, compiled from the 2018 A-Z series. This resulted in another spike (66k views) after the ebook was released, itself auto-generated using a .NET Core 3.0 Worker Service.
January – June/July 2020
- 2020 Series: https://wakeupandcode.com/aspnetcore/#aspnetcore2020
- From January 2020 through June 2020, I published a new weekly A-Z series for similar ASP .NET Core topics. This now-annual series resulted in a steady level of views (60k+ views) each month that hovered near the previous year’s highs.
- Around April 2020, there was a spike (80k+ views) which was a new record for my blog.
- After July 2020, there was no new content, and the viewership continued to decline each month.
I’m currently planning new content for 2021, to focus on .NET 5 and C# 9 topics.
3. Relevant Content
TIP #3: Publish new content that is relevant to your intended audience.
It’s not just enough to format your content and publish with regular frequency. You should also try to maintain one or more themes for your blog, so that your readers can have an idea of what to expect.
In my case: I came up with topics that would be useful and relevant for a .NET developer, especially developers working with ASP .NET Core web apps and related technologies.
Take a look at the word cloud below to see popular search terms that led developers to my blog in 2019:
From the word cloud above, you can see that people searched for terms like ASP .NET Core, MVC, Controllers, Web API, cookie, storage, VS2019, hosting, signalr, tutorial and many more search terms!
4. Advertising & Promotion
TIP #4: Promote your work!
If a developer writes a blog in the forest, but there’s no one around to read it, did they even write a blog? This age-old philosophical question should help you think about ways to promote your work. But advertising isn’t just about spending money on online advertisements. In fact, I’ve personally found that it’s not worth it for me to spend any money on advertising.
Your mileage may vary.
Let me explain: I’ve never advertised my blog on Google or Bing (or any other search platform). Yet, my blog appears in top search results quite frequently. Organic search results are worth more to me than any paid results.
As for social media, I’ve launched a Facebook page called Shahed Codes:
This page has less than 1,000 followers as of this writing, yet I get a lot more views on my blog. That’s because I promote the posts from Shahed Codes in a couple of Facebook groups with a large number of .NET developers. I had briefly tried advertising on Facebook, but the engagement from free developer groups are significantly higher than any engagement for paid ads.
5. Facebook Groups
TIP #5: Consider sharing your work with other developers on Facebook.
Speaking of Facebook groups, there are countless Facebook groups dedicated to various topics related to software development. In my case, I joined a handful of .NET groups such as:
- DotNetCore Developers: https://www.facebook.com/groups/DotNetCore/
- ASP .NET Core Developers: https://www.facebook.com/groups/about.asp.net.core/
In the above screenshot, the post was shared to both DotNetCore Developers and ASP .NET Core groups, which resulted in over 8,000 people reached, just from a handful of shares. This reach would not have been possible if the original post wasn’t shared beyond the Shahed Codes page.
- ebook release post: https://www.facebook.com/ShahedCodes/posts/1902014353269519
With permission from a group founder/admin, I shared my weekly posts from Shahed Codes to both of these groups, once for every new post. In case your readers have any feedback or follow-up questions, be prepared to respond to other developers who reach out to you.
You may also get request for 1:1 communications via private messages. Personally, I don’t have the bandwidth to help other developers via private messages, so I usually ask them to ask their questions in public posts/comments. I’ll try to help if time permits, but this approach also allows others to chime in as well.
To verify the thumbnail (or update the cached image), you may use the Facebook Link Sharing Debugger (aka Facebook URL Linter):
6. Twitter Interactions
TIP #6: Connect with other developers on Twitter.
The first rule of Twitter is that there are no rules on Twitter. I’ve had a Twitter account since 2009, but rediscovered it in 2018, when I started sharing my weekly blog posts on Twitter.
My post popular post of all time made 1.8M impressions around the world, with a silly joke tweet in 2018. My post popular post in 2020 was a thoughtful tweet that resonated with a lot of people around the world, with 310k+ impressions. Somewhere in between, a nostalgic tweet about Visual SourceSafe made 158k+ impressions. My tweets about my dev blog posts usually reach much fewer people than any of these numbers.
That being said, the value of Twitter comes from the interactions with other developers. This includes Twitter users who are already using the technology you’re writing about, and others who are just starting out. Best of all, we can learn something from each other.
Every time you share your content on Twitter (with a few #hashtags if appropriate), you may reach new readers who are interested in your content. Just like on Facebook, you may get questions and feedback from others who are curious to learn more.
CAUTION: Inevitably, you may also get nasty comments from people who have nothing better to do with their time. Use your time wisely. If it’s constructive criticism, think about how you may use their feedback to improve your content. If they’re just being mean for no good reason, take a step back and ignore/mute/block the person as needed.
Note that URLs shared on Twitter may be converted to a t.co short URL in the post itself… BUT, the displayed URL should still show up as the correct URL. If the URL is too long, it may be truncated when displayed. The displayed thumbnail will also display a preview image and the domain of the clickable URL.
To verify the thumbnail (or update the cached image), you may use the Twitter Card Validator:
7. LinkedIn Outreach
TIP #7: Reach out to others in your professional network and beyond.
You may not be active on LinkedIn, but it’s quite likely that you have a LinkedIn account. Depending on where your connections live, they are mostly likely active around the clock, day and night. If you haven’t been on LinkedIn for a while, try to visit the site/app occasionally to see when more people in your network are likely to view your future posts.
I’m not very active on LinkedIn myself, but I did share my weekly blog posts on the professional social network. This allowed me to reach additional .NET developers who may not be aware of my content posted to Twitter and Facebook. If I’ve worked with them before, it’s likely that they might be interested in the new content I’m sharing.
Similar to Twitter: Note that URLs shared on LinkedIn will be converted to a lnkd.in short URL in the post itself. This short URL may not be visible if it’s the last line of your post. To ensure that this URL appears as a clickable link in the post, add some additional text after the URL. The displayed thumbnail will also display a preview image and the top-level domain of the clickable URL.
To verify the thumbnail (or update the cached image), you may use the LinkedIn Post Inspector:
8. Revisions
TIP #8: Update incorrect/outdated content but not too much.
By the time you read this post, some of the above content may become outdated. This is true for any dev blog post or tech book. What you do with outdated content is up to you. You could keep revising your content to correct obsolete/inaccurate sections, but that could prove to be an exercise in futility.
Worse yet, any posts or articles (your own or from others) may become inaccurate if they’re pointing to your updated content at the same old URL. To counter this, I suggest making only minor edits, including typo corrections and the addition of brief important notes to call out outdated content.
To publish new content that deviates significantly from the original content, I would suggest publishing a brand new blog post each time. This will let you pick a new SEO-friendly URL and create a new post that doesn’t mess with any references to the original post.
This is how I ended up with a new A-Z series for each year (2019 and 2020) so far.
- The 2019 series started with .NET Core 2.2 and Visual Studio 2017, but got upgraded to .NET Core 3.0 and Visual Studio 2019 along the way.
- With the new .NET release schedule (annual November releases), the 2020 series was able to maintain a single .NET version (.NET Core 3.1) and a single IDE version (Visual Studio 2019) throughout its publishing history.
9. Code Samples
TIP #9: Provide code samples, preferably linked to a public repository.
Back in 2018, my code samples were all over the place, in my GitHub repository:
- GitHub account: https://github.com/shahedc
In 2019, I decided to introduce a new web app called NetLearner. The goal was to update this repo as much as possible, but my code samples were still spread out across multiple repositories.
- NetLearner on Core 2.2: https://github.com/shahedc/NetLearner
In 2020, I decided to introduce a new version of NetLearner, built on .NET Core 3.1. Better yet, I wrote a mini-series of “prelude” posts before the A-Z series to discuss the project structure and the purpose of the NetLearner project.
- NetLearner on Core 3.1: https://github.com/shahedc/NetLearnerApp
From January to June 2020, I continued to built the NetLearner app every week, with 26 releases over 26 weeks. As of October 2020, the alpha version has been deployed to a public website, to demonstrate its features:
- NetLearner demo: https://NetLearner.org
10. YouTube Tie-ins
TIP #10: Use YouTube videos to complement your blog posts.
My work has been featured on various YouTube channels, including the official .NET Community Standup and (coming soon) the .NET Docs show. I’ve also appeared on the Philly-based Dev Talk Show.
- [VIDEO] 2019 A-Z Series + ebook on the .NET Community Standup: https://youtu.be/t5sBSOydYxI?t=308
- [VIDEO] 2020 A-Z Series + ebook on The Dev Talk Show: https://youtu.be/QeCfUoodVfE
Coming soon, on the .NET Docs Show: https://dotnetdocs.dev/
I do have my own YouTube channel, where I’ve published C# video tutorials many years ago. Going forward, I plan to publish new dev content on my YouTube channel:
- YouTube channel: https://youtube.com/shahedc
11. BONUS: Mirror Sites
TIP #11: If possible, publish a mirror site, e.g. on DEV.to
My dev blog is primarily published on WakeUpAndCode.com.
- Primary site: https://WakeUpAndCode.com
In addition to this site, I also publish the same content to a mirror site on DEV.to:
- Mirror site: https://dev.to/shahedc
Conclusion
I hope you’ve enjoyed this writeup and found something useful that you can implement in your own blogging journey. Feel free to reach out with any follow-up questions if you need any guidance for blogging.
You can reach me on Twitter at:
- @shahedC: https://twitter.com/shahedc