Holding the lecture: Neil Ford
So he has a page on this topic;
Evolutionary architecture and emergent design : investigating architecture and design
Ok, let's start off by saying, I was looking forward to this one. Not only being the first of the sessions, but also with Neil Ford, whom I've never seen, but only heard good things about. That being said, I did enjoy it. Sort of.
It was basic. Is that ok to say? It should be. I'll sum it up in the end.
The tagline "There are things we do not know we don't know" was the red line through the talk.
In bullet form I'd say he says this is the problems;
- software is changable, not like hardware. it's soft. this is the cause of the problems that might emerge.
- software we produce has two parts that can be changed, but some stuff is harder to change than other. architecture is harder to change than design choices.
- don't build lots of layers for extension that can be built on later. sometimes you create a generic obfuscation and sometimes you add complexity to something that might be simple.
There are ways to get out of the problems by:
- postpone decisions as long as you can. if you wait until you really have to, you can make the right decision easier. it's all about what you know.
- fix stuff right away. waiting will only make it worse. you know it. I know it.
- try to take metrics from the complexity and usage of your code. the combination of these factors might give you an indication for what you ought to fix.
- write tests when writing code. your code will get a structure that might save you from making mistakes.
- make use of patterns, and try to find places where you've repeated yourself.
- time spent early on design costs money and is prone for errors
There was more, but all in all, this is what I got out of the session. My memory might be playing tricks with me as well, since it's been a whole day since I saw it. But all in all, I found the session a bit basic, and I feel I've heard this in some form or another over the last years repeatedly.