An Interview with James Moore

James Moore on why he insists that his devleopers use the appropiate third party tools in their work, the problems with Visual Studio, and what's happening in Red Gate's new .NET tools division.

1. James, who are you, and what do you do?

My name is James Moore and I’m a developer at Red Gate Software. I developed the UI for SQL Compare 5 and SQL Data Compare 5, was technical lead on SQL Backup 5, and I now run the .NET Developer Tools Division.

At the moment we have ANTS Profiler, which is a great tool one that we’ll continue to develop and improve. In addition, there are now a group of us working full time on developing some exciting new tools to sit along side it.

2. Do your developers put their money where their mouth is and use third party tools?

I think it would be criminal not to. If I am costing my employer $100,000/year and, by spending a few thousand dollars, I can make myself more productive and produce better code, to not do so would be negligent. As a professional developer there are only a few things your boss is going to care about: 1) how long it takes you to write something and 2) how good it is. You have a responsibility to your employer to create the best code as quickly as you can, and you should push back against any red tape that makes your team slower or prevents them from producing their best work.

So, yes, I actively encourage the use of any tools and techniques that will help my team achieve their goals faster. In fact, if I found out one of my developers had not spent a few hundred or thousand dollars to make them more productive then I would be livid.

I can tell how well other third party tool companies are doing by what tools our developers are using or how much they are complaining about the latest version of xyz. For example, Resharper used to be ubiquitous within the company but, at the moment, JetBrains seem unable to create a stable, scalable build and so many in our team have switched over the DevExpress’ CodeRush.

nUnit, nCover and CruiseControl.NET are all used for our continuous integration. We use a lot of third party UI components – Actipro used to be the component of choice but they seem to have lost out to DevExpress’ suite of components, and Syncfusion’s excellent virtual grid.

TestDriven.NET is another tool that you will find on many of our developer’s and tester’s machines. Lutz’s Reflector and its many, many add ins are invaluable when you are trying to figure out what is going on in the framework.

ANTS Profiler (of course), WinMerge, ManagedSpy++ and Paint.NET are probably the other tools that most of our developers use regularly.

3. You mention ANTS Profiler (of course) but do you use it?

 

Of course ;). I couldn’t imagine releasing an application without running Profiler over it. I have tried out most competing tools and have stuck with ANTS Profiler, the main reason being that the source code view with line level timing is an absolute killer feature for me. The ability to see how long each individual line took and how many times it was executed has turned up so many bugs I would have otherwise missed.

4. Prove it. Give me some examples of when ANTS profiler has really helped you as a developer.

On SQL Data Compare 5 we were working on the row-by-row grid at the bottom of the screen. This grid shows the comparison between two tables so it had to happily deal with in excess of 50 million rows. I had to be sure that each and every algorithm we used in there scaled with a constant factor – even linearly could be too high when dealing with those numbers. ANTS Profiler really let me test this out by varying the number of rows and columns in the grid and seeing how the execution times of various parts of the application responded.

On SQL Backup 5 we used ANTS Profiler extensively. It turned up so many problems – or things which could have become problems – that I can’t remember them all let alone describe them all. However, I do remember a case where Dan had written a really nice utility class early on in the project. As the project progressed, this class found its way into more and more parts of the UI and was being used in slightly different and unintended ways, and we suddenly found that the UI’s start-up time was 10 seconds. Profiler uncovered an O(n2) loop in the code. Once we’d fixed it, the start up time dropped to 3-4 seconds instantly.

On another occasion, we were trying to optimize the process of connecting to servers and retrieving a lot of metadata from them. Our testers had set up a server which had five or six thousand databases on it – I don’t think SQL Server could take any more than that. Under this strain, the Backup UI became pretty unresponsive (not that SQL Server Management Studio or Query Analyser fared any better). However, by working with ANTS Profiler I could immediately pinpoint the parts of my code that were not scaling well and fix the problems. In this particular case it required a lot of digging around in SQL Server’s internal tables to extract all the information I needed for all databases from a single query. This had the knock on effect that under normal operations (10-200 databases per server) registration and update became incredibly quick – something which before I had just accepted would take a while.

 

5. What would you say to the .NET developer who says he only needs Visual Studio?

I would say that they are probably missing a trick. It often seems to me that the best kept secret in Computer Science is that programming is a pretty creative process. A painter might arm himself with a starter kit of pallet knives and brushes (think Visual Studio) so that he can apply most of the common painting techniques to his canvas. A great painter will spend a little more on the extra brushes and tools he needs to get things just right.

And let’s be honest here: Visual Studio is not a great IDE. I don’t think there is a great IDE out there, or if there is then I have yet to use it.

Microsoft is always big on dog-fooding and yet it is reported that, internally, they don’t use the public SKU’s of Visual Studio. In my opinion Visual Studio is bloated and tries to do too much – do you know what half those buttons on the tool bars do? It’s like driving a Skoda when what professional developers really need is the power of a Porsche at their fingertips. Tools such as CodeRush and Resharper help but it’s like putting a turbo on your Skoda – ultimately you still have a Skoda.

I suppose I feel the same way as the guy who said these punch cards are tricky to program on – is there something else I can do to make it easier? Ultimately we are still using glorified text editors to program in. There seems to have been very little innovation in this area in comparison to the rest of computing over the past few decades. Sure, I now have to write less code to achieve more functionality and writing that code is a bit easier, but should I be writing code at all? I believe there is a better way and you can be sure that I am looking for it.

6. What about Orcas? Won’t that be better?

Not really. I use it most days to play around with bits-and-bobs of code and it’s no better or worse than Visual Studio 2005. Microsoft are not doing anything interesting with it; they seem content to add more bloat, roll it out as a new release and then try to talk people into upgrading to it. And let’s face it; eventually we probably will do because it will make it just a little bit less painful to code than it is now.

7. What’s your experience of working with Microsoft? Your boss doesn’t seem to like them.

I can’t speak for Neil – he’s loud enough as it is – but it’s not about liking or disliking Microsoft. They are a large corporation and, like any large corporation, sometimes they are great to work with as partners, and sometimes they do things that make you wonder “what are they thinking?” The bottom line is that Red Gate wouldn’t be focusing so strongly on Microsoft technologies tools if we didn’t have a huge amount of respect for Microsoft and what they do.

Everyone I have met at Microsoft has been really nice. They have some incredibly smart developers, and it’s clear that they care passionately about their products. However, something is incredibly wrong with an environment where it takes a year to develop the shutdown buttons in the start menu, and still make them confusing.

The shutdown buttons are an extreme case, but if even a small proportion of their developers suffer from that sort of work environment, then smaller software companies like Red Gate have a huge advantage. It’s like the tortoise and the hare. Red Gate can move quickly into smaller markets but if we don’t keep pushing ourselves then the tortoise will eventually catch up. I’d sum it up by saying that small software companies such as Red Gate keep Microsoft on its toes, and Microsoft keep us innovating.

8. So what are your grand plans for Red Gate’s .NET Division?

Our aim is to make developing high quality stable software easier and that is what our tools will be about.

It means we’re going to give developer tools that allow them to focus on what they should be doing – problem solving – rather than on the ‘mechanics’ of development.

Any developer will tell you that the second time they write a certain piece of code, it is always several times easier than the first time. That’s because first time round writing the code, dealing with bugs and performance issues, and so on, takes up so much time that they don’t spend enough time focussing on the actual problem they are trying to solve.

I want to make tools that, like ANTS Profiler, allow developers to focus much more on the problem – and therefore get closer to the feeling of clarity you get the second time you write something, the first time you write it.

Our first tool is well underway and should be out in the next month or two. It fits really well with ANTS Profiler and will allow a developer to see which exceptions a function can possibly throw, kind of checked exceptions for C#. There is nothing worse from a customer’s point of view than seeing a program crash and losing data – I want to make it easier for programmers to avoid these sorts of problems the same way that ANTS Profiler makes it easier to avoid writing slow code.

Beyond that we are currently doing some research into how we can improve ANTS Profiler and looking at some exciting new markets; if any readers have any gripes about their current tools, suggestions for tools they’d like to see, please drop me an email!

(Ed: James has responded to the comments below in a blog entry In Response…)