programming practices

software development concepts

The Eight Levels of Programmers

Have you ever gotten that classic job interview question, "where do you see yourself in five years?" When asked, I'm always mentally transported back to a certain Twisted Sister video from 1984. I want you to tell me – no, better yet, stand up and tell the

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

By Jeff Atwood ·
Comments

user experience

The Perils of FUI: Fake User Interface

As a software developer, tell me if you've ever done this: 1. Taken a screenshot of something on the desktop 2. Opened it in a graphics program 3. Gone off to work on something else 4. Upon returning to your computer, attempted to click on the screenshot as

By Jeff Atwood ·
Comments

software development

The Ultimate Software Gold Plating

Some developers love to gold plate their software. There are various shades of .. er, gold, I guess, but it's usually considered wasteful to fritter away time gold plating old code in the face of new features that need to be implemented, or old bugs that could be squashed.

By Jeff Atwood ·
Comments

programming practices

The Problem With Code Folding

When you join a team, it's important to bend your preferences a little to accommodate the generally accepted coding practices of that team. Not everyone has to agree on every miniscule detail of the code, of course, but it's a good idea to dicuss it with

By Jeff Atwood ·
Comments

privacy

A Question of Programming Ethics

From the ACM Code of Ethics [http://www.acm.org/about/code-of-ethics]:> As an ACM member I will 1. Contribute to society and human well-being. 2. Avoid harm to others. 3. Be honest and trustworthy. 4. Be fair and take action not to discriminate. 5. Honor property rights including

By Jeff Atwood ·
Comments

programming languages

I'd Consider That Harmful, Too

One of the seminal papers in computer science is Edsger Dijkstra's 1968 paper GOTO Considered Harmful. For a number of years I have been familiar with the observation that the quality of programmers is a decreasing function of the density of go to statements in the programs they

By Jeff Atwood ·
Comments

programming practices

In Programming, One Is The Loneliest Number

Is software development an activity preferred by anti-social, misanthropic individuals who'd rather deal with computers than other people? If so, does it then follow that all software projects are best performed by a single person, working alone? The answer to the first question may be a reluctant yes,

By Jeff Atwood ·
Comments

programming practices

URL Rewriting to Prevent Duplicate URLs

As a software developer, you may be familiar with the DRY principle: don't repeat yourself. It's absolute bedrock in software engineering, and it's covered beautifully in The Pragmatic Programmer, and even more succinctly in this brief IEEE software article (pdf). If you haven'

By Jeff Atwood ·
Comments

agile

Is Software Development Like Manufacturing?

We've adopted Scrum for all of our software development at Vertigo. Although I'm totally in favor of Anything But Waterfall, Scrum is an unfortunate name: 1. It's two additional characters away from a term for male genitalia. 2. The term is derived from rugby,

By Jeff Atwood ·
Comments

properties

Properties vs. Public Variables

I occasionally see code with properties like this: private int name; public int Name {     get { return name; }     set { name = value; } } As I see it, there are three things to consider here. 1. When is a property not a property? When it's a glorified public variable. Why waste everyone&

By Jeff Atwood ·
Comments

software development

What is "Modern Software Development"

Joel Spolsky came up with a twelve-item checklist [http://www.joelonsoftware.com/articles/fog0000000043.html] in August, 2000 that provides a rough measure of – in his words – "how good a software team is": 1. Do you use source control? 2. Can you make a build in one step?

By Jeff Atwood ·
Comments