Just read this amazing article on Nettuts+, about SCRUM. For a time I have been writing something similar, and when I was it on Nettuts+, just thought why not just post a link, as this one is much better than mine will ever be!
In a sense Java and C# are quite similar, but when you get a bit under the tip you will notice some of the difference between both languages. For some reason C# felt a bit more easier the Java to me, and a bit (a lot) more powerful.
There are times when you need some sort of unique identifier for some reason, and it can be hard to find a system that will have a very low collision risk.