On the job advice

I am looking for some advice about a project I just undertook at my current job.

Right now I am a Technical Specialist (super cool sounding title!) at a Medical Lab. I work on the instruments and “build” the lab tests in the computer system. I have a degree in Medical laboratory science but I have always LOVED programming - ever since Neopets in middle school! I am working through FCC to try and get a front-end developer job - it’s a passion of mine and would be my dream job.

So of course I agreed to help out with upkeeping the databases someone else had personally made for this unit. I jumped on this so I could get some experience with a different language and something other than front-end web development. They are made in Access 2007 (so VBA) but he also made some with Visual Studio (also with VBA and access database connected).

So far I have learned enough VBA and Access to be able to fix random bugs and add things into the databases that were needed. But now they have given me a bigger project - rework an entire database. And it is huge - it’s an inventory database for the lab. Tracking receipt of inventory and Lot numbers and other various functions. Many forms and queries. I also have all my other duties while trying to rework this database.

My question is…should I start fresh? Using the existing as a learning tool, using some code snippets I need? Or should I just rework the old program - adding and deleting things as needed and moving things around? Starting fresh would take me longer - but then I can say that I built this entire program basically by myself. Reworking someone elses code, as I have come to realize, has many roadblocks. Changing things and names requires names being changed everywhere and it is easier to get bugs.

TL;DR: Should I rework someone else’s large program? Or start fresh using the old for help?

So I will provide my advice with the following points in mind:

  1. I have no experience with VBA, and Access.
  2. I have worked on a few projects, some are adding features to existing legacy code, and helping design and architect entire applications from the ground up.
  3. I assume they do not want or care about migrating older records from the older system. (this instantly shoots down most greenfield project ideas)
  4. I assume there is a low risk deadline
  5. The project isn’t super large. I assume it was built by a few people over a short amount of time, or 1 or 2 people in a decent amount of time. Odds are it will take 1 person a longer time than the 1-2 person estimate.

I don’t know how much risk this project can afford since we don’t know the timelines, the changes in the requirements, how large the project actually is, or the scope of changes/fixes that are required. So its hard to provide a definitive “yea you can afford to do it over” or a hard “no you don’t have time!”. If this is more a low risk side project thing, then yea starting over is a better learning experience, but it sounds like a work project, so there is some risk.

With greenfield projects you instantly throw out any existing bug fixes out the window. Re-writing everything is a clean slate for getting bugs that were fixed in the previous system again. The existing system has stood the test of time, and carries all the changes made to it over time, and experience gained maintaining it. Your new system wont have any of that.

So if you want to re-write it successfully you need to ask your-self “what am I improving on from the existing system?”. Will there be new features? Will there be changes for a better user experience? Will your application not run into problems the previous one had (with design, availability, scalability, performance, ect)

The next thing is what kind of experience do you have building anything of the same scale? If you have written some basic VBA apps with a least part of the required functionality, ok good. But if you have gone about just fixing tiny bugs here and there, you might want to lay off re-architecting the entire app if you don’t know how its currently setup. Otherwise you might not know how you would go about doing it.

I’d say the most important thing is don’t make a choice if you don’t have a good idea of how much effort and time it will take to re-do it until you understand the existing app. Its better to spend a little time now understanding the situation, than it is to start going with redoing it, and realizing its too much to handle.

Goodluck :smile:

1 Like

This was VERY helpful! What you said about the program standing the test of time was really the big hitter for me. I am really only adding some functionality that just got missed from when it was originally built. I never even thought about how re-writing code could introduce the same bugs that have already been fixed - never crossed my mind.

I have also been checking out the code and really getting a feel for the program for about a week and this is what prompted me to even ask this question. I have looked at sections of this code many times fixing bugs so I felt like I knew it. Now after some serious digging, I don’t believe I know it enough to start over. I also don’t believe I have enough time to finish something of this scale for them by myself. Especially with all my other duties that need to be taken care of as well.

So, thank you so much for your reply and putting this in perspective for me! I am just going to add the functionality they needed…and clean up the UI because that is my passion!

I’m glad to hear you determined what your going todo. :smiley:

Your always welcome to keep digging over the code over time, so if there ever is time/budge to do a re-write you have an excellent idea of how it could be done. But for now, refactoring and optimizing sounds like a good place to get started :smiley: