Test Failures Are Critical Bugs
In a mature software project, tests are what enable risk-free, rapid development. They are the only thing that truly enables Continuous Integration and Continuous Delivery for software that is deployed directly to end users. In order to keep delivering, those tests must be kept pristine, and any failure represents a critical flaw which must be immediately addressed. Every test failure that happens outside of new feature development on a developer’s box, must result in a Bug Ticket. No exceptions!
If you’re familiar with software design patterns, you’ve probably encountered Factory Methods, Factory Classes, Abstract Factories and other creational patterns that are used to encapsulate details of the construction of a polymorphic object. All of these patterns are great, and solve very specific problems, but one of the flaws is that they always add indirection between you and the object that you actually want to use. I would like to introduce you to Factory Objects, which eliminates indirection completely.
Supersonic Project Velocity!
Many companies find that general project velocity isn’t anywhere near what they want it to be. After having successfully managed a number of projects, I often find myself shocked by the vast contrast between how fast projects could be delivered and how long they generally take in the software development world. Recently, I led a 7-day highly-ambitious software project in which both the quantity and quality of work delivered blew away all my expectations. This is what empowered such incredible productivity.
Static Dependency Access
There has always been a lot of controversy over the right ways to access dependencies. Should they be injected? Located? Directly referenced? Magically resolved? Inverted? Context objects? Everyone tends to speak very dogmatically about how they think you should or shouldn’t access your dependencies. Statically accessing your dependencies is a very powerful technique. You should absolutely use it, but you must avoid its many perils.