What Does it Mean to Study Software Engineering?
According to the U.S. Bureau of Labor Statistics (BLS), 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. They might work to modify existing software applications or creating new ones from scratch. The duties of a software engineer may also include setting up and maintaining computer networks.
The ability to program is, of course, the primary requirement. Software engineers must analyze and solve computer application problems. And though IT majors and professionals are stereotyped as inept social actors, it is actually very important for software engineers to possess good written and verbal communication skills. Most of their work will involve teammates with a variety of backgrounds, from fellow programmers to technical writers, marketers and project managers.
Employers usually require entry-level software engineers to possess bachelor's degrees, but an associate degree combined with work experience may sometimes be sufficient for a startup or a rapidly expanding company. Experience and continued education can help a software engineer to advance to a management or executive position.
Because technology changes quickly, it is essential for software engineers to remain current in their field. Graduate degrees are looked upon favorably (especially for management positions), though not required. Many software vendors, such as Microsoft, Java, and Cisco, offer certification programs to assist software engineers in their professional development.Not surprisingly, nearly all of these engineering degrees are available from online colleges and universities, as software and Web development become more tightly integrated.
Successful Software Engineering Majors Have:
During their college degree programs, software engineering majors should 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. Many 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 tastes of professional acclaim while still attending classes.
Any strong software engineering degree program will teach students to think critically about the problems facing companies and consumers. By developing efficient solutions to common problems, software engineers continue our culture's constant innovation.
Software engineering majors don't just solve problems in front of computer monitors, however. Many colleges and universities offer 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.
Many software engineering programs encourage students to participate in collaborative projects. Whether part of inter-campus competitions or 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.
Software engineers 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 public 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 orally present suggestions or research findings to various groups within their organizations. Software engineering majors develop the ability to blend presentation tools with classic storytelling skills in order to engage their audiences.
Software engineering majors must be ready to debate other team members about the inclusion of features into a software project, or justify 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 1980s and early 1990s revolutionized the roles of software engineers. Instead of working completely behind the scenes like their predecessors, software engineers have begun to play a significant role in the financial stability of their companies. Because of this, many software engineering programs are requiring their students to take basic courses in accounting, business and time management.
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.
Types of Software Engineering Degrees
Software engineering degrees are available at all levels, from undergraduate certificates to doctorates. Most careers in software engineering require at least a bachelor's degree. However, with extensive experience, a certification or associate degree may be sufficient. Online degree programs in software engineering are available at nearly every level.
Certificates in Software Engineering
An undergraduate certificate program in software engineering usually consists of four to five basic software engineering courses, such as Principles and Techniques of Software Engineering, Design and Development, and Software Safety.
Associate Degrees in Software Engineering
Associate degree programs in software engineering generally focus on general education courses and courses related to software engineering. Courses on programming languages, database design, and technical communications are common. An associate degree typically takes two years to complete, and can be used as the foundation for a bachelor's degree.
Bachelor's Degrees in Software Engineering
A bachelor's degree in software engineering is usually required to launch a career as a software engineer. It includes general education courses as well as those 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. Online bachelor's degrees in software engineering are available for working professionals or students who simply need increased flexibility in their studies.
What Can You Do With a Degree in Software Engineering?
Software engineering majors don't just become software engineers (though many do). Here are a few of the different career paths available.
Software engineers are typically divided into two fields: computer applications software engineers and computer systems software engineers. Computer applications software engineers design and maintain computer applications (such as Microsoft Office or Adobe Photoshop) to meet specific needs. Meanwhile, computer systems software engineers construct and maintain a company's total computer network, while planning for future technical growth.
Both applications and systems engineers must have strong programming skills. They must be able to analyze and solve problems quickly. Software engineers must often interact with clients, making excellent verbal and written communication skills essential.
Most entry-level software engineering jobs require a bachelor's degree, although some exceptions may be made for very experienced engineers.
Computer and Information Systems Managers
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 companies' technology plans. Computer and information systems managers must oversee the planning, design, and execution of all 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. In addition to engineering experience and an undergraduate degree in software engineering, they often possess graduate degrees in business or management.
Sales engineers use their technical knowledge to sell products and services. Software sales engineers usually get straight engineering experience first, and use that knowledge 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.
Jobs in sales engineering are often very demanding. Many sales people work on commission instead of salary, creating intense pressure to make each sale. Long hours and travel are common.
Chief Technology Officer (CTO)
Chief Technology Officers (CTO) are executives in their industry, responsible for the technical divisions of corporations or businesses in which they work.
Chief technology officers oversee and supervise the technical staff, including software engineers and computer and information systems managers. They set and establish the policies and procedures of their department and ensure that the company is proceeding in the proper technical direction. CTOs are usually given private offices and support staff to assist them with their duties. Long hours and travel are usually required, but CTOs are among the highest paid workers in America.
Education and experience are both important components for becoming a chief information officer. CTOs often begin their careers in software engineering and earn graduate degrees in management or business.
Video Game Designer
Video game developers often specialize in one portion of the overall video game team's mammoth task. For example, one team member may spend his 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 the medium. 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 title, the design team and the testing team may volley dozens of revised editions between each other.
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 uses graphics and input devices to create intuitive, 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 you 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 mobile 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.
Software Engineering 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. In addition to 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 11 recognized knowledge areas.
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 four years 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 may not be required for taking the exam. Though these programs and certificates can be excellent tools for training and continuing professional development, professional certifications are not a substitute for an undergraduate or graduate degree. Software engineers are usually required to hold a bachelor's degree at minimum.
Other Associations and Certification Bodies:
- Association for Information Systems
- Association for Systems Management
- Center for Advanced Computing Research
- Computer Society, IEEE
- International Association for Computer Information Systems
- Information Technology Association of America
- National Academy of Engineering
- Society of Women Engineers