profile

Human Who Codes Newsletter

Nicholas C. Zakas

A once-per-month newsletter discussing topics important to senior-level software engineers, with a particular focus on frontend technology and leadership.

Featured Post

Human Who Codes Newsletter - JSR

Thoughts on JSR This past month saw the public release of the JavaScript Registry (JSR), a direct competitor to npm. The folks behind JSR are the same folks behind Deno, a direct competitor to Node.js. While it may not be surprising that a Node.js competitor would also create an npm competitor, Deno actually started with a theory that the JavaScript community didn’t need npm or any other package manager. In fact, in Ryan Dahl’s original talk announcing Deno, he explicitly mentioned npm as a...

17 days ago • 5 min read

Thoughts on Burnout As tech layoffs continue to fill up news sites, I’m reminded of how hard I used to work as a full-time employee at companies who could dispose of me without warning. Not only was I giving my all to my work, but then I was working on open source and books in my spare time. For years, I had very little downtime as I bounced from one task to the next, all the while pushing through burnout and not taking any time to recharge. It’s no surprise that I ended up so sick that I’ve...

about 1 month ago • 6 min read

Thoughts on Decision Documents When you start a new project or significant feature, it's likely that you've written a technical specification. Tech specs often lay out the overall design of a system or feature such that it can be implemented by following the spec. Tech specs answer the question, "how?" Knowing how to build something is useful, but there's an equally important question: “why?” That’s where decision documents come in. A decision document outlines the thought process around a...

2 months ago • 4 min read

Thoughts on Social Capital When I first became a tech lead, I was met with the same challenge as others before me: how do you convince people to do things? With my peers, it was about earning their trust and confidence. But with my manager and others in leadership it was a different story. Trust and confidence wasn’t enough. The most impassioned speeches didn’t do it. Technical analysis wasn’t enough. The answer was social capital. Social capital is a topic that isn’t discussed often but is...

4 months ago • 4 min read

Thoughts on GitHub Copilot About a month ago, I decided to turn on GitHub Copilot in Visual Studio Code and see what the latest version of the AI pair programmer was all about. I wasn’t quite sure what to expect. I’ve played with ChatGPT a little bit but found it more challenging to think of things to ask about than I expected. And whenever I did ask, I always felt underwhelmed by the response. So my expectations were set appropriately low for GitHub Copilot. Copilot integrates with Visual...

5 months ago • 5 min read

Thoughts on Opportunity Cost Every month my credit card bill comes in with a charge of around $0.29 USD from Amazon Web Services. Every month for at least the last three years. I have no idea what I still have running on AWS. At one point, I had a lot of my website infrastructure on AWS, but now, everything is on Netlify. You might be thinking to yourself, “That’s ridiculous, just go in and delete your AWS account!” And you’d be right, except this is a decision I’m purposely making. How long...

5 months ago • 4 min read

Thoughts on Open Source Drama This past month, David Heinemeier Hansson (DHH), announced that Turbo would be switching from TypeScript back to JavaScript. DHH is well-known for creating the Ruby on Rails web application framework, which has influenced the design and behavior of many other web applications frameworks ever since. The announcement was made the same day that the pull request removing TypeScript from the codebase was submitted and merged without responding to comments. DHH’s...

7 months ago • 5 min read

Thoughts on Code Spelunking My recent work on ESLint led me into a part of the code I didn’t write and am very unfamiliar with: code path analysis. Code path analysis is another type of static analysis that ESLint does that traces code execution throughout a program, constructing code paths and branches with every condition that it comes across. As a simple example, an “if” statement may cause a branch if the condition evaluates to true. Code path analysis is what lets ESLint determine if...

8 months ago • 5 min read

Thoughts on Leadership Roles As you progress in your software engineering career, your leadership skills become increasingly important. Even if you never transition to a management position, you are still likely to find yourself leading others whether that be formally through a role as tech lead or informally as a senior member of your team or company. While there are many different types of leadership there are five primary roles that you'll play. Teacher. You'll directly instruct someone...

9 months ago • 5 min read

Thoughts on Knowing Your Users Yesterday I had a very interesting experience at the Massachusetts Registry of Motor Vehicles (RMV). I just moved from California to Massachusetts, and as such, I needed to get a new driver's license and car registration. Going to the RMV is never any fun, the best you can do is cross your fingers and hope to get through it with a minimum of aggravation and (hopefully) avoid the meanest public sector workers. And of course, nothing ever goes completely according...

10 months ago • 6 min read
Share this page