Build
If I could give one piece of advice to anyone learning to program: build.
This advice might be most helpful to beginners. But it’s been valuable to me to revisit at different points in my career. In some ways, this post is for me.
Steve Martin once said the secret to success is to “be so good they can’t ignore you.” How do you get that good as a programmer? Build.
Which Operating System Is the Best for Programming?
Which operating system is the best for programming? This is a perennial question in code boot camps where I’ve taught. I think students see the choice as a fork in the road, and they want pick the right direction. I don’t think there is a right direction. When you’re starting out, my advice is to try each one and choose for yourself.
Autoformat Your Code
Auto-formatting code is good, and you should be doing it all the time. Why? It helps you write better code in real-time, preempt trivial discussions, and maybe even democratize programming.
How I Review Code
Code reviews are important on many teams. Do them well, and your code ships quickly and safely. Do them poorly, and your code ships slowly and riskily. I try to contribute good code reviews. In this post, I’ll share my process.
How I Make Sure I Understand a Feature Before Building
I think the most important factor in consistent delivery is understanding the work. When you understand the work, you build what the stakeholder wants, better and faster.
Don't Stay Stuck
We’ve all seen this: a frustrated coworker hunched over a computer after hours, flailing alone against some impossible bug. Go home, coworker. Don’t stay stuck.
On Disabling Tests
Today I want to talk about a common technique: disabling failing tests to allow a feature to ship. Maybe sometimes you gotta do it. But long-term I think it causes more problems than it solves.
Count to Ten
Here’s a trick that that has helped me as a programmer: before doing anything major, like killing a process, stop and count to ten.
Avoid Similar Variable Names
A convention I see in Ruby tests are variable names like this:
user_a = create(:user, last_log_in: today)
user_b = create(:user, last_log_in: last_year)