I have recently read and heard discussion of the two sides of the brain. The left side is more factual, concrete, and good are more of the engineering tasks. The right side is more bigger picture, capable of discovering odd patterns, and is better at creative tasks. To produce new valuable and applicable ideas you generally have to switch between the two back and forth. Digging up connections between bits of knowledge from the left and finding new connections to consider with the right. Verifying with the left and digging up more and the cycle continues.
Software development certainly combines both sides of the brain, but sometimes I read or see how people are trying to make software development into software engineering.
Comparing software development to an engineering discipline is always interesting in my mind. I know there was some movements (academic and professional) on trying to develop a software engineering discipline, but I don't think that can happen. Engineering disciplines usually have many years of grounded research and field application to prove how to do things, but we are in a world that is completely built off of arbitrary ideas that are built on other arbitrary ideas that may not always be true. There is a degree of creativity and judgement needed I think in software development that isn't as needed in the engineering disciplines I have encountered. I think this is partly because of how soft what we are shaping is, the speed of technology, the youth of our field, and the wildly differing ideas we face. I will admit I do not have experience in performing or studying any engineering discipline past a basic level.
An example of what I'm getting at that is applicable to what's happening in our field currently is that all our knowledge of object-oriented software design and practice is not directly transferable to working in a functional oriented way. Also our knowledge of relational databases won't transfer over very well to document databases. I suppose being able to apply the knowledge of a particular technology is a more engineering task but knowing when and where to use a particular technology and how to combine it with others is probably a more creative task.
This is just partly my own theory I was just thinking about. You guys have any feedback or opinion on the subject?