On Quality, Speed, Practice: Software Development links for October 18th, 2009

Microsoft Research: Janie Chang: Exploding Software-Engineering Myths:

…there is one point that gives this software-engineering myth buster a great deal of satisfaction.

“I feel that we’ve closed the loop,” Nagappan says. “It started with Conway’s Law, which Brooks cited in The Mythical Man-Month; now, we can show that, yes, the design of the organization building the software system is as crucial as the system itself.”

Bruce Eckel: 5-2-03 Strong Typing vs. Strong Testing

Random Thoughts: TDD is not test-first. TDD is specify-first and test-last.

97 Things Every Programmer Should Know: Uncle Bob: Speed Kills:

If you want to be a professional, if you want to be a craftsman, then you must not rush. You must keep your code clean. So clean it barely needs comments.

Coding Horror: The Xanadu Dream:

Consider the reality of what’s actually possible, what people can understand, and what us all too human programmers can practically implement. It might not be the Xanadu you dreamed of — heck, it might even suck — but it’ll at least have a fighting chance of existing in reality rather than fantasy.

Dare Obasanjo: Duct Tape Programmers and the Culture of Complexity in Software Projects:

The urge the reduce the complexity of the tools used to solve software problems is one that every software developer should share. However even more important is reducing the complexity of the actual solutions that are delivered to your customers at the end of the day. End users can’t tell if you used complicated C++ techniques like template metaprogramming and mixins to build the application. They can tell when your application fails to solve their actual problems in a straightforward way or is so late to ship due to project delays that they lose interest in waiting for you to solve their problems.

“Programming is an exercise in overcoming how wrong you’ve been in the past.”

Kickingbear: “Blog Archive » Don’t Be A Dick: Compiled Flash and You.”:

Programming is an exercise in overcoming how wrong you’ve been in the past. At first you’ll overcome the syntax errors, then you’ll overcome the structural errors, and then you’ll come to align your code with the standards of a greater community and you’ll feel safe and like you’ve made it. You haven’t – you’re still wrong because you’re always wrong. You are playing a game you cannot win. And let’s face it – if it was a game you could win you’d not be playing at all.

via Arpit’s Web Quotes tumblr

Programming (software artisan/craftsman?) Links for October 7th, 2009 – Don’t be an engineer – be a craftsman, be an artisan

Andrew Hunt and David Thomas: The Art in Computer Programming

Design By Gravity: Don’t be a Coder, Engineer, or Developer: be a Software Artisan!

Linux Journal: Everything Your Professor Failed to Tell You About Functional Programming

Peter Seibel: Unit testing in Coders at Work

Programming Links for October 4th, 2009

Coworker and friend Kevin Fitzpatrick’s “The Masterless Apprenticeship” new series on learning and craftmanship. Absolutely fantastic.

rallydev: Jean Tabaka: Escalation is Killing Agile – Can We Please Stop It?

plope.com: You’re the Smartest Guy In The Room.. but please, try to restrain yourself.

org-babel: executable source code blocks in org-mode – I need to try this – it sounds amazing.

Programming Links for September 27, 2009

Kimberly Blessing: Craftmanship can change the world

Tim Bray: On Duct Tape: Slashdot thread

Dare Obasanjo: Duct Tape Programmers and the Culture of Complexity in Software Projects

Chris Smith: “What To Know Before Debating Type Systems”

Making Good Software: “Programmers top 10 sentences” (painfully funny)

When no one can run the software

naked capitalism: Another Lehman Mess: No One Can Run the Software:

I have no idea whether this estimate is still valid, but back in the days when I was working with O’Connor & Associates, the head of technology (and O’Connor had a well run technology operation) said the cost of documenting software (as in having the developers write up what they did in sufficient detail so a third party could maintain the it) was an additional 20%. It was very difficult to get traders to pay for it, ironically not so much for the hard dollar costs, but the fact that IT was resource constrained. The idea that the coders would spend a lot of time on leaving a paper trail, rather than getting to a business center’s urgent need, was a hard sell.

But Lehman illustrates what happens when you do what most places do, and skip documentation.

CMS Related Links for Wednesday, July 1st 2009

Content Here: Code moves forward. Content moves backward. – about the migration of code and content in various environments.

My Conference Presentation: “Just Put That In The Zip Code Field” – why content modeling is so important to a CMS project’s success, with evaluation and implementation tips. via Content Here.

IllustrativeProgramming

Martin Fowler coins a useful term: “Illustrative Programming”: languages that “fuse the execution of the program together with its definition”. “Illustrative programming requires information from the actual running of the program.” He uses Excel as an example.

I think MIT’s Scratch provides an example of this as well. I need to pass it along.

Two Links on Car Repairs, Crashes, and Infrastructure

Mr. Aaron Held: Designing a new Infrastructure is like buying a new car:

** You usually start this process due to a crash **

code: User gen data + no cache eviction = FAIL
car : SUV from the side + swerve = One less Stop sign.

Shelley Powers: Car Repair:

Car repair is not a linear progression, with incidents sweetly spaced so as to remind us, gently, that nothing lasts forever.

It is an aggregation of aggravation, where one failure begets another, in clumps timed to crest when your wallet is flattest.