programming concepts

blogging

10 Years of Coding Horror

In 2007, I was offered $120,000 to buy this blog outright. I was sorely tempted, because that's a lot of money. I had to think about it for a week. Ultimately I decided that my blog was an integral part of who I was, and who I

By Jeff Atwood ·
Comments

software development

Civilized Discourse Construction Kit

Occasionally, startups will ask me for advice. That's a shame, because I am a terrible person to ask for advice. The conversation usually goes something like this: We'd love to get your expert advice on our thing. I probably don't use your thing. Even

By Jeff Atwood ·
Comments

software development

How to Stop Sucking and Be Awesome Instead

I've been fortunate to have some measure of success in my life, primarily through this very blog over the last eight years, and in creating Stack Overflow and Stack Exchange over the last four years. With the birth of our twin girls, I've had a few

By Jeff Atwood ·
Comments

programming concepts

So You Want to be a Programmer

I didn't intend for Please Don't Learn to Code to be so controversial, but it seemed to strike a nerve. Apparently a significant percentage of readers stopped reading at the title. So I will open with my own story. I think you'll find it

By Jeff Atwood ·
Comments

programming concepts

Rubber Duck Problem Solving

At Stack Exchange, we insist that people who ask questions put some effort into their question, and we're kind of jerks about it. That is, when you set out to ask a question, you should … * Describe what's happening in sufficient detail that we can follow along.

By Jeff Atwood ·
Comments

programming concepts

The Computer Performance Shell Game

The performance of any computer is akin to a shell game. The computer performance shell game, also known as "find the bottleneck", is always played between these four resources: * CPU * Disk * Network * Memory At any given moment, your computer is waiting for some operation to complete on one

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 [http://en.wikipedia.org/wiki/Eating_your_own_dog_food]: > The idea originated in television commercials for Alpo brand dog food; actor Lorne Greene would tout the benefits of the

By Jeff Atwood ·
Comments

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

By Jeff Atwood ·
Comments

software development

Tending Your Software Garden

Software: do you write it like a book, grow it like a plant, accrete it like a pearl, or construct it like a building? As Steve McConnell notes in Code Complete 2, there's no shortage of software development metaphors: A confusing abundance of metaphors has grown up around

By Jeff Atwood ·
Comments

programming practice

The Ultimate Code Kata

As I was paging through Steve Yegge's voluminous body of work recently, I was struck by a 2005 entry on practicing programming: Contrary to what you might believe, merely doing your job every day doesn't qualify as real practice. Going to meetings isn't practicing

By Jeff Atwood ·
Comments

unicode

I {entity} Unicode

These are available as bumper stickers and t-shirts: Here's my rhetorical question to you: why is this funny? * The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) * There Ain't No Such Thing as Plain Text * On the Goodness

By Jeff Atwood ·
Comments

software development

Is Eeyore Designing Your Software?

This classic Eric Lippert post [http://blogs.msdn.com/ericlippert/archive/2003/10/28/53298.aspx] describes, in excruciating, painful detail, exactly how much work it takes to add a single ChangeLightBulbWindowHandleEx function to a codebase at Microsoft: > One dev to spend five minutes implementing ChangeLightBulbWindowHandleEx.One program manager

By Jeff Atwood ·
Comments