Perception, deception, reception

28 August 2007

This past few work days have been up and down. It's a bit like the old joke that starts off with "I have some good news and bad news..." and then gives us the bad news, and then the good, the joke being that the good news is worse than the bad but in a different way.

Well, I'm going to do this the other way round: first the good news and then the bad. By this masterful switch, the good is really, really good, and the bad is simply awful.

First off was a link that Dale Mitchell provided in a comment to my post on CodeRush and Refactor! Pro 2.5. The article is an interview with James Moore of Red Gate Software, a company that is mainly known for its line of SQL-related tools, but that is starting to diversify into .NET tools with their ANTS profiler. I won't comment too much on the content of the article, but will point out the second question and answer as being particularly relevant to us and our industry.

Yes, writing your own controls is fun and instructive and means that you can hone and gear it precisely to your particular situation, but in doing so you are increasing the amount of code you have to maintain, you're increasing the cost of the software you really should be writing, you're not adding to the bottom line. DXperience Enterprise, containing everything that we do for .NET, including all source code for the components, costs $1,300 at present. Say you cost your employer $100 an hour (you know, it'll be close with salary, medical, dental, vacation, 401(k), options, stock, etc, etc). That's 13 hours of your time, less than two days. Are you going to design, write, test, bug-fix a tree-view, for example, in that time?

(By the way, Mark Miller gave me a redacted question 2 answer with certain passages marked in bold. I decided not to use it, though I'll leave it as an exercise for the reader to reconstruct his version.)

Then I saw that Andrew Connell had made the results of his work in writing templates and plug-ins for CodeRush and Refactor! Pro available for all Sharepoint programmers. For free. Zero, nada, zilch. OK, you do have to buy CodeRush for about $250 (Refactor! Pro is included in that price, remember) to use them, but considering the amount of time this is going to save you, it's a mere pittance.

In reading the blog posts ( 1, 2, 3, 4, 5) where he talks about it all, frankly I'm stunned at the amount of work in the project and in the magnanimity of Andrew's gesture. Now, in my defense, I'm not a Sharepoint programmer, but Andrew is and he's distilled his knowledge and experience into these additions to CodeRush and Refactor! Pro that will make your life easier.

First and foremost, let me say this is awesome work, and secondly, and to a lesser extent, it validates the direction Mark and the team took in ensuring that both CodeRush and Refactor! Pro are fully extensible with a well thought out design and great support in the form of project templates and the like.

After that, I read Chris Bilson's blog entry on modifying a CodeRush template to help program with NHibernate. A nice little article on extending what we provide as part of the product to make it better and easier to use for your normal daily work. In Chris' case, it's declaring virtual properties for use with NHibernate, a well-regarded ORM derived from the Java Hibernate framework. He's got the screenshots, he's got the shaky mouse highlights (I'm there with you, Chris), resulting in a very succinct tasty article indeed.

Then after this surfeit of good news, this morning I read this rant about component vendors. I'm certainly not going to dissect who irascian is talking about so vehemently, but instead view it as a rant about all component vendors, of which we are certainly one, and reply on that level. He makes some (qualified) good points and some quite bad ones. I'll look at the ones that could apply to us.

- Support as an endless loop of responding to a question with another. We've been dinged on this one several times (it annoys me incredibly), and have recently been making changes to some of the answers we make in order to try and cut short this go-around.

But, having admitted that sometimes we're to blame, I'd invite you to look at the problem from our viewpoint: sometimes the question that's asked of us is ambiguous to the point of obscurity (I remember seeing one of Plato's answers recently: "Are you talking about the ExpressQuantumGrid, the XtraGrid, the ASPxGrid, or the ASPxGridView?"). After all, we can imagine that it's coming from a customer who's been living this issue of which they're complaining for the past several hours. They're fully intimate with the problem and the scenario and forget in the heat of writing an email to us that we're not. So sometimes, we're forced to respond with a question.

- View Source (for an aspx page containing some third party controls) provides "total gunk, debris and sheer volume of crap". Heh, message received and understood. I'll admit our editor controls are somewhat guilty, and we're looking into the TGDASVOC produced when they're used in the ASPxGridView and hope to show the new slimmer controls in version 2007.3.

But having said that, does the end-user care about TGDASVOC in the HTML? So long as it's rendered by the browser they're using, do they really care that it was 3K of HTML or 4K? The images on the page are going to be larger than that anyway. To me it's a little like arguing that XML should always be nicely indented for human readers. Er, no, it doesn't have to be; human readers fall into second place compared to the program readers, surely?

- "there's no real competition". Do what? The mind boggles. Is he saying that we, Infragistics, ComponentOne, Telerik, etc, are in cahoots? Price-fixing? That we're just four facets of the same shady reclusive shell company in Liechtenstein that doles out the sales? My mind has completely boggled over on this one and I'll have to move on before it comes out my ears.

- Side rant about Community Server 2007. Er, complain to Telligent. We do, and how. Don't assume that they're using a third- party vendor's components. Maybe they are, maybe they're not, maybe they've taken a commercial product and made lots of changes to suit them. Dunno. But they're the front line of support for Community Server.

Now having said all that, let me point out a few things. Compared with writing WinForms controls, writing useful ASP.NET controls is hard. Sorry to be the bearer of bad news, etc, but it is. For a start, they're written as C# (say), HTML, and Javascript. They're stateless, with some decidedly kludgey ways to try and make them stateful (which the component user tends to break quite frequently). HTML was not designed for fancy interactive UI work, although there is work going on in that area to make it so, and so requires all this kludgey Javascript. The browsers are all different (the DOMs aren't the same, neither is the Javascript) and even the script routines that determine what the browser supports make me laugh with amazement. (In fact, it was only ASP.NET 2.0 that made a real effort to determine which browser was what, and that work continues with Silverlight.)

Of course, that's why we're paid the big bucks — partly in order to fund magazines and conferences, it seems — therefore we should spend the time and effort to make sure our super-duper grid works in all the browsers, on all the operating systems, with minimal HTML and JS and Viewstate, with rock-solid state persistence, and blazing performance. Which we do, happily. And in doing so bugs are reported which we fix. And we tweak based on feedback from our customers. And customers can rely on us to do all that, because, as mentioned above, they get a lots of value for two days' worth of work.

I used to work for a company that decided early on that they would write their own grid for their ASP pages (no, this was before ASP.NET). It was geared to their application, it had loads of special case code everywhere, and nobody, but nobody, in the dev team wanted to touch it. Change one thing in one place and functionality changed somewhere else. With the best will and effort in the world, they ended up with a Frankengrid. More time was spent on the underlying infrastructure of the grid than on the application's UI. They're now rewriting with a third-party vendor's product. I'm sure that it's not optimal compared with the old custom one, but the way they look at it, is that they're in the business of selling an application, not a grid.

And that's what I find troubling about irascian's rant. It's easy to lash out at and blame your vendor for slippages and problems (or to lash out at the unnamed person or persons who decided on this choice of vendor), but I certainly believe in the end you will save money by using one. Just spend some quality time investigating which one to use. Use real code written by a real programmer and use real data. A week spent on this investigation will repay dividends.

As we like to say, Download, Compare, and Decide.

10 comment(s)

"Support as an endless loop of responding to a question with another."

I've seen this in some questions also. I always try and do atleast 2 searches before submitting an issue but even still i sometimes get duplicates. (Unrelated to the question with the question, but in the grand scheme of my comment it's the same)

First let me say that DevExpress support is fantastic and among the best that I've worked with. Stan, Nick, Plato and Alex (the main guys I usually work with) are always great.

That said, entering a support issue doesn't always flow, which is why I think you see a lot of this stuff. Here are a few of my suggestions.

1) Implement a Microsoft like bug report/suggestion system. Get more fields and make them required.


- Product (XtraEditors)

- Sub Product (TextEdit)

- Version (make this a pre-defined list. not free form)


As one option changes, the others fill in. This would definitely cut down on "what product are you even talking about?"

2) Once a support issue is resolved, have the support engineer tag it with multiple tags. then allow the user to drill down into tags, popular ones (such as xpo, wcf, Windows Communication Foundation) or (textedit, rtl, right-to-left)

I know this is more work on your guys end, but i think in the long run it would actually help.

Just my opinions having used the DX support system for a few years.

Again, your support is great!

28 August, 2007
Martin Paternoster

As someone who works in software support, I have to say I feel the pain your support personnel go through.

I am glad to say that I have had 1 bug report, 1 feature request and that's all I've needed.

Everything else I've required was documented well, and examples given.

Kudos to your support, your developers, and for the sheer bang-for-your-buck qotient.

My favourite components.

29 August, 2007
Miha Markic - DevExpress MVP

I think your calculations aren't correct.

"Say you cost your employer $100 an hour (you know, it'll be close with salary, medical, dental, vacation, 401(k), options, stock, etc, etc). That's 13 hours of your time, less than two days. Are you going to design, write, test, bug-fix a tree-view, for example, in that time?"

That's not entierly true. What happens if you have a team of i.e. 40 developers. The cost of suite isn't $1300 anymore but 40 x $1300 - discounts which isn't a small sum anymore.

Regardless of this calculation I am on your side - it is almost always better to implement 3rd party control rather then develop your own.

29 August, 2007
James Moore

There has been plenty of response to my interview a few days ago with Simple-Talk – rather than trying...

29 August, 2007
Chad Stevens

I'd just like to chip in. I started looking into DevExpress about a month ago. Loved the controls right off the bat even though I'm still trying to figure everything out. But the primary thing that sold me was reading through the knowledge base and seeing how your tech support responded to questions. Always positive, always attempting to understand what the customer is trying to do (and let's face it we don't always ask good questions), and sticking with issues until they were resolved. I'm amazed at how many samples you guys crank out in response to questions. Keep up the good work, keep asking questions and please pass this along to your tech support team. They're amazing.

29 August, 2007
Andrew Connell

Thanks for the plug Julian... Been working on those templates & refactorings for months for my benefit and figured I'd just give them away to benefit others and spread the CR/R love! :)

31 August, 2007
Peter Meyer

Having been a DevExpress customer for several years and being a one-man business developer, literally writing the code that supports my entire small business, I have to say I couldn't have done it without a 3rd party vendor.  I evaluated several vendors before deciding on DevExpress, mainly becuase they just seemed to work like I expected without a lot of crazy work arounds (well, XtraReports 1.0 got a little hairy!), but the point is, you guys keep improving and with each release, I can remove some crazy workaround that you guys implemented and like you said, I'm not maintaining that functionality anymore, you are.  I absolutely love the products and the support that comes with it.  I'd like to challage "irascian" to report a bug to Microsoft and see if he gets an answer in 24 hours!  Keep up the good work and the awesome support!

20 September, 2007
Brian Donahue

On both sides of the fence, support answering questions with questions is a serious problem. In one blog, I read it was called 'shark-escape' tech support, where one evades the shark until it swims away in search of easier prey. I can tell you you're not the only ones that have had that accusation leveled at them. Sometimes we aren't even told which of our fifteen or so products are broken! For the rest of email enquiries, the sales and support teams are making auto-responses that pinpoint common issues with the products. In the case of Profiler we'd seen a 25% decrease in the more sophomoric questions so we can spend a lot more time on the big, fat, juicy ones. I can say we've had our trials with DevExpress, but I can't fault the responsiveness and quality of information that comes back (provided we give an adequate description of the problem!).

25 September, 2007

"Say you cost your employer $100 an hour (you know, it'll be close with salary, medical, dental, vacation, 401(k), options, stock, etc, etc). That's 13 hours of your time, less than two days. Are you going to design, write, test, bug-fix a tree-view, for example, in that time?"

Remember not everyone lives in the US and earns $100 an hour. For example here in South Africa, $100 equates to about R700, and $1,300 about R9,100 (and even more if other taxes/shipping costs are involved) which is more than the average salary of a junior/average programmer for an entire month. And we also like to use the latest 3rd party controls and technologies, etc. (we not that backward here you know :)

So in the US it might just 13 hrs salary of someone, somewhere else it's more than a month's salary.

So please keep that in mind... :)

4 October, 2007
Christian Forberg

Within our very little company we would just not exist without third-party-components that boost our possibilities what we can offer to customers. The crucial point is, that you have to spend sufficient time to find out which one is best before you build your applications on top of it.

10 October, 2007

Please login or register to post comments.