How I built a modern website in 2021
Articles like this are equal parts fascinating and worrisome. Fascinating because as a developer I love to see elaborate systems built to accomplish a goal. Worrisome because as a manager I have alarm bells going off in my head when I start reading about systems that get so complex that they have to add even more complexity just to tame problems introduced by earlier complexity:<p>&gt; First it determines all content changes that occurred between the commit that&#x27;s being built and the commit of the last time there was a refresh (that value is stored in redis and my server exposes an endpoint for my action to retrieve it). If any of the changed files were in the .&#x2F;content directory, then the action makes an authenticated POST request to another endpoint on my server with all the content files that were changed. Then my server retrieves all the content from the GitHub API, recompiles the MDX pages, and pushes the update to the Redis cache which Fly.io automatically propagates to the other regions.<p>&gt; This reduces what used to take 10-25 minutes down to 8 seconds<p>If my team reached the point that simple website deploys were taking 25 minutes or required long chains of API calls between bouncing between various internal and external services, I’d start to worry about what sort of complexity we’ve built into our stack. On one hand their solution is neat, but on the other hand I can’t help but worry about how we got here in the first place. More importantly: Why? What does this complexity give us that we couldn&#x27;t achieve with a simpler solution? Imagine being asked to take over this project and having to understand the long chain of events required just to get new content into the website.<p>I understand these articles are meant to be a showcase of technologies and how they can be used, but I’ve also seen a lot of otherwise simple webdev projects spiral into unnecessarily complex projects like this. I&#x27;ve also mentored a lot of juniors who think their companies are doing something wrong if they&#x27;re not building complexity-first web projects or they&#x27;re not using a long checklist of the hottest webdev tools.<p>These complex projects are fun to work on and learn, but it becomes a huge burden to maintain. The webdev world moves so fast that a project built on 15 different trendy projects will inevitably have some of them fall out of favor or become deprecated each year. Any long-term project like this will inevitably start losing time to constant refactoring and rebuilding around the newest trendy components each year.<p>It’s critically important for these teams to have some oversight in the form of someone asking pointed questions about whether or not each additional layer of complexity is truly necessary. Some times the most elegant solutions are also the most painful maintenance nightmares down the road as the original architects cycle out of the company.<p>Side note: As much as I appreciate all of the great free learning resources made available by authors like this, I can&#x27;t get past the inherent conflict of interest involved with educators advocating for complex projects and then selling learning materials to understand them. This seems especially common in the webdev world where the popular tooling changes from year to year and can require a lot of learning to get it right. Sure enough, this blog post ends with a call to purchase tickets to learning workshops to understand what&#x27;s going on here:<p>&gt; It&#x27;s been a ton of fun and I&#x27;m excited to put my learnings into blog posts and workshops to teach you the specifics of how I did this stuff so you can do it too. In fact, I&#x27;ve already scheduled some workshops for you to attend! Pick up tickets now.<p>As always: Caveat emptor. Complex projects are fun, but don&#x27;t assume that a modern website must be complex.