Posts

Showing posts from June, 2019

Comments as first class citizens

In the future it will be possible to link comments to sections of code, instead of just writing them a couple of lines above of it. Today, comments are second-class citizens that frequently get out of sync with the reality of the code. This is because working on code is done when the brain is in spotlight mode: we first look at this piece of code, which calls this function, which calls this method, etc. . The brain jumps from line to line, and misses the context around it. Documentation and comments are more holistic and should not be in-line with code, as they are something different entirely. Comments are "about" the code, not code itself.

In a merge request, you should see the changed piece of code with the comments that are applicable to it. These can be locally (like the comments that today are in the same file), but also an architecture document could refer to sections of code that implement the architecture. In the IDE, and certainly in a merge request, the developers…

What's so terrible about software?

Image
[this is a work in progress]

One of the things you should understand before reading this series of blog posts, is why I think software is so terrible. I also think it's amazing, but that's another post.

1. Very little standardization Check out this little map from the Cloud Native Computing Foundation.


This map is what's wrong with the software landscape today. My thoughts are very well expressed by the late Joe Armstrong in this talk.

2. Software "evolved" to where we are now

3. Technology is disrupting our lives and our culture
You probably recognize these trends:


What's so great about software?

[this is a work in progress]

One of the things you should understand before reading this series of blog posts, is why I think software is so amazing. I also think it's terrible, but that's another post.

1. It is ridiculously cheap to get started with software. Carving wooden toys is probably cheaper because you only need wood and a knife, but for software, you need:
- the ability to read and think somewhat logically
- a second hand laptop, which you can buy for about $50 - $100
- power
- an internet connection (or a manual)

Mind you, it will take lots of time and effort
2. It is practically free to copy digital resources. All things that can be stored digitally can be copied for almost free. If you wanted to reach thousands of people before  3. It is ridiculously cheap to scale software. WhatsApp famously scaled to a billion (?) users with a team of about 50 people. Their servers each connected millions of users at the same time. With clever engineering, anything is possible. …