The acts of exploring and discovering which start from simple doubts —kind of ‘I am not entirely sure about...’ thoughts— is what makes software design and computer programming so exhilarating for me. Doubts from the efficiency or balance of a given design decision to the net and long-term benefits of traditional beliefs about the software development process in a business context.
Based on the results so far from my personal research program on the subject of the act of computer programming, I have corroborated that this activity can be reduced —regarding its essence— to a pure act of design. Hence, further improvement or advancement of the software development profession goes on the road of improving the design skills of practitioners.
Software designers on the road to seasoned software professionals will need education about art —please note that here education is used in its widest sense and not just the popular notion of schooling— and about methodologies of intellectual work in language, literature, history and philosophy. Of course, as is the case for the good education, it is self-inflicted. That is to say, training can be given but education can only be chosen.
Among the set of dexterities in a software designer, the ability to think critically stands as a very important one. The exercise of the critical sense —in contrast with the common sense— has proved very beneficial for the design task and directly related to the quality attributes of its outcome, namely, working software that delivers actual business value.