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.

On the future of CMS (is NPR actually there already?) – CMS Links for October 18th, 2009 –

Justin Cormack recently completed a three part series on the future of CMS that I think nails it. I might be biased because it’s what we’ve been building towards at CIM for the past few years. Go read: “CMS technology choices”, “Content Enabled Vertical Applications and taking the CMS apart”, and “Content enabled vertical applications (composite content applications) – executive briefing” – quote from the second link:

At the application layer, as Stéphane says, everything is a mashup, content from different systems, content from other APIs, this is the we application layer. It needs to be content aware, very much so, but it needs to be an application development environment. This is where most people will see the value added in the content management business, although in fact the value here is in implementation, design and integration services, not the technology itself. Application development environments no longer make a lot of money, and again they are dominated by open source (think Java, Eclipse, JBoss, Django).

Once you take out content infrastructure and application development, and the other tools like search, workflow, there is a core of tools for working with content, to support reuse, refactoring, cleaning, import and export, that one might call a Content Workbench. There is a lot of potential value if these types of tools are the value added end of the business, as they can differentiate vendors and add value. Interfaces for merging changes and so on would be part of this type of toolkit. This is the stuff where good UX means timesaving for content workers, but it is difficult to build on a customized per-project basis, so this still offers value from a particular vendor.

Overall then we see a picture where the monolithic CMS starts to break apart into infrastructure, application and toolkit layers, that can perhaps gradually be mixed and matched together to build content applications. We are just seeing the beginnings of this now.

Peter Monks had a reply to his pieces here: The Future of CMS Technologies.

Meanwhile, NPR is live with a CMS solution that resembles this. Read NPR’s Daniel Jacobson’s guest post on Programmable Web: “COPE: Create Once, Publish Everywhere”.

Content Here’s Seth Gottlieb explains how this approach might be too much for those who need less capability still, he concludes:

…at the very least, every publisher needs to start thinking on this level: creating and storing content in presentation neutral way to keep options open.

This conversation was kicked off by Julian Wraith. Check there for more.

I plan on doing my own round-up, as there are many, many interesting posts worthy of sharing. In addition, I think I’ll share some of my own thoughts as well. Would be great to contribute to the discussion Julian Wraith started instead of staying meta for once 🙂

Who said conversation doesn’t happen across bloggers anymore ?

And on another note, the CMS Myth just had its second anniversary: Two Years On: Still Puncturing Myths & Taking Names

“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

Comic books dealing with mental illness

Darryl Cunningham is a comic book creator, blogger, sculptor and more. He also spent time working in a psychiatric ward.

He is chronicling his experience working in a psychiatric ward in a new graphic novel titled “Psychiatric Tales”. He’s been posting draft chapters of of the book on his blog over the past year.

Every chapter has been speaking to me on one level or another, but I want to call out two for now: “It Could Be You” and “People With Mental Illness Enhance Our Lives”

Along a similar vein is “LOGICOMIX”, a graphic novel documenting the experience of some of the largest names in mathematics, and what they sacrificed to make their contributions, including, sometimes, their mental health.

It’s too easy to go for sound bites and miss the real story – on re-reading “The Freak Revolution Manifesto”

I am guilty of living in the place “The Freak Manifesto” is meant to reach.

Consuming news media 24-7. Not just CNN, but news on every station I can tune into. All the while subscribing to over a hundred RSS feeds tracking stories from innumerable sources on subjects ranging from software engineering to politics, to the future of news journalism, to comic books. Facebook. Twitter. Blogging. Email. Cycle, rinse, repeat.

I feel constantly at odds with myself over the time I spend at home, at work, trying to sharpen the saw and keep myself open friends, family, new experiences. Be a good dad. A good husband. A good co-worker. A good brother, a good friend. Amidst this, trying to figure out how to make a positive change in the world some how, never feeling as though I’ve repaid my debts to those who took a chance on me.

I pretty much feel like I serve all my cares poorly, the guitar on the wall gathering dust.

In that original context I reviewed “The Freak Manifesto”, and in that context I absorbed the headings and pull quotes and missed the greater context of the whole document, which is a bit of a rallying cry for people such as myself, and probably you too if you can relate (I’m sure you can).

Upon re-reading, I don’t find myself agreeing with just 6 of the 44 pages – those that prescribe disconnecting from the control paradigm. It’s not the goal I have a problem with – the goal is admirable and something to work towards – it’s the how.

For example, this section rightly calls out the ills in public education and then suggests home schooling as the solution. I want to *fix* public education, not withdraw from it. A very radical choice here would be to encourage those not attending parent teacher meetings and school board meetings to get involved. Be heard. Fight loud. Hopefully we will live up to this when my daughter starts school – public or otherwise.

Honestly, we (Richelle, my wife, and I) might be looking back at this and realize our choices were incorrect. So our views on this are liable to change over time to those more in agreement with the paper or maybe in some other direction. Parenting is definitively learn-as-you-go and we’re going to adjust as we do so for what works Emma, our daughter.

Then there is the section also advocates opting out of politics. My generation had already done that prior to 2000 and look what happened – George Bush Jr. was elected. My generations’ belief that politics were inconsequential had real consequence. No one thinks the last ten years would have been the same had Al Gore been president. I’m happy to see my generation opting in now. Hopefully its not too late. Sure politics is a game within a game as the paper rightly posits. But change is more likely to happen when there are those on the inside as well as out fighting for it.

And its that last thought that carries for me. Read it. Be challenged. Think.

Don’t do like I did – don’t skim. Read it and let it stir. The world needs people awake and aware. The only way that happens is by confronting ourselves with things that don’t fit our comfort zones, and instead of violently screaming out ‘You Lie!’ – taking a deep breath and recognizing not only are there different points of view, but maybe they have something to teach us. That’s what the “The Freak Manifesto” ultimately is about to me.

I owe the authors an apology for that original interpretation – Thank you for writing it and getting it out here.

Economic situation leads one to source of relief: Metal

NYTimes: Josh Max: “Dance With the Devil”:

…I was carried off into a boiling sonic river of brutal, obscene, blasphemous noise that blasted me like a cannon out of my depressed cave and directly into the fury I was experiencing each waking day. For the next three weeks, all other music disappeared from my world. I listened to “Piece by Piece” as I dropped off to sleep at night, and the first thing I did in the morning, en route to the john, was cue up “Angel of Death.” Any gap of spare time during the day, no matter how small, was filled with “Post Mortem,” “Epidemic,” “Jesus Saves” and especially “Raining Blood.” Every other type of music seemed silly, trivial, light and useless.I didn’t bother listening very closely to the lyrics, either, despite my lifelong Ira Gershwin obsession. In fact, the less I could understand, the better. All I connected with were the screams.

After 30 days of Slayer saturation, I downloaded a blizzard of Death Metal onto a single iPod; 171 songs. Pantera. Anthrax. Venom. Cannibal Corpse. Devil Driver. If I previewed a band at iTunes and there wasn’t a WARNING: EXPLICIT label there or the tempo wasn’t insanely fast, I wasn’t interested.

Something was happening beyond the mind, the emotions and the circumstances. Music, for the first time in my life, was penetrating my body and shaking it. The force of Death Metal moved me out of my mind and into my arms, legs, head and belly. It compelled me to pull over in the car and bang the steering wheel, to run faster and farther in the freezing cold, to lift more weights and smash the heavy bag at the gym with renewed ferocity, and massively upped the intensity in everything I said, did and felt.

It also made me feel powerful enough to fight back against the injustice the world had delivered to me, to meet and embrace that inner demon who had always been told, since I was a little boy, “Smile.” “Be nice.” “Look at the bright side.” “Be reasonable.” “Don’t be angry.”

Make sure to read the whole piece and reader reactions.

Old classic essay on software artistry/craftmanship: “Hackers and Painters”, by Paul Graham

Paul Graham: Hackers and Painters:

When I finished grad school in computer science I went to art school to study painting. A lot of people seemed surprised that someone interested in computers would also be interested in painting. They seemed to think that hacking and painting were very different kinds of work– that hacking was cold, precise, and methodical, and that painting was the frenzied expression of some primal urge.

Both of these images are wrong. Hacking and painting have a lot in common. In fact, of all the different types of people I’ve known, hackers and painters are among the most alike.

What hackers and painters have in common is that they’re both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They’re not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better.

I’ve never liked the term “computer science.” The main reason I don’t like it is that there’s no such thing.

…For a long time I felt bad about this, just as I once felt bad that I didn’t hold my pencil the way they taught me to in elementary school. If I had only looked over at the other makers, the painters or the architects, I would have realized that there was a name for what I was doing: sketching. As far as I can tell, the way they taught me to program in college was all wrong. You should figure out programs as you’re writing them, just as writers and painters and architects do.

Realizing this has real implications for software design. It means that a programming language should, above all, be malleable. A programming language is for thinking of programs, not for expressing programs you’ve already thought of. It should be a pencil, not a pen. Static typing would be a fine idea if people actually did write programs the way they taught me to in college. But that’s not how any of the hackers I know write programs. We need a language that lets us scribble and smudge and smear, not a language where you have to sit with a teacup of types balanced on your knee and make polite conversation with a strict old aunt of a compiler.

Make sure to read the whole thing.

I’ve disagreed with Graham on a number of things over the years. In particular his assertion that “good hackers prefer Python to Java” (note that ‘hacker’ in this context refers to a software artisan, not the caricature you see on TV), but as I get older… well I’m appreciating Python more and more and my realize just how right he probably is.