20 rules of thumb for writing better software. Optimize for simplicity first Write code for humans, not computers Reading is more important than writing Any style is fine, as long as it’s black There should be one way to do it, but seriously this time Hide the sharp knives Changing the rules is better than adding exceptions Libraries are better...
College has been prescribed almost universally by the parents of the last ~40 years as the solution to life’s problems. We’ve been told it’s the way to land a good job and to make more money. But is it? I think that most college degrees these days commit a cardinal sin in the business world. College degrees are solutions in search of a problem....
I found this proposal for improvements to error handling in Go interesting, but still not something I’d be happy to see implemented. Allow me to clear up my thoughts on Go’s errors. Overall, I prefer how Go forces me to think about errors at every turn. When working in try/catch languages like JavaScript, I often easily forget which functions can...
The ideas behind the DevOps movements undeniably changed the software development world for the better - but by now, the term “DevOps” has lost all meaning. Sometimes an idea is so good, that you can’t argue with it. I’m not saying that the original idea behind “DevOps” was perfect - I’ve written about some of the specific issues I’ve seen. That...
Saying “no” is a hard skill to learn. It’s even harder if you tend to be a more introverted person. However, learning how to say “no” effectively can help your career. I certainly have struggled over the years with saying “no” as a programmer, after all, wouldn’t a good programmertm be able to do anything? Let’s look at some example scenarios...
What is a dark pattern? Last night I switched away from Verizon as my cell phone provider. The process of wrestling my phone number out of their grubby clutches and into control of my new carrier had me raving like a madman by the end of the night. I had a similar experience when trying to quit my local Vasa gym. While I’m sure you’re familiar...
It’s insane to me that almost every web developer in the world is working with web APIs, and yet the developer experience remains atrocious. Most applications I’ve worked on have a RESTful scheme, a GraphQL implementation, or a more strict gRPC system. I’ve used REST for the most part, probably just because it’s what I’m familiar with, but I hate...
I’ve been writing online for about 4 years now, and I’ve learned a bit about “SEO” - this blog and my side project’s blog (my side project being Boot.dev) now have combined traffic of about 100k visits each month. I’m sure there are a lot of people out there who know a lot more about growing relevant organic traffic for businesses than I do, but...
Working on a side project that aspires to be a real business has its ups and downs, especially after you’ve been at it for over 2 years. I’ve been hacking away at Boot.dev since March 2020, and for the most part, it’s been a ton of fun. However, at the end of the day, if you want your project to earn you enough cash that you can quit your day...
I grew up a faithful member of the Church of Jesus Christ of Latter-Day Saints, or the Mormon Church for short. I went to church weekly, paid tithing, and even served a 2-year proselyting and service mission in Paraguay from when I was 18 until I was 20. A few years after returning home, I ended up leaving the church after a long process of...
A few years ago I found Dev.to, and was delighted by the writing experience. It felt like a platform with all the conveniences of Medium’s writing tools but wasn’t missing the features that developers need, like code blocks and markdown. I still think Dev.to probably has the best writing experience of any third-party blogging platform for devs,...
I want to talk about a simple rule of thumb that has served me well over the years. If you have data that depends on other data, try not to store it. If you follow this rule, you can deliver your code faster, mainly because you will avoid lengthy and painful data migrations. The guiding principle behind this call to action is that data at rest is...
Luckily, I’ve met very few engineers in my career who are outright opposed to continuous deployment. That said, I have met some, and I think their hesitation is usually rooted in the myth that continuous deployment causes more disruptions to end-users than a batched release cycle. What is continuous deployment? Before we get into the nitty-gritty...
Agile development is fantastic and has made software development more fun and productive while simultaneously less punitive and slow. While I’m a fan of Agile, I’m not a huge fan of one of its more common interpretations - a Scrum-based workflow. Let’s discuss why I generally prefer a “Kanban” workflow to traditional Scrum. If you’ve read my...
I’m normally a fan of the opinionated rigidity within the Go toolchain. In fact, we use Go on the front and backend at Boot.dev, and we’ve found that it’s wonderful to have standardized formatting, vetting, and testing across the entire Go ecosystem. The first big criticism I’ve had with Go’s opinionated nature is with the way the Go toolchain...
We can’t optimize for everything when developing software, so we need to start with something, and that something should be simple code and simple architecture. For example, to over-optimize for speed in JavaScript, we might write our for-loops backwards to the detriment of readability. I believe we should optimize for simplicity first, and only...
We had applications at one of my previous companies that typically ran with ~2GB in memory at any given time, but by simply changing the order of some uint variables we managed to drop the memory usage to less than 1.4GB. Let’s dive into how inefficient field ordering in Go structs can have a huge impact on the memory footprint of a program. Our...
Managers who can’t code are an outdated artifact of corporate America circa 2005. The best managers that I’ve had spend ~80% of their time coding, architecting, or doing technical work that requires engineering experience. If your manager thinks coding and other technical work is “beneath” them then they need a dose of humble pie. Your...
Scrum is a buzzword, the virtue signal of choice for middle management in software organizations. If your goal as a manager is to implement a system by which you: Speed up the appearance of progress Pay for twice the amount of people you need Gather approximate data based on meaningless metrics Then Scrum is exactly what you’re looking for! “Oh...
“A Case for the Book of Mormon” is a book that is not freely available as far as I’m aware, but in this response, I will include relevant quotes for readers who don’t have access to the full book. Read on and I‘ll point out only the most egregious examples that the author, Tad R. Callister, makes in his book full of misleading logic and...
I’ve been writing code since 2010, first in Python, then primarily in Go and JS/TS. I’ve spent most of my career as a backend developer and data engineer. After a couple of years leading teams of Go developers, I’m now working full-time on Boot.dev and host the Backend Banter podcast. Get in touch Twitter Linkedin GitHub Email: lane at boot.dev...