Quiz: Do You Have a Programming Genius On Your Staff?
- Do you have a programmer that has written programs that no one else can modify without considerable effort?
- Have you ever attempted to modify the genius code only to find that you must talk to the genius to get a few explanations?
- Has he claimed that others are trying to "stifle his creativity" because they have asked for a flow chart, pseudo code, a prototype or that he follow a methodology?
- Is the number of undocumented programs in your shop increasing?
- Is there a never-ending discussion of whether it is more productive to code or test? Or documenting only after the system is complete and in operation?
- Does the genius continue to explain why his approach is an improvement over the work of every other programmer on the staff?
- Does the genius get phone calls from a previous job to ask questions about old systems left behind?
- Is senior management perpetually concerned about losing the genius to another firm because of his accumulated undocumented knowledge?
- Do you find yourself trying to track down the genius while he is on vacation?
- Has the quality of your systems improved now that the genius works for you?
The point is that we all know these people and have worked with them or at least next to them. Often we are dazzled by the creative effort and believe that we are witnessing the foundation for all future systems development. Later, we find that without the blueprints, modifications to the system result in even worse conditions to perform future maintenance. All of this results in a system that is incredibly difficult or impossible to test.
Is system development an art form or a science? When software development is treated as an engineering discipline quality assurance follows and can also employ an organized methodical approach. This is not an argument questioning the value of creativity and imagination, it is only a discussion as to when it is most effective to practice these desirable and sought after skills. Another method to determine if you have a genius on your staff is to examine his output. You may find that he never quite delivers what is promised or meets the customers expectations.
So how do you proceed from here? You have a genius on your staff and it is extremely difficult to determine the long term effect of this relationship. The reality is that we want to capitalize on individual creativity and imagination and this can be accomplished in a number of ways:
- Establish guidelines for implementing new ideas. New ideas or approaches to situations are not discouraged, but implemented only after discussion, assessment, and planning. Get these guidelines written and distributed.
- Clever ideas should be written down. Document the ideas for later analysis and remember that even minor changes "on the fly" may result in significant additional testing.
- Perform structured walkthroughs to assure that programs do not contain "inspirational" code and that complexity guidelines have been adhered to consistently.
- Emphasize teamwork. Explain to him that he is perceived as an expert - an experienced member of the development team and is expected to take a leadership role.
- Discuss career paths and be certain that the one you agree on is in the best interest of the team, the organization, and the individual.
We want to leverage the experience and knowledge of our staff. This is done through training, review, and planning. Proceeding with a blueprint gives us much more confidence in our planning, project management, quality assurance, and resource management.
There is no need to inhibit change, only to manage it productively.