Software engineers are trained through a variety of paths, the most direct being a four year university with majors ranging from Software Engineering, Computer Programming, and Systems Engineering. Getting a degree in software engineering generally requires a strong set of math skills. Most universities will pair a large curriculum of math with classes in various different types of computer programming languages and concepts. It should be noted that undergraduate courses are generally not on the cutting edge of the most current principles being practiced in business, rather focusing on core skills or “bleeding” edge technology.
Professional schools can provide a much faster route to a career in software engineering, but require a basic set of logic skills to start. Programs can range from one week to six months and target current business practices, making people coming out of said programs desirable to corporations. Most professional schools will provide assistance in placement after the courses.
Some happen into software engineering from different careers, where their company has decided to train personnel because of unique business knowledge or the aptitude to become an engineer. Backgrounds tend to vary greatly in the profession.
Companies may judge potential engineers on a series of professional certifications based on a particular language or skill set. There are professional certifications for developing in Microsoft’s C++, Visual Basic, C#, and FoxPro, as well as Sun’s Java, and new languages like Adobe’s Flex.
What does a Software Engineer do?
A software engineer is responsible for the design, development, testing and maintenance of computer applications, which can range from a simple dynamic website to a large banking transaction processing system or applications that run on phones or televisions. Software applications permeate almost all aspects of production and services in the current economy. The development process creates a different set of positions associated with software engineering, the most prestigious of which is the software architect.
The software architect is responsible not only for designing the different pieces that make up an application from a high level, he/she is also responsible for multiple applications within a company or between companies working together, responsible for the health of all applications that a company owns or runs. While a software application is being designed, an architect is responsible for creating high level engineering specs that can have units of work broken down and distributed to different groups of developers, software engineers that actually write the code.
The developers will usually spend half of their time writing software code in whatever language the architect has decided is strategically sound, languages like C#, C++, Visual Basic, Java, Flex, Cobol, etc. The other half of the time will be dedicated to writing and performing “unit test”, test that verify the integrity and performance of the code the developer has written.
Developers usually write small sections of code that have to be grouped together to create the larger application. When those smaller pieces are combined together, the quality assurance testers will perform test that verify the entire application is functioning correctly. Quality assurance testing can be a gateway position for aspiring software engineers to move into development and architectural positions.
Recently two other classifications of positions have been created, the configuration engineer and the integration engineer. The configuration engineer will specialize in one framework or application and sets configuration parameters in an administration console to create a business process within the framework or application. Examples of this would include Siebel or JD Edwards engineers.
Integration engineers have become popular recently as applications are now able to use other applications over the web to perform a function instead of a developer writing the code from scratch. The integration engineer must take their application and tie it together to other disparate applications in much the same way a user would use Google to search or Flickr to store photos. Applications like Salesforce.com and almost all banking and finance institutions can exchange both data and perform business functions over the web.
How Much Do Software Engineers Make?
The salary for a software engineer can vary widely based on the position, an architect will make more than a QA Tester, and region. The salary can also depend on a workers status, does the software engineer work for the company or for a consulting firm. Working for a company will normally result in a salaried position and may require long hours, but usually provide excellent benefits, sometimes far exceeding what other positions would get such as revenue sharing and access to on site spa and utility services and on site sports facilities. Consultants can make a substantial amount more than a standard engineer, but usually have no benefits, lots of travel and little in the way of job security.
What Skills or Qualities Do I Need to Become a Software Engineer?
The most important skill for a software engineer to have is the ability to understand procedural logic and complex systems. Part of the position is to be able to diagnose issues and be able to fix them, so part of software engineering is detective work, which is often involved and can take long periods of time to determine a cause to and fix. Because it may take some time to diagnose and fix issues, being able to handle frustration and stress is extremely important. Since most applications are developed on a time-sensitive schedule, the ability to work long hours at a time for long stretches can lead to a longer professional career. Being able to communicate well and maintain a professional attitude is also desirable.
What are Some Leading Organizations in this Field?
Microsoft is regarded as the most influential company involved with software engineering. They provide the operating system that most applications are written on and for as well as the most common development languages and environments. Visual C++ and Visual Basic were Microsoft’s staples in the past, now they are trumpeting their new set of languages called .Net, which includes C# and Visual Basic.Net, a substantial departure from previous versions of Visual Basic. Sun and IBM are two of the leading competitors. Both provide large business solutions using Unix, Linux or CICS as underlying operating systems and Perl, PHP, Ruby, Java, Cobol, or C++ as languages to create applications.
There is a large movement called OSS or Open Source Software that provides free software or frameworks that software engineers can use or develop on top of to create their applications. The three most popular open source applications are: the Apache Web Server, which runs a majority of the websites on the web; Firefox, a competitor to Microsoft’s Internet Explorer; and Linux, an open source operating system written by Linus Torvald that is a direct competitor to Microsoft’s operating systems and run a substantial amount of applications. Each of these applications was written and is supported by groups of software engineers that sometimes work for free just for the common goal of creating the best product or framework possible.
There are also large organizations that are responsible for standardizing different communication mechanism and formats between different entities. An example would be the W3C which controls the HTML format, the language that is used to develop most websites. Without that standardization it would be difficult for engineers to create websites that run on everyone’s computers.
What are the Top Cities for Software Engineers
While it’s still recovering for the “dot bombs” of the late nineties and early 2000’s, San Francisco and Silicon Valley are still hot beds of software engineering positions due to the large amount of IT companies in the area and the large amount of technical startups that are created. Since software engineering permeates almost all aspects of corporations, the cities with larger corporate environments, like New York, Chicago and Dallas, all have a large market for software engineers. That said, most developed cities should have at any time a fair to moderate market.