A few years ago I interviewed with a regional insurance company for a “Senior Software Developer” position. The application I would be working on was described as an Online application that allowed the companies agents to quote and sign business. It was a ‘robust and flexible’ system that had been developed and enhanced over 9 years. The application was primarily developed by consultants (Boy THAT should have been a red flag), but the division was recently acquired by the regional insurance company and the new management wanted to do development in house. I was to be the first of a dozen new hires. I took the job.
On the first day, one of the contractors, Alicia, was assigned to train me. I should have known something was up when Alicia checked the code out and could not get it to compile. She needed to go find Shaun, because ‘He had the working version”. I asked, “Doesn’t everyone have a working version?”. She replied, “No, Shaun does.” It appeared that every time new code was added and changes were made, it broke everyone’s local copies, and all the developers would play around with the code until one of them got it to compile. Then everyone would get that person to ‘recreate’ what he/she did on their computers.
Doesn’t everyone have a working version?
Boy THAT should have been a red flag. Apparently, Shaun was the only person who could compile and deploy the code. This week. Eventually, with Shaun’s help, the application was checked out of source control and compiled on my computer. But for the next week, I saw PPT presentations of the ’system design’, and code snippets on screen without actually having any interaction with the code. When I finally pressed the point that I wanted a ‘walk through’, Alicia reluctantly agreed. The application, being a J2EE implementation, was launched and the login page displayed. Alicia then logged in using a test account and walked through the application, which bombed every other screen because “it can’t hit the service, you need to change the settings to point to a test service.” Well, let’s do that, then….
Fast forward ANOTHER week. The application can finally run on my local machine, but there have been a half-dozen configuration changes to the local server, MANY changes to the local code, which, I am instructed to never check in, and any attempt to run the application in ‘debug’ mode causes my laptop to freeze and crash…
Oh, and I saved the best part for last. At some point during my ‘training’, I actually did look at the code. I found the start of execution. It was a Servlet. It had over 2000 LOC in the doPost method. It used reflection to dynamically instantiate dozens of other servlets who’s names and methods were contained in a Database. It was the slowest running application on the planet.
I lasted 1 year exactly. In that time dozens of developers were hired. Most left before me.
They really should have paid me more….
Next, a glimpse into how this was coded.
Comments