Why a Career As a Software Engineer is Not Sound

I believe the value (or pay) of a person in the market is defined by the following factors:
1) innate qualities
2) knowledge & experience
3) people skills & network

Innate qualities are born with, including appearance, intelligence, personality, etc. And educational background, academic performance, etc, are closely related with one’s innate qualities. But since it’s almost impossible to improve this aspect, it’s useless to say too much about it.

Knowledge & experience, people skills & network are the two aspects that differentiates people’s value (pay). However, a career in IT excels in neither fields on the long term.

The following are my reasons. Now and then, I will refer to the three factors mentioned above.

1 IT is a fast-changing industry by its nature, so in most domains of technology, knowledge is hard to accumulate steadily. A 20-year software engineer is likely the same as a 10-year software engineer in terms of knowledge (but inferior in terms of energy level).

1.1 Some might argue that a good software accumulates a set of knowledge (such as desgin patterns, algorithms, debugging experience) that survives the fast-changing industry, but the fact is that these account only for a very small portion of knowledge required for real projects.

1.2 Also, some might argue that there are domains of technology that changes slower, such as system-level programming (compiler, OS). This is true, and one might be lucky enough to accumulate a huge amount of expertise. But the risk of such a career is still high. Since one is very deep into one technology, once the technology is out-of-date the penalty is severe. This is the nature of technology, it will be out-of-date sooner than many other things such as people skills & network.

1.3 Well, going deep in one technology is risky, then what about going wide in many technologies as a generalist engineer? But rarely are there any projects need such kind of people instead of experts of each individual domain of technology.

2 In addition to the fast-changing nature of the IT industry, limited personal influence also contributes to the low ceiling of the career. A good engineer cannot directly make other people on the team better software engineers, while a good manager can directly make the whole team, divsion, or even the company succeed. With many other careers such as sales, surgeons, traders, the vital difference is that sales, surgeons, traders play a greater role as an individual, while a software project requires a team of 30 to 3000 people.

2.1 Moreover, sales, surgeons, traders also deal with people, that makes them potential people managers in future, while software engineers deal with technology which hardly leads them to people management roles. In fact, most senior managers in IT are not previous software engineers. The point is that software engineers accumulate little in terms of people skills & network.

3 The IT industry is also infamous for its locations. Since the nature of the career requires little interaction with customers, software engineers often have to work in remote locations with lower rent or undeveloped districts with lower pay. The suburban sci-tech parks in China and the outsourcing trend in the U.S. are respective evidence of such claim.

4 Software engineers are not very much respected. The reason could be comprehensive. I personally believe that it is closely related with the low pay growth.

Software Engineering Programs in IT

If you are interested in a career in either the information technology sector or the software industry, a software engineering program from a programming school or a software engineering school is the first step towards achieving this. This program will include the practical and theoretical aspects of engineering and computer science. It will also help you acquire good communication skills and proficiency in engineering design which is an integral aspect of software systems and software development.

Some of the things you will learn in a programming school include the role software plays in real world applications and physical systems. The basics learnt in the first year of the software engineer programs include programming, basic science, communications skills and engineering design.

During the second year and the third year of this program, the courses you will take will include computer science and engineering. The last year of this program focuses on the practical aspects. At this stage, students in the engineering school are expected to complete a project that is based on all the skills and knowledge that they have gained throughout the program. The legal, professional and social aspects of software engineering are also covered at the programming school during the last year.

To get into a programming school, you have to be a high school graduate. If you want to take a software engineering program, you will have to take English, Math, Science, Chemistry, Physics and Social sciences in high school.

The information technology industry is one of the fastest growing sectors in the world and it employs millions of people each year. A software engineering school program will give you a great chance to work in one of the highest paying industry that has predictable growth rates, flexible working hours and an environment that encourages creativity.

The Software Engineer Today

Who is the programmer today?

If we ask somebody in the street “Who is the programmer?”, what does he or she answer? I believe something like “A person who sits behind the computer and creates program code” or “A person who programs actually! What a stupid question?”. Not everyone exactly understand that successful software development requires many different activities besides code construction. The approach that includes all such activities is called Software Engineering. Let’s see the important stages, that all together form software engineering.

1) Requirements.When a project starts, we have to elicit requirements for it, thoroughly handle them and create the document that is known as Software Requirements Specification. Requirement specialists start collecting requirements in the very beginning of the project and update them until the projects is ended to keep them relevant and correct mistakes that occurred during the implementation. Software Requirements Specification is a result of this process. The document contains information obtained from users, technical standards, and business rules and other.

2) Design. The other important activity is design. It includes overall planning of the project, building models and prototypes. Software Engineering standards distinguish two separate activities within the design stage: software architectural design and software detailed design. The first one is planning of the whole system, when the second one is more thorough planning of its components.

3) Construction. The next activity is actually code construction. Most people consider this thing as programming. Engineers create program code using different programming languages and software construction tools that dramatically improve the speed of the process.

4) Testing. When the code is created software engineers must test them. Testing is an activity of product quality assessment and improvement. This stage is often performed by a separate team of testers. It also can be outsourced, because external testers can check the quality impartially.

5) Maintenance. Even when all implementation activities are completed, the work on the project is not. The maintenance stage starts then. It is necessary to provide cost-effective support to software. However, even now we are talking about only post-delivery stage, which includes such things as software modifications and user trainings. However, there is another one known as pre-delivery maintenance, which includes planning of actions for post-delivery stage.

Now I think that even if you are not closely connected to programming, you know the main activities it includes, and I am sure that you realize that the programmer must do much more than only code construction.

Software Engineering Higher Education Options

Gaining an education in software engineering can be done by enrolling in an accredited school or college. Students who wish to enter the field of computer education can do so by obtaining a degree. Higher education allows students to complete the degree program needed to gain the skills and knowledge needed to enter into a career. Students can train for an associate’s, bachelors, masters, and doctorates level degree. There are numerous things that one should know before enrolling in an accredited software engineering program.

  1. Software engineers are trained to carry out a variety of tasks including modifying, implementing, testing, and designing computers and computer related software. This includes business applications, computer games, operating systems, and much more. The field of software engineering allows students to work as applications engineers, systems engineers, and other professionals. Applications engineers are construct and maintain general applications for businesses and organizations. Systems engineers are trained to coordinate the maintenance and construction of computer systems.
  2. Students will be able to pursue a number of careers with an accredited degree. The ability to train to become computer programmers, systems and applications engineers, and more is available. The type of career will depend on the level of degree obtained. Students can earn an associates degree in as little as two years. A bachelor’s degree program will take around four years to complete. Students who wish to pursue a masters or doctorates degree can expect to spend an additional two to four years on study.
  3. Coursework will vary by school or college and level of degree desired and obtained by each student. Students can expect to study a variety of course subjects related to the field of computer engineering. Curriculum may cover subjects such as programming, program development, troubleshooting, computer networks, information technology, and much more. Accredited educational training programs allow students to receive a higher education by teaching a number of courses related to each individual’s desired career.
  4. With a number of computer engineering specialists and professionals in the workforce students need to gain all the skills and knowledge possible in order to find employment. The number of openings is expected to increase for occupations and careers in this field. The type of career and degree desired will also help decide how much income the students can make. According to the Bureau of labor Statistics professionals in this field can make between $50,000 and $135,000 annually based on their level of degree and experience.
  5. Continuing education courses are available for those looking to improve their skills in their career. Accredited higher education programs allow students to earn certificates in specific areas of the field in order to enhance knowledge.

Students can gain the training they need to succeed by enrolling in an accredited school or college. Agencies like the Accreditation Board for Engineering and Technology ( www.abet.org ) is approved to fully accredit programs that meet certain criteria. With an accredited training program students will gain the education they deserve. Students can research programs and start the path to a new career by requesting more information.

DISCLAIMER: Above is a GENERIC OUTLINE and may or may not depict precise methods, courses and/or focuses related to ANY ONE specific school(s) that may or may not be advertised at PETAP.org.

Copyright 2010 – All rights reserved by PETAP.org.