February 2011 Blog Posts

Valid alternatives to the strongly-typed Static resource class 2/2

Here follow 3 alternatives to the static strong typed class automatically generated by Visual Studio (2005, 2008, 2010) to get access to the resources (in .resx files) . All are great examples of how to exploit the technology to improve the design of the application instead of writing fragile rigid code highly coupled with a specific technology solution. One alternative is to create an instance class that wrap the static class, it will contain a property get for every resource expesed by the static class. Basically instance class methods are a 1:1 mapping of the static class ones. The instance class...

Make your unit tests easier to read & resilient to changes

This presentation Sustainable Test-Driven Development discuss and show how to make : unit test code easier to read failing test messages easier to understand unit test code more resilient to changes in application implementation details Writing your own DSL to create tests data builders helps for point (1):  indeed it make test setup code more short and easier to read. Also the DSL separate the definition of what test data is created (the setup code of the tests do this) from the implementation details...

Valid alternatives to the strongly-typed Static resource class

Starting from  Visual Studio 2005, it is possible to automatically generate code to get access to resources (in .resx files) by a static strong typed class. As soon as you try to write a unit test of the class that access the resources via the static class or  you change the way resources are stored and retrieved (i.e. you move them to the db or you switch to a 3rd party library for the localization) you start to feel all the pain due to the static classes: indeed the code that use that static class violate the OCP and the DIP principles...

On software systems evolution

To the degree that a software system is large and distributed enough that there is no effective single point of control, we must expect evolutionary forces. ... There is much to be gained by recognizing and accepting that computational systems resemble naturally evolving systems much more closely than they resemble engineered artifacts such as bridges or buildings. Specifically, the strategies that we adopt to understand, control, interact with, and influence the design of computational systems will be different once we understand them as ongoing evolutionary processes. -- D. H. Ackley et al. 2002 Here an example on how TDD practices can be evolutionary forces that...

Leadership styles (for sw development)

Let's take a look at different styles of leadership at work. And how they work. And what are the different outcomes for each different style.  This video is quite interesting and pretty practical. One style of leadership is leading the team to "play by the book", or you can say by following the plan. No interpretation, only execution.  An opposite style is not to give detailed instructions, don't ask to play by the book, instead push the team to listen and adapt: let team members listening to each other and to the ongoing project, and the leader is there to correct...

Characteristics of Agile and Traditional Organizations

From InfoQ an interesting article about characteristics of Agile organizations. Now a list of characteristics for teams, management styles and organizations, to you the decision of which one belong to a traditional organization an which to an agile organization:   A ...