Well, this is probably going to be the last post on the topic, because to be frank, I am getting a headache and I don’t really see the point anymore. I would strongly advise anyone looking at this sample application to consider it to be the epitome of worst practices and what not to do. I am frankly stunned to see something like that.
I didn’t spend a lot of time with the application, and I more or less just skimmed it here and there, and almost every single time, I found something that horrified me.
Yes, there are places for disagreements when you discuss software architecture, places where a decision can go both ways and while you might disagree with it, you can live with it.
This isn’t such a case, this is a case of a project that is literally choke full of traps and scary places. If you don’t look too deep, it says all the right things, but once you get a bit deeper, you can see how this is causing a black hole in your mind, eating away anywhere where good things can grow.
This is the ultimate architectural exercise, building an architecture without building an application.
Except that you can’t talk about an architecture in isolation, architecture is always driven by the actual needs of the application, not by whatever the architect read about last night and is dying to see how it works in the real world.
This isn’t how this it done, and attempting to follow the guidance in this manner would result in a lot of time and money going down the drain.
I can’t emphasize this enough, avoid this codebase, don’t look at it, and never try to follow anything shown there, it will end in tears, pain and suffering.
I have a headache now, and I think that I’ll stop before it goes over the top.