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 … Continue reading In Defense of Design Before Coding

Advertisements

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 … 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 … 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 poorlyA 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 … Continue reading 10 Tips to Fail with Enterprise Integration

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 … Continue reading 10x