Do You Need an Architect?

Architects do typically three things: they own, they coordinate, and they mentor. As an owner, the architect maintains the integrity of the system at a high level. He designs the foundations, identifies tradeoffs, decides on essential changes. As a coordinator, the architect facilitates work and optimizes the exchange of information. He connects people, gather information, and plan activities. As a mentor, the architect provides the … Continue reading Do You Need an Architect?

Conceptual Integrity in Large Systems

The central argument of the Mythical Man Month from Fred Brooks is that conceptual integrity is the most important consideration in system design, and that conceptual integrity will only be achieved if the design comes from one, or a few resonant minds. I will contend that conceptual integrity is the most important consideration in system design. It is better to have a system omit certain … Continue reading Conceptual Integrity in Large Systems

In Defense of Design Before Coding

Software design as a separate activity from implementation — “up front” design — got a bad press with agile methods. Agile advocates say the design should be emergent. They say, design without coding is waterfall. It’s a waste of time. I understand that you don’t want to design the whole system up front. But at the feature level, a bit of thinking before coding does … Continue reading In Defense of Design Before Coding

How Technology Evolves

We often take for granted the technology we have and forget that it’s the result of a tedious evolutionary process. A Railroad Track is the Width of Two Horses is one of the first stories about the evolution of technology that I remember reading, maybe ten years ago. It rings more like a colorful story than a true historic account, but it nevertheless left an … Continue reading How Technology Evolves

Platforms and Innovation

I started my career writing flash applications. Then I moved to Java. Both are middleware technologies that abstract the underlying operating system and enable cross-platform interoperability. I’ve actually never wrote a professional application that relied directly on a specific operating system. This was fine to me. “Write once, run everywhere” was great for productivity. For the kind of applications I was developing, what these middleware … Continue reading Platforms and Innovation

10 Tips to Fail with Enterprise Integration

If you want to make enterprise integration needlessly complicated, follow these tips. 1. Model poorly A poor model is always a nice way to make things more complicated than they should. Examples: You can name thing badly. You can model everyting as strings (key, list, etc.). Or you can reuse overly generic abstractions in multiple contexts instead of defining one abstraction per context. Or you … Continue reading 10 Tips to Fail with Enterprise Integration

Why a Calendar App is a Great Design Exercise

To check if a salesman is good, one classic is the “Sell me this pen” test. To check if a software designer is good, I propose the “Design me a calendar app” test. That was one of the topic we chose for the software engineering lab, and I loved the results. There are several reasons why it works well as a design exercise: Everybody can … Continue reading Why a Calendar App is a Great Design Exercise

Living in the Future

The world is constantly changing. From electricity to cars to television to the internet, most generations have seen at least one breakthrough. This will continue, and it’s certain that my generation will witness another technological shift. Interestingly, how we react to new technologies changes itself with time. ¬†For a lot of new technologies, my first reaction was indifference, missing entirely the new possibilities the technology … Continue reading Living in the Future

10x

Fred Brooks started it all. In The Mythical Man Month, he quotes a study saying individual difference between low and high performers can vary by an order of magnitude Since then this myth of 10x productivity difference has persisted in our industry. Nowadays it’s best seen in the use of words like rockstar, guru or wizard in job descriptions. But is it really a myth, … Continue reading 10x

The Brain and Probabilities

The brain is a wonderful machine with an impressive computing power. We can make sense of complex information effortlessly and almost instantly. But it has one big flaw: it does not understand probabilities. When presented with information, the brain tries to explain it by building a coherent story out of it. To do so quickly, it relies on some shortcuts, which largely ignore probabilities. So … Continue reading The Brain and Probabilities