Monday, October 31, 2005
So await either extensive technical blogging or no blogging at all… if I get really busy.
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
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
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
Do you think some one can achieve something that he doesn't believe in?
Wednesday, October 26, 2005
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
Sunday, October 23, 2005
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.
public class MyClass
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
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
Vidura - Thanks for that nice piece of app
Thursday, October 20, 2005
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
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
Sunday, October 16, 2005
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
Friday, October 14, 2005
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
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
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
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
Ok ppl, few hundred minutes left for the big event. Hope to post daily during Tech.Ed as well. Stay tuned!
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
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
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.
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.
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
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.
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
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
If there’s any thing else that you would like to see from us, just send me a mail.
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
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
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 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
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
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.
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.