I have taken on a job as a contract developer where I am having difficulty learning the application, and I feel that I'm in over my head. I've discussed this with my client/employer and he is, none the less, interested in trying out the relationship to see how it works out. My client is a small business with around 100 employees, the application is critical to the business operation and I am the only developer.
I am posting here in hopes of getting opinions on the sanity of the environment and application. Is my inability to pick up the workings of this application due just to my own ignorance, or does this application and/or its environment have too many tell-tale signs of an unmaintainable app?
First, a little about may abilities:
I am an intermediate level developer having several years experience in VBA for MS Access, Cold Fusion and PHP.
In the Java world, I have intently studied Java and GWT at home for the past year, but have no production experience with Java. I am comfortable with Eclipse and can import or create fairly complex Java projects (from books, tutorials, etc), get them compiled and running on Tomcat. I have a proven ability to learn and apply from books, web sites, etc.
Some of the Java books I have studied:
Head First Java
Head First OOA&D
Head First Design Patterns
Google Web Toolkit Applications
Pro Web 2.0 Application Development with GWT
SCJP Study Guide
The first two above I found to be easy, but informative. I only skimmed HF Design Patterns, but I expect this would fairly easy as well.
The GWT, Spring and Guice books were more difficult. I am able to get the example apps working and make some sense of the code, but the finer design points necessary to building my own apps with the ideas presented are still somewhat beyond my reach.
I found the SCJP Study Guide surprisingly difficult.
The application is built on Appfuse version 1 http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse
using Spring, Struts version 1. and Hibernate. The application uses many JSPs pre-compiled using Xdoclet and has a browser based AJAX UI built with Prototype and Scriptaculous.
The app has 420 classes and 105 .xml files and Runs on Apache Tomcat. Most of the configuration data is contained in .xml or .properties files, some is contained in the database and some is hard coded into the Java source.
The app is compiled by a complex Ant script, on the production server. I have copied the source on a local Eclipse installation but have not been able to get it to compile there due to problems getting Eclipse to pre-compile the JSP's.
There are no design or requirements documents, and no end user documentation. I do have a 16 page document that details some of the internal class/method/Spring Bean relationships and work flow.
The app runs on Tomcat 5.0 under Ubuntu Linux on a virtual machine. I see no evidence that any software patching/updates have ever been done. There is no working development/testing environment and no backup of the production application(!). An IT support person was hired two months ago and he is working on application backup/continuity, but this seems to be a low priority project, his time pretty much consumed supporting end users.
The app interacts with a commercial accounting system on a database level and downloads data from a manufacturer's web site using a complex series of wget calls. This app also builds a dynamic series of web pages which it automatically loads onto the business web site. The pages are in a master list/detail relationship and are auto generated from information contained in the app's database plus data and images automatically downloaded and processed.
The developer who designed and built this app has not been with the company for 2 years and is no longer available, The machine he used to develop the app is no longer available. I am the only developer at the company.
The task for which I was hired is to add features to this application. These features will extend the UI and Data Model in small ways and export new records to the accounting system. The problem here is that access to the accounting database is not supported (or documented) by the accounting vendor, so adding new records may be anywhere from difficult to unwise or even impossible.
Sanity check please:
Does the above sound like something that might be successfully maintained by an intermediate level developer new to JEE? Do you see any serious red flags in what I have written.
I am grateful for any and all comments.