software development concepts

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

software development concepts

The Positive Impact of Negative Thinking

In Waltzing with Bears: Managing Risk on Software Projects, DeMarco and Lister outline the dangers of penalizing negative thinking: Once you’ve identified and quantified these risks, they can be managed just like the others. But getting them out on the table can be a problem. The culture of our

By Jeff Atwood ·
Comments

security

The Six Dumbest Ideas in Computer Security

Marcus Ranum, the inventor of the proxy firewall, brilliantly condenses why many security efforts are doomed from the start: they fall prey to the The Six Dumbest Ideas in Computer Security : 1. Default Permit Also known as “on by default.” This one is huge, and it alone is why the

By Jeff Atwood ·
Comments
The Spolsky-Babbitt Connection

software development concepts

The Spolsky-Babbitt Connection

I noticed something strange in a Windows ME screenshot embedded in a Joel Spolsky article I linked yesterday: Notice the Qantas icons? Those are shortcuts to a now-defunct unix machine at Joel’s company, Fog Creek Software. You can find evidence of it at the bottom of this forum post

By Jeff Atwood ·
Comments
Managed Code Analysis Tools

software development concepts

Managed Code Analysis Tools

Navigating a new codebase can feel like like landing on an alien planet. That’s where static code analysis tools come in handy; they’re akin to software tricorders. They provide a general snapshot of unfamiliar code: Is it normal? Is it unusual? Is it dangerous?* There’s an element

By Jeff Atwood ·
Comments
Head First Design Patterns

software development concepts

Head First Design Patterns

I’m beginning to wonder if the book Head First Design Patterns would be better titled Ass Backwards Design Patterns. Here are some quotes from pages 594 and 595 of this 629 page book: First of all, when you design, solve things in the simplest way possible. Your goal should

By Jeff Atwood ·
Comments

user experience

The User Interface Is The Application

Shawn Burke’s post Shippin’ Ain’t Easy (but somebody gotta do it) explains why you have to resist change at the end of a project, no matter how justifiable and rational the reasons may be. Even the smallest change has a real risk of introducing additional bugs. The first

By Jeff Atwood ·
Comments

.net

Clean Sources Plus

Omar Shahine’s Clean Sources is a nifty little right-click app for .NET developers: This application does one thing. It adds an explorer shell menu to folders that when selected will recursively delete the contents of the bin, obj and setup folders. If you have a .NET project that you

By Jeff Atwood ·
Comments

programming languages

Are All Programming Languages The Same?

There’s a chart in Code Complete that compares the productivity of working in different languages: Programmers working with high-level languages achieve better productivity and quality than those working with lower-level languages. Languages such as C++, Java, Smalltalk, and Visual Basic have been credited with improving productivity, reliability, and comprehensibility

By Jeff Atwood ·
Comments

security

Nasty Software Hacks and Intel’s CPUID

We were discussing nasty software hacks today at lunch. The worst hacks are always in software, but those software hacks have an insidious tendency to seep into the hardware, too. I was reminded of Intel’s infamous CPUID hack: Prior to the Pentium, software had to jump through elaborate loops

By Jeff Atwood ·
Comments