Agile/Scrum blog

Onderwerp: Tech

Craftsmanship smells

Harm Pauw Door: Harm Pauw,  30-08-2016
Onderwerp: Craftsmanship  Tech  Team  

In software development, there is a concept called "Code smell". A code smell is a visible indication that usually points to a deeper issue with your source code. It doesn't necessarily have to be a problem, but it's a good idea to investigate further and do something about it if it is indeed a problem. An example of a code smell is a class that has many lines of code. Usually this is a sign of poor design  by violating the Single Responsibility Principle (the class does too many things) and begs for being refactored into multiple smaller classes. Getting rid of these problems that are pointed out be code smells increases the quality of your code.

Your technical practices, like your source code, should also be of high quality since they play an important role in delivering quality. And just like in source code, your technical practices can also contain indications that perhaps something is not right and deserves some attention. So perhaps a good way to call them is Craftsmanship smells. You know you might be dealing with these kinds of issues if you hear people (or yourself of course!) make remarks like these:

  • "It works on my machine."
  • "We only run our tests once a day during the night because they take forever to finish."
  • "I don't dare to change this piece of code because I don't know what the consequences are."
  • "Run the tests again. Surely they will work this time!"
  • "I'm not feeling that confident about whether our release this weekend will go as planned"
  • "Who changed this part of the code? And why?"

If you hear these kinds of remarks, it's time to investigate further and spend time doing something about it if it turns out to be a real problem. Technical excellence can be a real accelerator for a team, but lack of solid technical practices can slow you down or get in the way of delivering high quality software in a timely matter. In Continuous Delivery, which is becoming more and more the standard in the world of software development, technical excellence is even a necessity. So identify those craftsmanship smells in your environment and get rid of the underlying problems!

Continuous Delivery in a Nutshell

Harm Pauw Door: Harm Pauw,  02-12-2013
Onderwerp: Continous Delivery  Tech  agile  Craftsmanship  

What is it?

Continuous Delivery is a software development practice where you make sure that your application is ready to be deployed to production at any time. You’re not only making sure that when a developer commits a change is, it is correctly integrated by building and unit testing your application (Continuous Integration). You’re also making sure that your application is always ready to be deployed by running automated UI and/or acceptance tests on it and testing the release process itself.

Plato’s architectuur

Beste Altinay Door: Beste Altinay,  15-01-2012
Onderwerp: Tech  

Na een van mijn filosofielessen waarin we Plato hebben bestudeerd vroeg ik me af of er een parallel te trekken zou zijn tussen het gedachtegoed van Plato en de denkwereld van de architect.

Volgens Plato bestaat er een volmaakte authentieke ideeënwereld waar onze echte wereld zich aan spiegelt. In deze wereld der abstracties heerst een perfecte orde en permanentie, ruimte en tijd bestaan daar niet. Daarentegen, in de wereld van de mensen, oftewel de waarneembare wereld van alledag, gaat alles voorbij en blijft niets hetzelfde. Dit is de schaduwwereld van de zintuigen waar de dimensies ruimte en tijd heersen en waarbij gevolg niets perfect is.

Tips om een architectuur agile te maken

Kees Jan Bender Door: Kees Jan Bender,  30-11-2011
Onderwerp: Scrum Master  Tech  

Een veelgestelde vraag bij agile softwareontwikkeling is: Hoe maak je een architectuur agile? De noodzaak hiertoe is evident; als het ontwikkelproces zich kenmerkt door het snel kunnen inspelen op verandering, dan moet de architectuur dat kunnen faciliteren. De architectuur moet in staat zijn mee te bewegen met veranderende eisen aan het systeem. Er wordt in dat kader ook wel gesproken van een vloeibare of wendbare architectuur.

Agile proces
Maar hoe kom je tot zo'n wendbare architectuur? Het antwoord op deze vraag wordt deels gegeven door het volgen van een agile architectuurproces. Het agile proces laat je beginnen met een kleine (kandidaat)architectuur die gedurende het traject steeds verder gedetailleerd wordt. Door de architectuur zo geleidelijk te laten ontstaan, in plaats van vooraf helemaal uit te denken, is de eerste stap gezet om de architectuur wendbaar te houden.

De belangrijkste bijkomende principes zijn te 'ontwerpen voor verandering' en het zorgen voor 'eenvoud in ontwerp'. Een eenvoudig systeem is makkelijker aan te passen dan een complex systeem. Het is dus de kunst om de dingen zo simpel mogelijk te houden, ongeacht de functionele complexiteit. Eenvoudige, veranderbare architectuur wordt bereikt door de volgende punten te waarderen: