There is no unified and standardized source that Computer Programmers learn their magic from. I have tried summarizing them in 3 main groups, but I’m absolutely sure there are many exceptions to that. What matters in the end is a programmers knowledge and ability to write amazing software and programs regardless of where that knowledge is coming from.
Depending on the education and training background, a programmer could belong to one of the following groups:
The Computer Science and Software Engineering Graduates
These are the classic example of programmers, usually the product of 3 to 4 years of undergraduate degree programs in Computer Science or Engineering. They can code in several programming languages; they can also comprehend or create documentation and visual diagrams such as UML, ER, and IA Garrett.
After graduation, those interested in programming, often start working as entry programmers and after gaining enough industry experience, they start working as Software Engineers, Software Architects, or System Analysts. Not every programmer can write good software, but most Software Architects are often very good programmers.
Most Software Architects or Engineers enjoy programming and find it to be quite fun and addictive, and of course there are some who would rather focus mostly on the design and analysis stage of the project vs. the implementation of the final product.
For a Computer Science graduate learning a new languages is really a matter of days or weeks, yet becoming an industry standard programmer could take much longer than that. In fact there is no limit to how good a programmer could become.
The College Certificate Program Graduate
These are programmers who have successfully finished a 2 year certificate program from an accredited College or Technical school. Their training is somewhat similar to the first 2 years of an undergraduate Computer Science program; in fact they might even get some additional hands-on training, however they often do not cover all the system design topics taught in the senior years of an undergraduate program. This group of programmers could work independently on smaller projects or collaborate with teams lead by Software Architects, or System Analysts who would take over the task of System Design and Project Management.
Self Taught Programmers
These are an enthusiastic group of people who love programming and manage to teach themselves how to write code. This category is a big bag of surprises, because members of this group do not necessarily come from a Computer Science background; in fact I have met many good self-taught programmers who were Mathematicians, Physicists, Chemists, English Majors, Economists, or Visual Artists. I have also met programmers who had no formal education but their high school degrees.
Which ones are the best?
The truth is that there are good and bad programmers among all these groups. What employers need to consider is that good programmers have knowledge and experience, but where and how that knowledge is obtained is really trivial. Good programmers are treasures to a team, and they are hard to find.
To identify good programmers, one needs to be a good programmer themselves. Good Programmers can always identify other good programmers. Most business people aren’t, so they rely on indicators such as Certificates, Degrees, or GPA at school. Reality is that degrees and certificates tell no more about a programmer than a nicely designed label does about a product; who knows what’s inside the box unless the product has actually been tried at least once? Business People should consult programmers or Software Architects in order to hire good programmers. Quality of a programmer’s work can be examined by looking at their previous works and projects. A sample of a programmer’s code can tell a great deal about their personality type and thinking style.
Maintaining and Nurturing the Knowledge of Programming
Computer Programmers need to consistently nurture their minds by keeping up with the latest technology advancements. In fact part of a programmerâ€™s work day is spent on reading online documentations, articles, scanning user forums, and developing prototypes. That is part of the reason that a programmer doesn’t spend the entire 8 hours of a work day on programming alone. Employers who limit internet browsing and online communication in the work place, unknowingly do the most damage to the productivity of their programmers, because they are blocking the most valuable source of free knowledge to their IT work force. That results into weakening the intellectual capital of the company.