For my Software Engineering 2 class I had to work on a distributed software engineering project. It was quite a failure, and now I’m telling why just to make you know what not to do when developing something.
First of all, don’t make the same mistake I did. If your professor is the best and your classmates are good this is not meaning that also people form other university you will have to work with are as good as them. Remember this, is important.
Oh my God, I’m yet talking about tools. First of all, if someone invented a modern, fully supported and working flawless language why are we forced to use something that is both old and ignored by almost everyone who is not living in Zurich?
I don’t think that the fact that such a language was developed by the professor that is organizing the course in one of the other university is a valuable answer.
When I was told to use that language I first thought “Oh no, I want Java”. Then I resigned myself and I hoped that at least the environment should have been good. It was a mistake, a damn mistake. But I spent too sweet words on that in a previous post.
Lesson number one: without the right tools (Read Java or .Net with a truly supported language) your project is going to fail. No chance of success is left to your luck. Keep this in mind.
Distributed development implies communication. I thought that is was clear to everybody, but someone from far far away thinks that knowing only its own language could have been useful on a worldwide project. Sounds crazy, isn’t it?
When I managed to get group-mates knowing English (It was quite hard) the next big issues were meetings. Why aren’t you attending meetings? Why are you not doing what we decided in that fucking meetings? You were so lucky that I could not fire you.
Lesson number two: choose carefully group-mates and be sure to be able to fire them and replace with someone that actually works.
When it is about taking decision nothing is sucking more than democracy. Do I have to tell that the same guys that were attending meeting in their own way when had to decide something always raised their hands for the worst solution?
Lesson number three: make sure that you are the designer and other are only coders. This is the only way to make them suck a bit less.
Is it clear now what happens when you try to distribute software engineering? No matters if you are using a old-fashioned software development methodology or you are going Agile. If you aren’t following my suggestion you will have to learn by yourself the lessons, sentencing your project to death. And I’m sure you would like to do everything but that. Otherwise you will only get an EPIC FAIL.
If you want the names of some of the characters of this tragedy ask in the comments. If I think that is worth something telling you I will tell you.
After all I am graded (And that is why I’m publishing this post now and not weeks ago when I wrote it ) and I don’t want to have contact any more with the others.