To re-write or not?
This is a strategic question. I have a large piece of software, web based, that handles probably around 50 to 60 different tasks. The software uses about 100 MySQL tables, and can probably be considered as 3 big modules targeting 3 different sets of audiences. It runs very well.

The software was started 5 years ago, and has gone through incremental improvements. I pretty much designed and wrote the system single-handedly. There are definitely places where the design is bad; and after 5 years I think I can definitely do a better job if I re-write parts of it. But we never did rewrite it from scratch, so some of the bad design is left there. Code works but design is not all pretty at all places.

The system was built on a proprietary software platform; platform provide strong security (unparalleled in 99% of other web platforms, jailed silos, forced parameterized SQL, row based ACL on MySQL data) and performance (resources grow as number of applications, not number of concurrent hits). Turns out we don't need the performance benefits, but it was a nice thing to use.

The problem I am running into now is this: for the good of the company and myself, I'd like to transition the system to the pointer where I no longer have to maintain it, where I can get someone else to come in and improve and build on it. It's been shown that it'd be hard to hire talent to work on this existing platform. From this perspective, it'd be easier to re-write it (say it takes a year) using Java and then have the system be maintainable by others.

We are a small non-computer firm, and it'd be hard to attract top architects to do the re-design. I personally am too busy with other things to do the re-design. We can get outsourced contractors to do it, but I worry about quality of the system architecture. The system is also fairly complex, so it'd be hard to get all the requirements right (most requirements are in my head -- although you can make the case that the re-design and re-write would force us to do more documentation). 

I am leaning toward re-writing the whole thing, but have serious reservations. Any thoughts?

Thanks.


To re-write or not?
===

This is a strategic question. I have a large piece of software, web based, that handles probably around 50 to 60 different tasks. The software uses about 100 MySQL tables, and can probably be considered as 3 big modules targeting 3 different sets of audiences. It runs very well.

The software was started 5 years ago, and has gone through incremental improvements. I pretty much designed and wrote the system single-handedly. There are definitely places where the design is bad; and after 5 years I think I can definitely do a better job if I re-write parts of it. But we never did rewrite it from scratch, so some of the bad design is left there. Code works but design is not all pretty at all places.

The system was built on a proprietary software platform; platform provide strong security (unparalleled in 99% of other web platforms, jailed silos, forced parameterized SQL, row based ACL on MySQL data) and performance (resources grow as number of applications, not number of concurrent hits). Turns out we don't need the performance benefits, but it was a nice thing to use.

The problem I am running into now is this: for the good of the company and myself, I'd like to transition the system to the pointer where I no longer have to maintain it, where I can get someone else to come in and improve and build on it. It's been shown that it'd be hard to hire talent to work on this existing platform. From this perspective, it'd be easier to re-write it (say it takes a year) using Java and then have the system be maintainable by others.

We are a small non-computer firm, and it'd be hard to attract top architects to do the re-design. I personally am too busy with other things to do the re-design. We can get outsourced contractors to do it, but I worry about quality of the system architecture. The system is also fairly complex, so it'd be hard to get all the requirements right (most requirements are in my head -- although you can make the case that the re-design and re-write would force us to do more documentation). 

I am leaning toward re-writing the whole thing, but have serious reservations. Any thoughts?

Thanks.

