Ralph Waldo Emerson once said:
As to methods there may be a million and then some, but principles are few. The man who grasps principles can successfully select his own methods. The man who tries methods, ignoring principles, is sure to have trouble.
- Ralph Waldo Emerson (1803-1882)
I like this quote in the context of software engineering. Bryan wrote a while back about Patterners vs Customizers, and Emerson's quote is along the same lines.
As developers we have a lot of methods to write software. We can use ASP.Net, SQL Server, LINQ, MSMQ, ORM... there's a long list of things we can use to accomplish our tasks. We even have other tools to support the process: TFS, Mercurial, BaseCamp, code reviews...
What is more important is to understand the *why* behind these methods. *Why* do we do code reviews, or write unit tests, or use a source control system. It's not just to be able to check off a box. These activities are just manifestations of underlying principles that we believe to be true and good and virtuous.
If we seek to understand the principles behind these methods, we stop performing rote tasks just because we "have" to, and we can begin to apply situational judgment and understanding. If we understand things like test driven development, or SRP, or SOLID, or avoiding premature generalization, it becomes much simpler to select the correct methods that match a given situation.
Our principles should focus on providing business value at high quality. They should drive us to excellence in our designs and implementations. They should make us strive to do things right.
If we focus only on the methods, we stay focused on just checking off boxes. As software engineers, we can provide much more value than that.