Software Engineer

What do software engineers do?

Software engineers design and build software operating systems, middleware, business applications, computer applications, games and network control systems.

One of the biggest points of contention in the career field is the definition of a software developer to that of an engineer. While developers often hold the same responsibilities and skills to build software, not all are certified engineers. The easiest way to differentiate between an engineer and a developer is the additional academic training and professional discipline required for an engineer.

Based on skill level, engineers areas of proficiency range from design, construction, testing, debugging and configuration management and are employed in all business types be it commercial, nonprofit or government agencies.

Key Skills

  • Ability to interchange engineering principles, computer science and mathematics
  • Strong analytical skills and capability to think outside of the box
  • Ability to work collaboratively with other engineers to future software
  • Knowledge of various programming languages and databases

Engineers often approach principals from a scientific point of view opposed to creative perspective, often associated with developers. Though applying creative methods in computer science is essential for an engineer as well, it is more important that engineers adhere to strict structural foundations.

Areas of Programming

Data structures and algorithms

Data structures are the way in which computer content is organized and algorithms are a set of step-by-step operations performed. An engineer may work with them while setting up a table of contents for a computer game.

  • Video Game Developer – Using algorithms to create gameplay structure and format.
  • Sports related fields – Using algorithms to organize and analyze real-time sports statistics to create betting odds.
  • Television – Using data structures to create and enhance mobile and other platforms for streaming.


Applications are programs designed to perform a specific function either for a user or another application. Virtually every App on your mobile phone or IPad was created by a software engineer.

  • Gaming – One of the most popular uses for a mobile phone is gaming. A simple App (ie Candy Crush Saga) can completely change a company’s bottom line.
  • Fantasy Sports apps – Millions of sports fans play fantasy football and baseball and real-time statistics and scoring are a must.
  • Banking – Depositing a check, or transferring funds via mobile phone has become more and more popular thanks to advancements in security via application development.


Necessary computer languages needed are constantly evolving, however knowledge of the basics: HTML, Java, C+/C++, is a must. The more advanced the training, the more advanced the project.

  • Web Developer – This can be achieved with more minimal language training. The basics listed above would suffice.
  • Robotics – Use of LISP, Python, NXT-G and MORSE are necessary. They can be used to create and maintain Industrial Robots.
  • New Technologies – WebAp and C# would be used in the advancement of hybrid vehicle and home solar technology fields.


Platforms are designed to run within or in conjunction with another program. Every computer and mobile device in the world uses an operating system, which began as a thought until an engineer put it into reality.

  • Microsoft – A computer can’t run without an operating system (Windows, MAC OS) and hundreds of software engineers are needed to create the next versions.
  • Google – They push the limits of what people think is possible (driverless cars, drone technology) and engineers are at the forefront of that development.
  • NASA – Space exploration and research requires a variety of programs and platform running in congruence, and the engineers to make it run smoothly.

Main Responsibilities

Software engineers are accountable for many aspects of software development. While maintaining systems it is also vital they conduct research to remain on top of competition. Ultimately, in the end engineers are responsible creating all computer operating systems, software and related applications and devices.

  • Design software
  • Write computer code
  • Analyze computers and system components
  • Manage the planning, implementation and oversight of a computer system(s)

How much do software engineers make?

According to the Bureau of Labor Statistics (BLS), a software engineer’s annual median wage was recorded at approximately $93,350 in 2012, with nearly 222,600 brand new positions to be created before 2022. With computer software constantly changing, there is a projected growth of 22 percent in the computer science field over the next decade, much faster than the average for all occupations, according to the BLS.

Average Salaries, 2004-2014

  • $106,050 2014
  • $102,550 2012
  • $97,960 2010
  • $94,520 2008
  • $87,250 2006
  • $82,160 2004

Source: Bureau of Labor Statistics - OES Archives

States with the Highest Concentrations of Software Engineers

State Employment Employment per 1,000 Avg. Annual Salary
Massachusetts 48,890 8.1 $114,350
Virginia 36,840 7.21 $109,240
Maryland 37,350 5.69 $113,570
California 22,680 5.45 $124,070
Colorado 26,900 4.73 $106,170

Source: Bureau of Labor Statistics - OES Archives

Top-Paying Industries

Industry Avg. Annual Salary
Petroleum and Coal Products Manufacturing $155,210
Computer and Peripheral Equipment Manufacturing $125,140
Securities and Commodity Contracts Intermediation and Brokerage $123,500
Securities and Commodities Exchanges $123,260
Aerospace Products and Parts Manufacturing $117,740

Source: Bureau of Labor Statistics - OES Archives

Pay by Experience

Median Salary

Entry-Level 0-5 yrs $69,000
Mid-Career 5-10 yrs $86,000
Experienced 10-20 yrs $100,000
Late Career >20 yrs $112,000

Source: Bureau of Labor Statistics - OES Archives

Top Paying Cities

Avg. Annual Salary

San Jose, CA $138,410
Oakland, CA $124,220
Baltimore-Towson, MD $123,860
Los Angeles, CA $120,690
San Francisco, CA $120,400

Source: Bureau of Labor Statistics - OES Archives

How do I become a software engineer?

Becoming a software engineer requires a minimum of four years education, with many universities offering degree programs and vocational schools providing training. One must major in Computer Science and take starting courses including Design and Analysis in Algorithms, Systems Programming and Machine Organization.

After studying engineer fundamentals such as common algorithms, standard language and technical approach for a bachelor’s degree, areas of expertise often call for more education and include gaining a masters and or a certificate in Management Information Systems (MIS). Software engineers can also become licensed along with certification, enabling them to handle legal and technical documents directly related to their design and software construction.

I Have Completed My Undergraduate Degree

Decide if you want to earn a Masters in Computer Science.

  • Consider your passion and talents in Computer Science
  • Research the future of the industry, paying attention to the new platforms arising
  • Interview software engineers, asking them about their education, certifications and real-world experiences
  • Apply for club or chapter administrative role to become more familiar with the field history

Apply for part-time professional work in the field to gain experience and network with future colleagues.

  • Research and study necessary exams with the National Council of Examiners for Engineering and Surveying (NCEES) for professional engineer certifications
  • Take respective tests Fundamentals of Engineering (FE); Principles of Practice of Engineering (PE); Structural Engineering (S.E.)

After attaining a graduate degree, begin a thorough nationwide job search.

  • Hire a recruiter to help you find the best job for your skill level and future desires
  • Have your resume revamped to reflect all of your experience and future career aspirations
  • Research companies’ history and missions and if they are a fit and consider applying and/or relocating to the best region offering career growth

I’m Currently an Undergraduate

Speak with career counselor on all computer programming curriculum needs.

  • Develop a strong relationship with your advisor who will help you achieve all necessary courses and requirements for graduation
  • Ask about any clubs, chapters or computer science clubs and become a member

Seek out internships whether paid or unpaid for infield experience.

  • Find an internship where you can both learn and possibly become employed
  • If possible perform a short-term internship in another region for experience and networking

Offer free tutoring services.

  • Advertise in campus common areas of your free services
  • Ask counselor how your gratis services can translate into credits if possible
  • Ask tutored students to write letters of recommendation

Write code.

  • Start with the simplest code and slowly build skill level
  • Offer free coding services to friends and businesses build up your resume

Career Advancement

With technology constantly changing and the Bureau of Labor and Statistics predicting a 22% growth rate by 2022, there is much expansion in the engineering field. While education and internships are essential to attain a software engineer career, in-field experience at reputable agencies performing complex projects can also help one advance in this Computer Science field.

Programming Resources