Skip to main content

Posts

Showing posts from November, 2014

Ratcheting

Some tasks in software development are mundane such as formatting and code conventions. Where possible tooling should take away some of this pain, however sometimes you need a developer to take on a task that requires a great deal of time and/or effort to complete. Tooling will only get you so far. An example of this would be declaring that all projects build and compile with zero warnings. I've tried this in the past after a team retrospective. We had hundreds of errors per project, covering about fifteen projects at the time. Spending several weeks of development time resolving these would not have be fun nor financially viable. However we really wanted to implement this changeSolutionI wrote a single test which would execute as part of the build process that asserted the count of the errors per project.Every now and then whenever I had some slack time (10 mins before a meeting, 30 mins at the end of the day etc...) I would open up a project and fix some errors. Then run the tes…

Dependency Injection (DI) Containers

StrengthsOne place for configurationRather than scattered through out the system. Most DI containers have some sort of "module" system where you group associated components together.ScopingDifferent types of lifestyle can be achieved. Per request, per thread, singleton and others. Usually other frameworks have the ability to plug into these containers, meaning such features integrate nicely.Feature richIncluded along with the basic DI components is usually a large amount of additional features which may or may not be needed.WeaknessesHeavyweightUsually in the form of frameworks or libraries. DI is a simple concept, but such containers can make getting to grips with it tremendously difficult.ConfigConfiguration can be difficult. Rather than just applying DI you need to learn the tooling. XML configuration has widely fell out of favour, but even code based configurations can be costly to setup.Runtime errorsAny errors that might have occurred at compile time (in a static langu…