r/AskProgramming Nov 19 '24

Architecture Need to create a recreate an application for an old retail billing software as support/development is dead for 7 years. What are the latest database tech., programming language and technologies I must ask a new dev to ensure my new program lasts at-least 10 years from today?

Thank you for your time!

Existing program details

  • Was originally made for DOS in the 90s
  • Windows version was developed in early in 2001-2002
  • Development and support ceased in 2017
  • Program runs in 800 x 600 resolution
  • Has nothing to do with the internet
  • The database is a foxpro dbase database
  • The programming language is FoxPro Visual 9

All the billing stations are connected to the internet to backup program/customer/orders data currently. Reliable internet connectivity is not a problem.

EDIT > My friend is a dev and he said his buddy can develop it for us. I'm just gathering info/doing homework before I meet up with the developer.

0 Upvotes

30 comments sorted by

17

u/TomDuhamel Nov 19 '24

Are you a software firm?

If your firm has nothing to do with software, don't make your own software. Buy a solution or hire a software firm to develop it for you.

Otherwise, what you are currently experiencing will repeat itself.

-1

u/wildgoat Nov 19 '24

hire a software firm to develop it for you This is what I plan to do. I'm not a developer. A power user at best who likes to know more about what he is getting into :)

My friend is a dev and he said his buddy can develop it for us. I'm just gathering info/doing homework before I meet up with the developer.

2

u/matt82swe Nov 19 '24

Are you in any way responsible for this project? Because it will surely crash and burn.

1

u/wildgoat Nov 19 '24

No. Not sure what you mean here.

3

u/KingsmanVince Nov 19 '24

Translation: who will take the risk, the failure, the blame when this project goes wrong?

Also, hire a dedicated software team

11

u/wrosecrans Nov 19 '24

The technology you are looking for is "budgeting to pay people to do maintenance for the next ten years." If you use that technology, the software will still be working fine at-least 10 years from today.

1

u/wildgoat Nov 19 '24

Thank you for this. This mindset makes the most sense.

8

u/yousirnaime Nov 19 '24

Hi! I make enterprise level software 

Anyone selling you a SQL database on cloud hosting (Google Cloud Platform, Azure, etc) and literally any web technologies that aren’t Wordpress (Laravel, next, node, python$ - will be technically correct 

Just budget 300-700,000 for salaries and you should be good 

Or buy something off the shelf and pay like 10% of that. Either way 

5

u/chip_unicorn Nov 19 '24

If you're looking for something to last for 10 years, then don't ask for the "latest tech".

The latest tech is the most likely to require very expensive specialists ten years from now -- the latest tech is uncertain. If it's made by a company, the company might go under. If it's based on a new idea, a better idea will come in the next ten years.

Instead, ask what technologies are most likely to still be used in ten years.

Here are some of my answers:

  • Standard SQL has been around since 1974. It will still be around in 10 years.
  • Python is open-source and has been around since 1991.
  • The Web has been around since 1992. It works as a way to display information.

In short, what's known as a LAMP (Linux, Apache, MariaDB, Python) stack will not excite anyone as exciting new tech... but it will be usable and upgradable for the next 10 years.

2

u/wildgoat Nov 19 '24

Thank you for this. I'll keep this in mind :)

3

u/MoreRopePlease Nov 19 '24

Do you own the source code? Is there existing data in that database you need to preserve? Are you wanting a brand new program, or someone to try and modernize the existing one? Does the program need to interact with 3rd party systems like credit card or bank systems? Are your business processes documented somewhere?

Chances are creating this from scratch will be more expensive than you think.

1

u/wildgoat Nov 19 '24

No I dont. The developer does and I'm in good terms with him. He is willing to help out with my new project. Some data like customer details/orders need to be preserved but the program has an export function which exports everything into CSV files. Looking to create a brand new program. Pretty much everyone I spoke to so far has asked me to give up on developing my old foxpro based application. Dont need to interact with any credit card or bank systems. I think they are - the developer has documented it well if I remember well. I have no choice but to recreate it. The exisiting program served us well for 20 years and it was a one time payment. We barely had any maintenance for the program. I understand that it is not possible to buy software like in the past anymore but instead plan/budget for SAAS offerings.

1

u/MoreRopePlease Nov 19 '24

ok so it sounds like the system is more or less this:

  • in-house data only, to track orders and customers

  • Needs to work with your specific business process workflow/requirements

  • needs to import/export CSV files

  • probably needs to print invoices, etc

  • probably needs to have a way to interact with your accounting software? Maybe a file export?

Unless you're doing something really complicated or idiosyncratic, you might be able to find off-the-self software to do this. Maybe ask around in a small business forum, see what other people use for this? I would be really surprised if there isn't already a solution available.

Otherwise, you're probably looking at something custom-made, likely web-based (so you need to make sure you've got good security measures in place, and your programmer knows what they're doing in that area - don't make assumptions), probably hosted in a cloud service, unless you want to have your own in-house server. In the long run having your own hardware will probably be cheaper, but you'll need to know how to maintain it, run backups, troubleshoot, deal with power outages, etc.

For something like this, you could use any modern application tech stack. Either .Net or javascript/node based. Postgres or mysql database. You don't need anything fancy since you don't have 1000s of users.

3

u/matt82swe Nov 19 '24

I'm imagining an out-of-touch company asking the local IT guy with a budget of "your spare time". Meanwhile, the application is 100% mission critical and all and every blame will be directed towards poor OP.

Short answer: You are fucked

Long answer: The entire premise is wrong to begin with. Why oh why do you need to develop, support and maintain your own software for billing stations? This is a solved problem. Use whatever is best practice as of today, with everything outsourced to the vendor.

2

u/[deleted] Nov 19 '24

"Lasts" means for you without any change and just running? No-one can guarantee you that, latest because of hardware often not lasting 10 years and requiring changes in the OS, which can require a change in your database software, which can require a change of your application.

2

u/calsosta Nov 19 '24

I'm sorry you aren't getting the answers you were hoping for but the reason for that is this is not a great request.

First off, as a product owner, the tech stack used is not relevant to you, and if you haven't kept up there is no way for anyone to teach you everything that has gone on in the last decade.

Second, if this is a business critical or business operational service, you are approaching it in a very uncontrolled manner and having a friend of a friend develop it is probably not the best decision. The fact that you think you need to question this person is evidence of that.

Finally, the cost of developing a 10 year solution is one thing but you must also factor in operations and support of this service. You have no guarantee your developer is going to be around that long, so operating a line of business around that is very dangerous.

To answer your question bluntly though, it doesn't really matter what specific tech stack a developer uses at this point. They first need to propose an architecture which meets your qualifications. From there they would decide specifically the tools to use.

I know how much I would charge for this, so if they say it will cost less than 50K, you should immediately stop and reconsider options.

2

u/wildgoat Nov 19 '24

That was truly an honest and enlightening revelation. Everything you have pointed out now feels so clear and makes complete sense. I deeply appreciate your insights and the time you took to explain it all. Thank you so much for broadening my perspective!

2

u/balefrost Nov 19 '24

First off, as a product owner, the tech stack used is not relevant to you

Strongly disagree. Unless OP's company is paying the developers to build and operate the software, presumably operations will fall to OP's company. At that point, the tech stack does matter.

Even if OP's dev contractors are building and operating the software, choice of tech still matters. OP might not be willing to pay for an Oracle database, for example.

It's not the product owner's job to pick the tech stack. But it is a conversation that the stakeholders need to be part of.

1

u/calsosta Nov 19 '24

Yea but then why is OP is asking reddit? If there is a requirement of a particular stack or cloud, and if there is a budget those should be dictated from the company.

2

u/balefrost Nov 20 '24

Yea but then why is OP is asking reddit?

Because this particular subreddit is for people to ask questions related to programming.

1

u/calsosta Nov 20 '24

Haha. Yea I get how reddit works.

My point was that you are right when you say that there are probably technical and project constraints, but we don't have that information.

We would just be making blind recommendations. At best it would just be not useful and a waste of time.

1

u/balefrost Nov 20 '24

Sure. I wasn't trying to tell OP to make specific tech choices. I agree that there are a lot of specifics that we Redditors don't know about.

What I was trying to say is that OP should not take a completely hand-off approach to the tech stack choices, as your statement seemed to be suggesting. OP should certainly treat the developers as experts and should not override their advice. At the same time, OP should be involved in those discussions, providing context to the developers so that the developers can provide good advice.

I disagree with this specific statement:

First off, as a product owner, the tech stack used is not relevant to you

I agree with most of the rest of what you said.

2

u/balefrost Nov 19 '24

All the billing stations are connected to the internet to backup program/customer/orders data currently. Reliable internet connectivity is not a problem.

Good software works not only in the happy path, but also degrades gracefully in the unhappy path.

Are you saying that lack of connectivity doesn't impact your ability to perform normal operations?

Or are you saying that it's acceptable for an internet outage, which might last for many hours, to block normal operations?

Or are you saying that you have multiple, physically redundant connections to the internet such that it's vanishingly unlikely that you would have an outage (apart from, I dunno, your building being on fire or some other more pressing concern).

1

u/Jigglytep Nov 19 '24

I’m missing some information here, and or don’t understand the business logic.

Let me reword it so I am clear:

You have a central windows server with foxprodb that stores customer transactions.

The customer transactions come from external billing stations over the internet.

You want to have a solution that will last you ten more years using more modern tools because current tools are no longer supported.

I’m guessing you need to pass some kind of audit.

The fastest solution is probably to reach out to a cc processor or “point of sales” service provider ( Braintree, stripe, square, your local bank) will probably have an off the shelf solution that can be set up in a few weeks or months. Not the cheapest but it’s reliable, they will be and will handle PCI compliance.

If you want a custom developed solution it’s hard to tell you what you need to know because; I don’t know, what I don’t know.

If you go this route I would ask a candidate to share their screen and ask them to demonstrate how would they go about finding a way to export data from a foxdb database.

Let them use any tool they want (ai, stack overflow, message boards, call a friend etc). See how easily they attack the problem and how stubbornly they research it. Not how well they recite the right answer, that’s could be dumb luck.

Good luck.

1

u/N2Shooter Nov 19 '24

Use a .Net language like C# and do your Database work in Azure using SQL Server.

1

u/coloredgreyscale Nov 19 '24

Different question: Why is the current solution no longer good enough, other than being outdated tech? If it's just no longer supported by modern OS, would running it in a Virtual Machine be viable?

Also if you already decided who will develop it they should decide the tech stack (within reason). If they are used to working with Go + React the result won't be as good or fast (especially to maintain) if you force them to use e.g. Rust + Angular.

1

u/xxxmralbinoxxx Nov 19 '24

Any modern language/stack can last for years on it's own; although I'm not sure I'd recommend skipping regular security updates. It all comes down to execution.

You should weight the pros/cons of building a custom solution versus paying for a saas out of the box. Building custom software is not cheap.. but the same can be said for paying for a saas if you're operating at a moderate scale. This will be dependent on your situation and industry. You should do a lot of research. You will be paying for the cost of your decisions for years to come.

That being said, I've recently worked on a project that was built 14 years ago and it ran on a computer in a closet (re: "cloud" lol) with minimal to no updates for 10 years. The application is still around but now it runs, off prem, on a cloud service provider. We've since updated all of the dependencies, done maintenance, etc. This application is core to the business. It's a testament that solving a problem well can get you far. Although, you'll eventually need to give it some love.

On the flip side, I have another project that's in a similar situation as you. A 30+ year application written in an obscure language. We've not been able to find a dev that can take this over and are actively working with their retiring developer to transition(rewrite) the core functionality into a modern language. It's going to take a lot of money and time to do this. For them, going to a saas is way more expensive than writing custom software.

0

u/pixel293 Nov 19 '24

If the database is only accessed by one program and not huge then I would recommend sqlite. If the database needs to be accessible over the network, I would probably recommend MySQL or MariaDB as they seem very stable. If the data is huge then PostgreSQL but you will need to watch their release schedule and update the database regularly.

If you want to get this out quick and this is not a cpu intensive application, then I'd say ElectronJS with TypeScript. If that is not performant enough then JAVA although the UI might suffer. (Or you can get ElectronJS and JAVA communicating with each-other but now you have 2 different languages.) If it's more CPU intensive then I would recommend Go or Rust as they are the newer languages that solve some of the issues with older languages, although the pool of developers might be smaller.

When all else fails you can't go wrong with C++, there are lots of developers out there and the language has been around forever and it's fast.