Agile Software Development

I never got around to post the follow-up article on Lean and how it relates to software engineering. Now, over 7 months and a huge scandal that made people skeptical about Toyota’s lean manufacturing later, here’s the post on Agile software development.

Continue reading “Agile Software Development”

"Thank You" Considered Harmful

what got you here...Habit #17 Failing to express gratitude

Dale Carnegie liked to say that the two sweetest words in the English language were a person’s first and last name. He maintained that using them liberally in conversation was the surest way to connect with a person and disarm them. After all, who doesn’t like to hear their name on other people’s list?

I’m not sure Dale was right. To me, the sweetest words in the language are “Thank You.” They’re not only disarming and pleasant to the ear, but they help us avoid so many problems. Like apologizing, thanking is a magical super-gesture of interpersonal relations. It’s what you say when you have nothing nice to say—and it will never annoy the person hearing it.

-from “The Twenty Habits That Hold You Back from the Top” from the book “What Got You Here Won’t Get You There”

That book still lies unfinished on my desk because of this section alone. Out of all the business and human relations books I’ve read in the past year, none has been so naive, so misguided, so “let’s feed the fantasies of middle managers everywhere!” than that book, and this section highlights it so well.

Continue reading “"Thank You" Considered Harmful”

Things To Do This New Year: Software Engineering

You know the drill.

Learn a new language to complement your programming skills.

It would be a typical New Year’s resolution for developers to learn a new programming language this year. But seriously, what’s the point of learning C# when you’re a Java developer (or vice versa)?

What you should be striving for are programming languages that are orthogonal to your current skill set. If you’re an enterprise developer used to statically typed OO programming languages, try dynamic languages like Python and Ruby. If you’re already using dynamic languages, try your hands on functional programming like Erlang and Scala. Same goes for platforms: web developers might want try programming in RIAs.

The point here isn’t to add bullet points to your resume, but to have different ways of looking at problems, like adding new tools to a toolbox. For example, had I not been aware of the basics of functional programming, I might have tried to force traditional Java-like synchronization techniques in my Google Wave gadgets instead of the more elegant FP approach.

Just a short plugging:

Rapid Development‘s Classic Mistakes (in software development) was a real eye-opener for me when I read it four years ago. Even though it was written almost a decade ago, a lot of the mistakes listed there were still present in my company.

To keep the list up to date, Construx (Steve McConnell’s company) is now holding the Classic Mistakes survey for 2010. Help update the study by taking the survey here.

Pimp My Architecture

Pimp my Architecture

There were a bunch of great presentations over at InfoQ last week. My personal favorite is Dan North’s Pimp My Architecture, a story of how he rescued a (possibly hypothetical) project from being a “shanty town”.

It’s a bit high level so you won’t be able to get some concrete steps from it, but project managers and tech leads would probably get some good tips along the way.