A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software.
One who practices or professes a formal approach to programming may also be known as a programmer analyst. The term programmer can be used to refer to a software developer, software engineer, computer scientist, or software analyst. However, members of these professions typically possess other software engineering skills beyond programming. For this reason, the term programmer is sometimes considered an insulting or derogatory oversimplification of these other professions.
This has sparked much debate amongst developers, analysts, computer scientists, programmers, and outsiders who continue to be puzzled at the subtle differences in these occupations. Within software engineering, programming (the implementation) is regarded as one phase in a software development process.
There is an ongoing debate on the extent to which the writing of programs is an art, a craft or an engineering discipline. In general, good programming is considered to be the measured application of all three, with the goal of producing an efficient software solution.
The discipline differs from many other technical professions in that programmers, in general, do not need to be licensed or pass any standardized (or governmentally regulated) certification tests in order to call themselves "programmers" or even "software engineers." However, representing oneself as a "Professional Software Engineer" without a license from an accredited institution is illegal in many parts of the world. However, because the discipline covers many areas, which may or may not include critical applications, it is debatable whether licensing is required for the profession as a whole. In most cases, the discipline is self-governed by the entities which require the programming.
A computer programmer figures out the process of designing, writing, testing, debugging/troubleshooting and maintaining the source code of computer programs. This source code is written in a programming language so the computer can 'understand' it. The code may be a modification of an existing source or something completely new. The purpose of programming is to create a program that produces a certain desired behaviour (customization). The process of writing source code often requires expertise in many different subjects, including knowledge of the application domain, specialized algorithms and formal logic.
The computer programmer also designs a graphical user interface (GUI) so that non-technical users can use the software through easy, point-and-click menu options. The GUI acts as a translator between the user and the software code. Some, especially those working on large projects that involve many programmers, use computer-assisted software engineering (CASE) tools to automate much of the coding process. These tools enable a programmer to concentrate on writing the unique parts of a program. Programmers working on smaller projects often use “programmer environments,” applications that increase productivity by combining compiling, code walk-through, code generation, test data generation, and debugging functions. Programmers also use libraries of basic code that can be modified or customized for a specific application. This approach yields more reliable and consistent programs and increases programmers' productivity by eliminating some routine steps. The programmer will also be responsible for maintaining the program’s health.
As software design has continued to advance, and some programming functions have become automated, programmers have begun to assume some of the responsibilities that were once performed only by software engineers. As a result, some computer programmers now assist software engineers in identifying user needs and designing certain parts of computer programs, as well as other functions.
It seems that there are as many roads to becoming a computer programmer as there are actual programmers. Some computer programmers have a bachelors degree in computer information or science, mathematics or engineering. A two-year degree or certificate may be adequate for some jobs. Though there is not one specific credential that all computer programmers must have, it is certain that having some type of formal education will definitely improve your chances of getting employment in the competitive programming world. Having said that, many programmers are self-taught and are very proficient and successful in programming. In the absence of a degree, substantial specialized experience or expertise may be needed.
In addition to educational achievement, employers value relevant programming skills as well as experience. They will be looking for people familiar with fourth and fifth generation languages that involve graphic user interface and systems programming. Because technology changes so often, programmers must constantly update their knowledge and skills by taking courses sponsored by their employer or offered through local colleges and universities.
When hiring computer programmers, employers look for people with the necessary programming skills who can think logically and pay close attention to detail. Programming calls for patience, persistence, and the ability to perform precise analytical work, especially when under pressure. Creativity, ingenuity, being able to work with abstract concepts and being able to do technical analysis are all important as well. Because programmers are expected to work in teams and interact directly with users, employers want programmers who are able to communicate with non-technical personnel. Business skills are also important for those wanting to advance to managerial positions.
One thing that's incredibly important is to remember that you will be working with other people. So while it is imperative that you can program well, it is just as imperative that you can work with the people around you. You will need to explain why you can or can't do something, offer solutions, take criticism, take direction, listen to arguments, have arguments, make apologies and accept apologies. Learning the skill of communicating and marrying that with your skill in computer programming will make you stand out from others and accelerate your success.
Technological advances allow more work to be done from remote locations, so some computer programmers are able to work from home. Most programmers though, do work in clean, comfortable offices and spend most of their time in front of a computer. They usually work full 40 hour weeks and may be required to work overtime to meet deadlines or fix technical problems. Because of the amount of time spent in front of a computer terminal, programmers could be susceptible to eyestrain, back problems, or hand and wrist problems such as carpal tunnel syndrome.