+5 votes
by (2.7k points)
Why do not more people work as programmers?

1 Answer

+3 votes
by (2.7k points)
 
Best answer

Being a programmer is really difficult and does not happen momentarily.

We can expect to plant some trees and be 2000 years old, and wait for the redwoods to grow overnight, regardless of their demands.

Personality traits

  • You basically have to be a self-taught person to learn how to program. It takes years of practice to learn everything you need to go beyond a basic level where you can write short programs that work. Nobody has become a great programmer just for taking classes or reading books. Take hours of practice. And contrary to popular belief, CS programs do not teach programming. Only CS programs teach theory.
  • As a programmer, you must have an almost unlimited persistence to continue trying to solve problems, fix and develop things. You need to be a special person to have persistence, especially when you often think you are not making progress. This is more or less a personality trait. Not having this level of persistence is enough to put out most people who do not have it in the profession.
  • You must be exceptional in math and problem solving. The programming is MUCH problem solving.
  • You must have an excellent short (and long term) memory so you can juggle several things in your head at the same time and remember what you wrote a month ago.
  • You must have a great understanding of how things interrelate and how to design good architecture. If I change this little thing here, what could be changed elsewhere?
  • You must have incredible attention to detail. Close does not cut this in programming. Do you forget a semicolon somewhere? The program will not compile! Error writing a function name? Your program could be doing something completely different from what you expected.

Without having these personality traits is enough to nullify many people.

Objective of the Subject

  • You must have a solid understanding of data structures and classes, and know when and how to use them.
  • You need to become familiar with the libraries that have already been developed so you do not have to reinvent the wheel.
  • You need to become familiar with a lot of basic (and advanced) algorithms, again so you do not have to reinvent the wheel.
  • You often need to know the limits of the hardware you are working with so that you can do things like manage memory correctly and avoid running out of memory, or use your memory correctly to eliminate wasted data transfer within the processor and speed up processing.
  • Then you can program. Excellent! But do you know anything about package structure, TCP / IP, HTML, CSS, user interface design or databases? The programs do not run in isolation.
  • There are a lot of things you should know, and they keep changing! It's not something you can be really good at unless it's your main goal. You can not be a "weekend programmer".

Work / life environment

  • You must have long blocks of uninterrupted time so you do not lose your concentration when you are programming (and learning to program). Many work environments (and homes) struggle to offer this. The phone rings? Well, it will take you 15 minutes to recover your line of thought.
  • He often has to make decisions about ongoing compensation. Sure, you could write a program that could handle each case, but how often will someone actually put "zero" as input? In addition, we are delayed, and it is more important to start something right now.
  • In addition to all this, the language that you thought was the next big event that was a passing fad, since no one would use it within 5 years. Now you are in the following interesting language, which might not be used in 5 years from now. You constantly have to be aware of things.

In addition to that, there are the management aspects.

Programmers are often treated as factory workers. People without talent for programming (and less sense of business) are usually in charge of projects. They believe that programmers are gears in the machines. The truth is that programmers are artisans and to get the best results from a project, it would be best to ask the experts in programming how things should be done. Almost all projects end up over budget and late, forcing programmers to work tons of overtime not compensated and not appreciated to deliver a poorly designed and poorly tested product. The great programmers realize that they are not paying more than the novice programmers because management can not tell the difference, and besides that, they are doing extra work to compensate the other programmers who are below average. And great programmers who talk openly and try to change things for the better often intimidate managers, who often try to get rid of them (which is a general employment trend discussed in other publications). It is enough and it is easy to see why good people get fed up with the profession, especially because there are many other opportunities. People who are even average programmers, as long as they are reasonably good at dealing with people, have enough skills to succeed in a variety of other professions. Programming is something that can be easily transferred from the outside, but not inside.

It is likely that good programmers look for work randomly.

It's easy to find programmers. But it is difficult to find good programmers. Novice programmers probably look for work constantly. In good programmers, if a company realizes that they are good, they should do whatever it takes to cling to them, so they are probably looking for work much less often. And when they do, they are demanding about where they want to work, which would explain why many companies claim that " there are no good programmers available, all we can find are bad"As has been said elsewhere, a good programmer can be worth many times more than an average programmer is worth, and a bad programmer can have a negative value, and it is really difficult (if not impossible) for disgusting programmers and average, becoming good quality programmers - and certainly not worth the investment for any startup that is in business when they are supposed to focus on developing something quickly and getting it out the door of the market.


statcounter statistics counter
...