Thursday, January 28, 2010

We are nothing but Waves of Vibrations

Who are you?

Are you the person who I met when he was angry and stressed from work? Or are you the sweet person I met when he just received his yearly Bonus?

Are you the person who yelled at his mother once in his life? Or are you the person who helped that old man 15 years ago?

Its difficult to stay one person everyday.

We are nothing but waves of vibrations with varying frequency.

Hussein yesterday with a frequency (X Mhz), can make a decision, wake up in the morning by a building constructions noise which raises his frequency to (10X Mhz) forming a completely another Hussein, and regrets yesterdays decision.

We are a collection of frequencies like radio channels. We switch from a frequnecy to another based on totally natural random events that hit us. For example, I can think of an idea NOW at time (t1) and later at time (t2) describe it as a silly one.


There is one original frequency that is patently yours ..

The challenge is to find it. Embrace it and yes STICK to it.

Tuesday, January 26, 2010

Configurable VS Cogs Products

To my experience I can classify a Product into two types Configurable and Cogs Product.

Configurable product
A Configurable product is a product that is wired to a particular algorithm or logic. What really changes are the actual parameters that feeds the logic. Usually those parameters are written as XML configuration file or in tables whatsoever.

Configurable products are fast to develop and easier to test. The reason is that you collect certain requirements and develop this product as per these requirements. The challenge is to make your product as generic as possible so it can fit as many of your clients.

Example
Say I have a product that can draw a map of customers usage of electricity in a given year. This product is configured to take as an input Customer Table Name, the table should contain Location field which represents the location of the customer and the a Load field to create the legend. So you might have the Location field named as CustomerLocation or Customer_Location or Customer_Position or Customer_Lat_Lon doesn't matter. As long as you configure the product correctly you don't need to change your Customer Table name or its fields.

However, the product won't work if you have for example the Load field in a table while the customer data is in another table, because this violate the infrastructure of the product.



Cogs Products
Think of Cogs product as a framework application replaceable Cogs (Classes). So the product is a collection of classes that talk to each other via the Interfaces ONLY. And its important the word interface in this context. Oriented approach plays a major rule in the cogs product. Clients can write their own logic that Implements those interfaces and literally replace the built in logic with their own.

Cogs product require a neat UML design and a decent knowledge of Design Patterns.

Lets have an example.


Example
Lets take again our product in the example above and alter it a bit. The product have a class called DrawMap that Takes in its constructor ICustomer interface. ICustomer interface has method called getLoad and getLocation. The beauty of this design is that I can write my own Customer class lets call it MyWeirdCustomer that implements ICustomer and write the methods getLoad/getLocation which reads from a table or file or whatever and return the load and location respectively. Feed that object to DrawMap class and TADA. It works. The reason is that DrawMap doesn't care what your class is or how it is reading the load or how it is calculating the location. Whether you are asking Google Earth to geocode your location or have your location as native X/Ys; What DrawMap only cares about is that you implements ICustomer and that you have the function getLoad/getLocation.



The best approach is to merge the Cogs Product with Configurable one giving your client the ability to customize their code and have a configurable product. Having a hybird like product

Sunday, January 24, 2010

Emotionally 1 + 1 = 1

Applying emotions in Business is like applying it to War. If you decided to launch a War, you should defeat your enemy in order to win, but still you should (not must) have mercy to your enemy.

Success is very difficult with emotions in place. However its not impossible. I'm not suggesting in this post any solutions but rather clarifying some vague point.

In Business (especially banks) this comes into practice that someone can't pay his debt because of lots of personal financial troubles. The bank (or lets say people who work in the bank) have to make this tough decision. They can take his house or they can give him an extension.

This is similar in saying that 1+1 = 1 because the first "1" is having financial problems and its out of the bounds of the moral law to take his "1" and give it to somebody else just to earn 2.

All goes back into the human himself.

You Choose. Just remember

Who are you?