Quand on code sur un projet nous finissons toujours par produire du code un peu en dessous de notre niveau maximum. Ceci est normal car rendre le code parfait (par à rapport à notre perception) serait trop long. Certes nous devons livrer du code de qualité afin qu’il soit facile à maintenir et c’est ce que nous faisons, mais au final si on peut livrer un résultat qui est à 80% de notre niveau max et qu’il faut 50% plus de temps pour aller à 100% alors on va se contenter de 80.

Pousser jusqu`à 100% prends du temps et mets une tension sur le projet difficile à tenir à la longue. Mais désespérons pas, il y a une alternative.

Maintenant on nous dit qu’il faut relever…

I know some employees that’d like to train more, to go to conferences, present at conferences and train during working hours. Few employers allow that to the extent that the employee would want to, some don’t even feel entitled to order books on behalf of their company. This generates frustration, and to me inefficiency at work, because developers need to continuously learn a lot and learn with a wider perspective than only the working environment can ever offer.

I’ve seen this tension and frustration in just about every company, from high profile consulting agencies where training is encouraged and…

L’une des premières choses qui m’a frappé dans la vie professionnelle est à quel point il est difficile de changer quelque chose, même lorsque ça ne fonctionne pas aujourd’hui. Combien d’entre nous ont apporté une bonne idée, juste pour la voir réfutée sans réelle réflexion ; un jour par un collègue, l’autre par notre manager?


C’est bien dommage et frustrant! On entend souvent la phrase “Si seulement ils pouvaient écouter” ou une variante “si seulement ils avaient un bon background technique ils comprendraient”. Franchement, combien de fois avons nous buté contre cette résistance au changement? Et pourtant cela aurait tellement…

Small types in type driven development facilitates composability much like small objects do in OO.

One of my first experiences in Idris was to try to implement a FizzBuzz where the types would be so strong that they’d ensure the code could only be correctly implemented.

FizzBuzz is a game where the input is a number between 1 and 100. The output is a string, “Fizz” if the number is divisible by 3. “Buzz” if the number is divisible by 5. “FizzBuzz” if it is both divisible by 3 and 5 and just the number otherwise. eg counting…

Let me just start by stating what I mean by a Bug Generator. It’s a style of code that is likely to contain bugs or produce bugs in the future as the code is extended. This is of course an anti-pattern. There are corresponding Prevention Patterns, basically less error-prone alternatives. That being said, let’s dive into one of the Bug Generators, namely use-of-indices.

Use of indexed access is low level, off-by-one errors are very common. Also index out of bounds can happen. …

When there’s a bug it is very likely the existing design contributed to its existence. This suggests that there are corresponding design anti-patterns, patterns of code that are latent bugs

This time lets look at the pattern Hidden testable code

By Loveteamin [CC BY-SA 3.0], Wikimedia Commons

Problem: Easily testable code is hidden inside hard to test code. For this reason the code is either not tested or the tests are not as thorough as would be needed.

Schematically it looks like this

Solution: It is very very cheap to fix this. …

I’ve been exploring Reactive Streams for a while and the other day it struck me that it’d be possible to use a combination of streams to generate the stream of all fibonacci numbers. Basically all fibonacci numbers are the sum of the two previous numbers, so if we could create the n-2 stream and the n-1 stream then we could just sum them to create the n stream. Then we’ll feed the n-2 and n-1 stream with the results of the n stream.

fibonacci in real life https://www.flickr.com/photos/pninsule_acadienne/6086105698

Learn by pushing the tool to the extreme
I initially brought this idea to my hometown Coding Dojo…

If you want a simple solution, find a simple data structure.

A lot of problems have a very simple solution, provided that we use a data structure that reduces the number of necessary operations. Still I find that we often neglect the effort spent in finding the best data structure.

To me this is a serious problem or a great opportunity for improvement! Every project battles with the complexity of the past. Many systems contain enormous amounts of accidental complexity in addition to the essential complexity that serves the user. If you don’t believe me try to remember the times…

Johan Martinsson

Passionate about code and design and generally improving things http://changit.fr

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store