I work for a very large organization that is looking for new ideas. Currently there is this large project in place that is supposed to provide a common architecture for a wide variety of applications. We are organized as many “shared” components that get used to create a “deployable unit” or DU, a DU is the final application.
Without going into too much boring (and sensitive) detail, the way we are doing it now is not working. We have 30+ applications and you can wait more than 2 years before getting permission to do anything more than the most desperate emergency fix. I am looking for suggestions that cover organization and testing.
If you are interested, my idea so far is as follows:
- Create teams based on specialized skills. For example a GUI team, a JSP team, a Database team, a HTML/CSS team, etc. When these guys get requests for solutions they are ideally placed to see reuse opportunities which should speed development. The fact that the team is composed of subject matter experts also means that the quality of the code produced should be better as well. These teams will produce custom solutions tailored for the request and will contain only what is needed to provide the solution – nothing else.
- Create a team that works with the business client who will gather requirements and then go to the appropriate specialized team for solutions. This team will then be responsible for integrating the various solutions into the final application and performing unit testing.
- As much as possible make use of automated testing tools (e.g. JUnit). Also, in order to maximize the number of applications that can go through user acceptance testing in production like environments you establish short fixed testing durations. If you are not ready at the end of that time frame you go back to development and unit testing – no exceptions! In other words be damn sure you are ready for user acceptance/production before you request it.
What you end up with is two groups of teams. One groups is application centric, concerned with providing big picture solutions to business clients. The other group is tech centric, doesn’t really know or care about the big picture just their specialty.
Is there anything even remotely like what I have just described already out there?
Consider implementing the ideas in this book: Continuous Delivery