Industrial Software Development: Engineering vs Artistry

Industrial Software Development: Engineering vs Artistry

Is software development a boring, purely facts and figures based, rigid and sometimes painful undertaking? Where is the fun in it? Where does creativity fit in? How can the "software heroes" feed in great new ideas?

In general, creative people follow - maybe unconsciously - a process (cf. [Funk08]):

  • Preparation: make yourself familiar with your domain and acquire expertise in solving "problems"
  • Incubation: relax - do not focus on the problem, free your mind
  • Insight: the creative moment itself, that manifests after preparation and incubation - the "Eureka!"
  • Evaluation: evaluate your ideas - not all will be feasible so this filters out "bad ideas"
  • Elaboration: implement and test your idea

As we have seen in the past years, key quality aspects of successful industrial software development show certain quality attributes:

  • Reliability: Systematic and structured approaches as to achieve the goals of development
  • Reproducibility: Processes and procedures to ensure repeatable results and serve as a foundation for improvement
  • Learnability: Ways for scaling up or down organisations
  • Rationality: Fact based and informed decision making 
  • Applicability: Adding pragmatism to theoretical concepts

In successful organisations, individuals in the process (the "software engineers") have traits like being

  • Workers - get things done
  • Scientists - identify, preserve and communicate new knowledge
  • Architects - understand complex scenarios and take their decisions based thereon
  • Technicians - apply the state of the industry technologies according to their strengths

The creative process complies with the engineering approach as described above - with the incubation phase being a challenge regarding "time and budget" vs "outcome" considerations. You hardly know if you have incubated long enough to achieve the best result but "better than nothing" can be identified at least.

So, consequently - (software) engineering comprises creative processes. True engineers ARE creative.

 For the engineers, this fact is a very positive aspect of their professional life, but brings along a big challenge: more often than not "creative ideas" imply changes - and resistance to change is everywhere and tries to stop innovation.

Looking from a different angle: if you perceive resistance, you have done your job.

References

[Funk08] Joachim Funke: „Zur Psychologie der Kreativität” in M. Dresler & T. G. Baudson (Eds.), Kreativität. Beiträge aus den Natur- und Geisteswissenschaften (pp. 31-36). Stuttgart 2008, Hirzel. 

To get more insights into my work at Axivion, register for our newsletter, visit our blog or follow us on LinkedIn and Twitter.

To view or add a comment, sign in

More articles by Daniel S.

  • "More is better?" or Efficiency vs. Effectivity

    From time to time, I have conversations with colleagues or customers about the runtimes and precision of static code…

  • How much is the {...}?

    If you work on a software project with safety and/or security background, you will have to use some sort of programming…

    1 Comment
  • Coding Guidelines How-To (1st Thoughts)

    For use in Safety or Security, a range of Standard Programming Guides is available. In automotive industry, MISRA and…

  • Guessing what may be: Static Analysis of Dynamic Languages

    In cooperation with our research partners in academia, we offered a bachelor thesis in the field of program analysis…

    3 Comments
  • Professional View on "Quality"?

    There are many definitions of the term quality. On one hand, we have the common sense definitions of "high quality…

  • Test the test: testing programming guides

    The implementation of an automatic coding guidelines check produces code; in the case of the Axivion Suite mostly…

Others also viewed

Explore content categories