Software Engineering Topics

Guide to a Career in Software Engineering

What is Software Engineering? According to the Bureau of Labor Statistics, software engineering is the "design, development, testing, and evaluation of the software and systems that enable computers to perform applications."

Software engineers work with a variety of programming languages such as C++ and Java. Aside from computer application design, these professionals are also capable of modifying existing computer applications. Duties of a software engineer may also include setting up and maintaining computer networks.

It is important that software engineers possess good written and verbal communication skills. The ability to program, or instruct a computer line by line, is important. Software engineers must analyze and solve computer application problems.

Employers usually require software engineers to possess bachelor's degrees, but an associate's degree combined with work experience may be sufficient in today's highly competitive job market. Experience and continued education can enable a software engineer to advance to management or a top executive position.

Because technology changes quickly, it is essential for software engineers to remain current in their field. Graduate degrees are looked upon favorably, though not required. Many software vendors, such as Microsoft, Java, and Cisco offer certification programs to assist software engineers in their professional development.

The outlook for careers in software engineering is favorable. Experts expect software engineering to be one of the fastest growing occupations over the next ten years. Continued growth in the computer systems field and analogous fields should create more job opportunities for software engineers.

Skills of Successful Software Engineering Majors

Technical skills. During their college degree programs, software engineering majors develop strong technical abilities through repeated exposure to a variety of new and traditional technologies. Students learn the principles of technical innovation by tracing the history of computers and software through to present systems and beyond.

Software engineering majors often get the earliest opportunities to experiment with new technologies. Most technical innovations come from experiments at major engineering colleges and universities. The Internet allows students to quickly distribute their new software for peer review and testing. Based on the results, some software engineering majors start to enjoy their first taste of professional acclaim while still attending classes.

Problem solving skills. At the heart of any strong software engineering degree program is a set of courses that teach students to think critically about problems facing companies and consumers. By developing efficient solutions to common problems, software engineers continue our constant innovation.

Software engineering majors do not just solve problems in front of computer monitors, however. Many colleges and universities expose students to courses in logic, debate, and even game theory, to help tomorrow's software engineers expand their ability to leverage technology to resolve non-technical dilemmas.

Interpersonal communication skills. Generally, software development requires a team effort. Many students who have hacked around on their own for years may find it challenging to collaborate with other developers on complex projects. Therefore, software engineering majors learn to interact with their peers and team leaders effectively.

To prepare students for careers in corporate environments, many software engineering programs encourage students to participate in collaborative projects over the course of each semester. Whether part of inter-campus competitions or simply part of a school's public outreach agenda, these programs can unite students around complex problems, forcing them to learn to work as a team to tackle large software projects.

Writing skills. Though software engineers develop the ability to understand complex development languages, they must also learn how to present their ideas and recommendations to non-technical colleagues. Software engineering majors learn the basics of corporate communications, including proper formats for departmental communication and project reports.

Software engineers with entrepreneurial tendencies can benefit from courses in media relations. These added skills can help them write press releases and customer communications for their own fledgling companies. Regardless of the format, software engineers who can write well are tremendous assets to their companies.

Oral presentation skills. While developing solutions for companies and customers, software engineers must often present suggestions or research findings in oral presentations to various groups within their organizations. Software engineering majors develop the ability to blend modern presentation tools with classic storytelling skills to engage audiences.

Software engineering majors must be prepared to debate other team members about the inclusion of features into a software project or their justification for changes to a project's budget or timeline. Many software engineers, especially those working at startup firms, often find themselves addressing audiences of potential investors or reporters. The most effective software engineers can explain their projects in plain language, without resorting to insider jargon.

Accounting and budgeting skills. The exploding technology industry of the late 1980's and early 1990's revolutionized the roles of software engineers. Instead of working completely behind the scenes like their predecessors, today's software engineering majors must prepare to play a significant role in the financial stability of their companies.

In small startup companies, software engineers must pinch pennies to meet deadlines under budget. When relying on small groups of investors, or even your own credit cards, to fund a venture, entrepreneurs must accurately predict the length of time it will take for a product to reach its market and generate revenue.

In larger technology companies, software engineers must often manage their own budgets of funding and human resources. They must be able to assign team members to reasonable schedules and meet their deadlines without triggering expensive overtime charges or other staff expenses.

Therefore, many software engineering programs enroll their students into basic courses in accounting, business, and time management. By balancing sound business skills with their technical abilities, software engineering majors can prepare themselves for lucrative careers in this new era beyond the "dot-com bubble."

Career Education in Software Engineering

Preparing to enter a college degree program Software engineering programs are offered at all levels, from undergraduate certifications to Ph.D's. Most careers in software engineering require at least a bachelor's degree. However, with extensive experience a certification or associate's degree may be sufficient.

An undergraduate certificate in software engineering is typically considered preparation for an associate's or bachelor's degree. The program usually consists of four to five basic software engineering courses. Selected courses may include Principles and Techniques of Software Engineering, Design and Development, and Software Safety.

Associate's degrees in software engineering are considered preparation for entry-level positions in the software engineering field. The associate's degree focuses on general education courses and courses related to software engineering. Courses on programming languages, database design, and technical communications are common. An associate's degree typically takes two years to complete, and can be used as the foundation for a bachelor's degree.

A bachelor's degree in software engineering is usually required to launch a career as a software engineer. A bachelor's degree in software engineering requires general education courses as well as courses specific to the software engineering field. Extensive education on programming languages, network systems operation, and software design and testing is common.

A bachelor's degree typically takes four to five years to complete. Many bachelor's degree programs in software engineering require internships or on-the-job training, which can take additional time.

Designed to build on the knowledge earned from the bachelor degree, master's degrees in software engineering are suitable for the recent bachelor's degree graduate or for experienced software engineers. Advanced Database Design, Software Specifications, and Advanced Computer Networks are just a few of the courses that may be required.

Master's degree programs in software engineering may also offer courses in management, which are designed to help the software engineer advance to a management level within his corporation or business. Master's degrees typically take two years to complete.

Ph.D.'s in software engineering are highly research intensive. Though programs vary by university, the student typically has a focus within the software engineering field and chooses a relevant research topic and coursework. A PhD typically takes around six years to complete.

What can you do with a University Degree in Software Engineering?

Career options for aspiring software engineers

Software Engineer. Software engineers are typically divided into two fields: computer applications software engineers and computer systems software engineers.

Computer applications software engineers analyze the needs of the company to design and maintain the right computer applications. Computer systems software engineers construct and maintain a company's computer network while planning for future technical growth.

Both computer applications and computer systems software engineers must have strong programming skills. They must be able to analyze and solve problems quickly. Software engineers must often interact with customers, making excellent verbal and written communication skills essential.

Software engineering is constantly changing, and engineers must keep up with current technology and trends. Though licensure is not required of software engineers, certification is often available through software vendors. These certifications insure that software engineers stay up-to-date on current applications.

Software engineers typically work 40-hour weeks, and they are often called upon to solve problems after hours. They spend most of their time at work in front of a computer. Without proper furniture and personal care, this can often lead to back problems, eye strain, and carpal tunnel syndrome.

Software engineers are often able to access computers in other locations from their main office, cutting down on the need to travel. Remote access to computer systems can often allow telecommuting possibilities.

A Bachelor's degree is usually required for a career in software engineering, but an entry- level position may be available to someone without an undergraduate degree. Experience in the field is important and can often be obtained through college internship programs.
Computer and Information Systems Manager. Computer and information systems managers often begin their careers as software engineers and advance to the managerial level through a combination of work experience and education. They are typically responsible for constructing their corporation's technology plan. Computer and information systems managers must oversee the planning, design, and execution of the corporation's computer related activities, insuring that budgets are adhered to and deadlines are met.

Long hours and late nights are often required of computer and information systems managers. Besides engineering experience and an undergraduate degree in software engineering, they typically possess a graduate degree in business or management.
Sales engineer. Sales engineers are usually experienced engineers that use their technical knowledge to sell products and services. Sales engineers in software engineering will usually have experience as software engineers and use that work experience to help them sell computer software, services, or other related equipment.

Sales engineers are responsible for accurately explaining and demonstrating their products. Because so many software companies rely on upgrade cycles to generate repeat business, many sales engineers develop close relationships with their clients. By allowing clients to suggest new features and by granting them sneak peeks at new software releases, sales engineers can make a significant impact on a company's success.

Positions in sales engineering are often very stressful. Many sales people work on commission instead of salary, creating intense pressure to make each sale. Long hours and travel are common.
Chief Information Officer (CIO). Chief information officers are top executives in their industry, and are responsible for the technical divisions of corporations or businesses in which they work.

Chief information officers oversee and supervise the technical staff, including software engineers and computer and information systems managers. They maintain and establish the policies and procedures of their department and ensure that the company is proceeding in the proper technical direction.

CIO's are usually given private offices and support staff to assist them with their duties. Long hours and travel are usually required, but CIO's are among the highest paid workers in America.

Education and experience are both important components for becoming a chief information officer. CIO's often begin their careers in software engineering and earn graduate degrees in management or business.
Video game designer. In recent years, video game companies have earned more from sales of software than major motion picture studios earned at the box office. This fast growing form of popular entertainment requires teams of skilled professionals to dream up escapist fantasies, then bring them to life on the small screen.

Software engineers who develop video games often specialize on one portion of the team's mammoth task. For example, one team member may spend their entire time developing game logic, while another programs backdrops and atmospheric elements. Software engineers coordinate their efforts with game writers and graphic designers to expand the boundaries of video game design. Before new video games reach store shelves, they must first pass through another team of software engineers. These quality control specialists oversee the testing of the games by sampling new titles the same way that home players would. Testing engineers note flaws or problems in game design and make suggestions for revisions to the original design team. While developing a new title, the design team and the testing team may volley dozens of revised editions between each other. The result is a finely honed piece of software that entertains and engages audiences without technical problems.
User Interface Designer. Some software engineers specialize in refining the experience that end users enjoy when using a particular program or system. In the early days of computers, technicians designed software for other technicians, and designers put little effort into usability. Since computer technicians understood computers, there was no need to streamline the process of getting information into or out of complex systems.

A few decades later, computers have permeated every facet of our daily lives. As more non-technical people rely on software to carry out everyday tasks, a new breed of software designers use graphics and input devices to create powerful, attractive user interfaces.

Today's user interface designers hope to innovate beyond the current mouse pointer and desktop by building custom interfaces for common tasks and dedicated appliances. For example, internet-connected refrigerators that alert stores to replenish groceries require specialized controls that function well in a kitchen environment. Set-top boxes that allow television viewers to record and store programs must make it easy for customers to set up complex instructions with simple remote controls.

With the widespread use of cellular phones, personal digital assistants, and tablet computers, user interface designers strive to build controls that are effortless, if not invisible. The most powerful user interfaces allow device owners to get their needs met without having to think about the complex technology behind their familiar screens.

Salary Expectations for Environmental Engineers

In 2002 the Bureau of Labor Statistics reported a median annual income for computer application software engineers of $70,900. Computer systems software engineers came in slightly higher at $74,040. Computer and information systems managers had a median annual income of $85,240.

A sales engineer's income is often commission based. In 2002, sales engineers reported a median annual income of $66, 660. This figure does not include benefits such as a company car or earned frequent flyer miles.

Chief information officers are considered top executives in their companies and firms. Though their hours may be long, their salary is the top of their field. The median annual income for a chief information officer is $126,260.

Certification and Licensure

A license is not typically required to work in software engineering, but professional certifications and certification through software vendors are available. Requirements for achieving certifications vary, but most are helpful resume additions.

The Institute of Electrical and Electronic Engineers offers the designation of Certified Software Development Professional, one of the most widely recognized professional certificates. The first step in completing this certification is passing an exam that tests general knowledge of software engineering. The exam focuses on many aspects of the software engineering field including software development, design, and maintenance. Aside from successful completion of the exam, the IEEE requires candidates to hold a bachelor's degree and have completed at least 9,000 hours of work experience in one of the IEEE's eleven recognized knowledge areas.

After fulfilling the requirements and becoming a Certified Software Development Professional, the IEEE requires that members continue their education by obtaining Professional Development Units (PDU). Every three years, 30 units must be earned. PDU's can be earned through a variety of methods including publishing, attending educational activities, and participation in a related organization.

Professional Certification is also available through the Institute for the Certification of Computing Professionals (ICCP). Requirements for certification through the ICCP are similar to the IEEE. Successful completion of an exam and at least 48 months of related experience are mandatory.

Many software vendors, such as Microsoft and Cisco, also offer training programs for computer professionals. These programs typically last between one and four weeks, though attending the program is not required for taking the exam. A certificate is awarded upon successful completion of the exam.

Though they are excellent tools for training and continuing professional development, professional certifications are no substitute for an undergraduate or graduate degree. Software engineers are usually required to hold a bachelor's degree at minimum.