Are you bored of programming?. Probably you are not in the proper job. But, what is programming? Take the following basic definition as “the process of designing, writing, testing, debugging, and maintaining the source code of computer programs”. So, the next natural question is what is a computer program? A computer program is “a sequence of instructions written to perform a specified task with a computer”. But programming is not about throwing instructions as you think about them, it is not that easy, they must be placed in a logical sequence, something with a real meaning in the language that your are programming, so it requires a good knowledge of the platform and environment.
Programming is not that easy that you think. Usually the documentation is written in English, there is not up to date documentation in other languages than English. So, probably you are reading in foreign language. If you cannot read English written documentation, you will probably fall in more mistakes than someone that is able to read it. So, if you are not able to read the documentation, the fact is that you are guessing how to place each instruction in the computer program, making you less productive than someone that is able to read the documentation.
Also, programming requires thinking. Someone that is stuck in his chair and his keyboard, probably is less productive that someone that is able to think about the algorithm that is implementing. The complexity of the required algorithm, is directly proportional to the required time to think about how to solve the problem programatically. But the fact that every platform has its bugs and its design problems, will make you fall in iterative testing of what do you think that will work. So, you can test more than three times the same routine implemented in different sequences and with different instructions. Things that works on the first test are the less complex algorithms.
My point is the fact that if you are stuck in your chair, you will not be able to think. Watching the screen all the time with your hands in the keyboard is less productive than having a relaxed walk in a beautiful garden thinking on a algorithm. So, if we think on the definition from the start, programming implies design and implies writing, where designing is the real thinking, not getting stuck in the keyboard watching the screen and thinking on the lunch time. So, you need to think about what will work, what will fail and make your code not to fail on potential environment failures, that is about testing and debugging. Those tasks where programming do not requires thinking, are non-existent, so not everyone can program. It requires special skills, that is why is hard to find good programmers. Mainly because you need to have the disposition to stay thinking almost all day, there are not programming tasks where you are able to be free of thinking.
Are you really able to stay the full day thinking on the proper sequence for each problem that requires a programmatic solution?. I think that those bosses that do not understand that it is a hard task are making their programmers to get bored and tired quickly than those bosses with programming experience.
a short illustrating story
I was working for a Big Company. Initially I was working only with one project, very happy with it, so I was very efficient on my work, delivering products with a very high quality with a real brightness among other projects. I don’t know when it has happened, but from day to another, I was removed from that position solving one project per day. Instead of that, once a projects was having a late schedule and many unsolved problems, the bosses decided to assign me those projects to fix those problems that other programmers were not able to complete. As result of that decision, I was working in 4 to 5 projects per day, including overtime.
If you think a little, switching between projects is insane. If a project manager cries because they need to remember the project requirements and they cry because they need to switch between those projects that they have assigned. Just imagine what does it means for a programmer, who needs to remember not only the project requirements, he also needs to remember the project source code, algorithms, tests, documentation and he must smile to their project manager.
So, I got tired and got bored very quickly. In just two months, I took the decision to leave the company. I was programming in 4 to 5 projects per day, working overtime and dealing with many problems in my personal life. How hard is to switch between two projects? Just try. Try to program in 4 to 5 different projects per day along two months in different languages with strong static typing like Java and C# .NET, where you need to remember the platform documentation too.
The most hilarious part of the story is the fact that some of those bosses were telling to the CEO and other top positions in the company that I was very happy in the company. Because those bosses were story tellers talking about my passion about programming. But do you think that someone can be really happy only fixing bugs and not creating new code? I think that after my decision to leave the company those story tellers that were speaking about passion about programming have not expected the way that I have left the company.
So, here I am now. Working as freelancer, in the languages that I like (Java, C, C++, Python and Perl), learning Haskell and all the required theory to work with it in the future, among other technologies and increasing my programming skills. Very happy to have bosses that are not story tellers, and usually with the freedom to express my opinion to my customers without any filter. Because that Big Company, was that kind of company where critiques were not allowed, but once you make any mistake you must tolerate humiliation and a cascade of critiques.
That is funny or how it always works. Trying to switch between multiple projects and having zero focus equals zero productivity. Plus the bosses that think you should be in the office all day at a computer instead of just getting the job done whenever you want as long as it meets the deadlines. Working offsite at odd hours can be so much more productive because you aren’t stuck in the same place or in a chair all of the time. Thanks for the article.