One of the problems with interviewing a vendor representative is that it is easy for them to drop into “salesman speak”. In the latest Arcast, Ron talks with Compuware representative, Sean Salisbury. Although there is the occasional product plug, it is intermingled with a number of great hints for successful development processes. These include integrated build testing (you mean your tests aren’t already run as part of your continuous build?) and performance analysis.
Speaking of performance analysis, JetBrains have been working on version 2 of their dotTraceTM Profiler. Last week we were having some issue with form load time so we downloaded the beta and within minutes we had tracked down some of our performance bottlenecks to the Infragistics grid control. More specifically the way we were using its stylesheets. Now that we know where the issue is we can work to reduce the load time. We want to keep using this grid control as it provides all the features we need in a data grid (such as headers, footers, styling and grouping with totals). So, the options are either to complain to Infragistics and see if they can tell us how to get around the issue, or, we can remove the bottleneck by putting it on a less critical path.
The idea of critical path in software is a concept that I think more development teams should investigate. By critical path I am generally referring to the user experience and everything that needs to go on to enable the user to work with the application. In the same way that you would minimise project risk by reducing the number/length/risk of items on the critical path, so too should application developers look to remove items from the critical path in their applications.
Take the example with the Infragistics control. The critical path here is that the user clicks a button and a form displaying a grid of data needs to be displayed (obviously in the shortest amount of time possible). There are a number of things that need to happen here: the form needs to be instanced, the grid needs to be created, the style sheet needs to be created from a resource file, the data needs to be loaded, the data needs to be bound to the grid, the form needs to be rendered. Using the profiling tool we were able to deduce that loading the style sheet is a major bottleneck on this critical path (at the moment all these actions happen in serial). If we can either pre-load this style sheet, or load it in parallel, we are likely to see a reducing in the load time for this form.