The second day of the UK OT 2004 conference dawned bright and sunny with Martin Fowler’s keynote, well the day was sunny, not Martins keynote.
Martin talked about two main areas; MVC and the uses and types of MVC in use, in particular how MVC was misunderstood and how ideally it interaction with mvc should go user – controller – model – view in the classic MVC. This separation of model and view is the right way to do things and how separation of the view and controller is not often done and indeed most Uo toolkits merge view and controller.
He then went on to discuss a presentation based model and a model view presenter patterns common MVC derivatives and then finally the commonest pattern of stickitallintheview. He discussed why separation of concerns is a good thing to do from both the architectural / complexity standpoint and the testability standpoint looking specifically at the area of UI recorders and the issues with is technique
I agreed with Martin about MVC but I must admit the most interesting pattern I see around MVC is a hierarchical MVC calling another lower level MVC and so on. This seems to be a very prevalent pattern which I have never seen described.
Martin then went on to talk about architects and he defined two types; Relodus and Aritius (not sure of the spelling). I know he has blogged about this in the past and he gave us definitions of Relodus being controllers who are divorced from the developers and Aritius being hands on, communicating mentoring guys. As I said I have read Martins ideas on this before and think that there are a number of Architectural types who are disassociated from reality but that is not very much to do with them not being developers. I have seen a lot of developers who are pretty disassociated from reality and who just want to argue about languages for instance. I think that Martins model of what a good architect should be like and what they should do is very coloured by his experience which is very Agile and expert developer biased. Alas much of the world is less expert and so some of his models don’t translate.
Anyway the bottom line is that I don’t think you need to be a red hot developer to be a great architect which is where I think Martin was coming from. I have met a lot of red hot developers who are s**t architects and vice versa. I also think that you get controlling and ivory tower architects and developers, these are just a bad thing in either case.
Martin then very adroitly tied the mentoring of the Aritius architect back to best practise, patterns and thence to MVC. Very neat.
The first session I went to was a Session on DSL’s given by Microsoft’s own Alan Cameron Wills. This was similar to the one given by Steve Cook at the UK architect council a while back so whilst interesting wasn’t very new for me. I mainly went because I have to give the same presentation as a webcast next week (note, a webcast not to be missed) and wanted to listen to the discussion around it.
The main question I have around all this modelling stuff is how we architect for the non functional requirements. It seems that MDA, DSL, all the language stuff is fine in the functional domain but no one is even vaguely interested in the non functional domain. It’s beginning to really annoy me, I hear all this stuff about new models and development process but when I actually speak to people building systems their two areas of interest and challenge are always hetrogenous systems and non functional requirmenst (security, scale perf).
Anyway the session had a lot of discussion about DLS’s, types, levels etc which was quite interesting.
In the afternoon I went to a radical computing session which was about what radical ideas there are in software that are achievable today but have not been done. The format was to come up with an idea, say what issue it overcame or need it met, what barriers to adoption there were and how these could be overcome.
We were organised into groups and had to come up with ideas. Mine were:
A measurement of Architectural quality to have some metric for the “goodness” of architecture.
Architectural rules for designing heterogeneous systems to support the creation of heterogeneous systems.
AOP for cross cutting concerns to bake non functional requirements into the language (notice a theme here?).
Hierarchical MVC as a pattern
There were a number of other ideas from around the table, notably a sensory ide (bugs that smell) and a hand held computation device.
We then took the best ideas and these were grouped with the best ideas from other groups into idea domains where we went through the process again before feeding back to the whole meeting.
This pulled out some good ideas and was an interesting session. I would have preferred longer over the idea generation, to come up with the idea and the solution in one session was pushing it a bit but the grouping of ideas showed some interesting patterns.
In the evening I had a very interesting chat with Jane Chandler of Portsmouth University (my and my fathers old Alma Marta) about Architectural education, qualification and professional bodies. She was also interested these areas and we agreed to have a follow up to discuss in more detail which I will look forward to.
Finally there was a beer tasting session which was great and I spent some time chatting with Benjamin, one of our UK RD’s about experience, projects, kids and so on. Hope it all goes well with the new baby Benjamin!
"Alas much of the world is less expert and so some of his models don’t translate."
That is why there is a need for non-Agile methodologies, much as the agile camp might not like to hear it (I am in the agile camp, but realize there is a need for both depending on the situation).
I'm playing the devil's advocate here, but could you shortly describe why the level of expertise among the developers is the key to if agile will work or not?
Well I am not an Agile guy (a bit too old!) but my understanding is that you need people who know things like TDD and refactoring to do agile. Whilst not all the agile developers do not need to be expert there seems to be a significant proportion who do need to be.
That wasnt a very good answer. I guess I dont know enough about Agile to answer this
Well, I'm not saying that you are wrong.
But as I see it, skills like TDD and refactoring shouldn't be too hard to learn for professional developers, or?
Ah ha, but professional developers are skilled which proves my point! Ok so some are not but then they are probably the ones who couldnt understand TDD or refactoring anyway!
OK, so those we are talking about that can't work in agile projects are the exception?
Nope, the rule. probably about 60% I think
Wow, that's a dark picture you are painting!