Monday, October 29, 2007

Its all about Design

What happens when two programmers of equivalent skills and same field exposure are hired to write their own version of the same sofware? E.g A Corporate Messenger or something as simple as a Leave application system.

The "Design" will be the distinctive line between the amature and the pros.

When i say design, i mean the way all the components and function calls interact. When i say design i mean how the UI will be presented to the users. When i say design, i mean how the product ends up in different modules/classes and processes?

Let me give you a real life example :

Write an application for XP that can retrieve MAC addresses given a list of IPS in the LAN.
A layer2 passthru packet driver is provided.

Programmer A# : Adds a function in the layer2 to provide ARP request. Adds a function in layer@ to process ARP reply. Adds a function in layer2 to receive the list of ips to test. Need to determine which Network interface to send the ARP request/reply. Send the information back to User mode .

Programmer B# : Adds a function in layer2 to receive the list of ips to test. Adds a function to match incoming ips and extract from packet header the mac. Send the information back to User mode.

While Programmer A# seems to have coded the more technical way, its also the more time consuming approach. Since most the the functions (arp handling) is also handled at the driver level, that means more vulnerable BSODs are bound to occur if any bugs were to surface.
That also means that you need to send the packets out in the first place and you will need
to determine which network interface is the one that talks to the LAN.

Programmer B# on the other hand, you might ask how will he ever get the MAC address since he did not do any ARP request/reply functions at the driver? He did that via the usermode....all he did was issue ping via the raw socket api, and the Windows XP naturally send the packet out via the correct network interface. So all he need to do at the layer2 driver, was to match the return ping replies and get the MAC address from there.

Why write your own ARP handling when Windows already paid $$$$ and hired XXXX programmers to provide the functionality? A choice of design.

Same product, 2 design.

Design is everything. I see "design" everywhere, from the way the texts are displayed when you boot up the system, Windows displaying its welcomed screen, the license agreement layout and presentation, how my power off button is used...everything.

Some design are just so dumb, it makes you wonder why the person/company that does it never saw the errands of it. There was a time back then when USB was just coming out of the oven and you see tons of manufacturers and ham-kei shops producing their desktop with USB support.

I notice a faulty design choice that many chose... Why in the world, was the USB port BEHIND?
Its was just a plain "everything else is at the back, so just put it there". While those com ports, printer ports and power connectors have always been conventionally at the back, the USB port which is a drastically different port was placed errornously with the rest at the back.
Of course, soon, some bright sparks soon realize the fallacy of the design and in just a matter of months, kazam! USB ports in front of all major Desktop brands.

The other day i was passing by USJ and i notice one big advertisement board near the Summit left turn : Giant 70,000 and more items. The problem is, people could not visualize how much is 70,000 and that figure doesnt impress anyone. The casual mind is just not able to associate how great or significant is 70,000 in a hypermarket item count. The mind could only remember 3 type of things, which if i were to do marketing, i would use these 3 factors to the fullest:

1. Humour / ridiculous factors
2. Great quantities (eg you see uncountable warriors in an epic movie)
3. Big sizes (imagine godzilla 10 times bigger coming to town)

These factors you can extract from books that teaches you how to improve your Memory.

People are bombarded with figures like 1,000,000++ in many marketing materials, what is 70,000 ? Thus putting that advertisement is a big waste of space, they might as well put there "GIANT" surrounded by small uncountable "giant" and it would strike a better impression.

1 comment:

  1. I never did notice tis USJ Giant signage until i read this but i live in USJ!! MB you correct, no impression at all.

    ReplyDelete