Whenever we get confused, we must be able to see where we are going in order to know what action to take. We must know what we are trying to achieve.
We are software engineers. Why? What is software engineering for? What do software engineers do? We get some curious answers to this question. One chap said,
They follow the procedures of the Software Engineering Standards!' Another said,They transliterate a requirement!'
Oh dear. We suggest that software engineers ensure the programs their customers need are running on their computers. That means our programs must do the right things. They must be robust. Sometimes we must know for certain that they are robust, and sometimes we will need to be able to prove it. We'd always like to be able to do all those things! The necessary programs must be running tomorrow as well, which usually means that our programs today must be maintainable. We must do our work cost-effectively, or we won't get the chance to write the programs in the first place. Our delivery must be timely.
We use all our inventiveness and the experience contained within our discipline to attain these goals. All our methodologies, standards, tools, languages are intended to assist us in attaining these goals.
We do nothing for the sake of it.