Leaning Into Windows

Kathleen Dollard's view of life and .NET development

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

15.Refactoring

16.Interfaces (contracts)

17.Multiple assemblies

18.InternalsVisibleTo attribute

19.Overloads

20.Perf and virtual table issues

21.Generics

22.Reflection

23.Intellisense

24.Partial classes

25.Partial methods

26.Extension methods

27.Lambda expressions

28.Anonymous types

29.Declarative - XAML

30.WPF

31.Declarative – LINQ

32.DependencyProperties

33.Dynamic languages

34.Security

35.Unstructured data

36.Generative programming

37.Social networking

38.AJAX

39.Reporting (filtering, authorization)

40.BDD/TDD/Agile

41.ASP.NET

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.

Published Tuesday, November 13, 2007 10:53 AM by Kathleen
Filed under: ,

Comments

# New Items for the List@ Tuesday, November 13, 2007 12:58 PM

While annotating the existing list, I came up with several new Items for the list of things that have

# re: Why Your Development is Crazy@ Tuesday, November 13, 2007 10:02 PM

Maybe add:

Cross platform.

Mixed languages.

Memory/Resource management.

Distributed systems.

I'm unsure about suggesting source control as that might be covered in tools.

You've left out a lot a "social" aspects:

Project management.

Documentation & communication.

Bug reporting.

Stress management.

Team building.

Conflict resolution.

Salary/Contract negotations.

Workplace conditions.

Health and safety.

Of course there are customers who use the software:

Requirement analysis.

Feedback.

Prototyping.

Marketing, sales.

And heck, how could I forget the ongoing training that developers need in order to keep their skills useful/marketable. There's a dozen items just in that.

There's a lot more and I'm only scratching the surface. Looking up the books by Steve McConnell will spill a thousand more points.

by Andrew

# re: Why Your Development is Crazy@ Wednesday, November 14, 2007 4:38 PM

Thanks Andrew.

Some of these coincide with my thinking and some take it in new directions.

# Confessions of a Software Developer* | Aaron Lerch@ Wednesday, January 30, 2008 12:44 PM

Pingback from  Confessions of a Software Developer* | Aaron Lerch

# re: Why Your Development is Crazy@ Thursday, January 31, 2008 9:16 AM

Here are a few more, and they are whoppers:

Software factories (Jack Greenfield)

WCF

Domain Specific Languages

UI usability (Platt, Cooper, Krug, Van Duyne, etc.)

by Bill Ziss

Leave a Comment

(required) 
(required) 
(optional)
(required)