Even though Software engineering is officially recognized as an engineering discipline; many people who hold a more conventional understanding of the term are still not very convinced.
“Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.” 
Software as an entity itself is barely a few decades old and very soon it was realized that it was in dire need of refined and standardized processes. The lack of the aforementioned attributes resulted in highly unreliable and hard to maintain products. This resulted in a conscious drive towards engineering. Even till now, it may not be called a completely mature engineering process but each day it moves towards that target; sometimes in inches and sometimes in leaps and bounds. It needs time to evolve into its full potential.
There is a common misconception where people mistake software development to be the same as software engineering. In fact, software development is just a part of software engineering and perhaps to a lot of my dear colleagues’ dismay; not the most critical one either.
It is almost the same as saying that putting the bricks together to form a wall is the most critical part of structural engineering, which it evidently isn’t.
However, since it is still maturing, there are still a lot of areas that are at times taken over by software developers (or programmers) which in fact must be clearly specified by the software engineers (e.g. software designers / software architects).
“The establishment and use of sound engineering principles in order to economically obtain software that is reliable and works efficiently on real machines.” 
What makes it most difficult for software engineers is the fact that the output of their labor is not something you can touch or feel. Instead of appreciating the complexity of the beast that software can commonly be; a lot of people undermine it just because of its very non-physical nature.
I’ll conclude with an interesting example I read once (though I cannot recall the source so as to quote the due reference). The purpose is to spread an understanding of the magnitude of the challenges that software engineers face today.
Software engineering is akin to constructing the structure of a 15-storey building only to have the customer come to site for inspection and say the following,
“It looks pretty good, but I’d like you to make the following changes:
- Throw in an Olympic standard swimming pool in the fifth floor.
- Add an extra floor, between the sixth and the seventh floors.
- Last but not least – move the building four meters to the left.
I’ll come over to review the modifications tomorrow evening. Cheers!”
 IEEE Standard Glossary of Software Engineering Terminology,” IEEE std 610.12-1990, 1990