Introduction.

Have you ever looked for a new job via different websites? What about a job in the IT sphere?
In the last 20 years, a lot of new terms and job titles like “programmer”, “software developer”, and “software engineer” have turned up. In most cases, they point to the same thing (especially in Russia where there isn’t a difference; a common name for them is “Engineer-Programmer” which is a calque from a foreign language). But it’s incorrect, to not make a distinction between them. And being an engineer-programmer isn’t the same as being a software engineer.

And… What is the difference?

Here is an illustration for the answer to that question:

title about se

According to the picture – SE (Software Engineering) is placed in an area which expects more practical skills from you. At the same time, it’s overlapped by Information Technology (IT), Information System (IS),Computer Engineering (CE) and of course, Computer Science (CS).

And… what should a typical software engineer know? He shouldn’t know everything, but he has to have a basic knowledge about each of them.

At the same time, a typical “engineer-programmer” is someone who is similar to computer scientist and that person has to know a lot about algorithms (sometimes about very specific ones like RB-Tree ), programming languages (how compilers work for example), math (calculus and linear algebra) and a good enough knowledge about hardware.

These specialties have an overlap, but they are different.
Engineer-programmer is responsible for ensuring performance and to make a model which will be used as a solution. He also should ponder about flexibility and readiness of model for changes in the future.

The software engineer has a mediator role; his field of responsibility is wider than the engineer-programmer’s.

To be a Software Engineer.

There is a very deep meaning in phrases like “to be someone”. To be someone formally, you should have responsibilities and duties (and rights of course).
Unfortunately, SE is a very young field. It’s a field which has inherited most of the ideas, methods, and approaches from other branches of engineering (for instance from civil and mechanical) and contains the following of duties:

  • Analysis of requirements
  • Control quality of code
  • Writing specifications
  • Verification of software
  • Code review
  • Integrate a few systems for business

But if you just conduct them, it isn’t enough to be a software engineer. But why??? So… they are just formal requirements. At the same time, you should have several key skills:

  • problem-solving
  • analytical thinking
  • accuracy and attention to detail
  • teamwork skills
  • readiness to learn modern technologies and framework

As has been mentioned before, SE is a very young field (in comparison to other branches of engineering), so there aren’t formal criteria about what you should do and shouldn’t do.

Erm… honestly, it looks like a list of skills for a description of an ideal person. At the same time, there is good news – one of these skills is really important - it the last (but not least important) - you should be ready to learn something new when it necessary. And if you have most of these skills, it can be enough to get that position in your company.

Conclusion

To be a Software Engineer is not just about applying engineer techniques for developing software. To be that person you have to accept a lot of responsibilities, always be on the edge of modern technologies and have an important set of skills. Most companies in IT now prefer to hire Software Engineers instead of Engineer-Programmers because the former can be a more universal employee.

To be a Software Engineer means to be in high demand, be part of modern society and have an ability to influence the future.