software development

design patterns

Real Ultimate Programming Power

A common response to The Ferengi Programmer: From what I can see, the problem of “overly-rule-bound developers” is nowhere near the magnitude of the problem of “developers who don’t really have a clue.” The majority of developers do not suffer from too much design patterns, or too much SOLID,

By Jeff Atwood ·
Comments
Have Keyboard, Will Program

keyboard

Have Keyboard, Will Program

My beloved Microsoft Natural Keyboard 4000 has succumbed to the relentless pounding of my fingers. A moment of silence, please. OK, it still works, technically, but certain keys have become... unreliable. In particular, the semicolon key is now infuriatingly difficult to use. I don’t know if this is God’

By Jeff Atwood ·
Comments

strings

The Sad Tragedy of Micro-Optimization Theater

I’ll just come right out and say it: I love strings. As far as I’m concerned, there isn’t a problem that I can’t solve with a string and perhaps a regular expression or two. But maybe that’s just my lack of math skills talking. In

By Jeff Atwood ·
Comments

microsoft

The Ultimate Dogfooding Story

In software circles, dogfooding refers to the practice of using your own products. It was apparently popularized by Microsoft: The idea originated in television commercials for Alpo brand dog food; actor Lorne Greene would tout the benefits of the dog food, and then would say it’s so good that

By Jeff Atwood ·
Comments
A Scripter at Heart

programming languages

A Scripter at Heart

What’s the difference between a programming language and a scripting language? Is there even a difference at all? Larry Wall’s epic Programming is Hard, Let’s Go Scripting attempts to survey the scripting landscape and identify commonalities. When you go out to so-called primitive tribes and analyze their

By Jeff Atwood ·
Comments
If You Don’t Change the UI, Nobody Notices

ui design

If You Don’t Change the UI, Nobody Notices

I saw a screenshot a few days ago that made me think Windows 7 Beta might actually be worth checking out. That’s right, Microsoft finally improved the calculator app! We’ve been complaining for years that Microsoft ships new operating systems with the same boring old default applets the

By Jeff Atwood ·
Comments
Overnight Success: It Takes Years

programming languages

Overnight Success: It Takes Years

Paul Buchheit, the original lead developer of Gmail, notes that the success of Gmail was a long time in coming: We starting working on Gmail in August 2001. For a long time, almost everyone disliked it. Some people used it anyway because of the search, but they had endless complaints.

By Jeff Atwood ·
Comments
Are You Creating Micromanagement Zombies?

management

Are You Creating Micromanagement Zombies?

Do you manage other programmers, in any capacity? Then take Kathy Sierra’s quiz: 1. Do you pride yourself on being “on top of” the projects or your direct reports? Do you have a solid grasp of the details of every project? 2. Do you believe that you could perform

By Jeff Atwood ·
Comments
My Software Is Being Pirated

software development

My Software Is Being Pirated

If you’re at all familiar with computer history, you might have heard of Bill Gates’ famous 1976 letter to the Homebrew Computer Club. The letter was written to address rampant piracy of Bill’s earliest product, Altair BASIC, which was being passed around quite freely by hobbyists in paper

By Jeff Atwood ·
Comments
Pressing the Software Turbo Button

legacy hardware

Pressing the Software Turbo Button

Does anyone remember the Turbo Button from older IBM PC models? A leftover from machines of five to ten years ago, the turbo switch still remains on many cases, even though it serves no purpose. In the early days of the PC, there was only IBM, and there were only

By Jeff Atwood ·
Comments

logging

The Problem With Logging

A recent Stack Overflow post described one programmer’s logging style. Here’s what he logs: INFO Level * The start and end of the method * The start and end of any major loops * The start of any major case/switch statements DEBUG Level * Any parameters passed into the method * Any

By Jeff Atwood ·
Comments