Collision Repair Shops on the NetBeans Platform
First off, can you tell us a bit about yourself?
am Damian Carey, and I live in Sydney with my wife Maria, and 3 young
children. Most of my time is currently raw software development of our
new product, but my career path into development is the reverse of most
people in that I started in management and ended in development! I
started as a Mechanical Engineer, mainly managing tradesmen, then moved
through software and consulting companies. I also studied more software
(M.Eng.) and business (MBA), and was mainly managing software projects,
but I was generally remote from the technical details. I had a solid
understanding of software principles, but with limited experience "in
the trenches". I had always enjoyed developing software, so when this
current business opportunity demanded that I write lots of code I
seized the opportunity.
Greg Bailey is a long time friend, and he is a Panel Beater, and he had managed several collision repair shops and had written many thousands of quotes. We often lamented the quality of the existing software packages used to manage workshops, until one day, over a beer at a BBQ, we decided to do something about it. Greg is now my Business partner and essentially is the "Product Manager" deciding what needs to be built. We have developed Quotimation, which is a "Quoting and Business Management Solution for Repair Shops".
Quotimation is currently being trialed in several repair shops, and we will release more widely around about July.
You're creating an application for collision repair shops. Can you tell us some more about that?
Sydney has lots of cars. Lots of cars means lots of collisions, lots of repairs, and lots of repair workshops. It is a tough, relatively low tech industry with thin margins and long work hours. The office environment is characterised by constant interruptions, moving circumstance, and changing priorities. Typically the manager is juggling hundreds of live and emerging issues and needs to keep track of all that detail. Even with several Secretaries and other Estimators in the office there is still a massive overload of information to keep track of.
Another prominent force in this Industry is Insurance. They provide a large portion of the revenue into the industry so they cannot be ignored, but they are of course large corporations with corporate processes and corporate systems, so they are culturally vastly different to the repairers.
Our product needs to provide value to workshop managers given these daily and industry realities.
We have many worthy competitors in the marketplace and we all must, as a minimum, be able to compose quotes, create invoices, interface with insurer systems, and interface to (or contain) business accounting software. Some do it better than others, but we feel that there is so much more that can be done to help an overworked and stressed manager get their job done as fast and effectively as possible.
So what can we do differently?
The main themes we have been working on are as follows
- Speed up quoting - by making the common case really really fast, while making the rest possible.
- "Quote Massage" - (yes Quotes like massages too!)- by presenting the whole quote to the user and allow them to easily play with it.
- Stay silent unless there is an issue - we minimize information to the user, and present options when something seems wrong.
- Facilitate office collaboration by providing many features such as a site notice board plus overview lists.
- Users will be interrupted in during their day, so we minimize disruption from inevitable interruptions by both quickly locating the required information, and then easily returning to where you were.
- Maximize discoverability - simple ways to find needles in haystacks, and assist new users in learnig how to use the system.
- Improved System Stability - most competitors use MS-Access as their prime data store, so with PostgreSQL underneath Hibernate I believe that we have a massively more stable, scalable, flexible and performant solution.
The real test for me is simply to watch users try to get their job
done and seeing if we help or hinder. I still find it fascinating to
watch an experienced estimator
use our system for the first time and see them convert the ideas in
their head into a working quote on Quotimation.
Can you give some technical details about the application?
Technically, this is a distributed Java Swing desktop application based on the NetBeans Platform. It utilises lots of fine libraries, including Hibernate, JFreeChart, JasperReports, lots of Apache including Axis2, JGoodies, XOM, SwingX, XStream, etc, etc etc. It uses PostgreSQL as its database.
It is a distributed application that is expected to run in a small office environment of typically between 1 and perhaps 10 users, although it should scale well beyond that. Distributed messaging is via standard RMI. The RMI basically lets us do intelligent locking (So Bob can tell Fred to stop editing a quote), broadcasts information regarding what database rows are updated (so the local UI can refresh), and transferring images to/from the server.
We can remotely update the system, and issue license keys, and adjust the user's basic configuration. We can also automatically backup the database and send it off site.
Now, why did you choose the NetBeans Platform as the basis of this application?
Well, our original goal in 2004 was simply to spend a few weeks prototyping some ideas without spending much money. Java was an obvious possibility because of the free high quality tools and massive ecosystem. Next decision was Eclipse vs NetBeans, and I can't remember exactly why I chose NetBeans! I installed NetBeans Version 4 Beta and I've been delighted with it ever since. Now, in those days, using the NetBeans Platform was way too complicated for me, and it was not until NetBeans 5.0 that the NetBeans Platform became a feasible solution. At about that time Tom Wheeler published a tutorial on how to structure a NetBeans Platform applications, and that was really a Eureka moment for understanding the benefits I could get from the NetBeans Platform. Finally, I understood the difference between a "TopComponent", "Lookup", a "Module", and all the other ideas in the NetBeans Platform.
Originally, I just ported the existing monolithic Java app over, splitting functionality into modules, but still just having a single TopComponent (with its tab stripped off). We have persisted with this approach and we have not moved to the NetBeans windowing system. We mainly want a consistent screen layout to simplify our customer support.
What have been the three main benefits of the NetBeans Platform to you?
- The main advantage of the NetBeans Platform for us is that it facilitates our modular design that separates APIs from implementation.
- We are planning on re using modules in derivative applications, so having those modules already separated helps us prepare for the future.
- A massive benefit is the openide mailing list and community. There are so many other people there developing their desktop applications of various types, so in addition to the specific help that I have received at times, just hanging around in that community has helped.
What are some areas where the NetBeans Platform can improve?
- I would really like to be able to easily reuse modules in other Suites. It is sort of possible now, but it is difficult. We used to do suite chaining - but refactoring was too painful so we are back in a single suite.
- In retrospect I wish that, when I started in 2004, we had access to today's resources such as "Rich Client Programming: Plugging into the NetBeans Platform" and the NetBeans Platform Courses that are now available. Getting those basics right would have been a massive help.
- The only other thing I would like to see is an "reference example" RCP project that is similar to Tom Wheeler's tutorial from NB4.1, already laid out ready to go. New users could download it and play with it to get to understand the modular layout.
Other than that, the NetBeans Platform already gives me everything that I want!
Do you have some tips and tricks for someone getting started with the NetBeans Platform?
Get a copy of "Rich Client Programming: Plugging into the NetBeans Platform". I believe there are some other books out there but I have not seen them. Perhaps try to go on one of the NetBeans Platform Courses. All the basics about "the NetBeans Platform way" really help you make the most of it.
Other than that you need to subscribe to the mailing list and listen in to the discussions!