Validate the constraints
The hardware reuse was completely unnecessary. It turned out there is no problem scrapping the really old hardware. The customers expected it. They wanted shiny new hardware and clean keyboards.
We practically wasted our time on the DOS and DOSLESS versions of the client. A stripped down Linux, with a 32 bit application in proper graphics mode would have looked nicer, and be easier to create. We wouldn’t have to have worried about the 640KB memory limit, as 16MB was standard those days.
Plan for maintenance
During the project the 5 core developers shared a house, and worked really long hours to accomplish the goals. It was uplifting, interesting and extremely productive. In about a year from the start, the first pharmacy migration was completed. Unfortunately the team was more motivated about the framework, than about the product itself.
Developing everything from scratch was a necessity. Unfortunately it introduced some huge maintainability issues. The framework had a few quirks to be ironed out, such as the table spaces were expanding faster than expected, which turned out to be an error in the db layer. This required most of the core team to concentrate on the framework itself.
Plan for expansion
When we reached about 5 deployments, development requests started pouring in. We had no means of expansion. The proprietary language was easy to use for a junior developer. That is, once you understood the concept behind the architecture. But that was too much for our candidates to handle. We started hiring too late and in retrospect with no clue of what we are looking for.
Initial application deployment and migration was time consuming. We were going as fast as we could, but we managed to migrate two pharmacies per month tops. Those had to settle for about a month to start a new one. We got better with practice, but the 1000 possible targets (50% market share) was way out of reach.
Know when to quit
Even though these expansion problems started to emerge, the project closed with a success. The company with the biggest share of the pharmacy information system scene noticed us. Since we, due to the sponsor of the project, were destined to cover at least 10% of the market, and we offered better service for less monthly fee, they made their move. We were offered a non-disrespectful sum for the entire company and an employment opportunity for all the developers. We packed up the sources, took the money and turned down the job offer.