Further example...

And in response to Jorge's comment, I'm not saying knowing OOP is the end-all, be-all of software engineering, or that it's a sole or accurate indication of someone's potential as a developer. But it is a simple concept, really, and I think it's a good indication of how likely a person is to have am understanding of software engineering concepts in general, and how much thought one puts into design. Maybe it's just that those who know OOP are more likely to have had a formal CS background, who knows.

In enterprise development, architecture is important. Most of the applications we write are intranet web apps. In the past, before moving to .NET, we were using an a n-tiered architecture built on COM, ASP, and JavaScript. We provide a data access framework, which handles a lot of the abstraction as to where data is retrieved (ie dev or test or production instances, regional instances, etc). Our middle tier is written in COM, and is called through an ASP page. It's actually quite a fat client - much of the presentation and workflow logic sits in the browser in the form of Javascript, and the ASP is just the glue to the back-end.

(If there's one thing I can say I'm an expert in, it's probably JavaScript, the language itself. God, we pushed it to the limits... :)

Regardless of technology, a tiered architecture should provide some level of abstraction on top of the previous layer. Each layer only needs to know about changes to the layer directly above or below it.

Instead, this one particular application, which had a team of "these developers", required changes in EVERY layer if something were to change at any layer. If something changed in the presentation workflow, they had to change their data abstraction and business logic components. In fact, their business logic even made decisions based on whether or not information was visible on the screen. This also eliminates any potential for reuse in the BLL, since it's essentially tied to the presentation code. Why bother having layers then, since all they're doing is adding complexity?

I think they completely missed the boat. They had layers because someone told them this was the architecture, and didn't take the time to understand

Engineering