Everyday Problem Solvers
As most of you already know, there’s a buzz about who should learn to program and who should not. I will say now that im in favor that everyone should, and I say this because as you learn to program you learn a set of techniques that will most definitely help you all of your life.
Most people who are discussing this matter are focusing on the question “Ok, I learned to program, now what do I do with it?”. My answer to this question is: “I don’t care!”. I don’t want you to learn to program because I want to hire you, or because the world needs programmers or because the children in Africa are hungry, I want you to learn to program because when you put your head into making an algorithm you develop skills that are very useful in life and business, such as:
Deviation Planning and Error Handling are siblings concepts. I call “Deviation Planning” the ability to predict where things might not be as you wanted them to be and you need to either reject them or handle them. Error Handling is the ability to predict where things might go “off-the-tracks” and either “how to put them back on tracks” or “how to in a nice and user-friendly-way display that things have gone wrong”. Now you might be thinking “A lot of people know that… and they don’t program and never did”. A lot of people can deal with problems as they appear, programmers can identify “hot-spots” and what kind of errors might occur and they plan ahead for them. As a rule of thumb if someone is surprised that an error occurred, they’re not good at Error Handling.
Loop Handling is the skill to know how many times something must or can be done in order to achieve a desired result. This is relevant because, I’ve witnessed at least 5 times, people say that you could do X how many times you wanted, Y will happen, like: “Give a employe a bonus and he will always perform/engage/deliver/bla-bla-bla better” (sounds ridiculous, but YES IT HAPPENED!). Loop Handling is far more than do this that amount of times.
The most important of all, in my opinion, Resource Optimization, the art of making more with the same (not more with less). This is specially difficult to apply to humans. Teach a machine to turn X in Y give it X you get Y. Teach a man to turn X in Y, give him X and who knows what you might get? Maybe you get something better than Y.
When I discussed this with my colleagues they argued that you can learn this all these skills in other areas but they all agreed that programming is the only that teach them all.
In conclusion, the mayor of New York probably has little use for the core concepts of the .Net CLR but I’m sure that all agree that he could use some extra points on his error handling skill and maybe polish resource optimization… What do I know… I don’t even live in NY!