Let's go though the sessions and feelings during day two of NDC.
In the talk Uncle Bob gave the day before, he got me thinking on one thing he mentioned: “the top level directory of your application should not give clues about the platform: controllers, views, sql,… but should scream about its domain”. I was expecting to see such application architecture in this talk. But, alas, I did not.
What I saw, instead, were lots of interesting quotes and provoking thoughts, an application architecture which merit is isolate poorly implemented MVC applications by adding another “use case” layer and an “interactor” layer hiding persistence concerns. Those extra layers would save us from all sorts of vendor-lock-in, prevent developers from placing “implementation concerns” inside it, and will allow us to switch from completely disparate presentation and storage technologies.
Allow me to doubt it, Sir. Those ideas have been around for some time (hexagonal architecture, for instance) and yet we see poorly implemented applications. Would another name for an existing concept solve it?
Calling a web application an “implementation detail” would place us, web developers, in Webforms land: a place were the web wants to be disguised as a desktop form application. An we all know this place ain’t pretty.
Same deal with “the database”: using the same strategies for relational and non-relational databases would bring pain to everyone.
One thing I have to agree with is the definition of architecture as
“an architect’s job is not making decisions, but delaying them as much as possible (ideally when we know more about the problem being solved)”
But I would add the the architect must adjust the chosen abstractions once that decision has been made; or else…
Patterns for .Net Programmers
I could not find any highlights in the next slot, so I headed to the overflow to have a look mostly to this session while keeping an eye at “Modern browser applications”. The title could have been changed to “Delegates everywhere” for the “patterns” that were showcased revolved around replacing repetition sub-classing with delegates.
It was alright but the high point of the session is how the speaker (Venkat Subramaniam) presented code and its output. I asked him later and it was some sort of complicated stuff that involved ruby sending saved files to a C# compiler, running them and getting the output.
It look kind of wicked, but I will stick to a simple LinqPad instance.
Git and GitHub for Developers on Windows
He was entertaining and made an awesome job in showing how Git works (I have seen it before, but, again, that is not anyone’s fault). I was also pretty impressed with the work they have put in GitHub for Windows.
The only thing I did not like at all was the bashing of his previous employer and the unveiled propaganda about the coolness of his current employer. Pretty uncalled and irrelevant regardless of the coolness of their work habits and policies.
What is OO? Where did it come from? Where is it going?
It has been a lot of Uncle Bob for me in this NDC. The previous talks got me a bit worried that I do not like him or his ideas anymore. But for this one, I enjoyed it like a kid.
It was more of a lecture than anything, but it was one of the good ones. It brought me back to one of those few classes I enjoyed at university, were history, anecdotes and important personas were the subject. Yeah, those that won’t matter for the exam…
The past of OO was composed of a discussion about how programming paradigms (structured, functional and object oriented programming) removed pieces of liberty from the programmers hands for their own good. And the future of OO is about parallel programming.
Difficult to disagree, but I think he misses the point when he places the burden of the new paradigm on the shoulder of developers. We all know how badly we screw things up when things are not done sequentially (and even so), so I still have hopes for compiler vendors to preventively clean-up the mess developers are undoubtedly bound to make.
RavenDB data modeling walkthrough
One of the most difficult problems I face when working with document databases is the design of the database. Fighting against a relational trained brain needs courage and all the help needed. Unfortunately I got no help.
To start with, the session was not a walkthrough. There was no case (except for a brief blog modeling example) and definitely no explanation of the problems and decisions taken to solve them. And most importantly: not a single example.
The speaker got me completely lost in his speech, describing things that are orders of magnitude better explained with images and diagrams. Very disappointed I learn nothing of modeling document databases.
ASP.NET MVC and jQuery Mobile
For this slot I had some interesting sessions, but my interest (and ignorance) in jQuery mobile lead me to this talk. And it was a pretty good, really hands-on session. Just how I like it.
I have followed K. Scott Allen (the speaker) for quite some time now an he did show how easy is to make things look “mobile pretty” but also the quirks of the library that makes that possible. Now I only need to put his teachings into practice…
Deep Design Lessons
The end of a long day. And what a way to finish. I have deep respect for the speaker, who I have previously listened and is the author of one of my favorites technical books. But I have to admit I was really disappointed. For one, the talk was not very structured. I had no clue where the talk was heading, but one thing I know: we were going to be soon, because the author spoke at an amazing speed. Way to fast for my liking. That speed and the lack of material (Law of Demeter violations, Tell, Don’t Ask and general statements are not enough for one hour) made us finish 20 minutes early! That is totally unacceptable for me.
Well, not everything was bad. Finishing early allowed me to get to my hotel and refresh a bit before the party, which, I have to admit was better than last year’s.