As a consultant, Josh Assing's role is to assess problems, share experience, and recommend solutions for his clients. It's also his job to do what the client wants, even when it goes against his advice, and then gracefully apologize without a single "told ya' so" when the client's plan goes terribly wrong.

Several years back, Josh came across a prospective client who needed some help with a FoxPro-based application that they were selling. Like other niche-market applications, this one was originally created by a non-programmer and hacked over the years by salespeople, marketing folks, and the janitorial crew. It was the exact type of job that Josh had no interest in taking, especially since he didn't care for FoxPro too much. He turned it down.

Giving the saddest of the sad puppy-dog look, the VP/CTO/Salesman acknowledged how bad their application was and begged Josh to help out. He said that they really needed some one to get them going in the right direction and promised Josh the opportunity to lead the upcoming redevelopment project. How could anyone turn him down?

As the months went by, Josh helped them out with changes and bugs and would often joke and laugh with the VP/CTO/Salesman about the quality of the application. There was one thing that the VP/CTO/Salesman would always say that threw Josh off:

FoxPro's runtime DLLs are way too big. We shouldn't even be using them since all the functionality is built right into the OS's DLLs

As more time went by, Josh noticed that he was becoming the scapegoat for the quality of the application and decided to step-up his "we really need to redevelop the application" speech. The VP/CTO/Salesman finally agreed and, the following week, started interviewing several C# developers to redevelop the application as web-based program.

This reaction surprised Josh, especially since there were no specs, no requirements, nor even a scope for the project. But the VP/CTO/Salesman insisted that he knew what he was doing and that web-based applications were the future. Josh  pointed out that a web-based application didn't make sense because most users don't have Internet access or a web-server to run the application. The VP/CTO/Salesman accused Josh of "clinging on to FoxPro" but suspended the redevelopment project none the less.

A few more months passed and the VP/CTO/Salesman wanted to add a fairly large feature to the application. Josh recommended that they license a third-party component instead of developing the feature. The component was royalty free, had a small redistributable library (a single 68k DLL), and cost only $99.00. The VP/CTO/Salesman blew up:

You're joking, right? Another DLL!?! There's absolutely no reason for that. I'm sick of all of these add-ons!

... [snip 5 minutes of ranting] ...

I've been talking with another developer. He says that with C#, we don't need DLLs and that, unlike your precious FoxPro, .NET does not have a runtime!

Josh tried to explain to him that .NET does, in fact, use DLLs. He agreed that .NET is an excellent choice, but that redeveloping would be significantly more expensive than the $99 component fee. He also added that .NET would, in fact, have a rather large runtime of twenty-five megabytes compared with FoxPro’s three megabytes. Naturally, the VP/CTO/Salesman disagreed:

.NET doesn't have a runtime; it has a "Framework". Maybe you should join us in the 21st Century and get your head out of the FoxPro sand. You'd probably learn something.

That, for the most part, ended their working relationship. Josh agreed to maintain the code he developed for the old FoxPro application and silently watch the VP/CTO/Salesman lead the redevelopment effort. It was quite a show.

At first, the VP/CTO/Salesman decided to go with a Java-desktop application. The .NET programmers he hired to do this built an incredibly poor application and managed to lose a significant amount of business. He decided to redevelop the redeveloped application in .NET and hired new .NET programmers to create a C# desktop application and trainers to train the users. Although through all this the VP/CTO/Salesman has lost more money than he's ever made, at least he saved $99.00 on a DLL.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!