Prevention

 < Day Day Up > 



Preventing Myopia is not difficult to do, but it is difficult to start doing. Once you set yourself on the path of considering the long-term solution it becomes only a matter of execution. However, maintaining the discipline necessary to consider the long-term solution is the challenge to preventing Myopia.

Think Ahead

Above all else, the most important tool you have to prevent Myopia is your brain. It is not a bad thing to use instinct and educated guesses to track down a problem and come up with a possible solution. However, it is a very bad thing to implement that solution without first considering all the effects that the solution will have. This is where your brain steps in, and you must use it to consider what other possible effects a change might have.

When fixing a software problem, the goal is not only to fix the problem but also to have as little impact as possible on the rest of the implementation. This includes long-term effects on maintenance and possible changes. Too often, programmers rush to implement a solution that breaks other functionality. Even if this temptation is overcome, they are even less likely to consider such issues as readability, understandability, and maintainability.

Statistics

Many programmers start down the path because they desire to work in a more deterministic world that computers provide. Unfortunately, even though the execution of machine code by a microprocessor is deterministic, software development is certainly not that well defined. Software engineering is a young field with plenty of unanswered questions and constantly changing technology. The methodologies available are widely varied and relatively unproven. Compared to many industries, software development is chaos incarnate.

Once we have faced the fact that our chosen career is not the glorious utopia of determinism that we hoped for, is there any hope to reign in this chaos? There is in fact a solution, and it once again brings some reasonable and solid decision making back to the software development process. Instead of looking at development choices in a deterministic light, change the perception to one of statistical expectations. In other words, remember to take into account the probability of some future outcome in addition to the cost of that outcome. Without considering the probabilities, decisions will be made on an all-or-none basis that can lead to poor choices.

This is embodied in the concept of risk management. Assume that problems will occur and mistakes will be made. This makes the ultimate goal of development to reduce these errors rather than the vain attempt to eliminate them. This is accomplished by making decisions based on an analysis of various outcomes each choice could result in. By taking into account the probability of each outcome and the estimated benefit or loss for each of these outcomes, a quantitative measure of the risk a choice has can be made. These measurements can then be used to compare choices on a more realistic basis.

The benefit of this approach is seen over the course of development. While problems will occur with the associated loss of time and money, more benefits will be seen on average that outweigh the losses. Too better understand this, imagine that only a single factor of each choice were considered. For example, you might only consider the benefit obtained from each choice available. Now suppose that 75 percent of these failed, leaving only 25 percent of the benefit and much greater loss to outweigh this gain. On the other hand, if we chose the options that gave us an 80 percent success rate, then we are much more likely to come out with a positive result. Do not attempt to be perfect, attempt to minimize risk.

Education

Another important aspect of software development that programmers often forget after they leave college is continuing education. The computer industry is in a constant state of advancement, and commercial trends change quickly. New information and technology becomes available on a daily basis, and you must adapt to it if you are to keep an edge over the competition. The primary method for combating this ever-changing world of software development is continuing to learn and advance your own personal knowledge.

There are many sources for furthering your education, and your choice of which to pursue will be based on your personal career and goals. However, the same basic formats that the information is available in are shared across most software disciplines. For example, if you are reading this book, then the chances are good that you understand the importance of books for continuing to learn. There are many other good books available, and consulting with fellow programmers can point you at some of the best.

Magazines are also a source of up-to-date information, and are often more timely than books. The information is somewhat more limited on any particular topic, but this is a fair trade for the more recent nature of the material discussed. Even more up to the minute are Web sites and newsgroups, although these must often be treated with a more critical eye. The speed with which electronic information is available is counterbalanced by the less strict evaluations that it undergoes. Magazines and books go through a more complete review process before publishing.

Sometimes printed material is just not good enough to get the information that you need to stay on top of your career. Conferences can be of great assistance in bringing together programmers who share similar interests. Conferences provide direct human interaction between people in the same industry and can be an excellent location to disseminate knowledge. Many have lectures, roundtables, and personal meetings available in addition to general gathering and sales pitches. One point of contention that often causes employers to be reluctant to send employees to conferences is the fear that they will only use the opportunity to look for another job. However, if this is the case, then the real question should be why they want to look for another job rather than how to stop them from finding one. Denying them the opportunity to go for further education is only going to further their desire to find work elsewhere. Therefore, if you are an employer you must not only consider your continuing education but that of your employees.

Training courses represent another human interactive form of learning that is available for many of the tools available to modern software developers, and these are excellent opportunities to learn a product if you have never used it before. Unfortunately, the actual usefulness of these courses can vary widely. Finding other programmers who have attended one of the training courses for a particular product can help you gain a better notion of whether you should attend.

One of the best forms of learning can be found in the ancient practice of apprenticeship. Finding a good mentor can be an excellent way to learn more quickly with direct guidance that could not be found otherwise. Being a mentor can offer the opportunity for a fresh perspective that can help you stay fresh in the changing job of software engineering. Just remember that mentoring is two-way, both sides should learn from each other and be receptive to discussion. While a good mentor can greatly help you progress, a bad mentor can be an equally powerful hindrance.



 < Day Day Up > 



Preventative Programming Techniques. Avoid and Correct Common Mistakes
Preventative Programming Techniques: Avoid and Correct Common Mistakes (Charles River Media Programming)
ISBN: 1584502576
EAN: 2147483647
Year: 2002
Pages: 121
Authors: Brian Hawkins

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net