Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Nicole Rauch and Michael Sperber on Software Craftsmanship

DZone's Guide to

Nicole Rauch and Michael Sperber on Software Craftsmanship

In this post, two thought leaders give their take on Software Craftsmanship and reflect on where the field is going the advancements it's aided.

· Agile Zone ·
Free Resource

Discover how you can take agile development to the next level with low-code.

In this series of ‘3-minute Q&As,’ we give you an insight into some of the world’s leading thinkers and doers in the world of Agile and Software Craftsmanship. We asked SCLConf's speakers Nicole Rauch and Michael Sperber about Software Craftsmanship, whether smarter tools may lead to developers losing knowledge about lower-level abstractions, and where they see the Software Craftsmanship movement going in the future. So sit back, relax, and take a sneak peek. Oh, and if you like this and want more then you should also check out sc-london.com, where you can immerse yourself in 2-days of talks, discussions, and networking with the authors of the blogs.

Q. When Did You First Come Across Software Craftsmanship?

(Nicole) I first came across Pete McBreen's classic "Software Craftsmanship," and immediately I liked the idea - so much that I even co-created a whole conference and subsequently a user group around this topic. The conference is SoCraTes Germany (Software Craftsmanship and Testing) which has given rise to similar events all over Europe in the last couple of years, and the user group is Softwerkskammer, with currently 1600 members and 23 regional chapters across Germany, Austria, and Switzerland.

Q. What Does Software Craftsmanship Mean to Both of You?

Software Craftsmanship means to do the right thing and to do it right. Also, we think that it is important that everybody involved in a software project raises their awareness beyond their own horizon, keeping the big picture in mind and engaging wherever necessary. In Software Craftsmanship, there is no such thing as a coder who "just codes," a tester who "just tests," etc. Everybody should be involved from the first meeting with the customer to the end of the maintenance cycle.

Q. What Do You See as the Future for Software Craftsmanship?

Software Craftsmanship is the future! It is already noticeable today that for many companies it has started to become a game changer, introducing a shift in the mindsets that allow them to slowly get and keep the old and often crusty codebases under control. Combine it with like-minded methods like Specification by Example and Domain-Driven Design, add well-established development strategies like strongly-typed functional programming, and you get a powerful toolbox for clean and maintainable code.

Q. What Inspired You to Give Your Talk?

We have long been interested in creating great software via a systematic process, rather than by haphazard programming and later debugging and bug fixing. This is an obvious craftsmanship issue but goes beyond the usual craftsmanship techniques. The technologies for creating software that are proven correct have existed for many years, but their poor usability put them out of reach for many developers. This is changing: that's what the talk is about.

Q. What Do You Hope People Will Take Away From Your Session?

- Developers should think about their programs as having general properties (as opposed to just functioning test cases with individual examples), and make those properties explicit.

- Properties can be written as executable parts of a program and verified with a little help from the programmer.

Q. As Tools Become Smarter, Do You See Developers Losing Knowledge on the Low-Level Abstractions?

Given the complexity of modern processor architectures, for the application programmer to understand what goes on at the lower levels has been hopeless for a while now (see the troubles resulting from undefined behavior in C, which are a result of this development). So it's not a function of the tools getting smarter, it's a result of growing complexity overall.

Q. Are There Any Projects You'd Like People to Be Aware Of? How Can People Help Out?

Developers, in general, should consider functional programming as a means of reducing complexity in their code, and making good craftsmanship vastly easier: so the projects people should be aware of the programming languages that let them do that, such as Haskell, OCaml, F#, Racket, Erlang, Scala, Clojure, Swift, and others.

Download this eBook to learn how to prepare your business for agile adoption, how to ensure the proper business-IT collaboration that is critical for agile development, and how to choose the right stakeholders to increase productivity and enable accelerated time-to-value.

Topics:
agile ,code quality ,software craftsmanship

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}