A computer programmer designs software programs through building logical work flow charts, the functionality of which is translated into one of several languages that computers can understand. In the majority of cases, the computer programmer also designs a graphical user interface (GUI) so that non-technical users can run the software through easy, point-and-click, menu-oriented modules. The GUI acts as a translator between the user and underlying software code, negating the need to know the command line structure of the language.
Generally, there are five basic stages of development that a computer programmer addresses in designing software. They are defining the need, designing a flowchart, coding the software, debugging and beta testing.
The first stage of development necessitates good interpersonal skills on behalf of the computer programmer who will typically meet with department heads, managers or employees who will relay the tasks to be implemented into the software program. It is up to the programmer to ask the right questions. If he or she misunderstands responses or gets an incomplete understanding of what’s required, the software won’t live up to expectations, resulting in problems that will fall squarely on the shoulders of the programmer.
During the second stage of development the computer programmer uses analytical thinking to logically layout a flow chart. The “if, then” scenario must take into account not only the logical steps that will take data input from one point to another, but also allow for possible problems relative to the specific work model or environment. Contingencies must be built into the design so that potentially unforeseen circumstances are accounted for. This could mean constructing alternate data flows or popup error messages that instruct the user.
When the design is complete the computer programmer converts the functionality of the flow chart into computer code. There are hundreds of programming languages, including C++, Perl, Java, Visual Basic, FORTRAN, Apple Script and D, with most programmers specializing in several families. This stage of software development is commonly done solo, though multiple programmers might work on different aspects of large computer programs.
When the initial software is completed it goes through a debugging stage. Bugs are flaws in the program that cause it to fail, crash, hang, return a false result, or behave in an undesirable fashion. Debugging is a very intense stage of development that can take hundreds of hours. A computer programmer will also try to get the program to fail by using it in ways that are not necessarily typical of the projected real world scenario.
Finally the software undergoes beta testing. At this stage the program is released to use with the understanding that it will require modifications before a stable release can be issued. Searching for bugs in the previous stage cannot take into account the variety of hardware and software environments in which the software will have to perform. Conflicts can arise “in the wild” that are simply impossible to anticipate until beta testing brings them to light.
After a stable release has been issued, the attention turns to improvements. Invariably once software is applied refinements can be made to make it more efficient or easier to use. The computer programmer might also be called upon to expand its functionality to include duties that were not initially part of its design. The programmer will also be responsible for maintaining the program’s health.
Although computer programmers are always in demand, U.S. programmers face competition from outsourcing to countries where labor is cheaper. The U.S. national average wage for a U.S. computer programmer is about $72,280 US Dollars (USD) annually, or $34.75 hourly, though statistics vary and state averages differ. Educational requirements include a bachelor’s degree in computer science, information systems or mathematics. Some employees require a four-year degree and prefer management information systems (MIS) or business degrees.