Code it yourself

This post was titled after a talk I gave to people attending a course to learn how to develop software. One of the main purposes of my talk was to prevent wrong ideas about what software development really means.

In the past (and nowadays), the industry has considered programmers as ‘coding monkeys’, like if developing software was a repetitive task, similar to assembly lines in factories. But the truth is that the work of a programmer does not consist in writing code, but in THINKING. Thinking solutions that solve problems. It is a creative and adaptive job, therefore, the methodology used for repetitive tasks does not work for software development.

The productivity of a developer is not directly proportional to the number of hours that she is forced to stay in front of a computer. Actually, this may be harmful and frustrating, which leads to demotivated developers.

Many professionals have realized this evidence and are trying to communicate it through the flourishing movement of the Software Craftsmanship.

Do you know this woman? It’s Margaret Hamilton, author (with her team) of the on-board flight software for Apollo 11, the spacecraft that took us to the moon.

From the Software Craftsmanship movement, we consider coding as a craft. In the one hand, because we love our profession and believe in the value it adds to society. In the other hand, because we feel belonging to a guild, in its very medieval sense, in which we try to become better professionals through practice, and also teach our craft to others.

 

The profession

Our motivation resides in  building working, useful and well-engineered software. As we learned before, coding is all about this: conceiving solutions that helps humanity move forward.

Looking around, I realize how relevant is software for us. From morning to sunset, I am surrounded by problems that I don’t need to face, because someone developed a solution before: I don’t need a rooster crowing to wake me up, I (relatively) know if I should bring the umbrella today, I can make a coffee in 10 seconds, I can listen to music, I can share this post with you. And I can visit the moon.

From Google Earth 5.0

But ‘useful’ software is not enough. You can use adhesive tape to prevent remote control batteries from falling, it works and it is useful. But it is not an artwork. Neither is it professional.

It becomes an artwork when it has an artistic component. Therefore, another part of our work is the beauty. We want our code to be beautiful, elegant, efficient, readable. Maintainable.

All the code we write is always meant to be read by a human. So it is not just a bunch of operations, but more like a tale: it must be written with love, with the intention of pleasing the reader.

Let me illustrate this:

Can you tell me what the code above does? Neither can I. And I’m the author. No one can understand what this code does, no one can maintain it, even if there’s a brave daring, she won’t enjoy working with it, and she will have a really bad time until she gets to refactor it.

Writing the code above is not professional, because it makes maintainers job become hell, starting by delaying them until they discover what the heck is it doing.

Here’s a better way of writing the same code:

This code makes exactly the same as the previous one, but being more verbose. The efficiency is the same for both (unless you’re planning to run this on a Spectrum or something), but in this second example, it is easier to understand what the code does. We can almost read it like a narrative:

Having these coordinates, make the extractor robot move there and take a soil sample, then make the analyzer robot analyze the sample, finally send the result of the analysis to the Hearth.

Probably no one will need more than a quick reading to feel comfortable enough to modify it.

Software crafters do care about the quality and efficiency of their code.

 

The guild

Apprentice learning from his master

Software craftsmanship values and knowledge are shared among members on a guild. Both the profession and the values are transmitted from masters to apprentices and vice versa. This way, knowledge becomes alive. We all share our experience and get new learnings in exchange, we become the more and more educated.

As we mentioned before, the traditional production models adapted for repetitive tasks do not work for software development, therefore, as the professionals we are, we refuse working under such model.

But apparently the industry won’t just accept our beliefs. For some reason, developers are not trusted when we suggest improvements for the job we master, and are usually ignored after some kind of manager (probably someone that does not code) gives her opinion.

But we can change this as a guild. The guild can persuade the industry to start looking for new models like the Agile methodology (about which I’ll write soon).

Everyone trusts plumbers, carpenters, dressmakers or electricians when they explain something must be done in a specific way. We trust them because they belong to a guild that defines how their job must be performed.

In the same way, software craftsmanship’s guild is the one that must define how software is built. If all the developers belong to such guild and the guild determines that software must be developed using agile, lean or whichever methodology, then our thoughts will stop being suggestions.

We must explain to companies which is the way software development works, and refuse those projects in which coders are still being considered monkeys.

 

SC Communities

OK, so you got delighted by my wisdom and now you desperately want to become a software crafter. How can you do this?

Our guild is composed by several communities around the world. I’m fortunate to live in Valencia, which provides many options for newcomers.

At Devscola, we run quarterly courses where we teach our profession for free. Our intention is to be responsible for a new generation of professionals, a generation that takes the initiative, in an attempt of changing the industry.

At the same time, we get to develop a inter-personal emotional link, we gave such phenomenon the name of friendship ^^

Paella with @devscola

BTW, we’re accepting desksurfers 🙂 Don’t you want to come visit us this summer?

VlcTechHub is also a great community in Valencia. This one puts its effort in communication, notifying subscribers about the events that will take place soon, call4papers, and also helping professionals to get it touch (job offers, ideas, projects…). You are very welcome to join our slack channel!

Also many others exist, like GeekHubs, CoderDojoGDG, and many communities related to specific technologies.

You can find information about the communities and events around you using Meetup, as it is widely used for information purposes. Also join the slack channels of the groups you’re interested in.

You can reach me at any moment as well, I’ll be happy to help you find communities next to you, or even create your own community if you think it makes sense.

 

Conclusion

Learning and teaching my profession is the reason why I facilitate the Katayuno every Tuesday morning, the reason why I get out of bed on Saturday to mentor in a CoderDojo, the reason why I overcome my fear of flying so I can attend an event, and the reason why I’m writing this today.

I’d like to attract you to the guild of software craftsmanship, and together show the industry how true professional software development looks like.

 

What do you think? Express yourself in the comments, and don’t forget to share this on social media!

 

 

Facebooktwittergoogle_plusredditpinterestlinkedintumblrmail

Leave a Reply

Your email address will not be published. Required fields are marked *

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑