I have a friend that works for a company. They use a software product that is aged, and written in Delphi. There are concerns at this company about the life of the software company that provides the software (which they pay a monthly license to use). It's quite specific software.

My friend has spoken to his boss and I am being invited in with the potential opportunity to "re-write" their windows application with a view to also supplying source-code (C#, is what I plan to provide should this kick off).

Giving this some more thought, and even though it could give me some nicely-needed cash, I wonder what is the best option here...

The initial requirement would appear to be to replicate this application exactly as it stands. It was not developed in-house and therefore is used by other companies as-well. It's large and complex. While this does not worry me, I am concerned at the cost and time to do this just to bring it "in-house". They don't appear to want any new or different functionality, just a code-base they own.

So I guess, my real question; now that you have background information - is it worth me suggesting that rather than re-write this thing dot-for-dot, and feature-for-feature, to actually see what parts they use/don't use - and design an application tailored just for them rather than the generic off-the-shelf one they are using?

It seems a huge waste to just duplicate the application just to have ownership, but then I'm a programmer and not a business-decision-maker :)

Any ideas/thoughts/flames?



In fact if you don't suggest this - or at least bring it up I would hope that they would be a little concerned.

You need to help them read between their own lines. When they say that they want all the feature exactly as the previous application - surly what they are actually saying is "we don't want to change our workflow"... fine - but I am sure they are not trying to say - and yes and please waste months of effort for those features that we never use and are only there for the other companies.

Taking on this role you IMO are not just the developer you are now a consultant and you must try to make sure that you add value to them on both capacity - but they are still the boss so don't get too caught up in the consultant role :-)


Find out what they have been getting for their license fee. There could have been updates provide in recent years. What may seem like a waste may be an insurance policy.

Have they determined this app does exactly what they want or are they reluctant to put in the effort to change it? They may not feel there is going to be a lot of testing or requirements gathering on their part because all you have to do is make it exactly the same.

I'd be shocked if a new requirement didn't emerge in the middle of this project. Once someone comes to the conclusion you could make customizations - look out.


It would probably be best to build a new application that has features that they use from the old one. Trying to reproduce every single feature, even the ones they've never heard of, is a very difficult requirement, especially if they know they use a small subset of the old application's features.

Just be wary of feature creep - they will may want their existing functionality redone and with new features the old app never had. Make sure you have all the requirements properly documented before you start writing any real (non proof-of-concept) code.


Redeveloping a significant portion of a "large and complex" application that "was not developed in-house and therefore is used by other companies as-well" seems like a large undertaking for a single programmer. To complete this in any reasonable amount of time you will have to reduce the project to the specific functions they are using. Even then I am skeptical. How much experience do you have as a C# programmer? Is there any interesting math in this application, or does it just push data around?

Anyway, why rush? If the provider goes out of business, they can attempt to obtain the source code, or else look for an alternative at that point. The software will continue to run.



The client has defined the project as "replicate existing functionality". That is the work for which you were hired. Some clients are not interested in contractor suggestions that look like "I'm fishing for more billable hours".


It is reasonable (and professional) to suggest that while you are replicating the existing functionality, now is a good time for them to request any long standing, yet unfulfilled, desires about additional functionality. Don't push it, just suggest that "perhaps phase 1 is a full replication and a phase 2 can be rework and/or additional functionality". If they say yes, great. If they say no, also great.


I'd start by finding out how the use the software, actually figure out what they use the software for, and what features they use. Then draw up a set of milestone releases, each with a subset of features, slowly wean them off the old software and replace it bit by bit with your replacement.

Request payment at each milestone, and have a review process of how the project is going.

Also they may want the source code but I'd try and maintain ownership of the code, that way you can try and sell the code on to other people who use the software.

You will probably want to write a migration tool from the old software's data format/database to your software's, make sure you know what the data means before you do this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.