Image for post
Image for post
Image taken from here

About a month ago, Nat Friedman, the CEO of Github welcomed Semmle to Github with the words:

Human progress depends on the open source community.

Around those days, I was looking at an old presentation by Sonatype which provides some data on the explosion of open source usage claiming that:

In a typical application 90% of the code is from 3rd parties.

I set out to find a possible explanation for such strong statements which I will briefly share in this story.

Repair vs Replace: The Old Hardware Story

In my experience, when you gather 50 people in one room and ask them if they would take their broken 2+ year old phone to a repair shop, you are likely to get fewer than 5 people who raise their hand. An explanation for this observation is that the cost of hardware is very low (even if you keep paying more and more for your iPhone). For example, the producer price index for semiconductors since 1975 looks like…

Image for post
Image for post
Photo by Markus Spiske on Unsplash

The vast majority of developers have heard about program analysis techniques but often don’t have a good intuition about how these techniques work. In this series of articles, I will provide a brief overview of the major techniques and hopefully clarify some of their capabilities and limitations.

Program analysis is a field of computer science interested in techniques that infer properties of program executions. These two elements, properties and program executions, are the inputs of a program analysis technique and are the objects I will go over in this article. Let’s dive in and start with the executions!

Consider the following piece of…

Image for post
Image for post
Photo by Edin Hopic on Unsplash

Code is eating the world — we have heard it a hundred times. Programmers are the ones producing this code, so a logical question is: what is happening to them? As usual, the answer depends on the subject but I will argue that some are getting fat while most are starting to starve. I don’t mean physical starvation because they don’t have money to buy food — I’m talking about intellectual starvation in the style of the famous Buridan’s ass paradox.

Most of those professional developers with more than 15+ years of experience in some set of technologies are now in the funemployment mode. They decide which projects they want to work on and typically move to a semi-management position. Obviously, there are exceptions — genuine technical leaders. I’m sure you know them in your company and they are vital to attract and retain new talent. They are like the high school teachers that have inspired you so much that you hear them in your head from time to time throughout your life. …

Image for post
Image for post
Photo by Austin Distel on Unsplash

Behind every piece of code produced by a human is an intention. The intention should answer the question: why should this code exist? Fundamentally, the quality of code is related to this intention. For example, saying that you have written an elegant piece of code without stating the intention of that code is non-sensical.

Software developers usually call this intention specification. All software should start from an informal specification, a representation of some intention that is shared by a group of people. I say should because sometimes, developers are too eager to start coding without a clue of what the intention really is. …

Image for post
Image for post
Photo by JR Korpa on Unsplash

We are living in the era of the asynchronousthe promise land of everything will work out or will go terribly wrong but not just yet so keep on pushing. This movement has not only infiltrated our machines and how they run software but also our collaborations in extreme ways.

Every time I think of async, the epitome of asynchronous processes, I remember this unfortunate scene of the TV show Narcos about magical realism. Magical realism is a style of fiction popularised by Gabriel García Márquez that combines a genuine realistic description of the world with magical elements. …

Image for post
Image for post
Photo by Paul Gilmore on Unsplash

Agile, the software development methodology turned into a religion, is built on the fallacy that the complexity inherent in the fuzzy collective intelligence of a group of people, a.k.a. thin air, can be broken up into clearly defined simple tasks.

It is a brilliant business strategy as it shifts the error rate from the client side into the process itself. We have fewer unhappy clients because they are now a part of that collective intelligence. What happens if the whole thing blows up? Well, the process can’t be blamed; remember that the client is never wrong. So the blame is shifted to some stakeholders and they are usually software developers. …


Marcelo Sousa

CEO & co-founder @ Building tools for humans and machines! More info at

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