Random thoughts and writings.

8 Things Every New Programmer Should Know

1. It doesn't get easier; you get smarter. Programming is not a simple endeavor. Requirements change in the middle of projects; technology advances quickly and ruthlessly; customers are quick to judge and slow to explain. Programming does not get easier. Rather, we programmers get smarter. The first time you encounter a particular bug, you're a failure until you stumble upon the solution, at which point you promptly become a god. The trick is this: the next time you find that... Read more >

Become Your Teammates' Rubber Duck

You may be familiar with the term rubber duck debugging. This is the idea that in order to help a programmer solve a problem, s/he should explain it to some kind of inanimate object (most commonly a rubber duck), because in the process of explaining the problem they will often solve the problem. I'm finding that the best way to help people with their problems is to become that rubber duck. Though, perhaps, a slightly smaller one. Image is... Read more >

How Much "Magic" Are We Comfortable With?

Our Continuous Integration and Continuous Deployment (CI/CD) build system (that we recently implemented) is truly a joy to behold, but it's also basically magic from my perspective. Check some code in, wait a few minutes, something happens, and then BOOM it's on the dev server. I know that it works, but I don't know exactly how. Should I take the time and effort to find out? I'm a completionist, which means I'm also a naturally inquisitive person. I want... Read more >

"I Don't Trust Anything That We Didn't Build"

The problems started small, as they often do. But as we've seen many times before, lots of small problems in quick succession tend to make one big problem. In this case, the problem got big fast. It started off easy enough: read the big report, find the bug, fix it, the usual. Our bug-tracking team located the source of the issue right away, and my team set about trying to work out the fix. We found the data source that... Read more >

In Praise of the Junior Developer

"She's a project," my boss said to me. "She's green, and even though she's been working here for several months, you should consider her like a brand new college graduate. She'll need a lot of oversight, a lot of hand-holding and you'll still be expected to finish your projects on time." "Excellent," I said. I'm not sure why my boss felt the need to warn me. Melissa is a new, green developer. I know... Read more >

Show Up, Kick Ass, Go Home

I refuse to work overtime. In the five years I've been at my current company, I've worked overtime exactly once, and that was because our server was literally on fire. Overtime is just not worth it to me. I'm a salaried employee. A rather well-paid salaried employee, at least compared to many other professions. In the United States where I live (where I am classified as an "exempt" employee), that means that I will not be paid for... Read more >

Code Is Ephemeral, Concepts Are Eternal

Lots of people ask me things like "should I learn MVC or Web API first?" "HTML or Javascript?" "Angular or React?" etc. After all, there's only so many hours in the day, and what time we have to spend learning is often limited by other factors (energy, work policies, etc.) This leads to the most common question I get from junior programmers: What framework, stack, or language should I spend my precious time learning?... Read more >

15 Fundamental Laws of the Internet

(AKA How To Sound Smart In Your Next Online Rant) Wiio's Law What is the internet? The internet is, at heart, a communication tool, a way for disparate people across the globe to spread ideas, opinions, and generally communicate with each other more easily than has ever been possible. Unfortunately, communication is hard. Finnish academic Osmo Antero Wiio formulated a serious of humorous laws that succinctly explain how communication works between humans; specifically, that it doesn't. The set of laws... Read more >
/* * * DON'T EDIT BELOW THIS LINE * * */ (function () { var s = document.createElement('script'); s.async = true; s.type = 'text/javascript'; s.src = '//' + disqus_shortname + ''; (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s); }());