technical practices

programming concepts

The Monopoly Interview

Reginald Braithwaite’s favorite interview question is an offbeat one: sketch out a software design to referee the game Monopoly.* I think it’s a valid design exercise which neatly skirts the puzzle question trap. But more importantly, it’s fun. Interviews are a terror for the interviewee. And they’

By Jeff Atwood ·
Comments

programming languages

Viva la Programming Revolution!

Jonathan Edwards’ Manifesto of the Programmer Liberation Front is an inspiring call to arms for programmers who are fed up with the status quo of Java and C#. Maybe it is time to open your window, stick your head out and yell, “I’m as mad as hell and I&

By Jeff Atwood ·
Comments

software maintenance

The Noble Art of Maintenance Programming

Mention the words “maintenance programming” to a group of developers and they’ll, to a man (or woman), recoil in horror. Maintenance programming is widely viewed as janitorial work. But maybe that’s an unfair characterization. In Software Conflict 2.0 : The Art and Science of Software Engineering, Robert L.

By Jeff Atwood ·
Comments

refactoring

Code Smells

I’m often asked why the book Refactoring isn’t included in my recommended developer reading list. Although I own the book, and I’ve read it twice, I felt it was too prescriptive – if you see (x), then you must do (y). Any programmer worth his or her salt

By Jeff Atwood ·
Comments

software development concepts

Egoless Programming: You Are Not Your Job

The concept of egoless programming, as described by Johanna Rothman: Twenty-five years ago, Jerry Weinberg published The Psychology of Computer Programming. I discovered the book in 1977, and decided I wanted to work as an egoless software engineer, not as a radio disk jockey. Egoless programming occurs when a technical

By Jeff Atwood ·
Comments

egoless programming

The Ten Commandments of Egoless Programming

The Ten Commandments of Egoless Programming, as originally established in Jerry Weinberg’s book The Psychology of Computer Programming: 1. Understand and accept that you will make mistakes. The point is to find them early, before they make it into production. Fortunately, except for the few of us developing rocket

By Jeff Atwood ·
Comments

software development concepts

Following Instructions for Dummies

James Bach responded to my recent post, Are You Following the Instructions on the Paint Can?, with Studying Jeff Atwood’s Paint Can. Being under Bach’8596s intensive analytical microscope feels a lot like an interview with Hannibal Lecter. It’s flattering, but it’s also a little scary. You

By Jeff Atwood ·
Comments

software development concepts

Fail Early, Fail Often

Scott Hanselman thinks signing your name with a bunch of certifications is gauche: If it’s silly to suggest putting my SATs on my resume, why is… Scott Hanselman, MCSD, MCT, MCP, MC*.* … reasonable? Having a cert means you have a capacity to hold lots of technical stuff in your

By Jeff Atwood ·
Comments

programming languages

Keeping Up and “Just In Time” Learning

Do you ever feel like you’re buried under umpteen zillion backlogged emails, feeds, books, articles, journals, magazines, and printouts? Do you ever feel that you’re hopelessly behind, with so much new stuff created every day that you can never possibly hope to keep up? Well, you’re not

By Jeff Atwood ·
Comments

best practices

Best Practices and Puffer Fish

James Bach’s seminal rant, No Best Practices, is a great reality check for architecture astronaut rhetoric. It’s worth revisiting even if you’ve read it before. Some might say Bach’s viewpoint is pessimistic, even cynical: The way to get rich in this world is mainly by making

By Jeff Atwood ·
Comments

programming languages

How Not To Become a Rockstar Programmer

Tom’s criticism of Mikael Grey’s article, How to Become a Rock Star Programmer, starts off promisingly enough: Let’s start with the title. There is no such thing as a “Rock Star Programmer,” so if you want to become one, you already have problems that reading a blog

By Jeff Atwood ·
Comments

software development

Everything You Know Will Be Obsolete in Five Years

One of the peculiarities of software development is how rapidly knowledge becomes obsolete. Dan Appleman cited a parable from Lewis Carroll’s Through the Looking Glass which illustrates this wonderfully: ’Now! Now!’ cried the Queen. ’Faster! Faster!’ And they went so fast that at last they seemed to skim through

By Jeff Atwood ·
Comments