Friday, March 31, 2006

More search options

Google has become the de facto search engine of the planet. Frankly, I personally wouldn't know how to run my life without Google. Definitions, weather, technical problems, etc. - type it into the Google toolbar and hit ENTER. I have heard some of my developer friends say that they would rather resign than work in a place where they cannot access Google.

They used to say this about lawyers: "It is not what they know about the law. It is knowing where to look for it." Well, you know where to look now. Make it your home page. Download the desk bar. Turn the Internet Explorer bar into a search textbox that goes to the all-knowing search engine.

Nevertheless, there are some other search options that you may want to use to complement your use of Google. One that I use from time to time is vivisimo.com. This search engine combines the various search results into categories which allows you to skip search results that don't make much sense. For example, searching for "windows" results when you don't mean the Microsoft version, just the Home Depot one.

Wikipedia is another option for collecting information about something. Obviously, it is a web-based encyclopedia, not a search engine. But think back (unless you are too young to remember!) to the times when the Internet wasn't there. If you wanted information, you would look up research material, including encyclopedias. Wikipedia is the same thing, but better because you can look up information much more easily.

Wikipedia is very useful for consolidated information about a particular topic. I had concerns about the accuracy of the information because of it being edited by authors around the world, but if the open source environment can create quality software, it can also create quality documentation through the peer review process. Also refer to Microsoft Encarta and Encyclopedia Britannica - however everything is not free there for you to browse.

Answers.com is the other search engine you just have to explore. You can type in questions to search on. A Google Suggest-like functionality allows you to choose from interesting options. The search arranges the results in a more helpful manner.

So, there you go. I still think Google is the best and I find nothing that would drive me to Yahoo! search or MSN search. I don't really understand what they are trying to offer anyway - the relevance of the search results have yet to match anything that Google provides. While you are spending billions of dollars in creating a "me-too" system, why not offer some useful variations while you are at it?!

Thursday, March 30, 2006

Serving Multiple Masters

Are you overwhelmed? Having difficulty prioritizing your tasks? Every task on your plate seems urgent? Many people on your back asking you to do stuff? Your experience may be due to serving multiple masters or systems. Let us see how this works.

When different persons give you tasks, they have no idea about your current workload or what other tasks have been given to you by other people. For them, their task is paramount, and probably rightly so from their perspective, because they may be responsible for its completion.

So now you have a bunch of tasks, all with high priority and required immediately, but you only have so much time to accommodate everything. Inevitably, stress and failure result. When you start skipping deadlines, the others gets aggravated and you are put in more pressure.

There are a few ways around this situation. One method is to create a priority list for the persons who are giving you tasks. You may have a Vice President, your direct managers and persons from other departments giving you tasks. Arrange them in a descending order of importance. When you receive a task from a person who is lower in the hierarchy, inform him or her that you are working on a task by the superior and then you can take up their task. The advantage is that the junior will not ask you to do something that would affect the superior. And if they insist, you can ask them to talk to the superior directly and get their approval. 99% of the time, they will opt to wait.

Now, suppose the superior asks you to do something when you are busy with other tasks. The simplest way is to inform everyone, through a mail to them CC'ed to the superior, that the superior has given you a very important task and their task may be delayed. Again, you have put the onus on the junior persons to get permission from the superior if they want their task to gain approval.

The above is a political solution which is entirely governed by who has the most power or clout in the office. A better solution is to create an automated queuing system. Such an application is a first-come, first-served system: Those who come later have to wait. The key point is "automated", which means that you should not be on the line to give estimates about wait or delivery times. Let us explore the mechanics of such a system.

Anyone wishing to give you a task logs into the automated system and adds a task. If the system finds other tasks for you, it will estimated the last completion time for those tasks and informs the person that, say, their task is No. 15 on the list and it will be taken up 5 days later. The system will send you an email informing you of the new task. You will log in and fill in the estimated time - the system will prevent you from creating time conflicts or scheduling outside your working hours. Once you finish, the person is informed of the estimated completion date.

Many individuals are very eager to please. When someone, especially a superior or a commanding person, is giving them a task, it is very difficult for them to inform them directly that they are already overwhelmed with other tasks. An automated system reduces the personality factor in these interactions to some extent.

The biggest disadvantage of such a system is the level of discipline within your organization. Some persons, especially those higher-ups who are not used to automated systems, may wish to avoid putting tasks in the system and side-step it by informing you directly. You are back to the same problem.

A final solution I can think of is to designate one person as your master and tell him that you want all tasks on your plate to be prioritized. This is usually your direct reporting manager, which is generally a good idea, because he or she will be doing your review too. If anyone informs you about any task, ask them to talk to your manager.

Keep repeating the sentence "Talk to my manager" and memorize it. By doing that, you are now absolved of having to track your priorities. When you are having problems keeping things straight, talk to your manager and re-shuffle tasks as needed. But remember: now the manager's job is on the line based on your performance. Never under-estimate or deliver with low quality. Put a reasonable buffer in your estimates and ensure that you meet your deadlines.

Managing the prioritization of your tasks is a great step in keeping stress out of your job. Usually people are good in handling one task at a time. It is those unplanned tasks that disrupt schedules and play havoc with timelines. Using a mechanism for prioritization - a single manager, an automated system or prioritizing the seniority of the taskmasters - will help you to manage the system better.

Wednesday, March 29, 2006

A few meeting ideas

Even if you have nothing to do, you will always have meetings. There will be meetings with your bosses, other departments, customers and your subordinates. Apart from the obvious items like agenda and action items, what can you do to make a meeting productive? Here are a few tips:

  1. Arrange meetings at times when people are not pressed for time or are distracted. Early mornings are not good because generally people are getting their day started with phone calls and emails. Close to lunch means someone will be hungry. Evenings means someone wants to leave early. The best times in my opinion are to start between 9:30 am and 11:00 am, or between 1:30 pm and 3:00 pm. Don't try to start right after lunch with a customer, because that may mean you missing your lunch because of travel time!

  2. Indulge in some small talk to keep things friendly, but get to the point very quickly. Try to end the meeting before the scheduled time. Talk less. Listen and ask questions. Have paperwork prepared beforehand. The more you prepare before the meeting, the less time you will consume during the meeting trying to sort things out. Place multiple clocks in your conference room so that everyone knows what the time is and avoid dragging the meeting on.

  3. Instead of taking notes by hand, bring a laptop and projector with you. Show your notes to everyone as you type them so that they can confirm the decisions that are being made. If you are doing a conference call, share your desktop using a tool such as Raindance. One obvious point is that when the meeting is done, you don't have to type up your minutes. If there are no action items for you, the meeting is really done.

  4. Limit the meeting to only those participants necessary for the meeting. Do bring decision makers into a meeting - that results in a practical session instead of a brainstorming exercise. Don't invite persons with a negative mentality to a meeting as they will act as a damper to the discussion.

  5. On items in your agenda, make tentative decisions instead of "taking it offline". You should come to meetings expecting surprises and be prepared to spend time talking about it. Postponing decisions (unless there is no alternative) will lead to a lack of interest in the meetings, and result in less productivity in the future.

  6. Maintain a positive attitude. Be open. Avoid games of any kind. Make it easy and comfortable for people to attend the discussions. Never criticize someone in front of others in a meeting - Now THAT is something you should take offline. Invite suggestions from all.

The end goal of a meeting should be to accomplish something - Everyone should walk out of the meeting with a sense of achievement and satisfaction. And tangibly, there should be well-formed action items or decisions on the items in the agenda. If that is done, you have conducted a successful meeting.

Tuesday, March 28, 2006

The Good Programmers

The post "Why Good Programmers Are Lazy and Dumb" by Philipp Lenssen is a very interesting read. To be a successful and agile development shop, it is not enough to have good project managers, architects and designers, you must also have really good programmers. They do the actual coding - the output that directly contributes to the success or failure of a project.

Since it is tough to recruit and retain good programmers, most companies create processes to reduce dependence on good programming talent. To an extent, this is true. Ensuring proper documentation, quality processes and metrics collection allow you to manage defects and maintain a certain level of quality. Software processes reduce "noise" in the project which negatively affects the project.

But process "manages", it doesn't "lead". Let us take an example. A process may seek to manage delivery time and bug count. Bound by this criteria, the programmer gets the job done by the deadline and exercises all the documented test cases successfully. The process may not care about the internal code quality - did the developer write the code from scratch or did they choose a tried-and-tested library function?

Now you can start putting in processes to try to manage that, but there are many unwanted side effects. Say you want a process that places importance on less lines of code (LOC) in an attempt to encourage reuse and streamlined code, but that encourages programmers to skimp on validation code and effective error messages. On the other side, you cannot measure LOC productivity because that encourages developer to split up lines.

The point I am coming to is that it is not easy to reconcile conflicting parameters simply through a software process that involves metrics collection. You need to add the people factor into it - you need programmers with a certain bent-of-mind and, whenever possible, with the correct experience.

The best programmers have a overwhelming need to organize. They religiously follow their own standards in their code. They are constantly cleaning up their code to make it shorter and more legible. They are interested in frameworks that keep code in neat pigeonholes.

As Phillip mentioned, good programmers are always looking for ways to reduce repetitive work. Good programmers like challenge. They don't like repeating the same boiler-plate code everywhere. They build or use code generation tools, they refactor, they use libraries.

Good programmers are never satisfied. They probably want to have one line of code do the entire program. They are inquisitive and always learning about new stuff, because they think they are still dumb and want to understand more.

When you have such a person on your team, you will find that code maintenance becomes less of a nightmare. At this point, the software process helps, because it helps manage the talents of the programmer with the business needs of milestones, deadlines and functional quality.

Monday, March 27, 2006

Gmail Features

Gmail, the email service offered by Google, has been around for quite some time now, although it is still in beta. You cannot sign up for Gmail, but if your friends have one, they could invite you. I have been using Yahoo for my personal email and I have been toying around with the idea of switching over to Gmail permanently. Here is my analysis of the situation, starting with the good stuff first.

  1. Lots of storage: Before Gmail came around, Yahoo and Hotmail were offering 2 to 4 MB storage, which required one to constantly delete emails and be careful not to exceed the limit to prevent incoming mail from bouncing. Those days are over now. When Gmail started with a 1 GB free storage, it seemed crazy. But it started making sense when Yahoo also started offering the same. They were fleecing us! Hooray for competition.

    Of course, this point is no longer a differentiating factor now since both Yahoo! Mail and Gmail have free storage in the gigabytes. I don't receive any personal emails that would fill up that space. Emails with photo attachments have been on the decrease as people use online photo sharing services.

  2. Gmail saves Google Talk messages. This is a big plus when compared to Yahoo! Messenger and Yahoo. When you use multiple systems (at home, work or on the road) to chat with someone, Google Talk messages are saved to the server-based Gmail application. This makes it easy to pull up some message instead of having to access the system on which you chatted.

  3. The AJAX functionality (which means "no page refresh" when you hit any button) is also a very welcome feature. It feels both cool and odd at the same time to use the AJAX features, especially after a decade of waiting for the screen refreshes. Yahoo! has nothing to offer so far, but the new beta site is coming up with an Outlook-like interface which I believe has AJAX features.

  4. The first of the two features which is stopping me from switching over to Gmail is the lack of a synchronization feature for the Address book. The Address book does not have as many features as Yahoo does, either.

  5. The lack of folders in Gmail is very confusing. Because of Google's emphasis on search, they state that labels are better for searching than folders. This is okay only if your Inbox is very small with few emails or you are very disciplined in labeling emails you receive. In fact, the whole concept is as ridiculous as saying that you can have one folder in Windows Explorer and just use labels to search them.

Final assessment: I am going to hold on to my Yahoo account and see how the new beta version pans out. Gmail may make its move sooner. It will be a great time for consumers.

Sunday, March 26, 2006

Understanding the Manager

Everyone has, at one time or the other, had something to say that disparaged their manager. Unless you are a complete toady, you will find yourself disagreeing with your manager at several times. It doesn't help by just complaining about it. So how do you communicate your disagreement and why should you be careful about it?

Let's first look at what typical managers do when they have an action plan. You may be doing the same thing with managing your subordinates or, if you are not yet a manager, your personal life. This may feel like looking into a mirror.

  1. Most managers invest considerable personal emotion into their decisions. They demand respect for their ideas.
  2. They want to be in control all the time. I don't necessarily mean controlling - I mean to say that they want to have a handle on the progress of things. Not being in control makes them fear that things are going wrong.
  3. Managers may invite feedback from others, but they have to be comfortable with the final decision. The decision may be made quickly or not, but the manager has concluded his or her mental deliberations and is comfortable with the decision.
  4. They want others to accept their plan and give 100% cooperation and energy in moving the plan forward.
  5. They don't want to see someone deviate from their instructions without informing them and getting their consent, because of the risky and uncertain nature of such actions.
  6. Ideas that supplement the main action plan are entertained if they result in easier and faster achievement of the plan or if they require fewer resources.

Let us say that you don't like the plan. You may feel that the plan is or sections of the plan are fundamentally flawed because you see obstacles that the manager does not. How do you handle the situation delicately? Let's look at each of the above points:

  1. Don't get emotional or personal when discussing your objections. Don't try to sound more clever or superior. That puts the manager into a defensive mode. You are not talking to boost your ego. You are there to achieve something.
  2. Respect the manager as an individual. People become managers because someone promoted them there on their achievements. Their plans may be stupid, but they may not be. They may have their reasons which you are not aware of. So don't pre-judge them. This may be hard for you if you have been reading too many Dilbert cartoons. :-)
  3. Be ready to hear "No" for some, if not all, of your objections. You shouldn't be emotionally attached to your thinking, otherwise the discussion may end up as a shouting match. You may have to agree to disagree.
  4. If you are given a "No" answer for your suggestions, you must honor that decision. Mutual trust is vital.
  5. Ask questions starting with "How do we handle ..." or "What do we do if ...". This puts the manager into a problem-solving mode, where he/she can come up with answers to your obstacles. Don't start providing answers immediately. Remember - you may not have the right answers, either.
  6. Don't try to get everything achieved in one discussion. You may have to go back and then send questions or queries through email or set up another meeting. This maintains a dialog between you and the manager and results in an open line of communication.
  7. Find out about the manager's objectives - provide alternative courses that meet the same objectives with fewer resources, quicker delivery or less risk. But remember that a fundamental change of course may result in the manager's losing face in the organization and is less likely to be approved.

Work with the manager. Give him or her your full co-operation. Provide regular feedback and communicate frequently. Discuss your misgivings with your managers directly instead of with your colleagues, unless you want to get their opinions before talking with the managers.

The above points are about differences of opinions in strategy and technical execution, when the manager is trying to meet organizational needs or objectives. If the manager is doing something that differs from organizational policy or your manager is an insufferable what-not, that is a whole different ballgame. We will discuss that in a later blog.

Saturday, March 25, 2006

Software Bugs

If it is software, there are bugs. They are like roses and thorns - you cannot get one without the other. If you aim to build high quality software, the best you can do is to reduce bugs to a level where you can manage them instead of them managing you and the project timelines. Here are some practices that would help you towards that goal.

Strike a balance between people and process. You should have good processes in place. At the same time, hold your developers and testers to high standards. Don't start pointing fingers when something goes wrong. Find the root causes and fix them. There are several good methodologies for software development such as Agile for small teams to CMMi for large organizations. Use what works best for your environment.

You must have good requirements specification, design and coding standards. If you rely on developers to build software using their memory of what you told them, you have placed your bets really badly. Even your best team member will forget important stuff. Conduct meetings for your team to discuss the requirements and design. Train them on the standards and the technology. Inform people about your expectations for the project.

Create and release builds frequently. Have a high ratio of testers to developers. The more testing and the sooner you do it, the more stable your application will be. During the first 25% of development, conduct testing on the standards defined for the project - that will make the rest of the project go more smoothly.

Prioritize your bugs so that you don't get into an endless loop of fixing bugs. Some bugs can and should be pushed off to the next release. Find commonly occurring bugs and reduce their occurrence by informing the team through meetings and group email. You should also consider updating your unit test cases to handle such scenarios.

Build error tolerance into the product. To take an example from construction projects - Even if the beams and nails are not aligned 100%, things manage to work. Your software should consider mistakes by end users and recover. Applications using speech recognition are still not widely adapted because they are not able to tolerate mistakes or misunderstandings which human beings by their intuition and experience are able to overcome.

Involve your end users early in the development process, including requirements analysis. Select "good" end users who understand software development, are patient with bugs and provide constructive feedback. Do not involve users who are busy with other work or who are not knowledgeable.

Design and develop good smoke tests - these are quick tests for developers to quickly test scenarios most likely to break when they are changing a module. Unlike a full-blown regression test, this takes a whole lot less time and hence more likely to be adapted by developers. If there are bugs, the developer knows what change resulted in the error, unlike a regression test which may pick up several scattered bugs caused by several minor changes, each of which is now a candidate for debugging.

Finally, take responsibility for your role as a manager. It is your job to provide developers and testers an environment to be successful - this includes processes, training and regular oversight. Without getting into the trap of micro-managing, talk to your team members often. Allow them to speak honestly and openly about issues. Try your best to resolve them.


Friday, March 24, 2006

Office Tigers on Outlook

The "Office Tiger" is one of those water-cooler jokes. It actually means "Microsoft Office Tiger" and refers to managers who have outgrown doing the "dirty work" (coding, developing, testing - you name it!) a long time ago and now spend their entire time in MS-Office products such as Outlook (sending & receiving emails), Word (typing up documents), Excel (for managing deadlines unless they use MS-Project) and PowerPoint (for creating the 30,000-feet view for the upper management).

Perceptive or obvious - however you want to spin it, but that it is the way it is. Managers spend most of their time in communication (emails, phone calls and meetings), reviewing work and preparing documentation. The tools for the job are actually quite inexpensive when compared to your average developer with the memory-packed machine for quick builds and all those Enterprise IDE's and plethora of developer tools.

So, the question here is: Are you an Office Tiger or merely a cub learning the ropes? Here are ten quick tips and tricks to make the transition from "Office Cub" to "Office Tiger" in Outlook. These are all Outlook (read "email client") tips since email is today's primary mode of communication and the efficient manager should get it under control. I will post more on other Office products soon.

  1. As Mark Twain said, "Put all your eggs in the one basket and --- WATCH THAT BASKET". Use Outlook to run your desk. Ask everyone to email you regarding tasks or information. If you are using VOIP, have voicemail delivered in email format. Use RSS/Atom feeds to read blogs on the latest happenings related to your field instead of visiting various websites. If your company has a corporate enterprise application, find out if the application can deliver notifications to your Inbox.
  2. Keep an organized folder structure on your hard disk and in Outlook. Keep yourself disciplined in maintaining files in the right location. By proper organization of files and emails, you reduce clutter and the associated stress. This may seem obvious to you, but use sub-folders. Don't save files & attachments randomly in My Documents or the Windows Desktop.
  3. Install a desktop search engine like Google Desktop. This will save you enormous amounts of time searching for documents on your hard disk. The desktop search programs have grown increasingly better in recent times and allow you to search a wide variety of file formats, including media files.
  4. Keep a lean Outlook main folder by replying to the incoming emails and moving them to other folders. Do not let emails stack up in the main folder. Take time out to reply to emails - delegate, if necessary. Think of the main Outlook folder as your desk. Would you keep unwanted stuff lying around on your desk for months?
  5. Control incoming email by using junk mail controls and programs. Ask to be removed from mailing lists or discussions that you are no longer concerned with. Inform others that they should email you only if you need to act upon or know the information in the email. Use blacklists and Outlook filters to manage emails from different persons or on different subjects.
  6. Use Microsoft Word integration with Outlook to compose emails that are well-formatted. Such emails are more readable and effective formatting can emphasize the necessary sections in the email. Microsoft Word provides facilities such as tables and images that can enhance the outgoing communication. The drawing facility in recent Word versions is very sophisticated - you can get your point across much more easily.
  7. Schedule appointments with Microsoft Outlook and thus get effective confirmations from participants. You could use Outlook Calendar as a planner for the day or as a diary of activities done for the day. This can be very useful in "debugging" what happened on a particular day. Never commit to an appointment date before scheduling it in Outlook.
  8. Turn on the feature to save outgoing emails. Regularly move the emails in your Sent Items to appropriate folders in Outlook so that you can later understand the communication that went on in a particular project or related to a specific discussion.
  9. When a project ends, move the emails to another Outlook DAT file and archive it safely (maybe write it to a CD). Keep your main Outlook file thin. Unless you thrive on chaos, it is psychologically satisfying to know that something has ended and you no longer have to worry about it.
  10. Most importantly, ensure that your desktop has a good anti-virus software and is backed up. It doesn't cost much while losing your information is disaster. Ask your friends not to forward junk emails. And do not use your office email for personal stuff

I guess all of the instructions above may not be "quick" tips. You may need to know more about Outlook options and features to perform some of them. For example, creating a new Outlook file is not a familiar task. Other tasks such as maintaining a good folder structure requires focus and time, both of which may be in short supply.

But except for Item 10 (which you should do right away if you are not protected), you can slowly try to adapt some of the suggestions provided above. I personally practice all of the mentioned ideas and I have found it very productive - keeps a busy desk more manageable and reduces clutter and confusion. Good luck to you!

Thursday, March 23, 2006

The Sample Application

From time to time, a new language or framework appears on the market. If it finds enough supporters, it is incredibly hyped to be the next killer technology that will overrun established languages like C++ and Java. The new buzzword is "easy" – the better technology is one that makes easier and simpler for a developer to create an application from scratch. I don't disagree with the principle because developer productivity is one of the key factors behind acceptance of a technology. However, I have major reservations about these claims.

For example, one typical example shown to demonstrate the ease of use of a technology or framework is to create a simple web page (or desktop window) that displays a list of records with the ability to add new records and edit and delete existing ones. Usually, this display is created by very few lines of code or even no code, if the program is created in a visual environment.

Is this example really valid? Consider the following scenarios that these seemingly easy examples ignore:

  • What happens when multiple people try to access that page? Is there a way of locking records? What types of locking are available? How easy is to incorporate that into the application?
  • What happens if there are millions of records in that table, and if there are thousands of users accessing that screen at a given time? Do we have to resort to different techniques to prevent the system from overload?
  • How do you configure the screen for permissions so that different users can see only the rows and columns that they are authorized for?

When you add multiple tables in the mix and also consider elements like internationalization and localization, the performance, concurrency and authorization issues become even more complex. And we have even started talking about good intuitive GUI design or usability of the application.

Creating an enterprise level application requires a high level of complexity, architecture and design. It is not simply a matter of splashing a few objects on the screen, setting some properties and creating a cool display. Having the right language or framework is important, but it is less important than good analysis and design. Once the design is in place, one has the essential criteria to select the appropriate technology.

A language must be easy and powerful. If it forces the developer to choose a particular way to solve problems, the developer will become frustrated when he or she is faced with new challenges. If the language is flexible enough, the developer can create new modules or objects to handle new technical and business scenarios.

If the evangelists of a technology want to be treated as serious, they should build applications that demonstrate that their framework is able to handle non-trivial technical concerns. Many demo sites and books don’t even consider the fact that an application may be used by multiple people and that two people may modify the same record simultaneously.

So, when you hear the next great technology, don’t simply give into the hype. Think about all the business and technical problems that you have solved using some current technology. Can the new technology handle all that complexity or is it just a smoke-and-mirrors show? If it is not flexible or powerful enough, stick with what you know.

Wednesday, March 22, 2006

Open-ended Questions

Open-ended questions are the lifeblood of a discussion. Without them, a discussion becomes a session of agreement or argument, and not what it should be: free-flow of ideas to find the best solution for a problem.

Open-ended questions are very important in a discussion between persons of unequal power. In such a discussion, if the person who has superior power asks closed-ended questions which have a limited set of choices as answers, the junior person will usually not venture outside of those choices to provide more insight into the problem that is being solved.

In a superior-junior relationship, open-ended questions have to be carefully framed and expressed in the right tone, because the relationship dictates that some questions can be interpreted as closed-ended, even if it seems reasonably open-ended, when taken literally.

For example, closed-ended questions can appear in different forms such as:

  • What is the better way to solve this problem: A or B?
  • Can't we solve this problem by doing Task A?
  • What is your opinion about MY solution for this problem?
  • Do you think you are capable enough to fix this problem by Monday evening?
  • Why can't you solve the problem?

Look at the last question. That seems reasonably open-ended. But suppose a manager by his/her voice or facial expression expresses contempt or lack of confidence, the chances of getting a true answer are very far fetched.

Hence an open ended question is not just about how the question is framed, although that itself is very crucial. It is also about how the person asks the question. Is he or she really interested in hearing the right answer? Are they prepared to hear bad news? What does their face and tone of voice convey? Does it feel that the person has already made a decision and is looking for someone to confirm it?

To get good solutions, a manager should start with only presenting the problem initially and asking people what they think of it. At this point, he/she should keep his/her own analysis of the problem hidden. This gives people an opportunity to ask questions regarding the problem that may uncover some new aspects of the problem.

Once the others understand the problem, they will volunteer their suggestions. This is a tricky situation. The manager may have thought of some of these solutions and this may show up on his/her face. That should be avoided. The manager must not accept or reject the suggestion outright. Instead, he or she should record it and ask further questions of the person regarding the proposed solution.

One issue with getting advice or suggestions from someone is if you finally decide to implement a different or opposite solution and they find out. In many cases, the person may be offended especially if they have spent time and effort in providing information to you. Since you cannot please everyone, it is better to consult with limited persons who are knowledgeable and then convey your final decision with your reasons before implementing them.

In a business environment, a manager has the ability to do this exercise in a brainstorming session and come to a decision in the meeting with everyone's consensus - though some may disagree, they will support the decision. But it is still critical that no one feels that the manager had made the decision before coming for the meeting and was only trying to sell the idea.

When on the wrong side of a superior-junior relationship, if the manager is a person who values candor, you would be doing your job a service by recognizing closed-ended questions posed by the manager and asking more questions of the manager to understand what his/her root problem was.

In a discussion with peers, there will be more ideas flowing freely. Still it is useful to frame questions carefully so that they may be able to provide more detailed feedback on some issue than a simple Yes/No or a multiple-choice answer.

Tuesday, March 21, 2006

Jack of All Trades and Master of One

You may have heard of the term "Jack of All Trades and Master of None". This is used in a derogatory fashion to refer to someone who knows a little bit about everything (or perhaps a wide variety of knowledge areas), but has not mastered any particular field of study. The negative implication is that the person cannot do anything perfectly and is useless.

There is another school of thought that suggests that this situation, in fact, may not be necessarily bad, as opposed to "Master of One Trade and Knows Nothing Else". The train of thought is that by generalization, we have a greater chance of survival in a changing job environment than by a detailed specialization in any particular area.

Therefore, a combination of the two, i.e., "Jack of All Trades and Master of One" would sound like the best of both worlds: Specialize in one field, become an expert, command honor & high salaries, do meaningful work, while being able to switch over to another area if circumstances demand. In reality, this is not quite as easy as it sounds.

The primary problem with this situation is about resolving two conflicting demands on personal resources. To be a master requires intense focus with huge amounts of time and energy spent in being an expert. To be a "jack of all trades" requires, by its very nature, multi-tasking in different areas and spreading out time and effort. How can we achieve this balance?

One way is to start with focusing on being an expert first - make the necessary commitment and effort to achieve a high degree of knowledge and achievement in an area. This will be a significant investment in every respect, including years of one's life spent. It is vital to choose wisely. Talk with a good career consultant. Understand your interests and capabilities.

Recognize when you have achieved a satisfactorily high level of excellence and stop exerting the same level of effort. In simple terms, understand when you have reached the level where the "law of diminishing returns" kicks in. At this point, split your focus and spread your efforts. You still would devote some percentage of your time keeping up with developments in your specialty, but it will be much less compared to what you did before.

Finally, start learning about areas unrelated to your current skill set or profession. This may be as wide-ranging as politics, science, history, geography, culture or engineering. Keep the learning at a level of interest. The trick is to use books or media tuned towards the novice audience. The Discovery Channel is a great resource. Read books from authors like Carl Sagan and Simon Singh who bring complex subjects to the public.

Being a "Jack of All Trades and Master of One" makes for a great life. As an expert, you are able to do your job well and bring pleasure to yourself and those who benefit by your work. By gaining general knowledge in other areas, life becomes more enriching and exciting each day.

Monday, March 20, 2006

Digitization of Personal Information

Productivity trends in industry have been rising at a rapid pace in recent times. A look at the manufacturing industry will show (and this is no great insight) that millions of jobs have been lost as productivity has inched upwards. Other factors including outsourcing contribute, but the fact remains that factories have used more automation and better tools to reduce manual work and improve the productivity of workers.

If it can be done at work, it could also be done in our personal lives. People are doing it all the time - improving our productivity at home by using tools and automated items. Just walk around a modern kitchen or bathroom and you will see what I mean.

Here are 5 quick tips on using digitization of personal information to reduce clutter in your life and make it better. Chances are that since you are reading this post, you are familiar with this and are already doing most of the items.

  1. Type in all your contact information into a digital Address book, such as in Outlook or online like Yahoo Address Book. You can do both and synchronize them. In addition, you can buy a handheld (Palm, PocketPC) and synchronize the contacts in it with Outlook. Keeping multiple copies (desktop, online & handheld) helps in easy access and redundant backups, and synchronizing them keeps them all up to date.
  2. You may have an address book in your phone. Try upgrading to a Palm-based or PocketPC-based phone so that you can keep it synched with your contact information. If that is not possible, keep your phone address book lean and manually synchronize your address information.
  3. Scan information that you are keeping around in folders. This includes important documents and newspaper clippings. Throw away stuff that you don't want. Store the important documents in a fire-proof safe. There may be small pieces of information lying around in Post-it Notes or plain paper. Type them in and discard the paper.
  4. Look up your old photo prints and negatives and scan them into your system. This may be a big undertaking since you may have hundreds or thousands of photos lying around. Do a little each week and make progress. Write your scanned images into a CD for backup.
  5. Move your music from CD and audio cassettes into MP3's or into an iPod. The new iPod has video too. This keeps all your entertainment centralized and easy to access. Buy a storage box and dump all your old CDs, tapes and cassettes in it.

If you have any more ideas regarding digitization, please share them with me.