Recently, I've been studying a production and operations management course, and we have spent a lot of time looking at factories and how they operate, including staff, training, motivation etc.
And one of the things about running a factory is that every process needs to be clearly documented so that staff can easily be trained in it, everything needs to be sign posted, the floor needs to be painted the right colour to tell you where to go etc. There is a lot of information available on how to do your job just on the factory floor.
And that made me think of documentation in IT, although I refer to documentation for internal use here - not the kind you give to customers. A lot of companies love documentation and it makes them warm and fuzzy, but developers dont like it.
My take on the love of internal documentation, is that the people who push it, think that a software development company is like a factory. Tasks are repetitive and easy to learn, documentation can provide everything you need to know, and you can take somebody completely unskilled and have them producing useful output in a year or two (obviously the factory comparison depends upon exactly what the worker is doing, but you get the point). People are replaceable cogs in the machine, and documentation is how you ensure that even after changing people, the machine functions the same.
So a lot of development managers push documentation, but I don't think its nearly as effective in software development as it is in a semi skilled environment. Things that should be stored in documentation are setup requirements, prerequisites, installation instructions, development machine configurations, common problems and how to resolve them, useful scripts, that sort of thing. Documenting every web service or every database column for internal use, to me, is pointless. If you don't have a naming convention so that people dont need to guess what something is or what it does, documentation won't help.
What is your take on it?
And one of the things about running a factory is that every process needs to be clearly documented so that staff can easily be trained in it, everything needs to be sign posted, the floor needs to be painted the right colour to tell you where to go etc. There is a lot of information available on how to do your job just on the factory floor.
And that made me think of documentation in IT, although I refer to documentation for internal use here - not the kind you give to customers. A lot of companies love documentation and it makes them warm and fuzzy, but developers dont like it.
My take on the love of internal documentation, is that the people who push it, think that a software development company is like a factory. Tasks are repetitive and easy to learn, documentation can provide everything you need to know, and you can take somebody completely unskilled and have them producing useful output in a year or two (obviously the factory comparison depends upon exactly what the worker is doing, but you get the point). People are replaceable cogs in the machine, and documentation is how you ensure that even after changing people, the machine functions the same.
So a lot of development managers push documentation, but I don't think its nearly as effective in software development as it is in a semi skilled environment. Things that should be stored in documentation are setup requirements, prerequisites, installation instructions, development machine configurations, common problems and how to resolve them, useful scripts, that sort of thing. Documenting every web service or every database column for internal use, to me, is pointless. If you don't have a naming convention so that people dont need to guess what something is or what it does, documentation won't help.
What is your take on it?