Wednesday, November 25, 2009

Infragistics Intermezzo

Ok, I know I promised you some cool posts and I really was going to write them. However, I am in my own personal crisis and all because of Infragistics controls. Ok, I know that some people like to complain and blame others for their mistakes. I am tempted to do that all the time and I am not always succeeding in abstaining, but this time it is not a pointless blame shift, this is totally real.

Let me put it in no uncertain terms: Infragistics controls suck shitty balls! They are poorly made, badly documented, there is no architecture that one can talk about (except in funny anecdotes at parties) and they are a complete pain in the ass. After giving some time estimates of how long it would take me to finish up some tasks I ended up repeatedly doubling that time because of the stupidity of Infragistics controls. Have I mentioned enough the shitty balls? And the sucking? Because I don't feel completely satisfied.

A small example: class A is inherited by class B. The functionality of class B is implemented in class A as "if I am B, then...". Then other classes using the A class sometimes have checks to see if it is not B, so that they would behave in a completely different way. I am not a brilliant software architect or something, but this is simply insane!

What about the grid columns and rows that are NOT web controls, nor do they implement some events or overridable methods that control their rendering. Instead, the grid is asking questions like "is this a template column? Then add this to the rendered string" (so not even a Controls collection that one can manipulate). And if this weren't enough, I get to have to fix errors in the javascript from Infragistics by replacing whole functions, because there is no other way to get through. One step forward and two back, just like bloody Sisyphus!

I had expected this to take 5 days and it took 3 weeks and I am still not done. My self esteem is plummeting, I am losing my will to live, I feel like the only satisfaction I could have is to go to the Infragistics team and tear them limb by limb, laughing all the way. I sincerely wish all of their managers, sales people, developers and remote assholes that finished tasks without consideration for the other developers they were working for a slow and painful death.

The fixes and solutions I have found are so unavoidably ugly that I don't dare to publish them on the blog, so my advice for you if you use Infragistics controls is to throw them all away and start from scratch. It will take you longer, but in the end you get a good thing, satisfaction for a job well done and a maintainable code. Don't worry, you can be a completely useless developer and you will still do a better job.

On a brighter note, I may start some attempts to code in Mono or at least create stuff in a different domain that what I have worked so far, so good things will happen on the blog, only not in the immediate future.


Anonymous said...

Man I hear you. Class hierarchies aside... when binding a data table to a line chart, these idiots use columns for data and rows for lines! If you want to have 1 line with 10 points, you need a table that has 1 row - and 10 columns. 50 points? no problem sir - 50 columns. I imagine someone must've told them how stupid it is and they added a "SwapRowsAndColumns" property - which is a complete novelty when it comes to idiotic workarounds to stupid problems which shouldn't have existed in the first place.

Anonymous said...

I'm seriously thinking of making a T-Shirt and bringing it to the next conference.

"Developers Don't Let Developers Use Infragistics!"

Siderite said...

I wish to retract some of my words above and appologise for the inconvenienve. Actually starting from scratch would NOT take longer. Just wanted it to be clear.

Javier said...

Oh boy! I am glad to see I am not the only one alone and that I am not imagining things. I was thrown into the water with this project and the desgners thought it would be cool to put all cool features in that WebHierarchicaldatagrid Control like dynamic generated template columns, CRUD name it. The damm thing does not even do the basic CRUD stuff without breaking. The control is buggy in the most basic aspects and on top of that their documentation sucks big time! Really, you end up hunting in the forums how to do the basic stuff. My manager is not happy with the development time but what can I do? I have spent literally whole nights doing trial and error until the thing does it. It is just beyond my understanding how they can sell this thing. I am recommending newcomer developers to stay away from the controls or at least use the already proven functionality. OMG, I still have three screens left to go; I know I can do it; I asked my Mom to pray for me to end this project in good standing...and after this I am outta here!!