A valuable contribution by Joe Armstrong

Sadly Joe Armstrong recently passed away. This is of course a big loss to the computer science community.

I would like to take this moment to highlight Joe’s Ph.D. thesis, “Making reliable distributed systems in the presence of software errors”. I would recommend this work to anyone that are involved in software development.

Continue reading “A valuable contribution by Joe Armstrong”

R & D – cost or investment?

Is the development part of the company where you work considered as a cost for the company or as an investment in the future health of the company?

I think this is a highly relevant question to ask since it will have a significant impact on how you are treated and the kind of work that will be expected of you.

Let’s look closer at the differences in the culture of a “R&D cost company” vs. a “R&D is our investment in the future company”.

Continue reading “R & D – cost or investment?”

Introduction to Serverless

I watched Serverless Architectures by Mike Roberts and I think it is a nice introduction to the state of serverless in 2017.

I recommend this to anyone that want a light introduction to the subject.

I think that serverless will rise in popularity in the coming years so it is well worth to get familiar with the subject.

Continue reading “Introduction to Serverless”

Fast feedback as a first principle

Imagine a painter having to first plan all her strokes, brushes and color mixes in an abstract list and then “execute” a batch of those moves on the canvas and see where that got her. That is obviously an inefficient way to work and would probably not yield the high quality that would be possible if feedback where given after each stroke as is in the real world. But in our craft of software development we are in the habit of creating those batches of work and then see where that get us.

Continue reading “Fast feedback as a first principle”

Immutability as a first principle

Are there any first principles of programming? I am at least going to entertain that hypothesis and try to put forward what I think are the first principles when designing quality software systems and when selecting the tools to use.

The first principle I will discuss is immutability.

Continue reading “Immutability as a first principle”

Freedom Driven Design

Through the years a bunch of “X”-driven developments/designs have emerged, such as Domain Driven Design, Test Driven Development, Behavior Driven Development etc. These design principles all have their own focus on different parts of development, and what I think is missing is a more higher level, over arching design principle. Therefore I have formulated the “Freedom Driven Design” principle.

Continue reading “Freedom Driven Design”

A high quality team

A high quality team

If your ambition is to produce high quality software systems, you will most likely need a high quality team to do it. When you succeed in building such a team, remember that organizations that do not have the ambition to constantly grow the talent of their teams will be overrun by those who do, and key talent will move away.

Continue reading “A high quality team”