Learning a new programming language with Code Koans

For an experienced programmer, learning a new programming language can often be a frustrating experience. Most of tutorials are written with burgeoning programmer in mind while the reference documentation is generally too large to be useful while learning the basics. One very useful form of coding exercises that teaches different language features like syntax and […]

Refactoring in C# book source code now on Github

I just pushed source code accompanying my Refactoring in C# book to Github. Clone it here.

Parameterized tests in JUnit

Parameterized tests in JUnit can be very useful when writing tests based on tabular data. These type of tests can save you from writing a lot of duplicate or boilerplate code. While there is a fair amount of articles on the subject on the Internet, I wasn’t able to find a code sample that you […]

Grails as a DDD Platform

Grails is par-excellence platform for implementing applications in Domain Driven Design style . At the center of Grails approach are Domain Classes that drive the whole development process. As you are probably guessing, the choice of word domain in Grails is not just a coincidence. You start by defining your Domain Classes and then you can use […]

“Programming Through Configuration”: a Bitter Cure for a Broken Deployment Pipeline

I was curious when our client asked us to put our web flow definition files into the database. We used these files to define a basic navigation flows in our web application. To put it simply, our homemade framework was conceptually very similar to a Spring Web Flow. Such flow definition is a first class […]

Requirements are Perishable Goods

Imagine the loss that is generated when projects are frozen, canceled or unused in production! How much profit and growth would a company achieve if all software they produce would to generate transactions in the production! The whole process simply reeks of waste. By insisting on initial requirements, not only are they making the life more difficult for the client, they are shooting their own foot. If these requirements do not result in software used in production by final client (not just deployed so that project can be marked as finished), they are losing money they could earn from charging transactions. By prioritizing requirements based on how late they are, they are making it more probable that these will come to production too late. Talk about waterfall double whammy!

The truth about CMMI certification: It does not exist!

one can not but wonder how come that some agile circles were not able to avoid the certification trap, when even some of the organizations that inspired the whole movement, were smarter than that?

It’s NOT OK to cut corners, but it’s OK to cut features.

It’s NOT OK to cut corners, but it’s OK to cut features.
I guess that sums a great deal that agile development is all about!

SOLID design principles explained

Take a look at this post at lostechies.com. Good one

Telerik announces (yet another) .NET refactoring tool

Refactoring support in Visual Studio 2010 lags miles behind refactoring support in in free tools like Eclipse or Netbeans.