Friday, October 31, 2008

...but do products have domains?

This is with reference to my previous post, Do code generators have domains?

My IT career has spanned only 4 years, and I have worked for only 2 companies during this period, with the first being a software product company and the second a software services company. Since the work in the first company was developing a code-generator, I never heard the word 'domain' being uttered all through my time there. I heard it first only in the software services co.

Very naturally, I assumed 'domain' was a word that was used only in the software services industry. "Products can never have domains!!", my brain told me. "How could they? You saw it for yourself... company 1 never uttered that word!! Company 2 keeps saying it all the time!!"

Well, that was what I believed for a long time.. but my brain, being ever active ;-), seems to constantly verify whatever it believes against the real world. And very soon, it came up with exceptions!!


Products do have domains. The first example that strikes me when you talk to me about software products would be Microsoft Word. But that's not a very good example in this context, since almost every industry uses Word. I fail to think of one industry that doesn't use Word.

A good example would actually be something like the accounting package, Tally. Tally is a software product that is probably unheard of to people in the retail industry, while accountants using Tally are probably not much aware that there is a software called RayMedi RPOS in the retail industry.

This lack of awareness is because the tools target different domains. They are marketed only to people in the industry they target. Nobody's gonna market RayMedi RPOS to a company that provides accounting services. These products cater to the needs of specific industries (domains) and the people in those industries have probably never heard of those products that fall outside their industry.

Tally and RayMedi RPOS are examples of software products. They also target only certain domains. As such, they are examples of software products that do have domains.

Sunday, September 21, 2008

Do code-generators have domains?

When I was doing my first job change, I was interviewed by the employees of a particular IT company. From their body language, I understood that the guys interviewing me were new to interviewing people. During the course of the interview, one of the guys asked me what I had done in my previous employment.

Now in my previous job (a software product company), I was involved in the support and development of a code-generator that generated web applications. Users would specify their requirements as pseudocode and our code-generator would generate the code in the language of the user's choice. We gave the users three choices in which he could generate the code: Java, Struts and .Net.

So I told the interviewer that I was involved in the development of a code-generator.

Interviewer: OK, in which domain?
Me: Domain?... (A few minutes of confused, frantic thoughts) What do you mean by domain?
Interviewer: Surely you must have worked in some domain!!

Actually, I hadn't even heard the word 'domain' before!! What were these guys talking about?

Me: Sorry... I don't know!!

The interviewers moved on to the next question.

But that question has stayed in my mind ever since. The company in which I later joined was a software services company, and a few months later, it slowly became clear to me what the interviewers had meant.


What is a domain?
In India, there are mostly only software services companies. There are software product companies, (I am not going to deny that), but what you hear more talked about are the services companies. These companies provide IT solutions to various clients. The client can be from any industry - manufacturing, health care, travel, etc. etc. Hence to provide better services to the clients, any IT company generally divides itself up based on the industries it is servicing.

So in effect, you find the IT services companies grouping the clients they are servicing into these divisions. As an example, let us take a fictional IT company. It has 3 clients - two make cars, while the third is a hotel chain. Thus, this fictional IT company would group the first two into its manufacturing division, while the third would be grouped into its hospitality division.

It is this concept of a 'division' that is given the name 'domain' by the IT industry. But why should they do this? Simple... so that they can provide better services!! A guy who was worked for a significant amount of time in a particular domain begins to understand its intricacies. This means he can provide better value to the clients.

So when a guy from another IT company interviews for your IT company, it is logical to ask him which domain he worked for. This is so that in case there is a vacancy in that particular domain, you can place him there. This would ensure that he continues his growth career-wise, while also ensuring that you reap the benefits of his knowledge!!


Unhappily...
Code generators don't fit the bill!! The main purpose of a code generator is to generate code. Given an input, it generates the output for it, and that's it. Hence, they can be used in any industry!! Nobody can mandate that a code-generator must be used only in the automotive industry, for example. It just cannot be done!!

And that is the reason why the interviewer shouldn't have asked me that question. Plainly said, it is foolish.

Repeat to yourself: Code generators do not belong to any particular domain!!!

Saturday, August 09, 2008

Two new stuff...

...came by mail!!!



The first is the Ubuntu Desktop Live CD. I ordered this since I wanted to tinker with Linux and maybe, just maybe, learn more about working on it. Till now, I have tinkered with the Live CD only, but have plans of installing it on my computer alongside Windows. However, since my family members also use this computer, I guess they might not like the idea of a window asking them to select which OS to use when they start up the computer. Also, I am not sure whether my existing Internet connection will work with Ubuntu installed.

Put simply, all this means that I have not yet decided anything!!

The next one is the book, "My Job Went To India (And All I Got Was This Lousy Book!)" by Chad Fowler. I had heard of this book and wanted to know what was inside it. Of course, the book is targeted at Americans, but I bought it on the notion that there could be some tips that might be helpful to me too!! Will read the book and let you know!!

Friday, July 18, 2008

Dhotis with pockets

After a long time, I wore a dhoti this past week. And one day, I slipped my mobile into my pocket... only that there was no pocket there in the first place!!!

Well, if you can have sarees with pockets, its time for a dhoti with a pocket.

What say?

(Was searching the Net for what people say about sarees with pockets, when I stumbled on this blog post by Krish Ashok, who says that most recent saree innovations are from Sri Kumaran Stores... hmm, that's notable!! Sri Kumaran Stores, how about one for the men?).

Wednesday, May 21, 2008

You need to think like the user

In software development, it is necessary to think of all the actions that the user would perform with your software. This is so that you can fix any bugs or inadvertent situations that might arise before it goes over to the user.

Software professionals refer to this as 'thinking-like-the-user'. Like Joel Spolsky says in this article, you need to create imaginary users in your brain and think of them exercising your software. This usually reveals scenarios that you might otherwise have never thought of. Personally, I have always striven to think like the user in all situations, whether I am writing a full-fledged application or just changing a block of code.

For the past few months, we have been maintaining some code written many years back. Recently, I found one 'bug' that illustrates what happens when you fail to think like the user. I have not taken screenshots of the application, but the screenshots you see below are similar.

We have a screen where the user can searc
h for groups.


Now the Find Groups button lists all groups if the user does not enter anything in the text box. However, if he does enter something, then clicking the button lists all groups starting with that text.

Usually, I would just press the Enter button and move ahead. On this particular day, I used the mouse to click on the button.

And I got this...




I analyzed the code to see what the developer had done. Here it was:

<script>
function validateIt() {
//If the value entered is of zero length, then show an alert message.
}
</script>

Then a few lines down....

<html:form action="some.do">
<html:submit value = "Find Group" onclick="javascript:validateIt();"/>
</html:form>


So basically the developer had written a script to validate the text entered by the user in the field. This would fire when the user clicked the button. But the control which fires this event is a submit button, which can be activated by pressing the Enter key. However doing so does not fire this script - for that to happen, you would have to write an onsubmit event handler.

So now you have a case where clicking on a button to submit the form is considered erroneous, while pressing the Enter key to do the same thing isn't.

This thankfully was an internal application - people probably didn't care that much about quality. The application has more of these annoyances, but the users probably grind their teeth and worked away, since they needed this application for their daily work and also because they had no other choice.

What would have happened if this was part of a product? And in a market where you have competitors?

Wednesday, April 16, 2008

In a conference call...

In my previous company, we were developing an application for a Japanese client. One day, we were supposed to call up our coordinator at onsite. My team leader asked me to go ahead and place the call while he would join me a few minutes later.

I placed the call, and after a few rings, someone began speaking in Japanese.

I was stumped, since I was expecting our coordinator to pick up the call. But then I realized it could be a common number, and that the person speaking right now was probably a receptionist. I waited for him to finish, after which I thought of asking him to transfer the call.

But he didn’t. He continued speaking.

After a few minutes of this, I said, slowly in English, “Hello. Can I please speak to <coordinator name>?”

No response. Receptionist keeps speaking.

I try again, but this time, just repeat the name of the coordinator, in case he did not get what I was speaking.

Still the same.

Finally, I call up my team leader and tell him that someone is just speaking on and on in Japanese.

He said, “Keep the receiver down. Its voice mail”.

Wednesday, March 19, 2008

Why you should have good language skills...

There was this guy in my team (thankfully, he's left for another team). Together, we were supposed to finish two use cases. Our team was running on an artificially induced crunch mode.

One day, I felt that we had typed some code without the corresponding Javadoc. Since I was stuck with some work, and since he was free, I asked him to type the Javadoc before any other work came by. He refused, saying he was not very good in English and spelling errors would occur. I told him that he could not go on throughout life giving this as an excuse, and that if he knew he was poor in English, he had better improve. As a first step, I suggested he type the documentation in MS Word, which would point out his mistakes. He could use that as a learning experience.

He agreed, and some half-hour later, told me he was done.

I went over to his workstation, and as expected, his text was riddled with red squiggly underlines. I asked him to correct those first.

He said, "Ya I know I have to correct them, but how do I do so?"

I thought this guy probably does not have much experience with Word, and told him to place the mouse pointer over the word and right-click. He did so, and the menu popped-up.

He said, "Hey! I know how to open this menu... but how do I know which item to select in the menu?"

I was shocked, to say the least...

Tuesday, February 26, 2008

Hmm...

I have been doing a lot of late nights recently. This has taken a toll on me so much so that when I exited the lift today, I heard it say, "The time is now 12pm. Have a night stay." It was a while before I realized that it actually said, "Have a nice day."

Wednesday, February 13, 2008

Great wedding ideas...

Krish Ashok has a lot of funny, downright hilarious ideas on how a Tamil Brahmin wedding could be conducted. Take a look.

Note: You need to be a little familiar with the way Tamil Brahmin weddings take place.

Friday, February 08, 2008

Chennai photo quiz

PlaneMad (that seems to be the name he goes by online) is running a quiz on Chennai out on his blog. Its interesting, getting to know various places of Chennai through his lens. I was able to answer two questions successfully, but more than that, its the photos, the responses to his quiz and a certain 'liveliness' in the site that warms your heart that makes me check his site repeatedly.

Do check it out here.

Sunday, September 30, 2007

Does onsite travel mean only the US?

I am a software developer working in India. (OK, you got that from my blog's heading, but I just thought I'd repeat it). I am now working for my second company. While in the first company, I went on an on-site visit to Delhi, where our client was. I stayed there for a month, helping the client out as he faced problems with our product. It was a kind-of great experience for me, as I got to know for the first time the thought processes people had and problems they faced as they used our product.

Well, a year and a half later, I was job-hunting, and went to various interviews. Now, on-site experience is considered very valuable in the Indian software industry, and I was pretty sure that people would respect me for the experience I gained. In one particular interview, I mentioned that I had gone on-site. The interviewer asked, "Where?" and I said, "Delhi".

He said, "That's not on-site." I said, "Yeah, but that's where our client is..."

The interviewer nodded, but I could see he didn't believe it. He didn't believe in the experience I had gained there. He didn't consider Delhi as on-site.

I joined the very same company whose interviewer asked me that question. With other work, this incident was pushed to the back of my mind. Some days back, it re-surfaced. After lunch, I and a few of my friends working in the same company were walking towards our building, when for some reason, I mentioned the incident. One of my friends immediately hotly defended the interviewer; surely Delhi could never be considered on-site!!

I got angry; I took it kind-of personally - well, he was after all, saying that my on-site experience at Delhi was not to be considered. I got puffed up and ready to argue, but my friend said he had to pick up cash at the ATM and walked away.

Later, when I was at home and in a calm mood, I thought this over, finally. I realized
that for some reason, my company (I am not sure about other companies in India, but I think they are also the same) seems to consider only US travel as on-site. I feel this is ridiculous.

Why should I feel so? Let me put forth my reasons. Let's start by answering this question:

Why is on-site experience valued?

Let me provide the answer too: On-site experience is valued because for the first time, you are face-to-face with the customer. While at offshore, you can easily say that this-bug-cannot-be-fixed/I-cannot-come-on-Saturday-to-fix-that-bug and such stuff. But you cannot say that in front of the customer, because if you do, the customer then stares at you in anger. And I tell you - that stare pierces your heart, that stare gives you guilt feelings, that stare gives you cold sweats - your company, rather YOU have just lost a customer. The customer has just taken one step down the road to never recommending you and your company to others.

Lost. That very word makes you sweat. That very word, that very stare, ensures that even after you go home, you keep thinking about it. The customer's face, after you finished speaking, is what comes into your head, and you cannot shake it away, for some reason, which you don't know.

That, in my opinion, is why on-site experience is so valued. You face the customer. Not everybody can do that. And when you return, after having successfully moved your application to production, and after having been given a personal send-off by your all-smiling customer, you return to two things - 1) the knowledge and the satisfaction that you have just retained a customer, and 2) the applause of all your colleagues. Soon, you find that everybody in your company listens to you all the more. Its not that they weren't listening before; its just that they listen to you all the more.

It is for this lesson that on-site experience is so valued. Now the question is, where can you get this experience? Only in the US? I say, no!! Customers are spread throughout the world, and wherever your customer is, you can gain this experience. He may be in Delhi or in San Francisco, but whatever it is, on-site is valued for customer relationships, not for US travel.

And that's why I expect people to respect me and my experience when I say I travelled on-site and solved my customer's problems!! It might be Delhi, but when my application didn’t work the way the customer wanted it, he raised his voice, and said, “What application is this, yaar?” And that’s it – it sends me into a flurry. I immediately note it down, and when I return, include the feature into the application.

On-site is valued for customer relationships, not for US travel.

What are your views on this? Am I wrong here? Is there something I don't seem to understand? I would love to hear any opposing views, so feel free to comment on this post or mail me regarding this.

Monday, September 10, 2007

Finally...

Got to know how to type தமிà®´் (Tamil) words on my computer using an English keyboard... After all these years typing in English, typing in the vernacular is an exhilarating feeling!!! Ah.. .the thrill you get when you learn something new!!

Friday, March 30, 2007

Nice post

Saw this blog entry recently. Its a simple way of explaining who is more important: your existing customers or your new customers.

Sunday, March 25, 2007

Strange....

I upgraded IE from 6. 0 to 7.0 somewhere last weekend. (Was it really last weekend - wasn't it even before? Well, not sure, but anyway that's not the point.)

I tried to connect to the Internet after that. On my machine, you have to connect to a local URL that is made available by the ISP (Airtel Broadband) and then click the Connect button there to connect to the Internet. I tried accessing that URL, but IE gave the usual "Page cannot be displayed" message. I tried several times, with no luck. Finally, in frustration, I called up the ISP's call center. The service provider after a few unsuccessful trials, called up his senior technical officer, or some such thing. He returned saying that his senior technical officer, or some such thing, had said that the modem was not compatible with IE7. I thought that was strange, but accepted it at that point of time.

Today, I connected to the Net using Firefox browser. Just to check if the problem was still occurring in IE 7.0, I opened it. It immediately connected to the Yahoo News page (oh... that's because I downloaded the IE 7 installer that comes bundled with the Yahoo toolbar). "Strange", I thought, "but ya that's because it is the ISP URL that is not compatible." But a doubt nagged at me, and I still connected to the URL. And it worked!!!!

Dunno what happened... may be someone in my family did some magic.. I haven't asked whether they tinkered around.. I didn't attempt anything at rectify it though...

Sunday, February 11, 2007

Mark H. McCormack on sales

My bro has this book, "What they don't teach you at Harvard Business School". Read a passage in chapter 5, "The Problem of Selling" which somehow struck a chord. It says that most people are born sellers - in young age, they pitch themselves so that their dad gives them more pocket money, their teacher gives them more marks, how to stay out till late night and so on. So by the time we walk into the outside world, we know how to position ourselves and get things done the way we want them to happen.

"Then something happens - we forget how to sell. We question our own sales aptitude. Suddenly, the techniques we have used all our lives become foreign and mysterious, as though we now have to go out and learn them the first time."

Ever felt this way? Well, he gives the answer too.

He says that for the first time in our lives, when we enter the real world, our sales capabilities are judged. This results in us thinking that we have a very bad sales aptitude - we can't sell; we don't know how to sell; we won't sell.

Wednesday, January 24, 2007

Japanese toilets

Read this link long ago. Talks about the usage of technology in Japanese toilets. Do take a look.

Sunday, January 07, 2007

SQLException on ResultSet.absolute()

This one came up at a time when I least expected it. I had an SP which I had to execute to get the results. I was using SQL Server 2K. I wrote the code to execute the SP, iterated through the ResultSet and get the data.

Execution: java.sql.SQLException: Result set type is TYPE_FORWARD_ONLY

Got confused. Tried tinkering around for a while. Nothing. Then thought probably the server has gone bonkers. Changed my code to

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);

Still nothing. Posted on Sun Java forums. Someone suggested it could be an issue with the driver. Realized that the only way to test would be changing the driver. Changed it to JTDS from SourceForge. Same error. Hey!!!

Did a Google with the error message. It cropped up this link. It turned out that any SP in SQL Server with more than one SELECT or a SELECT with SET/PRINT degrades the resultset type. Modified my SP and it works now.

Sunday, December 24, 2006

Just my two cents...

On the Indian Railways site, you can search for trains between certain important stations here. Once you specify the locations between which you want to travel and click the Get It button, you are presented with a search results page. You can select a train and get its seat availability, fare and schedule for the selected dates between the two stations.

When I tried it, I found something. Everytime you click on the Get Availability button, you are presented a message box that says,

Please note:
"PNR status" and "Accommodation availability" queries are very network
resource intensive queries. You are therefore requested to please wait for
sometime and not to re-submit the same.
Thanks for your co-operation.


Also notice that the three buttons on the top and bottom of the search results have their captions changed to Wait For Availability!

OK, guys, I get it. You want to prevent people from clicking the button repeatedly out of impatience. But for that, you can better disable the button, right?

The remaining two buttons (Get Fare/Get Schedule) also have this scenario - captions changing to inform the user to sit quiet. Disabling the button would be a better solution.

Sunday, December 17, 2006

Some nice YouTube videos

A post after a long time!!! What made me post now? Two great, heart-warming videos I saw yesterday on YouTube:

The famous 'Mile Sur Mera Tumhara' video. Anyone who spent his childhood in India and watched Doordarshan during that time will remember this. I almost felt a rush of childhood memories in me while watching this video. More info can be found on Wikipedia.

A nice video on true love. Am not sure about the country of origin, but the title of the video is 'Kiss'. It was fresh, heart-warming, the actors were great, the music was good. Overall, the video is downright superb!!

Thursday, September 28, 2006

Gmail's Loading...

When you login to Gmail, you must have seen 'Loading...' appear against a red background on the top right of your browser window. Nothing special about it, I thought, until I scrolled down. I was surprised. Instead of moving up like the other elements, the 'Loading..' thing stayed there.

I was stumped. From then on, I have been searching around on the Net to determine how to do that. It turns out that this effect is due to a CSS property which we often use - position. We have used this attribute to position elements on our page by giving it the value, absolute. Ok, to get the effect of Gmail's 'Loading..', use fixed instead of absolute, and hey presto!! it stays there, even if you scroll.

But there's a catch here. It works only in standards-compliant browsers, which means FF/Mozilla/Opera render it as expected, but not IE. That's a problem to which I haven't found a workaround, although you can use the onscroll event and move the element by the amount scrolled. I tried it out, but it doesn't give the effect required. There is a time delay in moving the element to the position you want, which means for that time period, you won't see the element there. After this time period, the element arrives at the position you want.

But what puzzles me is how Gmail achieved the effect in IE. If anyone knows how Gmail achieved this, leave a comment.