Marco Dorantes' WebLog

"Computer science is no more about computers than astronomy is about telescopes" -Edsger W. Dijkstra

An embryonic profession: Incomplete and unconscious design work

An embryonic profession: Incomplete and unconscious design work

  • Comments 0

Humans have been formulating computational logic for execution on digital microprocessors (aka software development) for just a few years, and some people think that this profession is already a full-fledged engineering discipline.

I think this is not the case yet (by far).

Thinking otherwise actually impede the growth of this line of work into higher level of consciousness that allow us to get out of the same expired and twisted mindsets similar to waterfall-like development processes.

A trait of the infant state of our profession is the frequency of incomplete design work as a significant cause for software development projects failures, incomplete work in a central activity and outcome: design.

A mayor factor for such mediocrity comes from a misunderstanding of the role of abstraction in design work, which leads to incomplete design decisions hence incomplete designs that are supposed to be carried out without any mayor design changes.

A role of abstraction is to manage complexity, focusing on a selected set of design attributes at a given time, ignoring —just for that moment— other equally important attributes; waiting for their turn in the co-evolution process of design.

A professional software designer takes complete design decisions. A design decision is completed when the designer walks the abstraction stack all the way down and returns up to the starting level with a set of implications for that particular decision, turning it to a fully informed and conscious design decision.

The fatal state of affairs for software development projects casting crappy software is when designers do not come back and consider the attributes they left behind in their mental stimulation so-called "abstracting" or "modeling".

So, we all can see that abstraction is not a mean for incomplete or insufficient work; abstraction means putting things aside for the moment, for complexity management purposes, not for leaving aspects of your work in a hang state.

Leave a Comment
  • Please add 4 and 1 and type the answer here:
  • Post