Logic, Patience and Self-Control

There are a few things I have learned from studying computer science and from being a software developer in general. I call myself aspiring because I know that I have a long way to go before other people will call me an expert. I know that it takes about ten years and over 10,000 hours of deliberate practice to become exceptional.

I have a core of friends within the BYU CocoaHeads that have varying hours of experience as software developers. Many of the people I have communicated with through that organization have exceptional personalities and kind friendly hearts, whether they are new to programming or are seasoned veterans. Many of the things I will share with you I have learned from my association with them.

I have learned that to become a better programmer you must learn logic, patience and self control. Logic. We all learn that computer processors deal with binary states, 1s and 0s, either the voltage is present to the required level or it is not. Many people call what computers and their programers do magic. In fact everything a computer does is logic based. A computer is an advanced calculator.

If this machine is so logical, why does it sometimes fail? It fails because the machine and its software were created by people and people are imperfect, fallible beings. With enough understanding and time any technical failure can be explained and remedied.

Becoming a world class programmer takes great patience because, to paraphrase Aaron Hillegass, you are not stupid, programming is hard. I have made many mistakes and I am sure I will make many more in my studies and my work. The point is, after enough deliberate practice people get better and the frequency of those mistakes diminish. Therefore, being a top-notch programmer takes patience.

If you want to be counted among the best programmers in your culture you need to have self-control. It is sometimes easy to become frustrated after you have become tired and want to pull your hair out because your application just will not compile and you can not figure out why. If you control your emotions you will remember how much you enjoy programming and you will get your logical mind back in control.

I have by no means mastered these skills. Through practice, success and failure, I have started to learn that these emotional skills are essential to not giving up and one day becoming an admired and respected software developer.