Monday, October 31, 2005

Finally, I’m de-allocated and starting on the CRM

I’ve been de-allocated from my previous project last night! I have been working in it for 15 months. Oh my! It’s a huge relief. I was not sure about it till the last moment. Apparently the customer has requested our leadership to retain me in the project. But thanks to my PM, Sam’s extreme efforts I finally got de allocated and allocated to the new CRM project. I owe big time to Sam for this.

So await either extensive technical blogging or no blogging at all… if I get really busy.

My Nokia 6230i and My Next phone

I have been using My Nokia 6230i for about 5 months now. And it’s been awesome. I couldn’t have asked for more from a platform 40 phone. In fact it is still the top of platform 40. It has almost everything - EDGE, Bluetooth, IR, Radio, 1.3 MegaPixel camera, 30MB of phone memory plus a 64MB(upgradeable) MMC, 65k 208 * 208 display, live streaming supported media player (Yeah, I can watch streaming video), MIDP 2 Java apps, a XHTML browser… you name it.

But lately I’ve been feeling that it’s time for me to move towards a phone running an OS than firmware… I’ve been eyeing the Nokia Series 60, N series and O2s but all the O2s seem to lack good cameras. I think The Nokia 6630 and the N 70 seem to be the most affordable in the lot.

Sunday, October 30, 2005

Talking about the weekend and Kamal Hasan

Spent the last weekend in Colombo. Shared the pain of TWAIN with a friend on Saturday and went out with Sithira on Sunday. I intended to read at least 2 chapters during the weekend but didn’t read even a line.

Any ways watched a Tamil movie (with subtitles of cause) on Sunday and it was really good. South Indian movies have really evolved lately. The beginning of this new generation of south Indian films is I believe Kamal Hasan, who is one of the best actors I’ve ever seen. Even in the earliest films his talents are clearly visible. If you haven’t watched any of his films I encourage you to do so.

Friday, October 28, 2005

Map of colombo

A friend sent me this government map link. Seems it only has colombo :(

Basics

It is said that Buddhism is only for the wise. The underlying impression of this is that, to understand Buddhism, a person should have the capability to distinguish between good and bad independent from his personal preferences, influences or beliefs. The only constants in this universe that are independent from time are good and bad. Every thing else changes by the moment. A person who could logically reciprocate the good and the bad in some thing rather than believing in it, just because some one else said it or because it is of advantage to that person or because of any other influence, could understand the dhamma.

The reason I wanted to mention this is, recently few friends of mine made statements like “I would refrain from giving alms to monks because a certain monk who’s in politics has change the political party” based on a recent incident that took place in the political arena of the country.

Now in this scenario, there are several changes taking place.
1. The particular monk has changed from his original stance
2. Which in consequence changed what he represents
3. My friend has changed his stance on alms giving

A representation of a political party is necessarily the representation of its leaders at a given time.

Let’s think the first party which the monk represented stands for certain aspects which are good. So does the change of that monks’ political stand change the representation of the original party?

If the party he newly joined represents some thing bad, does he joining it makes that party represent good?

Buddhist monks represent the dhamma which the Buddha taught. If a certain group of monks (hopefully in good will) choose to move in to politics, does that make the entire Buddhist clergy representatives of that particular political party?

The offering of alms to clergy in Buddhist belief is an act of merit (This alone is a topic that I’d like to speak about in a different post). Does the change of a single monk’s political stance make the merit of offering of alms to clergy invalid?

Since the topic moved towards politics a bit lets apply this scenario to political view points as well.

I personally have a political view point. So I vote for a political party which closely represents my view point. The moment that party distracts from that stance my preference to them should change. But if a certain leader of that party distracts from his personal stance and move away from the party, should my preference to that party change?

On another angle, if a certain party represents a view that disagrees with my views I would not vote them. But if by any chance they change their collective view point (with viable honest reason declaration of cause) to some thing that agrees with mine, what would keep me from not voting them?

If I am not capable of distinguishing good from bad my decisions wouldn’t be solid and most probably would be based on either personal preferences or other influence. How ever if I am capable of choosing the good then independent from all variances my decision would be solid.

Thursday, October 27, 2005

Is .NET faster than COM?

Some times… not always. In fact most of the time it’s not. Especially not in a ported application. Where all the business logic is written in COM friendly manner. Speed is not the reason why .NET was invented. But some people expect it to be. And that’s what I’ll be trying to achieve today tomorrow and probably next week :(

Do you think some one can achieve something that he doesn't believe in?

Wednesday, October 26, 2005

Sri Lankan politicians and their challenges

At the Bodhu Samuluwa (Buddhist Conference) held at Panadura on 24th Oct 2005, Ven. Dr. Omalpe Sobitha Thero – Secretary of the JHU (Jathika Hela Urumaya) has accepted the challenge of UNP parliamentarian Dr. Rajitha Senaratna, who in an interview with Sunday Divaina (A local weekly newspaper) on October 23, called for a Buddhist monk or any person to have a debate on Buddhism with his leader Ranil Wickramasinhe.

The Ven. Dr. Omalpe Sobitha Thero, accepting the challenge for an open debate with the UNP’s presidential candidate Ranil Wickramasinghe, added that they would immediately request the UNP to present a date and time for the debate before the Presidential polls on November 17. And Mr Wickramasinghe could also accompany any number of monks or lay men as his advisers!

How ever the UNF has said that it require the acceptance in writing by 3.30 PM, 25th October (yesterday) at Sirikotha the head office of the UPF; further the UNF secretary has also stated that they would not confirm the reception of the acceptance (confusing statement). Yesterday’s news said that the JHU members had taken a written acceptance to Sirikotha before 3.30 but no one has come forward to accept it. Later they had taken it to the opposition leader’s official residence, and again no one has come forward to accept it.

It seems to be a really cowered act; if they challenged for a debate in public, why can’t they accept a public acceptance? And why couldn’t any one come forward to accept it when it’s provided in writing? If they cannot face a simple debate which they themselves called for; how can they rule a country?

Does any one have more information on this regard?

Tuesday, October 25, 2005

Sri Lanka Post Code Directory

I had this link for some time bookmarked in yahoo. Today while re-organizing bookmarks, thought it should be shared.

Any ways, changed the colour scheme of the blog - any comments?

Sunday, October 23, 2005

The role of attribute classes in .NET

.NET relies on metadata for a great extent for dependency information, security, component contracts etc. etc. Metadata is stored in the metadata tables of the assembly in machine readable format. The specifications of this format could be found in the CIL (Common Intermediate Language) specifications. CIL uses 32bit metadata tokens containing the table and the index to access these metadata.

Usually developers require passing additional information together with the code describing the code’s requirements, their intended purpose etc.. This information may be needed by the consumers of those assemblies or the .NET framework itself. Also this information is not relevant to the product domain. Rather it’s relevant to the code itself; meaning that what ever the metadata it uses, it shouldn’t affect the structure of the application.

A common example for this is Aspect Oriented Programming or AOP, where certain system wide aspects are addressed outside of object oriented designs.

.NET approach to address this requirement is Attribute classes. Attribute classes are also strongly typed and part of the framework. In fact CLR also uses Attributes for its functionality are sometimes referred to as pseudo custom attributes. Custom Attributes are the ones that developers write to request the compiler to generate metadata on a certain element.

One common example for a pseudo custom attributes is the ‘Serializable’ attribute.

[Serializable]
public class MyClass
{
//Implementation
}

My brother and I

My brother is 11 years older to me. Because of that huge age gap, there is a significant difference in our behaviours and attitudes; mainly, I think because of the different environments we grew in.
His teens were in 80s the dawn of the open economy in Sri Lanka (he is a banker). The culture was changing rapidly. Every thing was new to most of the people. Being the eldest of the family, he was held responsible for lot of things in his young age. He experienced the 88/89 rebel terrorism as a AL student. I always remember him as some one who’s matured & organised. Later he became a traditional and caring family man. Much like my father.

My teens were in the 90s the dawn of the technical era of Sri Lanka (I’m a software engineer). Being the youngest of the family was an excuse for me to be reckless, stubborn and irresponsible. I have experienced terrorism, corruption and crimes as a child. Yet I never see myself as matured or organised as my brother when he was at my age. I don’t know whether I would ever marry or not, but for sure I won’t be traditional.

It has always been wonderful to have a big brother like him. I believe he played a great role in my life, and still continues to do so. No matter what differences exist in our behaviours and attitudes we still share a great deal in common. I have learnt a great deal from him. Even through his mistakes ;-) so I could refrain from making them

Saturday, October 22, 2005

Again

Today on our way to Kandy we were nearing Warakapola when my radar
detector started to buzz. I hit the breaks and looked at the
speedometer. I was doing around 90kmph. Few hundred meters down a
policemen popped out from hiding. They'd caught me at 76kmph.
I just took my licence back from police last wednesday. It's been
merely 3 days and here I was caught again. Rs. 1100 and a trip to
warakapola, which is right in the middle of Kandy and Colombo. It was
the last thing I wanted. Luckily they saw the doctors pass of my
sister. And after seeing her doctors ID, they let us go (like doctors
have special permission to speed)
I believe speed limits in Sri Lanka isn't realistic. I mean, if i'm to
drive below 40kmph in town limits and below 56kmph in suburbs it would
take me at least 6 hours to drive from colombo to kandy. (My personal
record for this is below 1h - that day my mother had been admitted to
the hospital and we were rushing to see her) I think the speed limits
should be some where around 70kmph at least. And Sri Lanka desperately
needs high ways.
After the increment of traffic fines, it's very common to see police
'enforcing' laws. Not because they are committed to their jobs but
because they can take high bribes. Three of my friends had bribed
police during last two weeks. All bribes Rs 550. The reason behind
this odd number is that the policemen has a wonderful way of asking:
they promise to pay the fine on behalf of the offender! No papers
written, no licence taken, only the money under the arm... I as a
principle do not bribe. So am going through all the fuss when ever I
get caught for traffic offences - which is very often
--
Posted using my Nokia 6230i

Friday, October 21, 2005

Pictures I couldn't post

NC

Chamini

The Couple

Parking Windows

Today, among many other problems, we were hit by ParkingWindow exceptions - couple of them. Each for different reason. Worst part is, we didn’t had access to the code responsible for them. If you haven’t experienced this, be prepared. It has the ability to be a headache.

Vidura - Thanks for that nice piece of app

Thursday, October 20, 2005

Alerts on 2 GMail accounts

Have you ever wanted to receive alerts on 2 or more GMail accounts, without having to write your own application? I did want for 2. And, here’s the solution: Install both GMail Notifier and Google Talk, Have each configured to each account. And hurrah! It works. In fact Google Talk actually prompt to change between accounts. Neat eh?
May be when I’m free I’ll write an app for unlimited number of accounts... but if you have already done so, please let me save my time and share it with me :D

Wednesday, October 19, 2005

I got Books

Nalin, who was our architect - now migrated to USA, came to our office for a brief visit. And with him he carried in a box of books from his personal library. All popular and interesting titles. Ones I’m gonna read first are Essential .NET, Volume 1 - The Common Language Runtime and Applied Microsoft .NET framework programming.

By the light brown coloured pages of them, I can tell that Nalin has been reading them a lot. Mind you, these two are the ones Gaurav mentioned in his session on CLR 2 Internals during the Tech.Ed.

I may post on them... So stay tuned.

Tuesday, October 18, 2005

Tech.Ed sessions

Gaurav Khanna making the PowerPoint slides on the fly for the “CLR 2.0 Internals” session




Yik Joon Ho waiting for applauses


Sunday, October 16, 2005

Troubleshooter

I started my IT career as a systems administrator.
Since I was really good at systems software and
hardware troubleshooting all my friends and relatives
used to call me up when ever they had any problem with
their computer or network. But after I made the shift
to software development I lost the touch of it and
since I was down in colombo troubleshooting calls were
rare as well.
But this morning I had to help out my sister in-laws
brother with his ADSL and a downloading problem.
Luckily it required just some IE settings to be
changed and resetting the router. But that gave me a
clear picture of how long Ive been away from it. Its
not like Ive been away from computers, yet I didnt had
a clue how ADSL routers work.
Anyways hooked up with NC and Chamini for lunch and
this time took few photos. Would post them on Tuesday.
--
Posted using my Nokia 6230i

Saturday, October 15, 2005

Long day

When the day is eventful, and there's a lot to talk about it, you call it a long day. I just had one today!

Friday, October 14, 2005

My brother and sister in law had a baby daughter

Today, my sister and I rushed to Kandy in the evening as my brother
called us in the morning to remind us that Manori, our sister in law
is expected to deliver the baby tonight.
On the way, just before Kirillawela, I got caught by police overtaking
on double lines! Grr.. They held my driving licence and I have to go
to paliyagoda to get it back. It hasn't been two months since the last
time the Kadawatha police held it :(
However we arrived at the hospital few minutes before the delivery. It
is a baby girl. My brother already have another daughter but he's
happy about having another one.
--
Posted using my Nokia 6230i

Talking about software company structures – Part 5

In this post I would be talking about the desired composition across the designations for a small scaled software company. When ever possible I would try to produce approximate numbers.

In general largest projects undertaken by small scaled companies are of around 2500 to 5000 man hours. The desired billing model of them is per hour or per day based. There are companies undertaking fixed bid projects as well. In general the average size of a project team is comprised of around 5 engineers. The team size would depend on the dead lines and the size of project. Some times number of available resource would also count in.

In my opinion when ever the size of the development team requires being greater than 4 or, even though it doesn’t require that much of a team, the complexity of the project is very high, it is desirable to have a Lead heading the team. If the team is less than 4 a Senior Engineer should be able to head the team and hold the responsibilities of a Lead. When the team size grow, a senior Lead may be required. In general for 40 engineers there should be 5~6 Leads.

For a small scaled company an Architect is a far more valuable resource to be allocated to a single project. Based on the responsibilities of the Architect role it is desirable to share an Architect across 3~4 large projects. In proportion for 40 Engineers a Single Architect should be enough. This may differ based on the skills and experience of the Architects.

Same applies for Project Managers when it comes for allocating to a single project. But since the responsibilities of the PM role are quite pressurizing, it may be desirable to allocate a single project manager to 2 ~ 3 projects. So, for 40 Engineers, I may suggest 2 Project Managers. There could be exceptional cases in allocation when a project is critical for the company, where an experienced project manager would be handling a single project only.

Thursday, October 13, 2005

Second day of Tech.Ed 2005 - Sri Lanka - Rating

It was pouring the whole night yesterday and when my alarm rang at 7 am this morning (it has the sound of a rooster), it was the last sound I wanted to hear. So I snoozed it for another 10 minutes and hid under the sheets. When it rang at 7.10, I snoozed it again, and again and again. At last I got up around 8.10 and left home at 8.50 with couple of friends. When I reached Tech.Ed premises after breakfast on the way it was pretty late for any session.

But I got in to Vinod Kumar’s session on SSIS - Exploring Scalability, Performance and Deployment. He was really enthusiastic about what he was speaking about and demonstrated solid knowledge of SQL Server and related technologies. And he had pretty good control over the flow of the session as well.
My rating 3

Then I wanted to give a second chance to Janakiram in his session “Security Enhancements in Visual Studio 2005” only to be disappointed again. I believe he was not speaking responsibly and was not fully prepared for the session. I’ll just take one example where he made a wrong comment. Please correct me if I’m wrong.

He stated that if we execute an application which resides in internet or intranet domain by typing the address in internet explorer address bar it executes using the ASPNET user account. ASPNET Account is used for running the ASP.NET worker process (aspnet_wp.exe). This does not apply to code executed on client. There is a high probability that the ASPNET user will not even exist in the client side. If you execute an application in the above mentioned manner the application would execute in a partially trusted context under the currently logged in user of the client machine. You can check this out through the task manager. I have strong doubts about Janakiram’s preparations for these sessions.
My rating 1

Lunch - need not comment again on it. My rating 3

Next I went to the session “CLR 2.0 Internals” by Gaurav Khanna. It could have been a wonderful and productive session if not for the extensive and irrelevant questions from the audience detaching it from the course. I liked the style of Gaurav, he came to the session with no slide shows, and he had enough confidence to carry forward the session. From the very little time the audience allowed him with, he made it evident that he has an extensive knowledge not only of the internals of .net but COM, DCOM and host of other technologies. I just wish I had an opportunity to work with him. But unfortunately because the session was not successful I can’t give him a 5.
My rating 3

Yik Joon Ho was well prepared for his session on “What’s New in ASP .NET 2” probably after some rest. The session was really entertaining and organized with applauses every time he displayed a cool new feature of ASP .NET 2. Yik Joon Ho, being an architect adviser for sure knew what is behind the things he demonstrated. So he deserved all those rounds of applauses. If the objective of the session was to amaze the audience with the rich features of ASP .NET 2 and promote them to use it to gain high productivity and save time, it was really successful.
My rating 4

Next I decided to participate in the session “SQL Server 2005: A Technical Overview” by Vineet Gupta. This was the most productive session I ever attended in the Tech.Ed. Vineet handled questions really well, if the question was relevant to the session he answered it really well with full details; if it’s not, he quickly interrupt and requested to bring it up offline. I think this is what all other speakers should have adopted. And Vineet knew what he was talking about inside-out. He is the database guy in our imagination by looks and by knowledge. There was no doubt about his capabilities. Solid stuff from him, start to end. I Loved it.
My rating 4

The closing session was some what relaxed and all the speakers, MVPs and the organizers seemed to be really happy to have concluded the Tech.Ed successfully. They answered several questions receiving laughs smiles and applauses from the audience. After the closing session they hosted the Vista session again by popular demand.
My rating 3

I’m not the best person to rate the Entertainment Night as personally I’m not an out going or party loving person. But one thing I want to make a not on is that there was very little choice for vegetarians and few of us had to bear the thirst as we couldn’t find any non alcoholic beverages around. May be we were in the wrong place... so I’ll refrain from rating the entertainment night.

So my final rating for the second day at Tech.Ed is:

(3 + 1 + 3 + 3 + 4 + 4 + 3) / 7 = 3

As I was unable to register within the first 200 registrants I won’t be able to participate in tomorrows hands on lab sessions. So this would be my last rating on Tech.Ed. So as a concluding note I would like to thank the organizers for bringing Tech.Ed to Sri Lanka. This certainly could not have been an easy project but it was very well done. The Microsoft technical community owe a big thank to them.

But on my personal preference, I may probably not participate in future Tech.Ed or similar events. I have always been a reader than a listener and I feel classroom styled sessions doesn’t allow me to learn in my own phase. To be honest I hate when some one disturb the speaker to ask a question. It’s true that there were some very good questions asked and it contributed to the knowledge of others as well. But it disturbs the course of the session as it takes up time from the plan.

What I prefer about books is they cover every aspect of a subject unlike classroom styled sessions. Because of limited time and human factor involved in classroom styled sessions there’s a great possibility to forget and drop certain facts from the content of the subject. Since the authors of the books have enough time to review and revise the contents of the books, books are more consistent.

Wednesday, October 12, 2005

First day of Tech.Ed 2005 - Sri Lanka - Rating


At Virtusa we have this habit of rating qualitytative things in a scale of 1 to 5 usually 1 - unacceptable 2 - needs improvement 3 - meets expectations 4 - exceeds expectations and 5 - consistently exceeds expectations. The way we arrive at a final figure for a certain deliverable or individuals performance is by rating number of sub items and taking the average of them. Microsoft also has a similar way of rating using a bar of 0 to 9.

The reason why I wanted to say this is, I want to rate my experience on the first day of Tech.Ed. I’ll be using the Virtusa standard as I am a Virtusan.

The event started two hours late than the initially set expected time. The opening ceremony was some what traditional Sri Lankan styled with dancers, drummers, lighting oil lamps etc. etc. What’s special about the opening ceremony was the entertainment by the group of drummers which extended in to a considerably long time. Music was nice - a few more minutes would have made many developers give up IT and start a career in music. But I won’t take the credit away from the organizers for doing some thing innovative.
My Rating - 3

The first session I attended was Introduction to Visual Studio 2005 by Janakiram. He talked on Generics, Iterators, Partial Classes, and Anonymous Methods. He leveraged the session with the aid of a slid show and he sounded pretty solid until the Q & A time.

The first question was motivated by an example he provided on Anonymous Methods. In his example the signature was omitted from the inline method. So the question was “can’t we access the arguments which are received from the event?”. Pretty straight forward; any one who has read about Anonymous Methods in Language Enhancements knows that you can write the signature just after the delegate keyword and access them. You need not be a developer evangelist to know it. But the speakers answer was No!! And he sounded pretty confidant of the answer! Luckily a person spoke up and showed him that it is possible to do so and he admitted that he was wrong.

Second question was “Can we have a single partial class in two namespace?” much more basic than the first question. What the partial keyword does is acknowledge the compiler that there could be another part of this class in a separate physical file. Any one who knows about namespaces know that they are used to logically separate classes; which allows you to have two different classes in the same project by the same name just by differing the namespace. So the answer to that question is no. But the speaker wasn’t sure about this! He actually wrote a sample app and checked the IL before answering! But couldn’t explain how it could happen. He seemed to be under the impression since the keyword partial was used it may have been possible. He did not knew what the key word is used for!

I believe this is an irresponsible and unacceptable act by Mr. Janakiran. He’s not just another developer but he was representing Microsoft, the company which many of the people present trusted to deliver products and services they could rely on. It’s true that being a developer evangelist doesn’t automatically make you a guru on all Microsoft technologies. But before attending an event as Tech.Ed and conducting a session on a certain topic he should have at least read the relevant material available on MSDN.
My Rating - 1

Next was the lunch break and since I wasn’t there to eat and there was nothing to complain about, I’ll rate it 3.

Next two sessions were “Programming Indigo” and “Transactions in Webservices and WS: other things developers love to hate” by William Tay. He delivered an extensive coverage on both the topics. He kept the attention of the audience intact by few wonderful comics and proved not only his in-depth knowledge on the subject but his abilities as a lecturer. The only problem was the time reserved for his session was not enough to cover the topic. Mostly because he knew inside out of it and wanted to speak about it as much as possible. I believe much good could have been done if he was given a whole day instead of two sessions. I personally appreciate his contribution (I didn’t know 90% of the stuff he spoke about and I believe I understood what he said)
My Rating - 4

Next session was “Managing the Software Lifecycle with VS 2005 Team System” by Yik Joon Ho. He demonstrated the fantastic features of VS 2005 Team System and seemed to have an in-depth knowledge on the product. But he seemed a bit tired probably after a long flight or some thing. But overall he was able to wow the crowd.
My Rating - 3

Next I had the option of choosing between “Upgrading from VB 6 to VB .NET” by Mr. Janakiran again, Given the facts that I’ve been doing for some time and Mr. Janakiran was not able to please me with his first session I looked for the other options at hand. Which was “XML and SQLCLR best practices” by Vinod Kumar or Drive back home as it was past 6 pm. I peaked in to the Vinod’s session but it seemed already started as my previous session got a bit extended due to the fact that there were lots of things to be talked about. So I decided to head back home.

So may final rating for the first day ay Tech.Ed is:

(3 + 1 + 3 + 4 + 3) / 5 = 3

Note that although the overall rating is 3, which is meets expectations; I hope Microsoft wouldn’t educate the speakers so that they would be better prepared when they present themselves in such events in the future.

So folks, stay tuned for day two ratings tomorrow.

Tuesday, October 11, 2005

Counting the minutes

Ok ppl, few hundred minutes left for the big event. Hope to post daily during Tech.Ed as well. Stay tuned!

Tech.Ed Tomorrow

With just few hours left for Tech.Ed, I thought I’d postpone my post on small company structure and talk about Tech.Ed.

One thing for sure it’s gonna be huge! Yes there are lot of people around who registered through the web but haven’t received any confirmation yet. So many can give up their hopes on Hands-on lab sessions on day 3 as they claim only the first 200 registrant would be entitled for it. But I think they’ll at least facilitate for 300.

I don’t know how many Microsoft initially expected to turn over at Tech.Ed but I’m pretty sure there’ll be multiples of that number.

They have invited some companies to host stalls, so even if you won’t make it to Microsoft sessions, you won’t be left out.

But I keep wondering, this is a Microsoft event, so what should we expect to see in these stalls? Most probably they’d exhibit how they have applied Microsoft technology in practical situations, what were the issues they came across and how they addressed them. Beside that, we can also expect them to show off a bit. So it won’t be boring for sure.

Beside all that I’m looking forward to meet new colleagues. So if you see me there, please come have a chat.

Monday, October 10, 2005

I’m being sponsored as well!

I’m the 22nd Virtusan to be fully sponsored by the company for the Tech.Ed 2005 Sri Lanka.

There’s gonna be a Virtusa stall in the Tech.Ed and there’s gonna be several Virtusa Software Architects manning it. I may hang around there during the intervals but you should direct all your architectural, C++, and .NET questions to people like Thusitha Dharmaratne, Manjula Yackdehiarachchi, Shiham Naufer, Uditha Weliwita etc. etc.

Sunday, October 09, 2005

Talking about software company structures – Part 4

Ok - today’s topic - the last role for a small scaled company (may be I’ll add another optional role later) - Project Manager Role.

A Project Manager should plan, manage and allocate resources, shape priorities, coordinate interactions with customers and users, and keep the project team focused. The Project Manager should also establish a set of practices that ensure the integrity and quality of project artifacts. Basically if the Project Manager is incompetent, no matter how competent the technical team is, there’s a greater chance of the project failing.

A Project Manager should apply project management knowledge, skills, tools and techniques to a broad range of activities in order to meet requirements and to deliver an end result for a particular project.

A Project Manger should posses following Skills:

  • Experience in the software development lifecycle, the domain of the application and platform
  • Good estimation, planning, time management, scheduling, project costing, and budget management skills
  • Competency in resource planning, resource management, and procurement
  • Ability to analyze risks, dependencies, and make tough decisions
  • Presentation, communication, and negotiation skills
  • Experience in Project Management (In smaller projects a member who’s interested in becoming a Project Manager could play the role of Project Manager)
  • Leadership and team building capabilities
  • Conflict resolution, problem solving skills, and the ability to make sound decisions under stress (A Project Manager shouldn’t be some one who lays all the pressure on the shoulders of the technical team. He should shoulder at least 50% while the Architects and Leads should account for another 40%)
  • Deliverables based management, a focus on the delivery of customer value, in the form of executing software that meets (or exceeds) the customer's needs.

As with all other designations, this could be stretched to three designations. More experienced project Managers could handle tough customers and extreme pressure with around 30 team members while new ones could handle lesser hostile ones.

Be on alert – you are on your own!

Last night at around 11, we heard a police vehicle going around the area announcing “We have received information during past few months about an organized gang of thieves who break-in and rob houses during the day. We advise you to be on alert and if you are leaving the house during the day please inform your neighbours” and the played some rotten music as interludes!

It’s like saying “we know there are thieves, but there’s nothing much we could do, so if you can’t protect yourself, get your neighbour to help you out” – ok may be they did it in good faith.. Yet I feel they should at least patrol the area during the day. Do some thing more, besides warning the public in the midnight.

Exhausted, but got the car repaired

Left colombo around 5am yesterday with sister and couple of friends.
As soon as we arrived at home we had breakfast and then I took the car
to a mechanic for some long pending repairs.
They costed me Rs. 35k (US$ 350) and 8hours of starving under direct
sun light. But at least I won't have to take it to a mechanic again
for some time.
After a very late lunch and a bath I went to the Kandy town to meet NC
only to be caught in a huge traffic jam caused by a political rally
organised by the opposition. Oh I hate these politicians!
We missed Sithira in our brief union, but that reminded me that he has
started a blog at http://360.yahoo.com/sithiradw
--
Posted using my Nokia 6230i

Friday, October 07, 2005

Talking about software company structures – Part 3

Let’s discuss about the role of an Architect today.

The Architect role has overall responsibility for the software architecture and infrastructure architecture in a small scaled company. The responsibilities include:
  • Identifying and documenting the architecturally significant aspects of the system, including use case, design, implementation, and deployment "views" of the system.
  • Driving the major technical decisions taken for defining the architecture including providing rationale for these decisions, balancing the concerns of the various stakeholders, driving down technical risks, and ensuring that decisions are effectively communicated, validated, and adhered to.
  • Defining the engineering guidelines for the projects. Reviewing the detail design of the system done by leads and engineers.

It is evident that an Architect must possess maturity, vision, and a depth of experience that allows for grasping issues quickly and making educated, critical judgment in the absence of complete information. He/She should be academically qualified and should have in depth knowledge of technologies used in the company and tools which are used for modeling and defining the architecture. In an ideal situating an Architect should have at least 6~8 years of industry experience functioning on all previously discussed designations and roles.

The role of Architect also could be expanded in to three designations as discussed with relatively to the Lead and Engineer. The designation would be an indicative of the Architect’s experience, maturity and competency.

I will talk about the Project Manager role next before coming up with a formula of density, at each role, to assemble a small scaled company.

The nuisance by the name of submitting nominations for presidential elections

The two prominent candidates for the Sri Lankan Presidential Elections, Mahinda and Ranil are due to submit their nominations today. And the city traffic police have made a complete nuisance out of it. Blocking half the roads to the Colombo city and creating huge traffic jams for hours.

They claim that there are serious terrorist threats. But I believe it’s their own fault that terrorists exist in this country and if there’s a threat, it’s their problem. Why should the general public go through such hassle and state waste time and money because of this?

Thursday, October 06, 2005

Talking about software company structures – Part 2

Yesterday I talked about the role of engineer. Today, I’ll talk about the role of “Lead”. A lead’s responsibility is to “own responsibility of a project level deliverable” In a small scaled company a Lead would own the tasks of technical deliveries, assuring the quality of the technical deliveries, communicating with the senior designations and customers with regards to the technical verifications and status updates and setting expectations.

A technical lead should be well competent in technology and should poses good leadership skills. He/She should also be a fluent communicator. Responsibility of component collaboration level designing and over seeing the specialized designs of engineers lies with the Lead. He/She should have a thorough understanding of the technologies and architectural frameworks and designs used in the project. He/She should mentor engineers and harvest a healthy productivity from them. Involvement of a Lead in coding could be less due to these responsibilities. But he/she should be able to mange time well and contribute to the project as much as possible among other tasks.

This role also could be expanded in to three designations as we discussed for the engineer role. An assistant/associate lead would lead a 5~10 member project; a Lead would own a 10~20 member team while a Senior Leads could lead a much larger and complex project and also empower themselves to act in higher roles.

Wednesday, October 05, 2005

Tell me what would you like to see from Virtusa?

There’s going to be a Virtusa stall at the Tech.Ed. We’ll be presenting on Productization® methodology, our extensive use of Microsoft technologies, and probably but not surely our process.
If there’s any thing else that you would like to see from us, just send me a mail.

Talking about software company structures – Part 1

There’s been lot of talks about software company structures, different roles/designations, responsibilities of each role etc. The company I worked for earlier has gone through a restructure and another which I worked earlier is planning for one. And Dinesh is talking about the responsibilities of enterprise architects.

So in a series of posts I’m going to express my views on how a small scale company with an average of 50 employees should be structured, what are the roles, designations and responsibilities etc. this would be how I think things should be. I’d talk only about roles and designations related to the core business.

The main work force in a software company small or large is no doubt engineers who develop and test the software. I’ll name this role as Engineer. There are three main categories, that could be identified in this level; Software Engineers, User Interface Engineers and Quality Assurance Engineers. (In a small scaled company testing may or may not be a specialized task)

The definition of the responsibilities of a Software Engineer (developer) would be “To develop software elements and components” this would include a certain level of designing within those elements and components. A UI Engineer’s responsibility would be to “Design an UI based on requirements and guidelines provided”. A QA engineer’s responsibility is to “Test a certain set of functionality in the product based on project standards”.

I’d clarify “Engineer” as a role, mapped to a project. Designation could be stretched to facilitate a sense of career growth within the same role.

An entry level engineer could be designated as Assistant or Associate Engineer; a more senior engineer could be designated as a Senior Engineer.

Designations could be used as a measure of competency for Engineers when assigning tasks. An Assistant or Associate Engineer should always be deployed under guidance of an experienced Engineer and a Senior Engineer could be assigned with more complex tasks and greater responsibilities to empower him/her within the project. If the project is small and requires only one engineer, it should be assigned to a Senior Engineer. A Senior Engineer also can play a higher ‘role’ in a smaller project with 2~3 engineers.

This eliminates the risk of failure and mishaps which could arise if a task is assigned to a less experienced engineer and is more profitable to the company enabling it to harvest full potential of the engineers.

Tuesday, October 04, 2005

Generating the web service proxy classes without the web service

Our customer, who’s in US, and us, in SL, edits the same code base. This has many a times caused mishaps of all sorts. Today, they had checked in a project file and some source files to the source repository after adding two web references and modifying the code to work with those services. But he hadn’t checked in the generated proxies or the web service descriptors. What’s worse is that we don’t have access to the services! They are hosted in their LAN. So we couldn’t generate the proxy classes either.

That’s why I thought of making this post. If you do not have access to a web service, you still can generate the proxy classes (which mediates the web service and the clients doing all the translation stuff so you could code as if the classes in the web service are in the same solution you work in) if you have the web service descriptor language (wsdl) file which is valid to that service. Use the wsdl.exe to generate the proxy classes and add them to your project. This is adequate to continue coding and compiling the project without trouble. But in my case I don’t have the wsdl either :(

Monday, October 03, 2005

What’s good about my employer

I have never celebrated my birthday twice while working for any other employer other than my current. From April 2001, I have been employed with 5 different employers and I quit two of them without finding a new one! I never had trouble finding employment. There for job stability was never a concern for me when I search for jobs. It’s not that I never considered leaving my current employer; in fact I wanted to twice; but each time I realized that it’s not a wise thing to do. So in this post I will try to summarize what I like about my employer.

Firstly, it’s the culture. Every employee could work with pride (at least most of the time), there’s no discriminations and every one’s made comfortable at work. You could talk with the senior managers of the company over lunch as if you were friends (and most of the time they treat you like friends)

Secondly it’s the well defined operational structures, every responsibility is well defined, there’s a process of doing every thing and there are alternatives to them if the primary fails. I MEAN for EVERY THING. This is one thing I have never seen any where else. And hope other smaller software companies adopt a scaled version of it for the benefit of IT employees in Sri Lanka.

Thirdly, the opportunity to work on enterprise level applications (not always using cutting edge technology - as we are a service oriented company, we serve what our clients wants). I get to do what most engineers in Sri Lanka only get to read about. This is the largest of its kind in Sri Lanka and we are unparalleled when it comes to size, structure and capacity.

Fourthly, People I get to work with. The best architects and technical gurus in the country work here because no other company has the capacity to employee them. The experience I gain by working with them can not ever be over valued.

Of cause there are negative things as well, but the positives still take over. That’s why I’m still employed here! I may feel like leaving time to time… but it would take a damn good offer for me to leave this place.

I’m topping all search engines

I just did a search for “mahasen” in Google, Yahoo!, MSN and A9 and guess what? http://mahasen.blogspot.com/ comes on top of all results. There was a time when mahasenpaya.tk used to top them but it has bee some time since I gave up maintaining that site.
I added a hit counter to the blog on 12th last month and I have received 537 hits for the past 22 days. Hmm... nice to know people read my blog... it motivates me to post daily.

Sunday, October 02, 2005

Changing the skin vs. changing the guts

While talking about extendibility in my last post I pondered about some ways of adding additional functionality to an object. As soon as I said “adding additional functionality”, I’m pretty sure many of you may have shouted “Decorator” in your minds. Yes but what about “Template Method” and “Strategy”? Can’t they be used for this purpose as well?

Let’s discuss what each design pattern does in brief so we could talk about their applicability. My objective is not to repeat design patterns here but to shed a little light in to thinking that goes before choosing them. So if you want to read an extensive discussion of these three design patterns, this isn’t the place.

What does the decorator do (most commonly used version of it)? It adheres to a common interface which it shares with the object it decorate and wraps the object mediating all messages to and from that object so that it could provide the extended functionality. So it forces you to code for the interface rather than concrete types - which is what you should be doing ideally. What’s good about it is you can get rid of it at runtime as you want. It’s just as adding a new skin to your object – and removing.

So when would you want to d this? When you want to reuse decorations and you want it to be dynamic. i. e. you don’t want to sub class because you’ll end up sub classing a large number of classes to add the same code or you want to be able to add-remove this behavior at runtime without affecting other objects. Or you simply can’t subclass it as it’s a sealed class!

What does the “Template Method” do? It calls abstract or virtual methods insides an algorithm so subclasses could override those methods to provide their own functionality. This allows you to code with more specifically typed code but if you have it, you can’t get rid of it in run time. So this is changing guts.

So when would you want to do this? When subclasses have their own way of doing certain little things but as a whole the functionality could be reused and to provide hook up points in your code so subclasses can override certain functionalities of the base. When you are changing guts, you should be working with your own code.

And finally what does the “Strategy” do? It makes clients commit to an interface to depend for certain operations; there by making it possible to change those operations by changing the object that represents that interface. This is a real dynamic way of doing things. This client is the one that we are planning to add additional functionality. This is like having your guts out side so they could be changed without affecting the other parts of your body!!

When should you be using this? When you want to encapsulate the implementation/behavior of your operations or when you want to interchange the behavior of your operations or when there are related classes which want to re use interchangeable common behaviors or when the behavior of an object should be changed based on conditions.

The “Template Method” and the “Strategy” are behavioral patterns; which means they deal with the way objects interact and distribute responsibility, “Decorator” which is a structural pattern deals with compositions of objects.

So the next time when extendibility hits you, ask yourself the question, “Should I be changing the sin, you should I change the guts”?

Saturday, October 01, 2005

What exactly does a CRM do?

A CRM is essentially about customers, from the business's perspective. So what does a business wants to do with its customers?

First of all it wants to store their information together with their history of interactions with the business. Obviously it would categorize and produce reports of them based on various factors of
those interactions. This information would be used to identify new potentials for the business and where the business is failing.

Secondly they want to organize promotional events and track them by various aspects. These could target existing customers and new customers.

Thirdly they would want to have a loyalty program for their customers, which would encourage them to do more business with them, and attract new customers.

Each of these requirements has to be further dissected as they represent really complex business requirements as vague expressions. Then the software requirements would be extracted from those business requirements.

A commercial product that is built to address these requirements should be highly scalable, extensible, configurable, interoperable, platform independent and highly available. As the potential customers could be of various sizes of organizations both geographically and
operationally (Be warned - We are talking about customers who has thousands of access points spread over dozens of countries! - I'm talking for real, this is really an global enterprise system we are talking about here), requiring rigorously customized functionality from the system, who use all types of hardware and software solutions from other vendors and require the system to integrate with them.

That leads us to find out what are the industry accepted standards for CRM software. But the fact that a CRM software could be used in many industries and those industries could most probably have separate standards (and for the fact that I'm interested in only one industry
right now) requires us to narrow down our CRM to a single industry: Retail.

IXRetail and Microsoft's .NET Connected are two such standards. But on my personal preference of approach, before going in to details of those standards, I would continue to work on clarifying the business requirements with just a little bit of an idea for what those
standards are. At this point all that matters is the knowledge of requiring adhering to some standards. Where they are required is still to be realized.

Spending the weekend in Colombo and planning work ahead

After going to Kandy almost every weekend for the past few months, I stayed back in Colombo this weekend. Being sleepcoholic I am, I slept well till 9 a.m.

Having nothing special to do during the weekend, I plan to prepare myself with some home work for the new project. And I would blog what I do, so the readers of my blog could get an idea of my approach to a project.

First of all I’ll list the constraints I face in doing so;

• I use my Nokia 6230i to connect to the internet. It’s strikingly fast (produces an average of 12 kilobytes per second downloads without down load accelerators) but I have to pay on a per KB basis. So I won’t be browsing much from home. That means my posts wouldn’t contain much information from the web.
• I don’t have much experience on enterprise level customer relationship management (CRM) and I have very little knowledge about it.
• I can’t publish stuff that is directly related to the project that I’m going t be doing in the blog as it could cost me my job! Yes it’s highly confidential information that we deal with, so I’m bound by some pretty tight nondisclosure agreements.

Said that, let’s see what I could publish;

• As I gain a general idea of CRMs and market leaders in CRM products I may publish them.
• As I find out the essential parts of CRMs and what makes each product from each vendor unique, they would be published.
• As I identify high level logical and physical architectural requirements of the system I will publish them with my thinking process behind them

But first of all, I’m going to brush up my technical knowledge from basics to advanced techniques. So you could also stay tuned for some interesting technical facts which I may probably visualize through my own vision towards them.