Why Your Development is Crazy

Your development is crazy, or at least stressed. More likely its downright insane. We are struggling to deliver applications. And we’re really smart and we work amazingly hard. Seriously – when was the last time you met more than a stray dumb programmer? We all feel dumb, but there are damn good reasons we feel that way.

I’ve written about how hard programming is, but I stumbled across more specifics when I asked a question in a specific way for a speech abstract:

What’s changed about object orientation since we thought we knew how to design objects in the days of Grady Booch’s 1991 design book and Nancy Wilkinson’s book on CRC cards?

I knew things have changed, but what blew me away was how long this list became and that every time I show it I get a few more items. I added another one this morning and there is no doubt in my mind that this list will soon exceed 50 items.

Let me clarify how I intend this list. It’s extra things we either have to explicitly think about during design and/or things that when we do not think about threaten our applications. Don’t over analyze the list right now. Just soak it in. Add in the comments if you think I missed one. Then I’ll come back in later posts to give a sentence or two about why I think each item belongs on the list since I’ve been the gatekeeper. Finally, I think there are answers emerging from this list in how we need to shift design of our applications.

First, let’s get the list (in no particular order) on the table:


1.  Parallel entities

2.  N-Tier

3.  Sheer magnitude

4.  Application code generation

5.  SOA (Service Oriented Architecture)

6.  Semantics and canonical messages

7.  Workflow

8.  Rules engines

9.  Aspect oriented programming

10.Impact of libraries

11.Property dialogs

12.Designers (Property & UI)

13.Design Patterns

14.Unit testing


16.Interfaces (contracts)

17.Multiple assemblies

18.InternalsVisibleTo attribute


20.Perf and virtual table issues




24.Partial classes

25.Partial methods

26.Extension methods

27.Lambda expressions

28.Anonymous types

29.Declarative – XAML


31.Declarative – LINQ


33.Dynamic languages


35.Unstructured data

36.Generative programming

37.Social networking


39.Reporting (filtering, authorization)



42.Attributes during programming

43.Threading/parallel processing

44.Data transfer objects

45.Visual modeling/model-driven design

46.Design for evolving architectures, maintainability and extensibility

47.Poorly written/flakey tools (especially designers)


Thanks to the user groups in Mitchell (South Dakota), South Bend (Indiana), and Fort Collins (Colorado) for their support and contributions.

New Workflow Tag!

Thanks to everyone who came to my two workflow talks at DevConnections. Thanks so much for tolerating the overflow conditions. You really stoked me back up on workflow, and I’m ready to roll for my all day session in Los Angeles Dec. 1.

I’ve started a new tag here for my workflow musings.


Thank You for the Carrots

I live in a wonderful world. Sure sometimes people’s own unhappiness and agendas get in the way, but most of the time I am surrounded by kindness. And so are my children. Children need the great gift of building the stories of their lives – experiences that they remember and build themselves on. But as parents we are not the only ones that give these gifts to our children.

Halloween night a group of 15-20 year olds set out trick-or-treating from my house. There were a few cross-dressers, a cat with red ears, a very cute clown and a musketeer named Samuel with a frying pan. It was one of those beautiful loud vivacious groups celebrating each other. As the girl-clown said “I was just sitting home when they called wishing _I was cool enough to be invited to a Halloween party”. All arrived dressed. None were ready. The one that remembered a bag forgot a coat and as the temperature plummeted I supplied a pink raincoat to the guy in lingerie. Only on Halloween. To the rest I gave grocery bags. One tall young man in a funny green coat and at least two odd hats was not trick-or-treating, just coming along.

For my part, I did little else but feed them. I disengaged from the game of trick-or-treat this year as another excess of indulgence designed with the sole purpose of making corporations rich. But with my house full of these young people so happy to be together with the drama of teenhood set aside for the night, a little part of me wondered if I should get candy and turn on the porch light.

They were late, of course. But headed down toward the one house they couldn’t miss. The artist with the yard full of spooky things.  He came to the door and said “I’m sorry, I’ve run out of candy”. I’m sure every other kid from three miles round also wanted to climb passed the body in the noose, and inch passed vague bloody things to climb under the 12 foot tall ant (or was it a spider without a web) to ring that doorbell.

In response to the no candy announcement, the tall non-trick-or-treater with the funny hats and green coat said “That’s fine, I’ll take a toaster”.  The artist said “wait a minute”.

Thirty seconds passed and the group wondered if they had been rude. A few more seconds. Surely he didn’t have a spare toaster? Bbut he’d asked them to wait. Hmm. What to do… as he reopened the door.

Turning to the young man with the green coat and funny hats, the artist said “For you, carrots” and handed him a can of carrots.

Performance art at its finest.

A moment turned upside down.

A story retold to me. A story that will be told a hundred or a thousand time more. A story that helps my son understand what it means to be gracious. What it means to allow the people on your doorstep their moment in their world touched sweetly by yours. What it means to turn someone’s joke upside down. What it means to be kind.

Thank you for the carrots.

Thank you for all the little things you do today to bring a smile.