Why a Personal Website?
Moshe Katz / April 13, 2021
11 min read
It was late at night, I was scrolling through my twitter feed and could swear that everyone was purchasing *.dev domains - it was only reasonable that I'd impulse buy one myself with moshekatz.dev.
That same day I also deployed my own blog, inspired by Dan Abramov's overreacted.io, and just like that, my personal website was live.
Happy ending, right? đ
Except two years later the only blog post I had written was a "temporary" placeholder titled "Hello World".
That's right, I didn't write a single post in years.
But I want to change that, and this post acts as the first step in the way by helping me:
- Start creating content - by actually being the first post I'll publish.
- Sustain a content creation habit - by purifying the "why" of a personal website and the principles I plan to follow in order to stay consistent over time.
From a Content Consumer to a Content Creator
I want to become a better developer.
I want to become a better developer, so I read a lot of technical blog posts, educating myself with lessons learned and fresh perspectives. However, I've never shared my own post with the world (well, at least until now).
I want to become a better developer, so I npm install
every single day, reusing other developers solutions to common problems. However, I rarely npm publish
.
I can go on and on - taking courses, listening to podcasts and watching conference talks in contrast to teaching, recording and speaking.
These are all content consuming actions, lined up with the opposite content creating actions, indicating I consume much, much more than I create.
Now don't get me wrong, I find consuming content extremely valuable, as I consume everyday. It helps me grow not only as a developer but also as a somewhat knowledgeable person overall.
Yet, I believe that certain value can only be obtained by actually doing, creating and sharing - by making the transition from a content consumer to a content creator.
A Better Developer?
In general, creating content enables you to grow your development skills as you:
- Learn more efficiently by applying what you learn.
- Save time for future you, and potentially others, by allowing to reuse existing solutions, perspectives and mental models.
- Improve your communicate skills, through clear writing, speech and code.
More specifically, there are two aspects of content creation that I find most suitable when starting to build a content creation habit:
- Writing
- Open sourcing
In the next sections I'll lay out why I think investing in them will actually make you a better developer.
Why Writing Will Make You a Better Developer
Good developers write. a lot. and not "just" code.
Here are some examples:
RFCs
As explained in the reactjs/rfcs repository:
The "RFC" (request for comments) process is intended to provide a consistent and controlled path for new features to enter the project.
This process, in the format of a written structured template, forces better thought and better understanding of what's more important than what, and how things are related - resulting in better, more informed decisions.
Here are some RFCs I found interesting:
- React Server Components RFC (reactjs/rfcs)
- Context selectors (reactjs/rfcs)
- Add funding support to package.json (npm/rfcs)
Documentation
This quote from Dave Nunez's article from Increment's documentation issue summarized the importance of documentation so well I'll just attach it:
GitHubâs 2017 Open Source Survey lists âincomplete or confusing documentationâ as the number one problem encountered in open-source software development, observed by 93 percent of respondents. Yet 60 percent of contributors said they ârarely or neverâ contribute to documentation. GitHub concludes that âdocumentation is highly valued, but often overlookedâ.
Tom Preston-Werner even suggests to start with the docs and not the code in his great post about Readme Driven Development.
Moreover, some companies, like Stripe, are known for their developer-first approach and outstanding documentation, which results in a massive growth and super happy customers:
Here are some documentations I was highly impressed by:
Development Roadmap
Building trust between a developer and his product/library users is hard, and development roadmaps are one of the best ways to do so.
A roadmap sometimes comes in the form of a blog post that reflects the plan forward, why some decisions were made, how will the migrations/deprecations/new features might look like and what you can do ahead of time to make the transition as smooth as possible.
Here are some of the development roadmaps I found great:
- React 16.x Roadmap â React Blog (reactjs.org)
- The Future of React Router and @reach/router
- Npm's public roadmap (a backlog)
Blogs
Some of the best developers I follow on Twitter just happen to write excellent blog posts - I don't believe that's a coincidence.
Here are some of my personal favorites:
- The "Bug-O" Notation by Dan Abramov
- Why Isnât X a Hook? by Dan Abramov
- Fast and maintainable patterns for fetching from a database by Sophie Alpert
- A (Mostly) Complete Guide to React Rendering Behavior by Mark Erikson
- AHA Programming by Kent C. Dodds
- Inversion of Control by Kent C. Dodds
- CSS Utility Classes and "Separation of Concerns" by Adam Wathan
- The styled-components Happy Path by Josh W. Comeau
- Preemptive Pluralization is (Probably) Not Evil by Shawn Wang
Verdict: â Writing consistently over time will make you a better developer.
Why Open Sourcing Will Make You a Better Developer
Good developers contribute to open source. They often build in the open.
In general, open sourcing allows you to become a better developer as you:
- Learn from code written by other developers.
- Get your code reviewed by the community.
- Practice decision making, prioritizing and marketing.
There are also indirect advantages to open source, as you grow a network of connections, boost your resume and in rare cases might even lead to a whole new business.
A Potential Business?
More often than not, open source creators/maintainers are not rewarded for their hard work, as Kitze once wrote: "GitHub stars wonât pay your rent".
However, there is an emerging business model where an open source project raises awareness and usage to a tool, while the creators make a paid service with a value proposition that is based on that tool. Here are some examples:
- react-router as the open source project; remix as the paid service.
- tailwind css the open source project; tailwind-ui as the paid service.
Also, here are some examples to open source projects being built in the open:
- egghead-next - the frontend for egghead.io.
- excalidraw - virtual whiteboard for sketching hand-drawn like diagrams.
- spectrum - simple, powerful online communities.
- reach-ui - the accessible foundation for React apps and design systems.
- supabase - the open source Firebase alternative.
- moshekatz.dev - this website đ.
Verdict: â Open sourcing will make you a better developer, and might even open up interesting career paths.
The Principles
Forming a habit requires first sticking to a routine, and those are the principles I plan to follow in order to achieve that.
Learn in Public
Shawn Wang (or as I refer to him in my head - "The learn-in-public Guy") already wrote a great post about this topic.
I've probably re-read this post a thousand times by now, so why not just share a part of it in the form of a conversation with my head:
You already know that you will never be done learning. But most people "learn in private", and lurk. They consume content without creating any themselves. Again, that's fine, but we're here to talk about being in the top quintile.
Top quintile? I guess this content creation habit is a thing after all. OK, I'm on board, but what content should I create?
Whatever your thing is, make the thing you wish you had found when you were learning. Don't judge your results by "claps" or retweets or stars or upvotes - just talk to yourself from 3 months ago. I keep an almost-daily dev blog written for no one else but me.
And what if no one will ever read this?
Guess what? It's not about reaching as many people as possible with your content. If you can do that, great, remember me when you're famous. But chances are that by far the biggest beneficiary of you trying to help past you is future you. If others benefit, that's icing.
Thanks Shawn, always a pleasure.
(p.s - here's the link to the post again, I recommend reading it in its entirety if you haven't)
Dogfooding
As explained by JetBrains in their article about the topic:
In the software development industry, dogfooding is the practice of testing your products within your company, using them as the end users would. Effectively, you have to eat your own dog food to ensure that your product is of the highest quality.
In my opinion, there are 2 main advantages to dogfooding when creating content, and especially when creating software - the first is sustainability and the second is a better end product.
Sustainability
When using your own open source software, you're motivated fix bugs and add features as you, as a user yourself, directly profit from those.
The same applies to a blog post you wrote and re-read or references to in the appropriate context.
Simply put, the intentions of the creator and the user are mostly aligned, hence, making it sustainable to maintain over time.
Better End Product
After learning how JetBrains utilizes dogfooding to make better software, let me also quote the engineering team of Facebook on the topic, from their Introducing Relay Hooks blog post:
But new does not mean untested: the rewritten facebook.com is entirely powered by Relay Hooks, and these APIs have been the recommended way to use Relay at Facebook since mid-2019.
So APIs that were released in March-2021 powered facebook.com over a year before the release - that's some confidence.
Let's look at another example, again, related to Facebook's engineering culture:
The only reason the bug got caught before rolling out to the public is the process of dogfooding. Less production bugs => better software => happier users. Sounds good to me.
In addition, I was surprised to find out the amount of successful projects that started as a "solution to my own problem", thus were inherently "dogfooded" - for instance, React and Tailwind CSS that actually powers the current version of this website.
Put the Content First
Creating content should be easy, and shouldn't be dependent on other tasks (e.g., a website redesign).
Publishing content should be frictionless.
As smooth the content creation pipeline is, the less excuses I have to not create - that's the magic of "making the right thing the easy thing".
Here are two products that implements this principle brilliantly:
- HEY World - just email to world@hey.com. Write + Send = Posted.
- Collected Notes - imagine being able to create a custom static website and update it's contents right from your phone without having to redeploy it. They are leveraging the "Incremental Static Regeneration" feature of Next.js to keep the static website and your Collected notes in sync.
Also, here are some blog posts that really got me thinking about this mental model:
- My blog is a digital garden, not a blog by Joel Hooks
- How to Build a Consistent Content Creation Habit by Jason Lengstorf
Closing Words
The combination of consuming and creating content, consistently over time, will make you a better developer.
Balance is key though, and it's not a 0 or 1 scenario, as:
- if you'd never consume, you'd stay in the same place.
- if you'd never create, then why did you just learn?
So to wrap up, inspired by this tweet from Guillermo Rauch, I'll try to close out with a call to action for every developer reading this:
Create content. Not too many. Mostly write, words and code.