I can develop this utility its very simple ..
Didnt you here or said this sentence (or something similar) at list 10 times on different development projects? Well I did, as a developer, Team leader and development manager for several j2ee projects I often heard (or said) this from developers that wanted to develop some new utility or tool that will make our life easier. So whats wrong with that? Well from my experience in development a lot of this simple tools and utilities ands with:
Longer time effort then planned.
Missing functionality that cannot be developed (lack of time, knowledge, etc)
Unstable tool with lots of Bugs.
A lot of maintenance (that after awhile nobody knows how to do it).
Discovery of a standard product that can be downloaded or bought that would be much cheaper and stable.
So what should we do then, my suggestion is that you try to answer the following questions
before getting into development:
Do I really need this? – Find out if its really needed a lot of times we dont really need this tool/utility because we can get the functionality from different sources. So I suggest that before you go into development even if it sound logical and simple perform brain storming session with a few people (try to build a heterogeneous group) in order to asses the need for this tool/utility.
Is it really that simple? try to challenge your self, is it really that simple or maybe you forgot something like monitoring, rollback, performance, dependencies, openness to changes etc. its most problematic when talking about developing engines or other centric tools. a lot of times we focus on the immediate need and we dont see the bigger picture, monitoring is a good example for it, we invest a lot on monitoring tools and capabilities but then we have this home made engines/tools/mechanisms that our application is build on and we have no possibility to monitor its behavior just because we forgot to develop the monitoring capabilities.
Cant I find an open source or an already made product for this? Before you go and start developing something try to find some one else that done it before you. Today we have quite a lot of Open Source projects that developing tools and utilities that every body needs. If you cant find some free product maybe its better to buy. For developers it is always seems waste of money but to the organization many times it is cheaper to buy a product (that comes with support and experience) then home made development.
Do I have the skills to develop it? a very important question that unfortunately is not being asked is do I really have the right skills to develop this tool ? And by saying that Im not talking about the programming or technical skills but the organizational skills. If my team need to develop a project to an insurance company for 1 year would it be smart to develop transaction engine or security mechanism? Am I (my team) skilled to design this tool?
How much time would it take to develop? Before you start ask your self how much time it would take to develop the tool until it would be complete and stable. Here we should take into account all the satellite aspect like monitoring, performance, configurability, integration to other products/components, etc. by analyzing the situation you will always see that the time the developer told you it would take and the time you will get after the analyzing has a huge gap.(the developer is always optimistic)
How much time and effort would I need in order to maintain this product? When you analyzing the situation take into account the time and effort you will need in order to maintain the tool. When developing a tool from scratch you always discover that you forgot this and that, and there are always new things that the users need that you did not thing about etc. so the development time is only part of the time and effort you need for this tool. When you are buying an already made product you probably save this problems (assuming that the product is not new and there is an industry experience working with it).
Who will use it and what about support? the last but not least aspect you need to think about is the future support for this tool/utility, your tool that you built is being used in production for a few years somebody would have to support it in case of problems or new features that would be needed. Will you have the ability to support it in the long run after the solution will be productive?
So I hope that my message is clear, Im not against developing new and interesting things but I do think that it is important for us to know what is our scope and capabilities before we get into new adventures. If we are developing solution for a customer we have to remember:
Usually our time table is very limited.
We dont have the right skills and resources.
Somebody must have done it before us find it !!!
Hope that helps – enjoy