Where is the Science in Software Development?

Lots of stuff in software development has some really solid scientific foundation. Relational databases for example are based on Relational Algebra. There is Lambda Calculus and Type Theory. And at least in my personal opinion and experience these kind of things work especially well. Yet when it comes to the construction of code the whole thing does look more like ...

Read More »

Correctly Implementing Equals() in C#

It’s said that “the devil is in the details”. Well I saw some code the other day that reminded me exactly that quote. It is quite common for developers to forget about semantics. In my current project we tend to play a lot with Nhibernate and DDD and we seriously take care of our model. We take it to the ...

Read More »

Measuring Code

How good is your code? If you’re like the other 80% of above average developers, then I bet your code is pretty awesome. But are you sure? How can you tell? Or perhaps you’re working on a legacy code base – just how bad is the code? And is it getting better? Code metrics provide a way of measuring your ...

Read More »

Clean Sweep in Agile

One of the questions I got in my Agile Practitioners talk startled me. Actually, it wasn’t the question that startled me, it was how I answered. I was talking about why you cannot say “our organization is going agile” while saying: “we’ll get our developers into that agile business in a year”. I know it sounds funny, but you can’t ...

Read More »

The Lean Startup: Book Review

I’d heard about The Lean Startup for a long time before I actually read it, mainly from following the ‘Startup Lessons Learned‘ blog, but I didn’t get the book until a colleague suggested a meetup to discuss how we might apply the ideas on our projects. My general learning from the book is that we need to take the idea ...

Read More »

Unit Tests: Searching under the Lamp Post

I’m a big fan of unit tests (Surprise). When ever possible I practice TDD. I like how that approach coerces <check this> me into making smaller classes, less dependencies, cleaner abstractions. And of course I love it when my unit tests catch a regression before I even start the application. BUT I find it quite disturbing how many bugs make ...

Read More »

Re-inventing the Object

I have spent some years now working as a software architect. There were couple of rather large projects, in both Java and .NET, that I was working on. Infrastructure vs real problems The thing with software architecture is that it tries to set up some basic rules, and solve some primary problems, so that rest of the team can carry ...

Read More »

How much architecture is enough?

Software architecture is hard. Creating a simple, consistent, flexible environment in which we can solve the customer’s ever-changing problems is no easy task. Keeping it that way is harder still. Striking the right balance between all the competing demands takes real skill – so what does it take to create a good architecture? How much architecture is enough? Software Architecture ...

Read More »

10 Free, Standalone and Easy to Use UML Editors

Below is a compilation of UML drawing & editing tools which are: Free (and most of them are open source), Standalone (not installed as plug-in or add-in), Easy to download and install, No-need to registration and activation keys, Fast to start and use. Note: Last 2 editors are text based web uml tools. 1. Violet 2. Argo UML 3. DIA ...

Read More »