Galin Iliev's blog

Software Architecture & Development

How to motivate developers to grow?!

I've read on people blogs these days post on "Being a better developer" and I have some thoughts...

There are tons of books about Motivation but, again, in our industry is a bit fuzzy (probably because it is relatively new). How to motivate developers?! Benefits from having motivated people on board is obvious:

  • higher productivity
  • lower educational costs
  • better quality
  • broader range of expertise and so on

OK! Senior people obviously managed somehow to get senoir and therefore they have some motviation... What we can do to motivate people? We can list some some common benefits that could work:

  • pay rise
  • better (or any :) ) spot on car park
  • better machine
  • better work place

But not everybody is attracted by these stuff. There are some people that thing it is not possible to earn them so they do not even try... Hey don't think like that! You cannot have only senior and highly motivated people in the company! And for sure you cannot let someone leave because of this!!!

(As Scott Hanselman says: Don't worry, we can talk about them, because, since they are unmotivated, they aren't reading blogs.)

Good leader should be able to manage this situation. Scott Hanselman in his Computer Zen blog post great way to show the way to these people - so read how to Sharpen the Saw for Developers


Ultimate C# Tutorial

Unified C# 3.0 Specification Now Available. In this document (above 500 printed pages) you can find every C# feature and some examples. It can be called also "Ultimate C# Tutorial".

This document combines the 1.1 version of the spec, the 2.0 version, and various other bits and pieces into one large document some 500 pages in length. Here you will find the definitive technical description of the C# language in the words of the engineers who created it.  It is the single most authoritative reference for the C# language. Though not called out by name in this document, many of the people who created the C# language contributed to it, and they are its primary authors.

(via Charlie Calvert's Community Blog )

Update: If you are non-Bulgarian speaker or you do not want to read my LINQ Tutorial and you want quickly to ramp up with C# 3.0 (without reading 519 pages) you can find read C# 3.0 specifications (30 pages) by Anders Hejlsberg
(thanks to Matthieu Mezil)

LINQ Tutorial is DONE!

I am proud to announce that the Tutorial for C# 3.0 and LINQ in Bulgarian is done. There is no more links to StayTuned page (at least it is not supposed to).

I hope my bulgarian colleagues will find it interesting and useful.

And the cherry of the cake - I included PDF file for download - you can find the link on the bottom of left menu on the tutorial.

Hope it helps!!!

LINQPad and Think in LINQ

I've just found that Joe Albahari, co-author of the forthcoming C# 3.0 in a Nutshell, has released the Beta 2 version of his beta LINQPad - it is like Notepad for LINQ :)

There is also a challenge:

  1. Locate the shortcut for SQL Management Studio on your Start Menu and move it some place else.
  2. In its place, insert a shortcut to LINQPad.
  3. For the next week, perform all your ad-hoc SQL queries using only LINQPad.

At the end of the week, you will actually think in LINQ, rather than thinking in SQL and translating to LINQ. (LINQPad also allows old-fashioned SQL queries for tasks are genuinely impossible or clumsy in LINQ. You'll feel an unpleasant sense of failure, though, should you cheat and use this feature frivolously :)

If you can write all your ad-hoc queries in LINQ, you have a big head-start over everyone else in C# 3.0, LINQ and LINQ to SQL. (Further, LINQPad gives you a knowledge of LINQ that does not depend on Intellisense, and so will not fall to pieces at job interviews!) And continued use of LINQPad will keep your LINQ knowledge alive—if you're not lucky enough to be using LINQ in your current projects.


LINQ Tutorial - it is on final curve

Last week I was able to finish the biggest branch of LINQ Tutorial - LINQ to SQL, and most common LINQ to Objects. I have raw version of LINQ to Entities and LINQ to DataSet and I need a couple days to finish them.

So I am on final curve - I have to wrap up LINQ to XML and it's subset LINQ to XSD - My hopes are to finish it 'till the end of the week.

Speed up ASP.NET Debugging with Patch for VS 2005

ScottGu announced VS 2005 HotFix Patch that speed up debugging ASP.NET related projects in VS 2005. You can read more about it in this KB article here.

Background on the Issue

The particular bug fixed in this hotfix was surprisingly difficult to track down.  The slowdown issue occurred when breakpoints were set in multiple source files in the same project that had the same short file names (for example: two default.aspx.cs files) and which were organized in a certain directory structure pattern on disk.  The patch fixes this issue and should prevent the debugger from pausing when trying to load the web project's assembly symbols in this case.

Indexed LINQ

With the upcoming Visual Studio 2008 and new C# and VB syntax the abbreviature LINQ is already wide spread. With LINQ are mentioned a few branches- LINQ to SQL (the most popular one), LINQ to Objects, LINQ to XML.

But adding features for working with data to object oriented language brings its questions. Let's see the definition of LINQ to Objects from

"LINQ to Objects allows .NET developers to write “queries” over collections of objects. Out of the box there is a large set of query operators that provide a similar depth of functionality to what we expect from any SQL language working with a relational database, and if what we need isn’t present out-of-the-box, we can add our own."

Sounds good, isn't it? But the question arises: By having collection of objects (similar to tables) and language that allow writing queries (similar to SQL) is is there a way to speed up processing (similar to indexes)?

This is reasonable question and there are articles on the subject already. This is called i4o (indexes 4 objects). Here are some articles and links:

I think this is interesting and there is a future for it but in low market segment. I know there is such thing as Object Database and this sounds like one. In the posts I read it seems that MS won't put effort on something that would compete SQL Server 2005 Express if it grows enough. They'll rather improve SQL Server to support mapping and with this they'll achieve part if the goal while having SQL Server in the shape we know it. This is not in far future. It is already known that MS SQL Server 2008 will have Entity Framework built in.



13 disasters for production web sites and their solutions by Omar Al Zabir

A great software developer and architect from Pakistan Omar Al Zabir wrote an article about disasters for production web sites and their solutions. It is very interesting as it describes how to deal with problems (and event worse - disasters) in production.

Here is the list:

  1. Hard drive crashed, burned, got corrupted several times
  2. Controller malfunctions and corrupts all disks in the same controller
  3. RAID malfunction
  4. CPU overheated and burned out
  5. Firewall went down
  6. Remote Desktop stopped working after a patch installation
  7. Remote Desktop max connection exceeded. Cannot login anymore to servers
  8. Database got corrupted while we were moving the production database from one server to another over the network
  9. One developer deleted the production database accidentally while doing routine work
  10. Support crew at hosting service formatted our running production server instead of a corrupted server that we asked to format
  11. Windows got corrupted and was not working until we reinstalled
  12. DNS goes down
  13. Internet backbone goes down in different part of the world

Here is the article 13 disasters for production web sites and their solutions

Note: You can also take a look at his website - it is very impressing with Win2k look&feel