I’ve been working for a major company as a lead developer for some time, and can’t fail to notice the trends of ignoring even the simplest and most basic “precautions” on any given project, whenever possible. Projects are always pushed for time either because it is really urgent, or more frequently, because it would cost more to have it hanging out for a bit longer. All the while I see software development trends focusing on quality, with continuous integration, iterative development, automated testing and so on, while all these great utilities are the first to be sacrificed when a project is “cost optimized”. The projects pass with flying colors and new people are hired for maintenance. These people are nowhere near the quality of a qualified developer, and screw things up until more experts are called in again to clean things up.
I know this is Hungary, but I very much fear this is also the case for most countries and most companies.
Take one of my last tasks as an example, I cannot be allocated for another project, but I was “borrowed” for a couple of days to set up a project environment for a very urgent and important job. The project was then handed over to two less then qualified developers. It was fun to set the project up, as the technologies I’ve chosen integrated nicely and resulted in an easy to maintain, compact environment. However I was forced to skip adding unit testing, as there was no way the project would fit writing a single test case.
Anyway I was going to write about the project itself and not mourn about the problems I can’t help.
The project is planned on simple grounds, there is a need for a GUI client, as a quite sophisticated editor is required. There is a need for small simple clients, so the the users would be able to use it with a relatively small configuration. The software delivery should be simple, so it would not burden the helpdesk. There is a need for security, as the application has some financial perspective to it. The project must be simple, so the not to advanced developers would be able to finish it. Ah yes, and I have two days to bang it together.
Well… Let’s start… The main constraint is the developers, they know some Hibernate, they know some Java, but know nothing about WSDL. Then the technology, to be easily deliverable it’s best to use Webstart, this will zero the deploy costs choosing Swing as the windowing environment enables the developers to use visual editors to bang some forms together, while reduces the deployment size greatly, if we consider the SWT alternative. The application will communicate with the server through web service through SSL to ensure security.
I have thus set up a project which contains both the client and the server code and the common codebase as well (the interfaces and POJOs used in web services), there is an ANT script to generate the WSDL, the code for Axis based web service classes, and the Hibernate POJO, and DAO-s. The generated code is stored in it’s respective folders, separated from the handwritten code. The ANT script is then compiles the files and it is also able to create the WAR and deploy on either Tomcat or WebSphere Application Server. The project is set up in an Anthill to ensure that at least the developers are notified if their committed code breaks the application.
Even though I’ve created this environment as simple as humanly possible, when I handled it over to the developers-to-be they were less than understandig.
I can only hope they don’t mess it up too bad.