technical practices

error codes

Error Codes Must Die

A recent Scott Hanselman post described a problem he had with Windows Defender: Defender was unable to update my signatures, instead throwing a COM-ish 0x8024402c. Others are getting Error 1609 and still others 0x80240022. This isn’t an isolated incident. The latest release candidate of Team Foundation Server also returns

By Jeff Atwood ·
Comments

acronyms

Don’t Acronymize Your Users

As a commenter noted in my previous post on how not to give a presentation, I have another complaint about software development presentations that I didn’t list. They’re chock full of meaningless acronyms. SOAP, BI, SOA, RDBMS, SGML, CRUD, RMS, RDBMS, XML, ORM, FAQ. I appreciate the need

By Jeff Atwood ·
Comments

usability

Google is the Help Menu

Jensen Harris recently cited some Microsoft Office usability research which produced a rather counter-intuitive result: One of the most interesting epiphanies I’ve had over the last few years seems on the surface like a paradox: “help” in Office is mostly used by experts and enthusiasts. How can this be?

By Jeff Atwood ·
Comments

programming languages

Dependency Avoidance

Have you ever worked with developers that were charter members of the third-party-control-of-the-month club? You know the kind – they never met a third party control they didn’t like. They spend all day trolling downloads and experimenting with every tool listed on The Daily Grind. Which means deploying your solution

By Jeff Atwood ·
Comments

software development concepts

Seven Habits of Highly Effective Programmers

Philip Chu’s Seven Habits of Highly Effective Programmers is witty, eloquent, and peppered with illustrative real world anecdotes: Upon joining an early-stage startup called Neomar, I found myself in two months of design meetings for a wireless internet portal that was due to launch in six months. Eventually we

By Jeff Atwood ·
Comments

case sensitivity

The Case For Case Insensitivity

One of the most pernicious problems with C-based languages is that they’re case-sensitive. While this decision may have made sense in 1972 when the language was created, one wonders why the sins of Kernighan and Ritchie have been blindly perpetuated for the last thirty-three years. I realize this is

By Jeff Atwood ·
Comments

documentation

Avoiding Undocumentation

Have you ever noticed that much of the online MSDN .NET framework help is... not helpful? Take the the MSDN help for the IBindingList.AddIndex method, for example: Scott Swigart calls this undocumentation, and elaborates further in his blog post: This is an example where quacking like a duck doesn’

By Jeff Atwood ·
Comments

programming languages

Conversations with Erich Gamma

Artima has another great interview series, this time with Erich Gamma. You know, Erich Gamma: Gang of Four, JUnit, Eclipse. As you might expect from such a notable developer, it’s full of great advice. Like this section on avoiding frameworkitis: Frameworkitis is the disease that a framework wants to

By Jeff Atwood ·
Comments

programming languages

Software Apprenticeship

In Software Training Sucks: Why We Need to Roll it Back 1,000 Years, Rob Walling makes a compelling argument for abandoning traditional training classes in favor of apprenticeships: Why not use the time-tested approach of trades that have been doing it for years? Let’s take an electrical apprenticeship

By Jeff Atwood ·
Comments

software development concepts

In Defense of Verbosity

During the fantastic Monad session at PDC 2005,* Jeffrey Snover and Jim Truher illustrated the tradeoff between verbosity and conciseness: cp c:apples c:oranges -fo -r copy-item c:apples c:oranges -force -recurse Monad has a ton of aliases for common commands (e.g., echo is the same as

By Jeff Atwood ·
Comments

lazy programming

How to be Lazy, Dumb, and Successful

Philipp Lenssen agrees that inspired laziness is a desirable trait for software developers: ... only lazy programmers will want to write the kind of tools that might replace them in the end. Only a lazy programmer will avoid writing monotonous, repetitive code. The tools and processes inspired by laziness speed up

By Jeff Atwood ·
Comments

software development concepts

Does Having The Best Programmers Really Matter?

Joel has a lengthy entry in which he asks, does having the “best programmers” really matter? This is something I’ve talked about before: extreme skill disparity is unique to the profession of software development. The odds of working with a genius or a jackass on any given job are

By Jeff Atwood ·
Comments