I have been lately reading The Art of War by Sun Tzu during my buss ride to work. One Chapter of the book described the five faults, which may effect to a general. I realized instantly that the text could also be applied to software engineers. Without further introduction, I will give you the five faults of a software engineer:
There are five dangerous faults, which may effect to a software engineer:
- Recklessness, which leads to destruction. If a software engineer is reckless, his quality of work will be considerable lower than the quality of work done by software engineers, who think before they act. Reckless people tend to make a lot of mistakes and some of them might be very expensive to fix. Even though a reckless software engineer would not make expensive mistakes, he will nevertheless spent his time to fix mistakes, which could have been easily avoided. Remember that it is almost always wise to think before you act.
- Cowardice, which leads to capture. If a software engineer is desperate to stay in his old habits, there will be a day when he will notice that his skill set is simply not good enough. When that day comes, it is obviously very hard to fix the situation instantly. Even though the person in question could change his mindset and starts to study hard, the amount of absorbed information might be too much for him. The software development industry evolves very fast. Therefore, it is best to do yourself a favor and start studying today.
- A hasty temper, which can be provoked by insults. Working with a short-tempered person can be quite challenging, because conflicts are a natural part of a work environment. It is unnatural to expect that each person would always agree on everything. This is especially untrue when it comes to software development, because the industry is known from sometimes fanatic arguments between people having different opinions. In this context the ability to have a civil argument and to receive criticism is indeed a valuable quality in a person, because it does not destroy the work atmosphere. Instead, it can have a very positive effect to it.
- A delicacy of honor which is sensitive to shame. When a software engineer takes too much pride of his work (or feels very insecure about it), it often affects his ability to ask for help from his coworkers or a second opinion about his work. The main reason behind this behavior is that he doesn't want to look incompetent in the eyes of his colleagues. However, the sad reality is that his attitude might actually make his fear become reality. Don't be afraid of asking questions and remember to do your part by answering them.
- Over-solicitude for his men, which exposes him to worry and trouble. It is great to love software development, but falling in love with a particular piece of code is troublesome, because objective approach is no longer possible. Objective approach towards one's code is important, because source code is not really never complete. Nevertheless, a software developer must be able to recognize when it is good enough to be released. It does not really matter how good the code is, if you will never release it.
These are the five besetting sins of a software engineer, ruinous to the software development process.
When a career is unsuccessful and a software engineer feels unworthy, the cause will surely be found among these five dangerous faults. Let them be a subject of meditation.
PS. Those of you, who are interested of the topic, can also read the original text by Sun Tzu (Start from the 12th paragraph of Chapter 8).