Cross post from IRefactor  –

Here is a scoop; The good software engineer is lazy!
You don’t believe me? Then ask yourself this: If a good software engineer was not lazy why would he:

  • Automate processes?
  • Reuse a function instead of duplicating its code?
  • Explicitly name a function for its behavior instead of naming a function F1 and providing a non descriptive (and possibly long) documentation?

Yet, here is another scoop; The bad software engineer is lazy too!
While this statement clearly isn’t a shock to you, it immediately pop-ups the question:

What is the difference?

The difference is that a good software engineer is lazy in a constructive way (which allows to build reusable software and automated processes) while a bad software engineer is lazy in a destructive way (which destroys any chance for a reusable software and dooms you for long hours of struggling to understand and fix the bad code).

And here is a short example:
The var keyword allows implicitly typed variable declaration.
To tell the truth, it doesn’t allow to be a bad lazy software engineer! 
Why bad? Take a look at the code below:

var database = DatabaseFactory.CreateDatabase();
What is the meaning (meaning = type) of the database object in this context? Do I really need to guess that? Does somebody expect me to go to its definition to find out?

foreach(var observingStore in wareHouse.Stores)
What is the meaning of the observingStore object in this context? Was it named observingStore due to its implementation of the Observer pattern (which implements IObserver), or is it just an object name of a Store, ObserverStore or even ArgicultureStore class type?

Remember, you want to be lazy in a constructive way; You want to read those lines of code without wondering. You want to immediately grasp the meaning (types) of the objects you are dealing with, without switching the context and jumping to a different location just to refresh your memory.

The var keyword was introduced for one and one purpose only; To allow usage of anonymous types. Therefore, this is the only place you should use it! Unless you are a bad lazy software engineer (which clearly is not the case :) ) you will follow the rule!

7 Things Your Boss Doesn’t Understand About Software Development

original article here

  1. Technical debt slows down a project more than anything else
  2. Estimates are mostly bullshit
  3. It can be done right or fast
  4. Some developers can actually produce less than 0 code
  5. Better equipment is one of the cheapest productivity investments you can make
  6. New technologies are usually not as risky as you think
  7. Business analysts and project managers don’t do shit

Leave a comment to let me know what you think programmers?

Happy coding

CSS Jokes

Hi All,

I came across this at work today. Hilarious collection of css puns and jokes. All credits to the collector and inventors.

CSS Puns

Happy browsing.

Shadow Copying Assemblies .Net

What is it? Its a .Net feature. When shadow copy is enabled on an appdomain, assemblies loaded in that appdomain will be copied to a shadow copy cache directory, and will be used from there. This is great because the original file is not locked. So it can be changed at will. ASP.NET uses this extensively. Actually, shadow copy is enabled on every appdomain created by ASP.NET.

More information is here:

Catch? One should be careful when an application writes any shadow copy assemblies it should do it in its own user account’s temp directory, not Local System’s or admin.


Martin Fowler & Pramod Sadalage
Some common characteristics of NoSQL databases
1. they don’t use the relational data model, and thus don’t use the SQL language
2. they tend to be designed to run on a cluster
3. they tend to be Open Source
4. they don’t have a fixed schema, allowing you to store any data in any record

Interesting read on Martins bliki and

Framework vs Library

A library is essentially a set of functions that you can call, these days usually organized into classes. Each call does some work and returns control to the client.

A framework embodies some abstract design, with more behavior built in. In order to use it you need to insert your behavior into various places in the framework either by subclassing or by plugging in your own classes. The framework’s code then calls your code at these points.

source: Martin Fowler 

Generate msbuild file from solution

Here is a quick way to generate a start up msbuild file from your solutions file.

Launch Visual Studio Command prompt and change directory to your project directory and then type the following 2 commands.
set MSBuildEmitSolution=1
msbuild <<your project>>.sln

This file will be generated next to the solution file, it wil be named .sln.metaproj.

All thanks to original post at



Get every new post delivered to your Inbox.

Join 41 other followers