Software Development

It would be better if I started from the top.

We have an old but very robust Visual Foxpro 9 application. It is an ERP system for Truck Brokerage firms. Well this application has been out for 14 years and was the first windows based brokerage software. Obviously it has gone through a lot of changes in the last 14 years. It currently handles all accounting, interfaces with quickbooks, creates invoices, rate confirmations, email, pdf conversion, document management, and a lot of other functions for the truck brokerage companies.

Because it is currently just a server/client appliation and almost everything is moving to web-based applications, 2 and a half years ago we began rewriting the Visual Foxpro application to a web based application using PHP, AJAX, JSON, JQuery, and a MySQL database.

That wasn't the only reason for the application to be rewritten, the current application has been through many programmers hands in the last 14 years and has some poorly coded methods and practices throughout the program. Also Microsoft will no longer be supporting VFP9 for much longer. Yes it will continue to work fine but when Microsoft stops supporting an applications you have to worry about hot fixes, or at least that has been my experience in the past.

Anyway back to the application and the rewrite, the person in charge of creating the spec sheet for the web-based application really just skimmed the surface of the Visual Foxpro application.

We only have had one developer coding the new web-based application for 2 years. It is currently working and only needs a few more tweaks to finalize the web-application so it is ready for deployment. Well sadly the senior web-developer found a new job.

Being pushed for time we have looked at having the remaining of the work contracted out. One company thinks it is possible to use the code we have now, fix the bugs, separate the database out by customer, so that all the other customer's data isn't stored in the same tables. But this company isn't completely sure if they can handle the immense amount of code already written.

The other contractor company would like to throw away all the work and start over using HTML5 and some frameworks (They have yet to inform me what frameworks they are planning to use, or what database they plan to use). The price they quoted isn't bad but I don't think they will be able to write the application using the spec sheet that was created 2 and a half years ago. The current code we have for the web-based application should be used as a spec sheet if we decide to go with this contracting company. If they use the spec sheet that was created 2 and a half years ago we will end up with an application that doesn't do half of what the current web application does.

If it was up to me I would use HTML5, Node JS, AJAX, and probably a MongoDB for the back-end database.

Any advice would be greatly appreciated.

Thanks,
Tristan
TristanHowlandAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

RobOwner (Aidellio)Commented:
Hi Tristan,

Certainly a tricky one.  There will be a lot of factors at play here as I'm sure you're aware.  

What is coming to mind over and over as I read (and re-read) your question is your budget.  How much are you going to spend constantly developing and working on something not to mention investing in HR to only then lose it when they decide to get another job.

Before I go any further, my last position was to manage quite an extensive ERP system for a smallish company.  It was very unique and not a lot of support out there.  Consequently I had to write some add-on modules to get it to work with policies and procedures the company wanted to enforce.  

Why am I sharing this?
Because there came a point where I decided to look into writing a custom ERP system myself.  :) Turned out to be a bad idea...  due to the amount of work that would be involved, legal liability (think accounting etc) and constant "tweaking" not just for hotfixes but for the fact that the company reviews and changes its procedures to as the normal evolution of the business (e.g. tax policies are always being modified from year to year).

What did I decide to do?  
Buy an off the shelf product that had the basics of what was required (AP,AR,HR etc) but had the flexibility either through coding or community add-ons to be tailored to your business
Develop a good relationship with a reseller that knows the product inside and out and takes the time to understand how the product needs to be customised.
Implemented a staged approach when putting this to the directors so the value is spread out over a few years rather than all at once.  That would depend on your situation.

You've got to weigh up the value of in-house vs outsourcing vs off-the-shelf products.  
The benefit of in-house is that you get to know the inner workings of the business but you are a huge risk.  Certainly getting the right reseller and working with them would certainly solve that issue.  
Outsourcing is good for small projects but those that you outsource too are more than likely working on many other projects as well and will have forgotten what's going on with you the next time you need them to do something.  That's been my experience anyway.
Off-the-shelf in conjunction with a good reseller is something I really value as it is their job day in day out to understand the product and understand your business (albeit other businesses using their product too).

It can be a very hard thing to measure and justify given the situation you're in, to scrap the project and go with an off-the-shelf product.  I would guess that to employ a developer full time would be roughly the same cost as a brand new implementation of a medium size business ERP system.  The on-going costs would certainly be more for a full time employee developing the system.

I'm all ears for discussing this further especially if you've already hired a new developer.  Remember this could be part of a 5 year plan.  Get it working now as you've got it before handing it over to using a 3rd party software.

Cheers,

Rob
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Cornelia YoderArtistCommented:
This is a huge question, and certainly beyond the scope of EE experts to answer.

I can give you some comments, based on 20+ years of working for IBM, programmer and manager.  They may or may not help you with this assessment and decision.

"2 and a half years ago we began rewriting the Visual Foxpro application to a web based application using PHP, AJAX, JSON, JQuery, and a MySQL database."

This is a perfectly good choice of framework, one that will be around for a long time.  It's also easy to work in, and there are tons of programmers who know it well.  Unless you believe there is some inherent fault or shortcoming for your particular application, I would suggest sticking with it.

"...the person in charge of creating the spec sheet for the web-based application really just skimmed the surface of the Visual Foxpro application."

Big mistake.  You started coding an application without adequate specs, and apparently also didn't document what you developed during this 2.5 years of coding.  You need to fix this.  Write a full complete spec, based on the original program/spec, and on what has been changed/added in the rewrite.  Until you do this, you can't really determine if what you have needs to be rewritten, or if you really just need "a few more tweaks to finalize the web-application so it is ready for deployment".

"One company thinks it is possible to use the code we have now, fix the bugs, separate the database out by customer, so that all the other customer's data isn't stored in the same tables. But this company isn't completely sure if they can handle the immense amount of code already written."

This company needs to define what is wrong with their abiity to "handle the immense amount of code already written".  Why is this a problem for them?  Understanding the code?  or understanding the specs?  or inadequate manpower to debug it?  or inadequate programmers not capable of finishing it?  Until you pin down where the difficulty is, and solve it, you can't decide if this company is up to the task.

"The other contractor company would like to throw away all the work and start over using HTML5 and some frameworks"

Throwing away all the work accomplished in the past 2.5 years is silly, unless you have determined that it is in fact not in condition to be finished into the product you want.

"(They have yet to inform me what frameworks they are planning to use, or what database they plan to use)."

Clearly you need to pin this down very solidly before you can even think about choosing them to do it.

"The price they quoted isn't bad..."

If they quoted you a price without fully developed specifications to work from (and therefore to estimate from), they are desperate for work.  Once they get into it, they can come back with price increases to cover all those things which they "didn't know about" because they weren't spelled out in the specifications they estimated from.

"I don't think they will be able to write the application using the spec sheet that was created 2 and a half years ago"

It's not their job to create the specs, and certainly not from code that you consider unfinished and buggy.

"If it was up to me I would use HTML5, Node JS, AJAX, and probably a MongoDB for the back-end database."

To make this statement, you must already feel that the framework you have started with ("PHP, AJAX, JSON, JQuery, and a MySQL database") is not the best choice for this application.  Do you have a well-thought-out reason for saying this, or is it just your personal favorite?  Doing this would mean throwing out the 2.5 years worth of code and starting again?

If the existing web-based code is in decent shape, only "a few more tweaks" from done, and it will be suitable, adequate, and maintainable for your application for the foreseeable future, it makes no sense to me to throw it away just to change to a similar but different framework and database.


Now that I've written all this, I find I'm coming to a conclusion that I will share.  Keep in mind that what little you wrote in this question is not even consistent, so make your own judgments.  But here is my opinion:

1.  You desperately need to write a full, up-to-date, complete specifications first.  Only then can you reasonably make framework decisions.  And then you can get a realistic estimate of debugging and completing what you have vs. starting over from scratch.

2.  Neither of these companies seems to be suitable for this job.  One is self-afraid they are not up to it, and the other clearly is not if they want to just scrap it and start over, rather than bother understanding what you have.

3.  While you are writing the specifications, use the interim to hire TWO programmers to finish the code you have.  Contract programming is iffy, so get someone who is devoted to solving your problem, not their own.  Two programmers can work more than twice as fast as one, and you won't risk having your entire development staff suddenly finding a new job and leaving you high and dry.

4.  After the specs are finished, the programmers can dig right in to the existing code and compare it to the specifications.  At that point you can make a much more informed decision about finishing vs. rewriting.


I hope this helps you, I certainly wish you luck!
0
RobOwner (Aidellio)Commented:
Further to what you're question was about with the 2 contractors

Being pressed for time, I would strongly recommend getting the first company you mentioned to just fix the outstanding issues.  They're trying to cover themselves essentially as it could be quite impossible for them to quote how long it is going to take given the enormity of the code.  But they are willing to work through it with you.  Don't under estimate the value of that.  Under your guidance, it may resolve itself a lot faster than you expect.

I would be VERY hesitant to go with someone who wants to re-code the whole thing for you.  
Are they going to be able to support it going forward? Especially the way you need them to?  
Are you just paying for them to develop an off-the-shelf product that they could then go on and sell?

I'm talking from experience specifically with ERP systems.  They're not something you just code and forget about (I know you know this).  You need to know if they're dedicated to supporting your system.

On a side note, I also went through the due diligence of replacing the ERP system we had with another more flexible or powerful system.  You know what I found?  All that really mattered was the support structure the reseller had in place.  The software from one to another didn't matter, they could all do the job.  The most important thing was the support you got (and the cost of it).
0
Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

RobOwner (Aidellio)Commented:
I have to +1 to what @yodercm has said about specs.  Even if going with an off-the-shelf, you need to have written down how your business works so that the software can be modified and suited to your needs.
0
TristanHowlandAuthor Commented:
Everyone,

Thank you so much for all the input, to be honest it is a lot to take in. I will write a detailed response tomorrow.

Today I met with the first company that wants to work on the code, fix the bugs, write the 2 missing modules and have it finished by April 1st next year. The problem is they seem to be a completely Windows sharepoint
0
TristanHowlandAuthor Commented:
Everyone,

Thank you so much for all the input, to be honest it is a lot to take in. I will write a detailed response tomorrow.

Today I met with the first company that wants to work on the code, fix the bugs, write the 2 missing modules and have it finished by April 1st next year. The problem is they seem to be a completely Windows sharepoint/.net shop. I found it odd they wanted the ability to set up their own local environment for testing instead of using our servers and the repositories we already have set up. It will be run completely on a centOS security enhanced box, it needs to be developed and tested in the environment it will be released on. I don't think you will get any clear testing running it in a different environment. They have signed an NDA.

I am meeting with the other company 10 hours from now. This is the company that wants to scrap the code. If anyone has any other information I need to say to this other company other than trying to convince them to not to throw away the already written code. This company also seems like a sharepoint/.net shop.

I am creating a completely separate branch of the repository tomorrow morning as soon as I get into work. The company I work for is very small, currently it is just me and the boss again just like it was when I started almost 3 years ago. Not to say anything mean about my boss but he will admit he is not technically inclined, and all this is way over his head. The only other person who works with us is the senior Foxpro contracted developer of the current application.

I will go into more detail tomorrow.

Thanks again,
Tristan
0
Cornelia YoderArtistCommented:
So the "...one developer coding ..." was the FoxPro contracted guy?  Why isn't FoxPro replacing him?

It might be time for your company to hire a programmer.  

I stand by my "two is better and faster than one", but you might consider hiring an experienced programmer and then see if you can get an intern from your nearest university to work with him/her.

An independent contract programmer would also work if you can find one that is sufficiently knowledgeable.  Again, your local university might be a source for finding someone like that.
0
TristanHowlandAuthor Commented:
Sorry that statement was incorrect. The Foxpro developer is still on board and still programming the Foxpro application.

When I first started there was a big turn around in the company. Within 3 weeks of me being hired the only people that were still working for the company was the owner, myself, and the Foxpro contractor.

Shortly after that we hired someone to spec out the new web application from the existing Foxpro application. Well as I said before the spec sheet barely skimmed the application.

About 2 months later they hired a very good web developer. He wrote the web application we have now, but he found another job, after more than 2 years of completely developing the application by himself. The major issue was scope creep, the program was constantly being changed, modules added, complete rewrites of the backend code, 3rd party integration. Not to mention writing PHP  scripts to fix parts of the Foxpro application.

We have been trying to hire in-house an web developer for a good while but haven't been able to find anyone who can handle the web applications code. We are still looking for a couple good in-house web developers. The ones we have had either didn't understand it or created more bugs in the code that the senior developer had to go back and completely rewrite all of his code.

Well the good news is I met with the company that wanted us to completely throw away everything we have and start fresh. After our meeting today they seemed a lot more confident just fixing the issues with the code on the dev server. They will then add the last 2 modules to the program so it can finally be released. They plan on coming back with another proposal after meeting with me and seeing the code and the backend database in action. So hopefully they will come back with something reasonable. We will still need to hire another employee either way.

Currently I fully support the Foxpro application. I create all the spec sheets and documentation for the Foxpro developer when it comes to customization requests. I write all the installers, handle all the php scripts that post to the third party web-services. Solely manage all installs and training of the Foxpro application. Also do all the help desk support. I Install and configure the apache and php installs on the customers local web-servers, which are all windows servers. I also have to manage the new web application, and the security enhanced centOS Linux servers off site at the data center. At the current time I do everything except for sales and money management. I also cannot make executive decisions but my input is valued on almost all operations.

The comment I made about rewriting it in html5 using node JS with a mongoDB database would just be my person preference on how I think the application should have been developed in the first place. The senior developer agreed with me after about a year of developing but because of time constraints he couldn't write it all in time.

Everyone we have brought in to help develop the web application cannot keep up or cannot understand the code. After meeting with the contractors who hopefully no longer think they should just rewrite the application, I feel a little more comfortable if the owner does decide to let them finish the code. At least that way we remain in control over the code. Obviously we would love to find 2 good in-house programmers to finish the application, that would be the best way to keep the code under our control.

The statement about having a fully documented spec sheet is a must. And I would be the best person to write it but unless someone is hired to help with my positions there is no way I have time to complete this task. Hopefully we can get someone hired soon, that just graduated, so I can teach them the time consuming tasks like training and installs. That way I can be freed up to do the important work that needs to get done to have this project competed in time.

Both companies we are considering do contract work for nasa and the local military base, so both companies are desperate for work because the government is shutdown. The company who first said trash what you have and we will rewrite it they have kind of changed their tone and feel that this could be their break into non-government contract work. They are coming back with another proposal soon hopefully it will be good news. Unfortunately I can't make the decisions but of course my input is taken into serious consideration.

Again thank everyone who has posted their comments to give me advice on this issue. Please critique any thing I have said and all advice is helpful to me at this point in time.

Tristan
0
Cornelia YoderArtistCommented:
Don't overlook the idea of using college interns.  Many schools have a program where interns work for one semester for college credit instead of salary.  If you have a local college, it's worth a call to the computer science department to find out.

The really good part about these interns is that they have the latest up to date knowledge, at least academically, and they work for free.  They are usually well-motivated because they want to put this on their resume and will hope to use you for a job reference in the future.

It is also a really good way to find a programmer to hire, if you like their work.

The down side is that they typically need some guidance since they are not experienced in professional environments, and of course they leave after 4 months unless you actually hire them.  

I have used interns like this for many years, ranging from 1 to 8 students per semester, having them writing web applications that I run as a small business.   In a couple of cases, I hired one of them later on a contract basis to finish a project, so that is also a possibility for you.
0
RobOwner (Aidellio)Commented:
Some of what I've said will hold true but I'd got the impression (from somewhere??) that you were looking for the ERP for yourself but essentially you're tailoring one for a specific industry.
It's certainly possible to adapt an off the shelf product to the truck brokerage industry.  Greentree, SAP One, Netsuite, JIM2 etc can all be customised with further programming to suit the industry so becoming a reseller could be viable option.  Let someone else do the hard work in providing the basics of an ERP system and you guys customise it and take a cut for your specific industry and customers.  Just an idea :)
0
TristanHowlandAuthor Commented:
Thanks for everyone's input. I don't know how I should reward the points for the comments made because everyone had very good input. This thread has definitely helped out a lot with our current situation.

If anyone has any other input please feel free to post it. I will be most likely closing this question on Monday because I have received all the input to move forward.

Thanks again for everyone's help and expert advice!

Tristan
0
Cornelia YoderArtistCommented:
You can split the points in whatever ratio you feel appropriate.  There are only two of us who posted, so I suggest just splitting them 50-50.
0
RobOwner (Aidellio)Commented:
Sounds fair to me.
Let us know also how the information has helped you as it may help others coming across this solution.
0
TristanHowlandAuthor Commented:
You two have been an amazing help. I really do appriciate it! I will be sure to post all the information that helped me so it can also help others. Thanks again.
0
RobOwner (Aidellio)Commented:
Thanks it would be a great source for the knowledgebase :)
0
TristanHowlandAuthor Commented:
Well, there was a twist and turn in events with this rewrite. The company who was going to fix our source code and have it ready by the deadline doesn't want a partnership to help us grow. They just want to fix a few issues and be done with the project, and not supply any additional features down the road. Safe to say we are not going with that company.

The other company that wants to rewrite from scratch which I think is ridiculous would like to do a partnership and help us grow and add new features. This seems to be the only way to go at the moment because we have had no luck in finding any in-house programmers who can understand the current source code. Basically this is going to put us a year behind schedule.

But I do appreciate both of your assistance in this matter and can't stress that enough. It has been a great learning experience hearing all the background information on what other companies have done in the past. Who knows maybe a couple of good programmers will be found out of the blue and we can get this finished on schedule.

Thanks again,
Tristan
0
TristanHowlandAuthor Commented:
Excellent advice from both the experts!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Windows Networking

From novice to tech pro — start learning today.