Friday, December 15, 2006

Mac's Promise to run Windows

Recently Mac books have started using Intel processors, Apple gives out adds saying , "Now Mac runs both Mac Os X and Windows, it is pc you will ever need". I don’t know how they say that. I have seen frustration of users in many blogs, mostly complaining that Windows does not detect their Mac hardware properly. Now , it is apple who promised to run Windows on their hardware, so it should their sole responsibility to support it fully. Isn't it?

In some part I was convinced that macbooks are the best buy as they are able to run both Mac and Windows on a single hardware, in addition to its great design. But today I also came to know from one of my colleges that macbook don’t have any bios therefore you can't do a clean installation of Windows in Mac hardware , it only possible when you use a software called Boot camp. Isn’t it ironic?
I wished I could have buy a Macbook-Pro. Unless, Apple comes up a better hardware level support with Windows , I put a pause to that for the time being. Also, Apple should think of Vista support too.

But, i use Ipod which is much superior to Microsoft's Zune player.:-)

Wednesday, December 6, 2006

Why do we avoid writing unit tests most of the time?

In our early computer science classes we are taught about the formal software development methods. One the most important part of software process is "Testing". Testing comes in various stage of a software product. Some occurs in development phase like unit testing others like regression testing, takes place when a software is under the hands of QA team. One thing that most of the developer don't like is to write unit tests (That also includes me). We all the know the benefit of test based software development but i can assure you most of the time we try to avoid this up. This is not only true for ISV's but also companies like Microsoft. For example, the first release of Microsoft Word(http://www.joelonsoftware.com/articles/fog0000000043.html - check #5 Point). In all the cases when there is a bug in live system , it surely proves that proper testing process has not been executed. This true for all of us. Now why we avoid testing at early stage, well let's look into the following

1. In tight schedule program, often the unit test is almost skipped.This is beacuse , our client are in a real hurry to get a running version. This happens in most of the outsourced projects where budget is a big factor.
2. Programmers are too lazy to write unit tests[ example. me :-)].
3. Time Saving.
4. 100% Confident about a piece of code.

Now as we have so many excuses to avoid writing unit tests, i would like to add one more controversy to it. Let's say a developer has wrote a magnificent piece of complex javascript code that is the heart of software system, after a year or two the developer leaves the company , and right after a major update the code somehow breaks. Now what will happen, think ? If there was unit test for this, don't you think it could have been much easier to point out the exact error?

Au revoir!

Saturday, December 2, 2006

Looking back at your mistakes..

After the end of every iteration in a project life cycle, we always think that we could have write our program more smartly. Humans are meant to made mistakes, but great ones are those who learn from them. Making mistakes is inevitable but we can't avoid them completely.

it is often a real good practice that we all do some analysis after accomplishing each iteration. For ex, all the developers can sit together for a coffee and discuss frankly what is best and the worst things they have done so far and what should be done to avoid those in future .But in reality, i believe that most of us never do this kind of practice.So what needs to be done, if we really want to impose this on a team. Any guess ?

Solution 1 :

Every organized company has a issue tracking system(we at Pageflakes never do a task unless it is properly entered in an issue tracker). Issue tracker is a great source for monitoring progress and accomplishment for an iteration. Issue tracker always says , how a bug has occurred or how to do a new task but it is never meant for the word "Why". Developer does his assigned tasks and marks it with some status and forwards it for further processing , but what if before changing a task , we ensure that a developer must answer, "how did i do the task?". If developers are pretty honest , at the end of each project cycle this can help to create a true project metrics that can become a true life saver someday.

Solution 2 :

These days we all use Microsoft outlook . i believe this is the holy grail in modern age to keep you organized round the clock. In outlook we can create an event send it to others as well to keep us synced( For ex: "Send weekly status") . Now, is it possible to send a reminder that will tell a developer to send the mistakes and best things that he/she has done for particular issue? I believe this is great.


So far, these are only two from many tactics that we can follow to rectify our mistakes. But the question is, at the end of the day do we really care?

Finally i leave you with this quote i found(source : http://www.codinghorror.com/)

Look, Mike," Tomas said. "I can hand off my code today and call it 'feature complete', but I've probably got three weeks of cleanup work to do once I hand it off." Mike asked what Tomas meant by "cleanup." "I haven't gotten the company logo to show up on every page, and I haven't gotten the agent's name and phone number to print on the bottom of every page. It's little stuff like that. All of the important stuff works fine. I'm 99-percent done."


Good day!