Software development is a craft

 
 
 

Tinker, tailor, software coder. Software development can be considered a form of creative problem solving, which means developers can be compared to craftsmen and women.


Software development is a form of engineering, based on disciplines such a mathematics and cognitive sciences.

When viewed from outside the coding bubble, software development may seem to be nothing but mechanical work. Even though the lines of code are backed up by hard science, software development requires a huge dose of creativity in addition to tech stack competence.

Handicrafts are created through the seamless combination of the hands, the eyes and the mind. The same applies to software development: it requires a lot of reading and listening, design and problem solving – and to top it all, implementation and getting things done.

In this sense, developers join a line of other craftsmen and craftswomen, such as bookbinders, jewellers and ropers, among others.

Creative problem solving

At least for now, our crystal ball doesn’t show a way in which machines could truly replace creativity.

Antti-Iivari Kainulainen, rocket scientist #58, finds the comparison to artisanal professions fitting:

“To give an example, a wood artisan knows traditional handicraft techniques and tools, as well as carpentry machines. In addition, they need to use creativity in their design and visualise both the end result and the work phases leading up to it in their mind – just like a programmer. Everyone knows how to drill a hole in a piece of wood, but a wood artisan knows how to turn wood into a unique chair.”

Antti-Iivari says that software development is creative problem-solving that also needs to take the client’s customers into account.

Since software development is a team effort, individual creativity may sometimes be limited by norms and, in the worst case, by a ’this is how we’ve always done it’ mentality.

“We are fortunate in that our customers give us freedom in terms of solutions and working methods. In other words, the focus is more on the outcome than on micromanagement. This is all based on trust: the developers’ advice are both sought and valued,” says Rakettitiede’s Deputy Commodore Marko Saaresto.

“Although this work sometimes involves mechanical tasks, we also have the freedom to create something new. The trust Marko mentioned serves to increase that freedom,” Antti-Iivari adds.

Creativity is a condition for any capacity of renewal, but flexible thinking is needed when tinkering with old systems as well.

If it’s so easy, why don’t you do it then

According to Perttu, developers must possess solid technical skills – after all, constantly reinventing the wheel would be plain stupid.

The final result seems to depend very much on the skills and working methods of a particular craftsman or craftswoman. A blacksmith – whether they’re padding saddles or forging rings – chooses their preferred tools to improve the quality of the end result and make the work easier. Likewise, when developers get to choose their own tools, they become more efficient.

“Software development can be compared to artisanal professions and creativity also in the sense that we, too, make our own tools,” Perttu Keskinen, rocket scientist #43, explains.

The task to be undertaken, together with all the stages of the project, need to be clear already when creating the tools. This is why experienced developers know to open their machines only after the preliminary thinking process is finished.

Master or apprentice?

When talking about artisanship, masters and pupils inevitably spring to mind. Rocket scientists often share their expertise with the client, but occasionally also enjoy stepping into the role of a learner.

“Working in a product house, I used to be in a position where people asked me about things. For a consultant, having a new client always means familiarising yourself with a new environment and team, sometimes even new technologies. This has taught me to see the work through the eyes of a newcomer as well,” Antti-Iivari says. 

Perttu has similar experiences: “Switching from a product house developer to a consultant and from one role to another has brought with it an interesting change. No matter how used to using C++ you are, there’s a big difference between making software for a sports watch or a frequency converter.”

Marko, the Deputy Commodore of the Rocket, considers learning new things to be the spice of consulting – but unlike sriracha, it won’t make you break a sweat.

Marko agrees that learning new things adds a bit of spice and condiments to consulting work: “Every client relationship is a blank page, not limited by ‘company platforms’ or a product portfolio. I’ve been able to familiarise myself with new technologies and tools – as well as working methods. The most inspiring assignments have challenged me to create something new with something that is new to me.”

La vie bohème?

Software developers cannot be directly compared with free-spirited artists, however.

“You have to have solid technical skills, because constantly reinventing the wheel would be plain stupid. A developer is not an artist, but rather a craftsperson. If a sculptor creates a bronze statue, it can be almost anything, as it’s principally an exercise in aesthetics. A blacksmith, by contrast, forges a gate that both looks good and serves the user,” Perttu says.

Antti-Iivari agrees: “With pure technical expertise, you can create an ugly but perhaps practical box made of concrete elements, but if you approach a task through artistry alone, you end up creating an impressive house that will attract mould. The trick is know how to create a house that is both technically sound and nice to live in. The same thing applies to building software: you have to think about how the product or service is going to be used and who is going to be using it.”

Each solution should not be different just because you want to leave your mark on the world or because you want to take some trendy technologies for a spin around the block. The passion for creativity can sometimes erupt in obscure lines of code that end up in the legacy bin. Using solutions that are familiar to others leaves the following developers with code that will be a pleasure to build on for years to come.

In other words, creativity should be used with caution and added only where it’s needed.

Looking for interesting work, competent colleagues and a high salary? Read more!

Read more:

Light years ahead in competence

Rocket Scientists’ 10 Commandments for a High-Quality Coding Future

 
Rakettitiede