How to Choose the Outsourcing Partner

This is in continuation of last article on 'When should We Outsource the Work'. After deciding that we need to outsource the work, next big question is, where we should outsource the work. In this article, we are discussing few key points for selecting the outsourcing partner.

Selecting a right outsourcing partner is very important to justify your decision to outsource. A good choice can help you achieve your strategic goals and operational planning, however a bad choice can ruin all the planning and sometime the scope to outsource in future. So companies should spend good quality time on researching, and selecting the right partner. Here are few points which can help in deciding the approach to find the outsource partner.

  1. Matching Skills - Look for a company which has good experience in the technology and domain required for your project. Here technology and domain both are important. You will find many companies which can claim to do any kind of project. However experience in particular skills and domain always matter. Moreover management also grow stronger as it gets experience in same kind of projects. So always check the portfolio of company to sort out the matching projects. Have an

When should We Outsource the Work

Outsourcing the work and choosing an outsourcing partner is an important decision. Here we should be clear why are we doing the outsourcing. The first point generally comes in mind is that outsourcing is done to save the money by outsourcing the work to some company which can do it cheaper. However, this is not the first motive of outsourcing. Outsourcing is/should be done for strategic benefits keeping in mind the strategic directions of Organization goals. Here are few points explaining these factors:
  • When we don't have required expertise- It is a good idea to outsource the work when we don't have the required expertise. Then outsourcing to a right partner, who has the required expertise in that specific field, can help a lot. Otherwise, we shall be investing a lot in learning new skills and keep on building the expertise for that domain which may not be useful in longer term as per the strategic direction. Moreover, we are not sure that how good we shall be able to perform in initial days of learning. That can cost us our valuable time along with investment of money and still may result in loosing the opportunity window due to delay in achieving the right level of expertise. So outsourcing is useful when we find some tasks which is not in line of our strategy and skill building is demanding a good amount of investment. Here outsourcing that piece of work to a partner which has proven track record in doing that kind of assignment can actually help you to move faster and utilize your time for core activities of your Organization.

How to Manage Your Productivity

When we are talking about productivity, the first thing we need to be clear is that, the productivity is about the outcome, about achieving the goals. It is not about spending the time and putting more and more efforts. More efforts and time can only bring the sympathy to anybody, however productivity is measured directly by the outcome of efforts. So what matters is, what you have achieved, how good are you meeting the expectations and delivering the results for your team, and for your Organization.

Many of the times, amount of time spent for the work is considered to have a direct impact on the outcome. Executives used to be in a mental trap to work for long extended hours in the evening as a responsible team members to meet their goals and to add more to their outcome. But does that really improve the productivity? Burning the midnight oil at the time of delivery or in some critical situations is understandable, however can shedding extra hours on daily basis in the office really add to the result?  This is a big question and is an important point where quality of efforts put in, matters over the quantity of hours. And here is the start point to think that how we can add more quality to our work, so that it can result into desired productivity within regular work schedule. Here are the few principles to add to the productivity.
  1. Match the skills with Organizational Needs - Know what you can do best and then match it with the Organizational needs. Every person has some unique set of qualities which make her better in certain areas. Now the need is to match these qualities with the needs of the Organization. So every employee and the immediate boss should work collectivity to identify the Organizational needs and that how these needs can be met in best possible manner by utilizing the skills of employee. Sometime you can be a expert in sales and good in advertising, however, if Organization needs are currently for advertising then best role for you is in Advertising. You can not achieve your best till you are not put the efforts in the direction of Organizational needs.

Exception Handling in Web Applications

Error Handling is an important part of any implementation. An application without Error Handling is like a patient with all door closed for diagnosis. It is a perfect time killer for developers to debug the application issues without proper error handling. Hence it is an important topic to discuss. However here we are concentrating more on error handling in web applications (using JSP, Servlets).

Motive of error handling is to capture any error generated in the application, log it to any logging system and propagate it to right point so that it can be directed to the user with all useful information. So the basic flow of error handling should be
  • Apply try-catch block with right exception type in catch around the code which may generate the error
  • Log the error using any logging mechanism. One of the popular logging system is log4j using commons logging. Ensure to use right logging level i.e. debug, info, warn, error etc
  • Apply business logic whatever is required to handle the erroneous case as per application requirement
  • If error is not manageable and condition should be propagated to user, throw the appropriate error further after wrapping the original error. Make sure that new exception should carry all user centric details which can help them to understand the cause of error, and developer centric information which can help them to debug the issue. 
  • As a general mechanism, error codes can be set to exception which can describes the reason of problem at Application and UI level. These error codes can also be used to show the localized messages on UI
  • Application Framework should provide the facility to handle any exception originated from the application and redirect it to a designated UI which can show the error details to user with all the details
  • The UI can also have the mechanism which can facilitate the user to log the issue directly in Issue Tracking system or to send email to the support staff with all the details

Implementation of Login and Logout in Web Applications

Login/Logout seems like a simple operation in web application. However small information left behind can give a chance of security breach to hackers. Here is a simple and minimal workflow which we should ensure while implementing login/logout functionality in web applications.

  • Have a Security Manager on the Gateway which can authenticate and possibly authorize every new request to server. For example, it could be a ServletFilter. 
    • It should authenticate every new request to check whether user is logged in or not. 
    • If yes, does current request URL exists?
    • If yes, does user have rights on current requested URL?
  • If request is passed through Security Manager, the login  manager should do following: 
    • Clean the existing session for all application specific information.
    • Invalidate the session using session.invalidate.
    • If request is for login
      • Check if user exist for given user name and password. 
      • If not, return to right page with message
      • If yes, go ahead
      • Create a new session, for example, request.getSession (true)
      • Fill the session with all application specific information for current user like all UI structure for which current user is authorized.
      • Forward the request to home page of request application or module
    • If request is for logout
      • Forward the request to logout message page  
This is the minimal workflow to ensure the basic principles, however a lot can be added to implement the application specific security checks and to support the application structure. Like as an extension, the Security Filter which is sitting at gateway can interact with a security service to validate the current request for authentication and authorization. Similarly Login/Logout implementation can interact with Security Service to authenticate the login information and later to retrieve the user specific application settings, for example, the menu structure and UI look etc. 

This brief information may help in concept building and in basic architecture design.