How do you define yourself as a software engineer? Before going to that, first thing first, what is software engineering. According to Wikipedia, software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches. Sound nice? But this isn't the way in real wolrd.
I mean in the real practices, the software has to be build on time regardless of what approaches is chosen. No such definition from the above statement. Programming is a must. Knowing C++ and do not know JAVA is still useless because the position (software engineer) require the candidates to know JAVA besides C++.
To conclude that, a software engineer must know how to "code" instead of know how to build up the software and he/she must work indepently (because company got no money to feed the employee). Usually we called this as one man team. They are more concern on your programming langauge rather than your software development approach. They need a programmer more than a software engineer. In other words, they need a software engineer with programmer pay. Hope this make sense to everyone.
One man team approach is very poor because the software is very fragile as the software is poor "design". Design is refering to software design, not the tips and tricks in programming design or fancy UI design. A very good example is one line code statement. This happens very frequent from my pass experience. (I also been doing that before, hehe...) Anyhow they are still developer out there feel proud of their work because they have the ability in developing a "program". Developing a system, one man team approach should never happen, unless time permit (>5 years).
Usually we will use UML in designning the software since UML already a well known to everyone and is become a standard approach for everyone. It is not limited to use your own custom modelling or diagram to represent your software design. This creative approach should be adopt for every one, and encourage one's motivation in building the software.
Sometimes the way of writting code is programmer attitude. One way to eliminate this "programmer attitude" approach is by conducting a "code review" session. This session will normally held during the software development for those "big company". Software house usually don't because lack of money to do such wasting money activity. This session will neutralize ones attitude to adopt a new approach which everyone agreed.