Stop Reinventing The Wheel

When developing software, what does the company you work for usually say are the priorities?

Well, most will say speed to market for the lowest cost possible and meet the consumer needs. Most of this article will discuss the first two reasons even though it also affects the last one too. So, my question to development teams is why are you trying to reinvent the wheel? Microsoft .NET has been around for 17 years and most of what we need to write business applications (most what I write) has already been written. All we do as developers is “glue” it all together to meet the business needs. Need an example?

When I started at one of my recent full-time jobs, the architects there were working on a workflow program. After I learned about it and then looked at what they have developed, I found it difficult to use and I still wondered why they just did not use the workflow in .NET or a pre-written framework from a company like K2 who have been doing workflow for a long time? No… they could write it better (which was their mantra). Four and a half years later when I left the company, their workflow framework still did not work! Just think about the tens of thousands of dollars spent for an unusable framework?

At this same company, there were many times that lead developers came to my office with an issue or a feature they need to write and my first answer, always, was to recommend a framework that already existed and said to try that framework first. Every time, they said they did not have time to research it but they seemed to have all the time in the world to write it themselves. I never saw this work while I was there and caused major delays in delivery with less features. This lead to that companies’ major competitor to steal away many of their customers. I left that company over five years ago. Need a more recent example?

At a more recent job, I was tasked to add a new feature to an ASP.NET Razor page. This company favors open source. The feature was an easy one, the end user needed the ability to filter a list on a page by customer email address. Since I am new to Razor, this ended up taking me 3.5 days. That would have cost a typical company, using an hourly rate of $45, a whopping $1,260. If they used third party grid from a company like DevExpress, GrapeCity or Telerik, I could have easily gotten this done in under 3 hours, a savings of $1,125! I could have even added other features to the page from one of these grids like sorting, grouping and more with NO CODING NEEDED! Talk about getting it done faster, cheaper and with more features for the end user.

I have been speaking at conferences and user groups about third party add-ins to Visual Studio for as long as I can remember. Most developers totally understand the value of using these types of products. Unfortunately, a group of members of a local user group has told the organizer, based on my talks there in the past, that they do not want to hear about this subject. I was surprised at this comment. These developers must be “complexifiers”, so I must take this with stride. I have not been asked back to speak. Whoever these developers work for, they need to read this article.

Return On Investment

Most developers see the value in third-party products. Unfortunately, managers on up usually do not, especially accountants. There always seems to be money to re-write code over and over again, but never enough money to do it right the first time. This section is for them since I learned that they only understand time and money.

One job I worked at used the worst source control program I have ever used… yes worse than Visual Source Safe. After I started, I kept asking them if we could change to Team Foundation Services (TFS). They kept saying NO. So, out of frustration, I asked all the developers in my team how much time they waste a week with this program. The average was 5 hours. That’s 5 hours we cannot fix bugs, add features and was a major source of frustration for the team. This ended up being a loss of $1,125 per week (not including loss of features and customers). If I apply that cost to the rest of the developers in the company, we could have saved $67, 500 a week (over $3.5 million annually)! Once I calculated the saving for the company and presented it to them, they decided to convert to TFS!

Based on a poll that I have done online, most companies do not buy any third-party products for their teams. At the company I mentioned in the earlier story, I was the only one in the entire department that used them since I had my own personal licenses.

Here is an example. One of my “must have” add-ins for Visual Studio is CodeIt.Right from Submain. It is a static code analysis tool that will also properly fix most of the violations it finds. By default, it follows the same analysis rules as Visual Studio Analyze/ FXCop. To help sell CodeIt.Right, Submain has put a ROI calculator on its website. So, if a team has 5 developers with an average hourly rate of $45 spends 2 hours a week on code review, using CodeIt.Right could save the company $21,600 annually. If the same team spends an average of 6 hours a week on code fixes, CodeIt.Right would save another $64,000 annually with a total savings of $84,400! In America, they could easily hire a developer just on the savings alone.

My Must Have Add-ins

Since I have been using third-party products for most of my programming career, here is my current list of “must haves” before I can deliver code faster and with better quality.

  • .NET Memory Profiler from SciTech Software AB: .NET Memory Profiler is a powerful tool for finding memory leaks and optimizing the memory usage in programs written in C#, VB.NET or any other .NET Language. With the help of the profiling guides, the automatic memory analyzer, and specialized trackers, you can make sure that your program has no memory or resource leaks, and that the memory usage is as optimal as possible.
  • CodeIt.Right from SubMain: CodeIt.Right provides a fast, automated way to ensure that your source code adheres to (your) predefined design and style guidelines as well as best coding practices. We take static code quality analysis to the next level by enabling rule violations to be automatically refactored into conforming code. CodeIt.Right helps to improve your software quality, ensure code correctness, find issues early and resolve them quickly.
  • CodeRush from DevExpress: Refactoring tool that also makes it easy to find defects and runs unit tests in half the time and lots more.
  • GhostDoc from Submain (free version available): GhostDoc is a Visual Studio extension that automatically generates XML documentation comments for methods and properties based on their type, parameters, name, and other contextual information.
  • StyleCop (free from Microsoft): StyleCop analyzes C# source code to enforce a set of style and consistency rules. It can be run from inside of Visual Studio or integrated into an MSBuild project. StyleCop has also been integrated into many third-party development tools.

For UI controls and reporting, the top three companies I look at are DevExpress, GrapeCity and Telerik. How do you choose the right product for your team? I have described my process in detail in 256 Seconds with dotNetDave - Choosing a Third-Party Product.

I have showed how your company and team can save many thousands of dollars a year. If you factor in better quality code, deliver features faster and better customer loyalty… well, that is priceless. What are your favorite tools or add-ins? Please add a comment below.

McCarter Consulting
Specializing in software architecture, Microsoft .NET, mentoring, resume review/prep.