Thursday, February 14, 2008

QOTD#2 The Man Who Thinks He Can

This is a inspired poem i come across today , started posting on the front , much relevant to me , this one is from Walter Wintle about believing one self

The Man Who Thinks He Can

If you think you are beaten, you are;
If you think you dare not, you won’t.
If you like to win, but don’t think you can,
It’s almost a cinch you won’t.

If you think you’ll lose, you’ve lost.
For out in the world you’ll find
Success begins with a fellow’s will;
It’s all in a state of mind.

If you think you’re outclassed, you are;
You’ve got to think higher to rise.
You’ve got to be sure of yourself before
You can win a prize.

Think big and your deeds will grow.
Think small and you’ll fall behind.
Think that you can, and you will.
It’s all in a state of mind.

Life’s battles don’t always go
To the stronger, faster man;
But sooner or later the man who wins
Is the fellow who thinks he can.

Wonderful inspirational thought. If u have a dream have and belief init. Below is WillSmith (I love this Guy ! ) version in the flim The Pursuit of Happyness .

Have a Dream ? Go n Get It!


Christopher Gardner: Hey. Don't ever let somebody tell you... You can't do something. Not even me. All right?

Christopher: All right.

Christopher Gardner: You got a dream... You gotta protect it. People can't do somethin' themselves, they wanna tell you you can't do it. If you want somethin', go get it. Period.

Feb 14 Its My First Anniversary !

Feb 14 Its Valentines Day ..!
Then its my First Anniversary :)

Ohh.. I am not offically in Love :) , So Dont think in the other way ...
It's First Anniversary since i started Blogging. :)

Not too many post last year.. Hmmm I have to increase the counts in coming days.. Let me set the target... How much can i set the target ? 50 posts , 100 posts ?
Ohh No.. I am in confusion Its better to let the JVM to decide ,


package com.ashok.fun;

import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;

public class RandomNumber {

private static final int noOfDays=366; // Hey 2008 its Leap year So...

public static void main(String args[])
{

try{

SecureRandom random=SecureRandom.getInstance("SHA1PRNG", "SUN");

System.out.println("How much Entry ,should I Blog ?");

System.out.println("JVM : Not less than "+random.nextInt(noOfDays));
}
catch(NoSuchAlgorithmException alg)
{
System.out.println(" SHA1PRNG Not there ? ");
}
catch(NoSuchProviderException nspe)
{
System.out.println("This is not SUN JVM ");
}

}
}


Ok program written.. Lets Run it..!
Here's the output

How much Entry ,should I Blog ?
JVM : Not less than 202



202 ???? Its Huge !

Let's see whether i am able to crack it ..

Friday, February 8, 2008

Hidden Parameters of Software Design

Have you ever thought the printer paper that u use and the shoe brand your neighbour wears have any influence on software that you design ? If i say yes ,then I am sure every one will say me mad. It seems to be stupid idea how could my neighbour shoe have effect on softwares I design ?But the fact is there are subtle things which can affect the software you design.

A man named Mel Conway have stated a law about the most hidden influential parameter of software design

Any organization that designs a system will produce a design whose structure is a copy of the organization's communication structure.


In other way

Software is doomed to reflect structure of the organization that produces it.


How could communication and organisation structure affect the software design? This seems to be a joke... Really ? No not at all..

Here's description

Consider a large system S that the government wants to build. The government hires company X to build system S. Say company X has three engineering groups, E1, E2, and E3 that participate in the project. Conway's law suggests that it is likely that the resultant system will consist of 3 major subsystems (S1, S2, S3), each built by one of the engineering groups. More importantly, the resultant interfaces between the subsystems (S1-S2, S1-S3, etc) will reflect the quality and nature of the real-world interpersonal communications between the respective engineering groups (E1-E2, E1-E3, etc).

Another example: Consider a two-person team of software engineers, A and B. Say A designs and codes a software class X. Later, the team discovers that class X needs some new features. If A adds the features, A is likely to simply expand X to include the new features. If B adds the new features, B may be afraid of breaking X, and so instead will create a new derived class X2 that inherits X's features, and puts the new features in X2. So, in this example, the final design is a reflection of who implemented the functionality.

A real life example: NASA's Mars Climate Orbiter crashed because one team used English units (e.g., inches, feet and pounds) while the other used metric units for a key spacecraft operation. This information was critical to the maneuvers required to place the spacecraft in the proper Mars orbit. "People sometimes make errors," said Dr. Edward Weiler, NASA's Associate Administrator for Space Science. "The problem here was not the error, it was the failure of NASA's systems engineering, and the checks and balances in our processes to detect the error. That's why we lost the spacecraft."

What a basic error..! Hence the proof of Conway's law...

I think this why the Googles have great design in their software they make ... It reflects the organisation structure .. Its reflects the communication they have.


Another Conways law
In every organization there is one person who knows exactly what is going on at all times. This person must be fired.


One more law
If a group of N persons implements a COBOL compiler, there will be N-1 passes. Someone in the group has to be the manager.


This seems to be funny but you know this is quiet true..

So when u design Dont have a Y guy who only knows how to do X thing and considered to be the blocker of the project in case he s absence . Have a collective ownership of what every one do It keeps the team unblocked, and gives everyone the opportunity to do more than one thing (Agile ) more importantly makes every one interesting.

Atmost communication between the team is important. keep improving the communication inside the team..!