One thing that I think is very important in software development is having good thinking tools. By thinking tools I mean any ideas, tips, insights, philosophies, questions, "rules", approaches, etc that helps you build software. These mental tools then need to be arranged into some kind of coherent structure so that they make sense and you can reason about them.
It is very important to have this coherent structure of all your thinking tools otherwise you can end up limiting yourself unnecessarily. for instance
C++ Macros are bad!
The law of demeter!
There is a piece of wisdom behind these ideas and this wisdom has been encoded into a very digestable rule or "ethic". However the real wisdom is not well represented by this nicely packaged idea. These ideas live in eco-system of thinking tools and should be assimilated into a coherent approach about creating software. This approach needs to be constantly re-evaluated and filtered and re-interpreted. Many perspectives need to be incorporated, experience needs to be gained, mistakes need to be made.
Philosophically speaking we need to take a somewhat post modern approach to software development ideas. The ideas of deconstructionism and hermeneutics are very useful here as we look at some of the"rigid" concepts of software development and as we read various peoples thoughts on software development.
I'm not sure how my next few posts are going to work out, but I want to discuss a bunch of thinking tools I use and also hopefully articulate some of the overall concepts I have of software development.