Today I’m going to talk about a recent professional project I took on. The client wants me to update the platform of their current job costing application from a Java Swing app to a web app. I won’t be able to post the entire code on here, but I will share snippets of the code that most illustrates the journey. For today, I’m simply going to be addressing the scope of the project.
The Problem
The app is currently a Java Swing app that uses Java Web Start to run. The app is run mostly by only one user, the client’s director of finance. Recent updates to Java have made it so the app no longer runs on the director’s computer. They’ve temporarily fallen back to an older version of Java on the directors’ computer, but they want to remove the dependency on Java updates. The solution that they want me to help with is to migrate the app to web technology.
Current App
The current app is a Java Swing app that the client’s director of finance runs on her computer. She gives the app three Microsoft Excel files as input: a spreadsheet listing all the client’s current jobs, a spreadsheet listing the cost of employment for the client’s employees, and a spreadsheet report generated from the client’s time tracking software that lists how much time each employee spent on each job.
The output of the app is a formatted Quickbooks file that creates journal entries to move employment costs from a single cost bucket into buckets for each job. This lets the director run reports to see the revenue and costs of each job the client takes on, so the client can see what jobs are profitable, which are not, and make the best business decisions.
Business Rules
The business rules that the current app uses to allocate employee costs to the jobs is quite convoluted. Unfortunately, the code lacks documentation and most importantly, it lacks any test cases. This means that I won’t be able to verify my app follows the same rules, at least not without a lot of work and a lot of testing. The client is very happy with their current rules, wants to keep them as intact as possible and minimize the burden of testing.
My goal is to “port the app from Java Swing to the web and don’t change any of the business rules”. So change the app without changing anything… Classic! 🙂
What’s Next?
Next, I’ll explore the architecture of the existing app and how I’m going to approach modernizing the platform. See you then!
Job Costing
This post is one post in a series on this project.
One thought on “Job Costing #1 – Scope”