Hi All.

I've just got kicked off this god-awful contract, and it was hell!

Look, I get Interfaces, and I get Generics. I get Inheritance. But dammit, code should be maintainable!!! It's no good rooting around for a couple of hours trying to find where this damn object is getting its behaviour from! What's the bleeding point? And when you have interfaces inheriting off other interfaceS (plural! - I didn't even know you could do that?!) in a non-trivial application can you imagine how difficult it is?

The architect has forms - he calls them `gui`s - inheriting off generic classes, off generic interfaces, and the like:
vb.net Code:
  1. Partial Class Form1
  2.     Inherits SomeDamnClassGui(Of T)
  3. ....
  4. End Class
  5.  
  6. Public Class SomeDamnClassGui(Of ISomeInterface)
  7.     Inherits Windows.Forms.Form
  8.     ...
  9. End Class
  10.  
  11. Public Interface ISomeInterface
  12.     Inherits ISomeOtherCottonPikinInterface
  13.     Sub MustDoThis()
  14. End Interface
  15.  
  16. Public Interface ISomeOtherCottonPikinInterface
  17.     Sub MustDoThat()
  18.     ReadOnly Property WithThis() As String
  19.     Property ToThat() As ICollection(Of IYetAnotherDamnInterface)
  20. End Interface
  21.  
  22. Public Interface IYetAnotherDamnInterface(Of T)
  23.     Sub ScreamOutLoud()
  24. End Interface
This is because he has two other layers: he calls them `renderers` and `helpers` which are used to display the `gui`s, because, in his architecture, forms - er, `gui`s - don't know how to display themselves!

So, the helper goes to a worker, which goes to the data layer, which tells the worker, which tells the helper which tells the renderer which tells the gui how to show itself! And what is meant to be the payback for this convoluted fiasco? Maintainability!!

You got to be kidding me! Maybe I'm a crummy programmer after all, but I couldn't make heads or tails out of this sushi mush. Why not call forms frmThis and frmThat, so that we can tell them apart from ucThis (usercontrolThis) and ucThat; or txtSpecialThis - which even a newbie would immediately suspect is a textbox?

And when I asked the moron, what's the point of this convolution to the database, he said, indirection! WHAT THE HECK DO YOU THINK A DATASET'S FOR??

And bear in mind - I wrote it down - there are 92 projects in this solution, 781 classes and 67 interface code files (there are up to a dozen interfaces in each code file!!!)

Over the weekend, I decided to tell the agent that I wanted out and sent her an email. I called this morning and she said she'd look into it. This afternoon I'm called into the managers office and told to bugger off, because I'm incompetent! I hadn't done this; I hadn't done that! I was more than half again as slow as the next slowest consultant. Yada yada yada!!

Yeah. I'm sure it had nothing to do with me calling the architecture demented!

Or is it just me?