Monday, 28 December 2009

Starting a new Project : OpenJmsAdapter

After two days of deliberations and thinking I have decided to start a new project OpenJmsAdapter.

This is not actually entirely new - this was something that I thought of about an year or so ago and then put on hold due to the fact that I was working on something similar on my job and did not want to mix the two.

The idea is simple - we use JMS as a messaging backbone for enterprises. A lot of boiler plate code needs to be written to connect and publish/subscribe messages from the JMS server. Of course our life is made easy by frameworks like Spring that make it easy to ignore the low level stuff and just publish messages. However, these miss certain value add features like
  • Automatic application level message sequence numbering
  • Checking message sequencing (This does not make sense in JMS in most cases).
  • Publisher heart beat - is the publisher alive or not?
I am still coming up with ideas and fleshing the thing out.

The only thing that is certain at this point is that I have started this project in out and out TDD mode (as against my usual urge to go straight to code and test lazily) and am using Netbeans, with ActiveMQ for my local testing.

I have only managed to write and test two classes today - should commit something by new year.

Sunday, 27 December 2009

500 mile email problem

500 mile email problem - brilliant read. I was rolling laughing at this one.

Saturday, 26 December 2009

Need ideas for a project

Of late I have been thinking of devoting some of my spare time to developing software tools that will help me to polish my skills as well as provide some amount of financial incentive. More than a year ago I had spent a weekend coming up with a draft version of Console4Jython. I spent a few months after that actively adding more features but later got into loads of work and things took back seat. I want to start again. I am not thinking of developing Console4Jython into a bigger IDE - there are much better tools out there. I am looking at building some kind of a tool or framework that fits into the enterprise world. Or maybe even contribute to one of the existing projects. I can code comfortably in Java and want to improve my Python and learn some Ruby.

Let me know if anyone has any good ideas.

Thursday, 24 December 2009

Industrialization of IT

I am not very knowledgeable about this and so am open to corrections. Industrialization resulted in goods being manufactured fast and cheap due to economy of scale. Make 10000 units at once and you could save a lot of money by buying the raw material at once and using a decent set of machines. This led to more supply and things being available at a lower cost. There were countries that were big time consumers and then there were countries which were big time producers. The producers soon started to make more money selling these goods and started consuming themselves. Due to increased demand the prices increased and many things happened. And we now find ourselves facing today. Whether today is good or bad depends on who you ask. For me it is a mess simply because we cannot sustain it.

So, when I heard about strategic industrialization of software services industry - my blood boiled.

I have been in meetings where we go with an estimate of x number of guys working for y number of days and x*y being the total cost. The estimate is arrived at assuming that we can use our fresh catch of resources to get the things done fast by leveraging our prior experience and reusable artifacts. Then the client asks - "can you do this thing any cheaper and any more faster?". Thats another occasion when my blood boils.

A computer is a machine that we invented to execute a know set of logical steps repeatedly, at a speed that has been growing over the years and produce a repeatable result. But the logic itself needs to be arrived at with sufficient optimization built in in order to produce a decent result. And this requires a capable mind.

Agreed that past learnings and best practices can be leveraged, combined with a certain level of ability on part of the person creating the logic - we can get a good product that can be fine tuned. But, people forget that
  • The learning required and the amount of time needed to come up with a solution to a problem differs from problem to problem and cannot be put into s strict mathematical equation
  • A certain amount of intuition and common sense are needed along with ability and leverage to be able to produce a workable result
  • What works once will not work everywhere else
  • And finally, the human element involved here is a big factor that affects the final result

Software development, testing or for that matter maintenance cannot be compared to a car assembly. Even a car, which has few hundred parts, after being assembled with precision instruments and coming with extensive manuals on how to maintain it, and with suitable tools only runs as good as the owner and the mechanic are. A bad mechanic can screw a perfectly new car, and a bad owner can screw it much easily if he does not pay attention or run it properly. Software is a much more complicated piece of work and more easily prone to the error of the human element.

IT cannot be industrialized.

The industry has come down to a level where the vendors, based wherever they are in the world are charging the lowest possible to get projects done and still make a margin. All of them are quoting in the same range of price and soon will not be able to go anymore low. They are losing their price differentiation.

They will then start looking at the new differentiator - productivity. This depends on experience, expertise. And this is where the kinks in the armor will start to emerge. Not everyone can learn at the same rate. Not everyone will be able to get the same amount of work done in the same amount of time. Some will just not get it. Some will pull their hair, smoke a few cigarettes and go mad. After all we are human.

So from the crowd will emerge those who survive - the fittest. And when Darwin's theory shows itself in the IT industry, there will be a rush, a competition for these fit and productive men and women who can deliver what is needed in the time that is there. And sadly they cannot be cloned. They cannot be cast into reusable entities that provide the leverage to run IT businesses at a lower cost. And thus the cost will increase. We can no longer mass produce software at the low cost.

Well we could stop going lower or trying to find a new differentiator and stay with the current situation reaching an equilibrium - but thats not what the vendors got into business for - they would rather shut shop and exit.

So it is destined that we walk down the path to our doom.

Someone said somewhere that quitting when things are good is not s sign of being a loser.

Saturday, 19 December 2009

The cost of living comfortably

BBC happens to be my favourite source of news on the internet. I like the opinions expressed there. Today as I was browsing through the site and reading an item on the strike by British Airways cabin crew and the court stay order on the strike, one line struck me. The author mentioned that because BA had its hub airports in London and other high price cities, the staff would find it difficult to survive on the lower pay being proposed. If BA could move the hubs to places where the cots of living was less, then the staff would be able to survive even on the reduced pay.

Although happening far away from my current home in Bangalore, the problem sounds very familiar - the cost of living comfortably.

I grew up reasonably well off, never short of anything and never lacking in any of my needs. Probably the only time I felt I could have been better off was when I saw scores of my engineering batch mates heading to the US for higher education. But that was short lived. So, at home we are used to a very comfortable, but not high expenditure lifestyle. We spend, I splurge, but all within reasonable limits making sure we do not buy something that we will throw off very soon and always balancing the cost and the best thing available in the market. I don't mind spending 15000 yen to send flowers to my wife in Tokyo, but would definitely think twice before buying a pair of shoes at 7000 rupees. One is worth it, the other definitely not considering the dust and wear and tear the shoes will have to face when I am using them.

All of this comes at a cost - and that cost has been spiralling.

When I got a job five and a half years ago, a salary of 14,500 rupees was good enough to live. I lived in Bangalore, went home twice a month in an AC bus paying 1000 rupees for a round trip, religiously sent 5000 rupees home and even managed to pay my insurance premiums.

Over all these years I saw the prices rise. The house owner jacking up the rent by a few thousands because he saw in the paper that my company was giving a hike. The bus operator charging a 100% premium on the ticket price because of the rush and 99% of the passengers were IT folks, Inflation or simply because the new batches of students joining IT were willing to splurge.

Picture this - the fare for an auto for 3 kilometres in Bangalore with a normal meter comes to 25 rupees. With a faulty meter, the auto driver could subtly get this up to 35. Anything more would stand out. Then one fine day, some auto driver decides to stick out his neck and demand 50 rupees for the simple reason that the area is a bit interior to the main road and he might not get a passenger on the return trip. Common sense would demand that we question him and make him come for the normal fare. But we don't - being Indian to a certain extent means that we never stick our neck out an fight. The auto driver is fighting for an unfair cause but we wont fight for a fair reason. As a result, soon the auto fares are decided on the spot by the whim of the driver and not by the meter.

The same behaviour applies when the coffee guy decides to charge a few rupees more, the guy who sells you your lunch, the vegetable vendor, the paper boy and each and every person with whom you interact with using money as an instrument. The value and the cost of everything and anything is bloated and we paid.


Part of this stems from the fact that for a long time now, Indian mentality has been that a person spending more money is considered well off and held in high esteem. Couple this with the myth that IT is a well paying and respectable job and the hoards of people running out of college and straight into an IT company and from there to the United States of America. People were shocked when I came back from London. It did not make sense to some why I would even want to come back - was something wrong with me?

The result of this today is that it costs a lot to live in India. People in the non IT sectors have started earning better, sometimes more and people who run businesses that serve the large bachelor populations of young IT professionals are making more money. Couple this with the fact that IT professionals have become commodities who can deliver the clients requirements cheaper and faster and companies are vying with each other to do the work for lesser and lesser, we are truly heading for a mess.

I recently switched jobs, leaving a place where I was very well known for a place where I am relatively unknown as of now. I don't see much difference. The projects are being executed the same way, maybe a bit more disciplined. The folks are equally worried about the hike - the cost of living is increasing for them. Its the same thing, branded as a different company.

I am still counting my expenses, I am still worried about my loan payments, only change is that now I have a slightly bigger margin of error - which I am sure will erode in a few months.

What am I getting at?Surely I must have a point in this rant. Well, I do.

We as a nation, as a world should stop being obsessed with spending, and the ability to increase our ability to spend in a geometric progression. It simply is not sustainable considering the fact that the very organisations that want us to spend on services they sell are trying to pay us less and less to produce those services.

I am not able to live on a low salary and help my company fatten its margin simply because my company over the years has poisoned the ecosystem around it to become more and more costly and made life costly for me. So I switched and joined another organisation that is pretty much doing the same but is paying me enough. Few years later I run out of here to another place and then to another until finally there is no place to run. That day you will find me as a tramp on the roadside. Probably there will be many more tramps with me.

The cost of living comfortably is increasing day by day and will reach a point where it will be cheaper not to live.

It doesn't matter which country you have emigrated to or how much the exchange rate is.

There is a quote from The Matrix:

Agent Smith: I'd like to share a revelation that I've had during my time here. It came to me when I tried to classify your species. I realized that you're not actually mammals. Every mammal on this planet instinctively develops a natural equilibrium with the surrounding environment, but you humans do not. You move to an area, and you multiply, and multiply, until every natural resource is consumed. The only way you can survive is to spread to another area. There is another organism on this planet that follows the same pattern. A virus. Human beings are a disease, a cancer of this planet, you are a plague, and we are the cure.


True.

Wednesday, 16 December 2009

Change in workplace

After 5.5 years at Infosys Technolgies, I have made my move. I am now employed at Accenture in their Bangalore office as a Team Lead and am looking forward to some fun work.

The decision to change was a difficult one that had to me made. The hunt for the job itself was another story. Had two or three small interviews that I did not clear for the simple reason that they did not excite me enough and I did not prepare well. Had the chance to get into a big investment bank, but unexpected delays made it infeasible.

The most fun part was my interview with Thoughtworks. They called me up on a Friday to do the initial phone screening by HR and after an hour he was convinced I was ready for their coding assignment. That weekend we had a major escalation at work and in between fixing and testing things, I found time to solve the Mars Rover problem - I even rewrote the thing twice and added a lot more tests than planned.

That code made the cut, and I was called for an in office interview. I did not make it, reason being I did not have the depth they expected (I shall reserve my comments on this), but the whole experience was fun. The logic and analytical test they give is good. My pairing round was miserable because a)I have never done pair programming and b) The guy was not thinking on the same lines and was putting brakes on my thought process. I am surprised they took me to the next round then found I was not up to their expectations - frankly I did not expect to get through after the pairing round.

But finally, I have joined Accenture. Hope I do well here.