A formal process is a methodical way of tackling any repetitive process so that it can be handled in a standardized way. The idea of formality is to reduce variation in output and minimize the chance of forgetting something. Formal processes include the ideas of studying, planning, measurement, and process refinement; they cost more and take longer than just just jumping in and getting things done.
Imagine if they tried to make cars in an informal way
We are all familiar with trying to use formality when it makes no sense, you simply end up with process for processes sake and waste time and money.
In software, formality has become synonymous with documentation, and frankly we all hate documentation. We don't like to produce it and we don't like to read it. I've instructed hundreds of engineers and only a few people bother to read the requirements brick. The way education is going right now I'm not even sure that university graduates can read anyways, but I digress... :-)
- getting the correct requirements
- elimination of defects
Producing UML diagrams is a formal practice; however, if you insist on producing UML diagrams for everything then you will end up spending a significant amount of time creating the diagrams to get a diminishing benefit. Not having any UML diagrams will lead to code being developed more than once simply because no one has a good overview of the system.
Selective UML diagrams can really accelerated your development
What that means is that productivity will be maximized in the sweet spot.
Statistics Behind Formal / Informal Practices
ConclusionIn development practices it is not a matter of formal vs informal. It is a matter of seeing what kind of variation that you are exposed to and recognizing that formality can make a difference in that area. Then it is a matter of only adding as much formality as you need to get maximum productivity.
Formal practices must be monitored, you must have some way of testing if the formal practice is having an effect on your development. You want to make sure that you are executing all formal practices properly and not just going through the motions of a formal practice with no effect. You must monitor the effects of formality to understand when you are not doing enough and when you are doing too much!
Articles in the "Loser" series
Want to see sacred cows get tipped? Check out: