Coding, is? Fun!

Monday, June 30, 2008

Toondoo Exploration

Trying out a nice web 2.0 site called http://www.toondoo.com.
I created the cartoon below called Delivery and my wife created the one below called Night Life:


Scroll over the image:

Labels: ,

Sunday, June 29, 2008

A wakeup call for IT Architects and Leads

(This article is cross-posted in http://www.photoninfotech.com)
Sometime back I interviewed a senior technical architect for Photon. One of the standard questions I ask is if such senior people have worked in developing or maintaining a public website.
Invariably this question leads me to define a public website. A website that is available on the DMZ for entering timesheets around the world is not really a public website. What I usually mean is a website that does commerce on the internet or more generally has something to offer to random users.
Such a website is different from internal web applications because of their broad usage patterns, traffic, marketing needs, analytic needs, usability and so on.
Anyway, this particular architect said Starbucks contacted his company to develop such a public website for them. He also volunteered that he had suggested using a "smart client" based approach for that.
I was taken aback - "Smart Client" is a Microsoft term used to describe .NET based WinForms applications that run in Internet Explorer. To run a smart client app in your computer, you need the .NET runtime installed.
I asked him if that is what he meant and he confirmed it was. I asked him what kind of marketing you could do on a website that only allowed people who had .NET installed. He had no answer - obviously he had no idea about public websites and it is probable that the whole Starbucks account was fictitious.
Another candidate (again, from a reputed company with 11 years of experience) said HTML was dead because Visual Studio was available. I have no idea what he meant by that - and was afraid to ask.


Most senior people (tech leads and architects) I meet from the Indian market have no clue about the whole wide world of public website development, its special set of concerns and even about the niche world of Rich Internet Applications. I can actually find college kids who know more about social apps, widgets, Open Social and the mobile web. This is a matter of concern because some of the coolest, cutting edge technological developments in the past few years have been in that domain.
For the offshore services industry, we need more architects and leads who have worked with a set of technologies that I list below. If you are out there and have a good idea about these, give us a shout out.

1. Most clients who come to us start with the traditional web requirements - enhance the search engine ratings for their website. This is the area of Search Engine Optimization. From a technical perspective, it requires the knowledge of web standards; the optimal usage of Javascript and CSS; Cascading Stylesheets 2.0; Keyword analysis; the application of analytics to figure out usage patterns.
Clients also request us to build their sites to be compatible with various browsers; and be XHTML compliant.
Sometimes they ask us to analyze the site from a usability perspective - do users prefer a certain color over another? Do the right hand navigational links work? This is the area of usability engineering tied in with accessibility for the disabled.
(As a side note web accessibility guidelines are mostly ignored by website builders. Soon, such guidelines may be mandatory. Read this link for more information on accessibility)
Clients ask for the addition of rich internet features such as partial page refreshes or drag and drop. These require an architectural knowledge of Ajax and also the several Javascript libraries of effects (starting from prototype and scriptaculous to Dojo).
Optimization of the browser rendering time is a priority for many clients. This requires knowledge ranging from the HTTP protocol to DOM traversals in Firefox.
That is just the range for traditional requirements.

2. Clients then transition to what are called "Web 2.0" features - primarily User Generated Content (UGC) and User Generated Categorization (taxonomies).
Clients at this point need help on prominent Content Management Systems (for web content management). They need the ease to integrate different "Content Types" such as blogs, wikis, photo albums and yes, video sharing to their websites. They want tagging support. They want to easily add a comments module or a rating module or a polling module to a blog or photo album. Some clients even want video editing features added to their websites.

3. The marketing guys then kick in with the need for Social Networking to be added on to each website. This is such a huge topic in itself that I will write more later. The design for a social networking schema is not trivial. Add 100000 users and you could have a mess in your hands.
Since Facebook started allowing third party applications in their profile pages, there has been a flood of initiatives to build a "widget" framework. One of the most popular is "OpenSocial". OpenSocial is so cutting edge that the open source community is still working on a Open Social Container. Go, check it out.

4. Then the website goes Mobile - the request that a website display a good usable version on all the mobile devices around the world. There are so many models and so many standards around this. To design an appropriate solution is a challenge.

As you can see, there is no dearth of challenges here. Yet, I do not understand why our senior technical personnel won't step beyond Object Relational Mapping or Service Oriented Architecture. Let alone step beyond, why do they not even have an awareness about the challenges of public websites?

The two trends that I have seen of these domains is that
a) more work is done by the open source community and startups and

b)if you have been USING websites from these domains, it helps you give a headstart.

The second point is probably why college kids are better informed about social networking, mobile applications or blogging - because they actually use Orkut or MySpace; and harass their family for newer mobile models with better online features.

Meanwhile, I am going to keep looking for an architect who understands the term "Social Graph".

Labels:

Monday, June 02, 2008

To be known as an expert

I have been working in the IT services industry for the last decade. You could say I have come up the ladder a few rungs. Time for some introspection.
My job leads me to interact with clients closely.
In our business there is a need to impress clients. Clients have to believe they are interacting with an expert and competent person. Ideally, for a person like me, that means that I should be an expert in my subject matter (instead of making them believe that I am an expert).

There are several problems with being an expert - or, more precisely, acheiving expertise.

The Major issue is this: My job may not REQUIRE me to be an expert. Typically all that an organization needs is an illusion of expertise. It is possible for a moderately smart person to communicate well and project an aura of expertise. It is strictly possible that this is what a services vendor requires.
In fact, this is what most medium-sized services companies can aim for. Given a new subject matter (such as Social networking) that you are trying to gain access to, it is near impossible to find a person sitting in the wings to take control of the project. So, you end up having a pool of talented talkers who can project expertise. Over time, after you have completed a couple of projects in a domain, you can hope for some real expertise - if the person has not been moved on to something else.
The other option is for a services company to cater to a niche market such as Rich Internet Applications (RIA). If you did, you are close to what is happening "out there" and you can truly build on past expertise.
Of these two options, most outsourced vendors would go for the first option - in which they offer a broad range of services in different domains (and make it up as they go).
So, if you work for the normal vendor doing business in India, your job may require you to be a fast talker with little time (or need) to develop true expertise.


So, sometimes, I stand upon the threshold of a new and exciting technology and wonder - is it worth it to delve deep into it?

The fantastic vision of a true expert is very attractive - but not well defined. If I am a Sharepoint expert, by my own standards, I need to be able to do the range from:
- creating a workflow for approving and publishing infopath forms
- setting up enterprise search edition in a production environment with optimized indexing and storage.

Thus, expertise consists of conceptual ideas of architecture; it consists of a knowledge of practical thumb rules and quirks in implementation; but more than anything, it consists of actual experience.
The problem is an incomplete conceptual idea and a set of practical guidance CAN be obtained from Googling a subject or reading up a manual. Too often, that is mistaken for expertise. In fact, too often, that is passed off as expertise.
I do not think a person can claim to be an expert in a certain technological area unless they have actually gone through three or four different implementations and projects. Experience Matters!


One year back, I was walking along a corridor at work, when a senior manager called me aside and said that some developers needed assistance with a product called Drupal. I had heard of Drupal but that was it. But I was in a comfortable situation because the clients would never be exposed to me. I just had to work in the background.
I installed Drupal that day and over a period of two weeks could create two modules using PHP (a platform then unknown to me). In the process I learnt about MySql and InnoDb and Apache Virtual Hosts and Drupal hooks. I worked 16 hours a day and enjoyed every minute of it.
Soon, I found that other projects were using Drupal and tried to get together for best practices. I could perform Drupal code reviews and in general learn the way of Open Source in a few short months.
Am I an expert in Drupal? I don't think so - I could see myself becoming one if I worked on more projects and deployments. But the key factor that gained me entry was the fact that I was isolated from the clients during the initial period.

Now, let me highlight the problem - if you are a senior technologist in a services vendor, you WILL be put in front of clients as an expert. That is the best approach for the vendor in a scarce talent pool. But that is of course the perfectly wrong way to gain expertise - sitting with clients under pressure to prove yourself. This is the basic problem for concerned technologists.

I have thought about this and understood that the service vendors have little choice in this matter. They face stiff competition and everyone out there is doing the same thing. We can either have the business or lose it.
Also, mostly, the basic definition of expertise differs between the sales person or business manager and the technologist.
What do we do?

Labels: