|
Significant Points
|
● |
Most of the computer
programmers held a bachelor’s degree in Engineering.
|
|
● |
Employment is expected to grow
more than that of other computer specialists.
|
|
● |
Prospects should be best for
Engineering graduates with knowledge of a variety of
programming languages and tools. |
Nature of the Work
Computer programmers write, test and maintain the detailed
instructions, called programs, that computers must follow to
perform their functions. They also conceive, design, and test
logical structures for solving problems by computer. Many
technical innovations in programming—advanced computing
technologies and sophisticated new languages and programming
tools—have redefined the role of a programmer and elevated much of
the programming work done today.
Job titles and descriptions may vary, depending on the
organization. In this occupational statement, computer programmer
refers to individuals whose main job function is programming; this
group has a wide range of responsibilities and educational
backgrounds.
Computer programs tell the computer what to do—which information
to identify and access, how to process it, and what equipment to
use. Programs vary widely depending upon the type of information
to be accessed or generated. For example, the instructions
involved in updating financial records are very different from
those required to duplicate conditions on board an aircraft for
pilots training in a flight simulator. Although simple programs
can be written in a few hours, programs that use complex
mathematical formulas, whose solutions can only be approximated,
or that draw data from many existing systems may require more than
a year of work. In most cases, several programmers work together
as a team under a senior programmer’s supervision.
Programmers write programs according to the specifications
determined primarily by computer software engineers and systems
analysts. After the design process is complete, it is the job of
the programmer to convert that design into a logical series of
instructions that the computer can follow. The programmer then
codes these instructions in a conventional programming language; an artificial intelligence language, such as
Prolog; or one of the most advanced object-oriented languages such
as Java, C++. Different programming languages are
used depending on the purpose of the program. COBOL, for example,
is commonly used for business applications, whereas Fortran (short
for “formula translation”) is used in science and engineering. C++
and Java is widely used for both scientific and business applications.
Many programmers at the enterprise level are also expected to know
platform-specific languages used in database programming.
Programmers generally know more than one programming language and,
because many languages are similar, they often can learn new
languages relatively easily. In practice, programmers often are
referred to by the language they know, as are Java programmers, or
the type of function they perform or environment in which they
work, which is the case for database programmers, mainframe
programmers or Web programmers.
Many programmers update, repair, modify and expand existing
programs. When making changes to a section of code, called a
routine, programmers need to make other users aware of the task
that the routine is to perform. They do this by inserting comments
in the coded instructions, so that others can understand the
program. 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 the program, because the tools automate various
pieces of the program being built. CASE tools generate whole
sections of code automatically, rather than line by line.
Programmers also utilize libraries of pre-written code, which can
then be modified or customized for a specific application. This
also yields more reliable and consistent programs and increases
programmers productivity by eliminating some routine steps.
Programmers test a program by running it to ensure that the
instructions are correct and that the program produces the desired
outcome. If errors do occur, the programmer must make the
appropriate change and recheck the program until it produces the
correct results. This process is called testing and debugging.
Programmers may continue to fix these problems throughout the life
of a program. Programmers working in a mainframe environment,
which involves a large centralized computer, may prepare
instructions for a computer operator who will run the program.
They also may contribute to a manual for persons who will be using
the program.
Programmers often are grouped into two broad types—applications
programmers and systems programmers. Applications programmers
write programs to handle a specific job, such as a program to
track inventory within an organization. They may also revise
existing packaged software or customize generic applications
called middleware.
Systems programmers, on the other hand, write programs to maintain
and control computer systems software, such as operating systems,
networked systems, and database systems. These workers make
changes in the sets of instructions that determine how the
network, workstations, and central processing unit of the system
handle the various jobs they have been given, and how they
communicate with peripheral equipment such as terminals, printers,
and disk drives. Because of their knowledge of the entire computer
system, systems programmers often help applications programmers to
determine the source of problems that may occur with their
programs.
Programmers in software development companies may work directly
with experts from various fields to create software—either
programs designed for specific clients or packaged software for
general use—ranging from games and educational software to
programs for desktop publishing and financial planning. Much of
this type of programming takes place in the preparation of
packaged software, which constitutes one of the most rapidly
growing segments of the computer services industry.
In some organizations, particularly small ones, workers commonly
known as programmer-analysts are responsible for both the systems
analysis and the actual programming work.
Advanced programming languages and new object-oriented programming
capabilities are increasing the efficiency and productivity of
both programmers and users. The transition from a mainframe
environment to one that is based primarily on personal computers
(PCs) has blurred the once rigid distinction between the
programmer and the user. Increasingly, adept end-users are taking
over many of the tasks previously performed by programmers. For
example, the growing use of packaged software, such as spreadsheet
and database management software packages, allows users to write
simple programs to access data and perform calculations.
Working Conditions
Programmers generally work in offices in comfortable
surroundings. Many programmers may work long hours or weekends to
meet deadlines or fix critical problems that occur during off
hours. Given the technology available, telecommuting is becoming
common for a wide range of computer professionals, including
computer programmers. As computer networks expand, more
programmers are able to make corrections or fix problems remotely
by using modems, e-mail, and the Internet to connect to a
customer’s computer.
Like other workers who spend long periods in front of a computer
terminal typing at a keyboard, programmers are susceptible to
eyestrain, back discomfort, and hand and wrist problems.
Employment
Programmers are employed in almost every industry, but the
largest concentrations are in computer systems design and related
services and in software publishers, which includes firms that
write and sell software. Large numbers of programmers also can be
found in management of companies and enterprises,
telecommunications companies, manufacturers of computer and
electronic equipment, financial institutions, insurance carriers and government agencies.
A large number of computer programmers are employed on a temporary
or contract basis or work as independent consultants, as companies
demand expertise with new programming languages or specialized
areas of application. Rather than hiring programmers as permanent
employees and then laying them off after a job is completed,
employers can contract with temporary help agencies, consulting
firms, or directly with programmers themselves. A marketing firm,
for example, may require the services of several programmers only
to write and debug the software necessary to get a new customer
resource management system running. This practice also enables
companies to bring in people with a specific set of skills—usually
in one of the latest technologies—as it applies to their business
needs.
Bringing in an independent contractor or consultant with a certain
level of experience in a new or advanced programming language, for
example, enables an establishment to complete a particular job
without having to retrain existing workers. Such jobs may last
anywhere from several weeks to a year or longer.
Training, Other Qualifications and Advancement
While there are many training paths available for
programmers, mainly because employers needs are so varied, the
level of education and experience employers seek has been rising,
due to the growing number of qualified applicants and the
specialization involved with most programming tasks. Bachelor’s
degrees in Engineering are commonly required.
Most Engineering colleges and many independent technical
institutes offer degree in computer science or a related
information technology field.
Employers are primarily interested in programming knowledge, and
computer programmers can become certified in a programming
language such as C++ or Java.
College graduates who are interested in changing careers or
developing an area of expertise also may return to technical
institute for additional training.
In the absence of a degree, substantial specialized experience or
expertise may be needed. Even when hiring programmers with a
degree, employers appear to be placing more emphasis on previous
experience.
Some computer programmers hold a college degree in computer
science, mathematics, or information systems, whereas others have
taken special courses in computer programming to supplement their
degree in a field such as accounting, inventory control, or
another area of business.
Required skills vary from job to job, but the demand for various
skills generally is driven by changes in technology. Employers
using computers for scientific or engineering applications usually
prefer college graduates who have degrees in computer or
information science, mathematics, engineering, or the physical
sciences. Graduate degrees in related fields are required for some
jobs.
Employers who use computers for business applications prefer to
hire people who have had college courses in management information
systems (MIS) and business and who possess strong programming
skills. Although knowledge of traditional languages still is
important, employers are placing increasing emphasis on newer,
object-oriented programming languages and tools, such as C++ and
Java. Additionally, employers are seeking persons familiar with
fourth- and fifth-generation languages that involve graphic user
interface (GUI) and systems programming. Employers also prefer
applicants who have general business skills and experience related
to the operations of the firm.
Students can improve their employment prospects by participating
in different projects during college education.
Most systems programmers hold Engineering degree in computer science.
Extensive knowledge of a variety of operating systems is essential
for such workers. This includes being able to configure an
operating system to work with different types of hardware and
having the skills needed to adapt the operating system to best
meet the needs of a particular organization. Systems programmers
also must be able to work with database systems.
When hiring programmers, employers look for people with the
necessary programming skills who can think logically and pay close
attention to detail. The job calls for patience, persistence, and
the ability to work on exacting analytical work, especially under
pressure. Ingenuity, creativity, and imagination also are
particularly important when programmers design solutions and test
their work for potential failures.
The ability to work with abstract concepts and to do technical
analysis is especially important for systems programmers, because
they work with the software that controls the computer’s
operation. 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.
Entry-level or junior programmers may work alone on simple
assignments after some initial instruction or they may be assigned
to work on a team with more experienced programmers. Either way,
beginning programmers generally must work under close supervision.
Because technology changes so rapidly, programmers must
continuously update their knowledge and skills by taking courses
sponsored by their employer or by software vendors, or offered
through colleges and universities.
For skilled programmers who keep up to date with the latest
technology, the prospects for advancement are good. In large
organizations, programmers may be promoted to lead programmer and
be given supervisory responsibilities. Some applications
programmers may move into systems programming after they gain
experience and take courses in systems software. With general
business experience, programmers may become programmer-analysts or
systems analysts or be promoted to a managerial position. Other
programmers, with specialized knowledge and experience with a
language or operating system, may work in research and development
on multimedia or Internet technology, for example. As employers
increasingly contract out programming jobs, more opportunities
should arise for experienced programmers with expertise in a
specific area to work as consultants.
Certification is a way to demonstrate a level of competence, and
may provide a jobseeker with a competitive advantage. In addition
to language-specific certificates that a programmer can obtain,
product vendors or software firms also offer certification and may
require professionals who work with their products to be
certified. Voluntary certification also is available through other
various organizations.
Job Outlook
Employment of
programmers is expected to grow very fast. Jobs for both systems and applications
programmers should be most plentiful in data processing service
firms, software houses, and computer consulting businesses. These
types of establishments are part of computer systems design and
related services and software publishers, which are projected to
be among the fastest growing industries in the economy.
As organizations attempt to control costs and keep up with
changing technology, they will need programmers to assist in
conversions to new computer languages and systems. In addition,
numerous job openings will result from the need to replace
programmers who leave the job, transfer to other occupations such
as manager or systems analyst.
With the rapid gains in technology, sophisticated computer
software now has the capability to write basic code, eliminating
the need for more programmers to do this routine work. The
consolidation and centralization of systems and applications,
developments in packaged software, advances in programming
languages and tools, and the growing ability of users to design,
write, and implement more of their own programs means that more of
the programming functions can be transferred from programmers to
other types of workers.
Nevertheless, employers will continue to need programmers who have
strong technical skills and who understand an employer’s business
and its programming requirements. This means that programmers will
have to keep abreast of changing programming languages and
techniques.
Given the importance of networking and the expansion of
client/server, Web-based, and wireless environments, organizations
will look for programmers who can support data communications and
help to implement electronic commerce and Intranet strategies.
Demand for programmers with strong object-oriented programming
capabilities and technical specialization in areas such as
client/server programming, wireless applications, multimedia
technology, and graphic user interface (GUI) should arise from the
expansion of intranets, extranets, and Internet applications.
Programmers also will be needed to create and maintain expert
systems and embed these technologies in more products. Finally,
growing emphasis on cyber-security will lead to increased demand
for programmers who are familiar with digital security issues and
skilled in using appropriate security technology.
As programming tasks become increasingly sophisticated and
additional levels of skill and experience are demanded by
employers, graduates with less work experience should face strong
competition for programming jobs.
Competition for entry-level positions, however, also can affect
applicants with a bachelor’s degree. Prospects should be best for
graduates with knowledge and experience working with, a variety of
programming languages and tools—including C++ and other
object-oriented languages such as Java, as well as newer,
domain-specific languages that apply to computer networking,
database management, and Internet application development.
Obtaining vendor-specific or language-specific certification also
can provide a competitive edge. Because demand fluctuates with
employers’ needs, jobseekers should keep up to date with the
latest skills and technologies. Individuals who want to become
programmers can enhance their prospects by combining the
appropriate formal training with practical work experience.
|
Engg. Courses Aeronautical
Agricultural
Architecture
Biomedical
Ceramic
Chemical
Civil
Com Software
Com Programmer
Com Hardware
Electrical &
Electronics
Environmental
Industrial
IT
Leather Tech.
Marine
Mechanical
Mining
Nuclear
Petroleum
Printing
Telecommunication
Textile
|