Software engineers are responsible for customizing existing software programs to meet the needs and desires of a particular business or industry. First, they spend considerable time researching, defining, and analyzing the problem at hand. Then, they develop software programs to resolve the problem on the computer. There are about 800,000 computer software engineers employed in the United States.
Software Engineer Career History
Advances in computer technology have enabled professionals to put computers to work in a range of activities once thought impossible. In the past several years, computer software engineers have been able to take advantage of computer hardware improvements in speed, memory capacity, reliability, and accuracy to create programs that do just about anything. Computer engineering blossomed as a distinct subfield in the computer industry after the new performance levels were achieved. This relative lateness is explained by the fact that the programs written by software engineers to solve business and scientific problems are very intricate and complex, requiring a lot of computing power. Although many computer scientists will continue to focus their research on further developing hardware, the emphasis in the field has moved to software, and the U.S. Department of Labor predicts that software engineers will be among the fastest-growing occupations in the United States through the next decade.
The Job of Software Engineers
Every day, businesses, scientists, and government agencies encounter difficult problems that they cannot solve manually, either because the problem is just too complicated or because it would take too much time to calculate the appropriate solutions. For example, astronomers receive thousands of pieces of data every hour from probes and satellites in space as well as from telescopes here on Earth. If they had to process the information themselves, compile careful comparisons with previous years’ readings, look for patterns or cycles, and keep accurate records of the origin of the data, it would be so cumbersome and lengthy a project as to make it next to impossible. They can, however, process the data with the extensive help of computers. Computer software engineers define and analyze specific problems in business or science and help develop computer software applications that effectively solve them. The software engineers who work in the field of astronomy are well versed in its concepts, but many other kinds of software engineers exist as well.
Software engineers fall into two basic categories. Systems software engineers build and maintain entire computer systems for a company. Applications software engineers design, create, and modify general computer applications software or specialized utility programs.
Engineers who work on computer systems research how a company’s departments and their respective computer systems are organized. For example, there might be customer service, ordering, inventory, billing, shipping, and payroll record-keeping departments. Systems software engineers suggest ways to coordinate all these parts. They might set up intranets or networks that link computers within the organization and ease communication.
Some applications software engineers develop packaged software applications, such as word processing, graphic design, or database programs, for software development companies. Other applications engineers design customized software for individual businesses or organizations. For example, a software engineer might work with an insurance company to develop new ways to reduce paperwork, such as claim forms, applications, and bill processing. Applications engineers write programs using programming languages like C++ and Java.
Software engineers sometimes specialize in a particular industry such as the chemical industry, insurance, or medicine, which requires knowledge of that industry in addition to computer expertise. Some engineers work for consulting firms that complete software projects for different clients on an individual basis. Others work for large companies that hire full-time engineers to develop software customized to their needs.
Software engineering technicians assist engineers in completing projects. They are usually knowledgeable in analog, digital, and microprocessor electronics and programming techniques. Technicians know enough about program design and computer languages to fill in details left out by engineers or programmers, who conceive of the program from a large-scale perspective. Technicians might also test new software applications with special diagnostic equipment.
Both systems and applications software engineering involve extremely detail-oriented work. Since computers do only what they are programmed to do, engineers have to account for every bit of information with a programming command. Software engineers are thus required to be very well organized and precise. In order to achieve this, they generally follow strict procedures in completing an assignment.
First, they interview clients and colleagues to determine exactly what they want the final program to accomplish. Defining the problem by outlining the goal can sometimes be difficult, especially when clients have little technical training. Then, engineers evaluate the software applications already in use by the client to understand how and why they are failing to fulfill the needs of the operation. After this period of fact gathering, the engineers use methods of scientific analysis and mathematical models to develop possible solutions to the problems. These analytical methods help them predict and measure the outcomes of different proposed designs.
When they have developed a clear idea of what type of program is required to fulfill the client’s needs, they draw up a detailed proposal that includes estimates of time and cost allocations. Management must then decide if the project will meet their needs, is a good investment, and whether or not it will be undertaken.
Once a proposal is accepted, both software engineers and technicians begin work on the project. They verify with hardware engineers that the proposed software program can be completed with existing hardware systems. Typically, the engineer writes program specifications and the technician uses his or her knowledge of computer languages to write preliminary programming. Engineers focus most of their effort on program strategies, testing procedures, and reviewing technicians’ work.
Software engineers are usually responsible for a significant amount of technical writing, including project proposals, progress reports, and user manuals. They are required to meet regularly with clients to keep project goals clear and learn about any changes as quickly as possible.
When the program is completed, the software engineer organizes a demonstration of the final product to the client. Supervisors, management, and users are generally present. Some software engineers may offer to install the program, train users on it, and make arrangements for ongoing technical support.
Software Engineer Career Requirements
A high school diploma is the minimum requirement for software engineering technicians, but an associate’s degree is required for most of these positions. A bachelor’s or advanced degree in computer science or engineering is required for most software engineers. Thus, to prepare for college studies while in high school, take as many computer, math, and science courses as possible; they provide fundamental math and computer knowledge and teach analytical thinking skills. Classes that rely on schematic drawing and flowcharts are also very valuable. English and speech courses will help you improve your communication skills, which are very important for software engineers.
There are several ways to enter the field of software engineering, although it is becoming increasingly necessary to pursue formal postsecondary education. If you don’t have an associate’s degree, you may first be hired in the quality assurance or technical support departments of a company. Many individuals complete associate degrees while working and then are promoted into software engineering technician positions. As more and more well-educated professionals enter the industry, however, it is becoming more important for you to have at least an associate’s degree in computer engineering or programming. Many technical and vocational schools offer a variety of programs that will prepare you for a job as a software engineering technician.
If you are interested in this career, you should consider carefully your long-range goals. Being promoted from a technician’s job to that of software engineer often requires a bachelor’s degree. In the past, the computer industry has tended to be fairly flexible about official credentials; demonstrated computer proficiency and work experience have often been enough to obtain a good position. This may hold true for some in the future. The majority of young computer professionals entering the field for the first time, however, will be college educated. Therefore, if you have no formal education or work experience you will have less chance of gaining employment.
Obtaining a postsecondary degree in computer engineering is usually considered challenging and even difficult. In addition to natural ability, you should be hard working and determined to succeed. If you plan to work in a specific technical field, such as medicine, law, or business, you should receive some formal training in that particular discipline.
Certification or Licensing
Another option if you’re interested in software engineering is to pursue commercial certification. These programs are usually run by computer companies that wish to train professionals to work with their products. Classes are challenging and examinations can be rigorous. New programs are introduced every year.
As a software engineer, you will need strong communications skills in order to be able to make formal business presentations and interact with people having different levels of computer expertise. You must also be detail oriented and work well under pressure.
Exploring Software Engineer Career
Try to spend a day with a working software engineer or technician in order to experience firsthand what their job is like. School guidance counselors can help you arrange such a visit. You can also talk to your high school computer teacher for more information.
In general, you should be intent on learning as much as possible about computers and computer software. You should learn about new developments by reading trade magazines and talking to other computer users. You also can join computer clubs and surf the Internet for information about working in this field.
About 800,000 computer software engineers are employed in the United States. Approximately 460,000 work with applications and 340,000 work with systems software. Software engineering is done in many fields, including medical, industrial, military, communications, aerospace, scientific, and other commercial businesses. Almost 30 percent of software engineers—the largest concentration in the field—work in computer systems design and related services.
If you have work experience and perhaps even an associate’s degree, you may be promoted to a software engineering technician position from an entry-level job in quality assurance or technical support. Those already employed by computer companies or large corporations should read company job postings to learn about promotion opportunities. If you are already employed and would like to train in software engineering, either on the job or through formal education, you can investigate future career possibilities within your same company and advise management of your wish to change career tracks. Some companies offer tuition reimbursement for employees who train in areas applicable to business operations.
As a technical, vocational, or university student of software engineering, you should work closely with your schools’ placement offices, as many professionals find their first position through on-campus recruiting. Placement office staff are well trained to provide tips on resume writing, interviewing techniques, and locating job leads.
Individuals not working with a school placement office can check the classified ads for job openings. They also can work with a local employment agency that places computer professionals in appropriate jobs. Many openings in the computer industry are publicized by word of mouth, so you should stay in touch with working computer professionals to learn who is hiring. In addition, these people may be willing to refer you directly to the person in charge of recruiting.
Software engineers who demonstrate leadership qualities and thorough technical know-how may become project team leaders who are responsible for full-scale software development projects. Project team leaders oversee the work of technicians and engineers. They determine the overall parameters of a project, calculate time schedules and financial budgets, divide the project into smaller tasks, and assign these tasks to engineers. Overall, they do both managerial and technical work.
Software engineers with experience as project team leaders may be promoted to a position as software manager, running a large research and development department. Managers oversee software projects with a more encompassing perspective; they help choose projects to be undertaken, select project team leaders and engineering teams, and assign individual projects. In some cases, they may be required to travel, solicit new business, and contribute to the general marketing strategy of the company.
Many computer professionals find that their interests change over time. As long as individuals are well qualified and keep up to date with the latest technology, they are usually able to find positions in other areas of the computer industry.
Computer software engineers with a bachelor’s degree in computer engineering earned starting salaries of $52,464 in 2005, according to the National Association of Colleges and Employers. New computer engineers with a master’s degree averaged $60,354. Computer engineers specializing in applications earned median annual salaries of $74,980 in 2004, according to the U.S. Department of Labor’s National Occupational Employment and Wage Estimates. The lowest-paid 10 percent averaged less than $46,520, and the highest-paid 10 percent earned $113,830 or more annually. Software engineers specializing in systems software earned median salaries of $79,740 in 2004. The lowest-paid 10 percent averaged $50,420 annually, and the highest-paid engineers made $118,350 per year. Experienced software engineers can earn over $125,000 a year. When software engineers are promoted to project team leader or software manager, they earn even more. Software engineers generally earn more in geographical areas where there are clusters of computer companies, such as the Silicon Valley in northern California.
Most software engineers work for companies that offer extensive benefits, including health insurance, sick leave, and paid vacation. In some smaller computer companies, however, benefits may be limited.
Software engineers usually work in comfortable office environments. Overall, they usually work 40-hour weeks, but their hours depend on the nature of the employer and expertise of the engineer. In consulting firms, for example, it is typical for software engineers to work long hours and frequently travel to out-of-town assignments.
Software engineers generally receive an assignment and a time frame within which to accomplish it; daily work details are often left up to the individuals. Some engineers work relatively lightly at the beginning of a project, but work a lot of overtime at the end in order to catch up. Most engineers are not compensated for overtime. Software engineering can be stressful, especially when engineers must work to meet deadlines. Working with programming languages and intense details is often frustrating. Therefore, software engineers should be patient, enjoy problem-solving challenges, and work well under pressure.
Software Engineer Career Outlook
The field of software engineering is expected to be one of the fastest growing occupations through 2014, according to the U.S. Department of Labor. Demands made on computers increase every day and from all industries. Rapid growth in the computer systems design and related industries will account for much of this growth. In addition, businesses will continue to implement new and innovative technology to remain competitive, and they will need software engineers to do this. Software engineers will also be needed to handle ever-growing capabilities of computer networks, e-commerce, and wireless technologies, as well as the security features needed to protect such systems from outside attacks. Outsourcing of jobs in this field to foreign countries will temper growth somewhat, but overall the future of software engineering is very bright.
Since technology changes so rapidly, software engineers are advised to keep up on the latest developments. While the need for software engineers will remain high, computer languages will probably change every few years and software engineers will need to attend seminars and workshops to learn new computer languages and software design. They also should read trade magazines, surf the Internet, and talk with colleagues about the field. These kinds of continuing education techniques help ensure that software engineers are best equipped to meet the needs of the workplace.