Friday, April 16, 2010

Getting Outsourcing Right



Reactions 

I wrote this guide for my Founder Institute class. Many students will be outsourcing for the first time and I want everyone to get it right.

Others can also benefit from it. Feel free to share your thoughts. I will add them here.

Who Can Benefit

This guide is for individuals or small firms who
  • Want to outsource small to medium level projects i.e. budget of less than $25000. 
  • Their core competency is non IT. 
Bigger firms:
  • Should have in house IT people
  • Outsource less complicated project requirements. 
  • Should also ensure that in house IT people manage remote team(s) and give them constant direction, follow up with them.
Where To Find Talent

Depending upon size of the project, options range from friends to outsourcing company. This is in order of precedence, best first.
  • Your friends: If you need advice on IT project and know a good IT person, approach them. Don't forget to treat them with pizza ;)
  • Marketplaces: Elance, oDesk etc are marketplaces where you can find both individual and companies to outsource. They have controls in place to protect interests of both parties. Small companies or first timers should use these.
  • Outsourcing Firms: You can find many from the marketplaces. Try to avoid them or filter them based on the following section.
How To Select Talent

Try not to select outsourcing firms: In a service oriented business like software outsourcing, they are middlemen. Efficiency increase and cost savings can only be done by cutting down middlemen. If you must hire them, make it a point that you have direct access to people working on your project. Marketplaces are full of talented individuals. Try to form your own team. It will require more effort initially but it be more fruitful.

Don't select lowest bidder: Outsourcing is not just about cost saving, it is also about finding competency which you don't have in house. Worst mistake people make is to select lowest bidders. They get burnt pretty heavily. Select lowest bidder but have filtering criteria.

Setting filtering criterion:
  1. Check ratings
  2. Important: Also check, how often applicant is rated. Many a times people chose not to rate if job was bad. Rate of rating is a hidden filter that you should have in mind
  3. Check both negative and positive feedback
Once you follow this next step is to interview some people who you think have right potential and have made the right bid. If you are non technical, ask them general interview questions or take help from someone who can evaluate candidate's skill.

Important: If you have no idea about interview. Ask the candidates to take tests in the domain that you are looking expertise for or hire someone who can take interview.

How To Manage Project

If you don't have in house IT talent, best way would be to hire a freelance project manager based on the points listed above.
  • Make sure your vision is clear to everyone in the team
  • Everyone understand their responsibility
  • Communication channels are open
  • Have heartbeat meetings at least once every three days
Things Not To Do
  • Frequent follow up and pestering: Make sure people concentrate on working rather than sending you reports.
  • Being non communicative: You will have to ensure that you are there when guidance is required.
  • Being non listening to problems: Don't have a "I hired you" attitude.
In A Nutshell
  • Try not to outsource directly to companies
  • Always outsource through a marketplace
  • Don't fall in the cheapest trap
  • Take help in selecting a team if you have never done that
    • Have filtering criterion 
    • Interview
  • Hire a project manager if you have no idea about IT and project involves multiple roles
  • Have your development iterations prepared
  • Follow up
  • If things are not working still, seek help from friends, others who have outsourced
Hiring Notes
  1. Someone with four out of four good ratings may be better than someone with 10 good ratings out of 40 projects and no ratings on others. 
  2. Consider new candidates too based on following
    1. Work history outside marketplace
    2. Initiative taking i.e. if a) open source contributor b) have multiple pet projects

    Thursday, April 15, 2010

    Computer Vision Technologies



    Reactions 

    Introduction

    Face recognition technologies or computer vision are part of active research and development. They are primarily part of bioinformatics. Throughout the years rapid progress has been made in this domain. Applications of face recognition in government domain are limitless and are required. In public domain too there are many businesses which can directly benefit from commercialization in these technologies.

    Some examples:
    • Duplicate identity registration detection
    • Surveillance 
    • Robotics
    • Next generation UI
    Almost limitless possibilities.

    Available Solutions

    Although it’s still a research domain many commercial and some open source products have been developed. Some are

    http://www.neurotechnology.com – Commercial SDK costs ~$1000 for full version
    http://opencv.willowgarage.com/wiki/ - Open Source. 40k active users.
    http://www.sensiblevision.com/ - Commercial SDK. Enterprise solutions
    http://www.pittpatt.com – Commercial SDK with web demos. Comprehensive capabilities

    Google Picasa also provides face recognition now for tagging in images.

    A Custom Implementation

    As stated it’s a research domain and there are many approaches that have been explored to perfect this technology. From vector mathematics to machine learning to signal processing there are many algorithms to achieve face recognition. Every method has its own advantages. Best results are achieved by combining multiple methods.

    Some known approaches are

    Eigenface – College projects mostly
    Hidden Markov Model
    Dynamic Link Matching – Neural based

    Depending upon which approach is used. Following data structures can be identified

    For vector based approach

    Various points are identified on a face and their distance and positions are identified as vector. So a face is converted into mathematical model using these approaches. Because data is identified as vector. Using various transformations an acceptable degree of recognition can be achieved.

    Following data structure can be used to hold such data


    {Float x, y, z} Point;
    {Point x, y; int direction} Vector;
    {List Vector} Connect;
    {List Connect; int number} Face;

    So a face will be representing by list of connections which are list of vectors, which are points connected and have direction.

    For neural network approach

    A neural network approach is more nearer to human vision. It is based on machine learning and may be well suited for targeted applications. For e.g. a neural network to identify goats can have different approach to identify patterns as compared to one which recognizes elephants. But a neural network approach can result in creating expert software for a set.

    A neural network implementation is that of a rule based system which works over existent data with certain degree of acceptability.

    There’s a function to evaluate the degree of confidence for a new data based on previous data. Data structure representing such system can be


    {Face, Tag, Confidence}  Rule
    {List Rule} Network


    A function which will use network to identify classify Face

    OpenCV has over 500 algorithms implemented. I would suggest using OpenCV as a base for further development or use one of the developed SDKs for implementing face recognition over developing custom solution from scratch.


    System Components

    • Training module on customer computer: This module will allow a user to train the Face Recognition System (FRS from now) by providing list of images and name tag relationships. 
    • Face Recognition System: Based on the training provided, identity faces in video and image capture later
    • Notification Triggers: Actions to take when a new face is identified
    Algorithm

    Broadly
    1. Get the training data
    2. Store it in matrix, mathematical model
    3. Use machine learning approach to identify patterns later
    OpenCV has highgui package which allows video and image capture and crunch it into Mat structure which is a matrix implementation with almost all matrix functions available. Ml package has machine learning algorithms implemented. MI algorithms can read this data and take decisions. Decision trees and neural network approaches are known ones. To get a better accuracy multiple approaches should be used.

    References:

    Saturday, April 3, 2010

    Why Singapore Is An Ideal Place For Businesses



    Reactions 

    Singapore is a brilliant city country. Brilliant by a huge margin from above average. It's a perfect place to start and nourish businesses. If you are an entrepreneur and wants to target emerging markets than there is no place better than Singapore.

    Infrastructure

    Infrastructure in Singapore is almost parallel to that of western countries. Public transport is fast, affordable, have good coverage and is easily accessible. Same transport pass works on a huge network of trains and buses which covers almost whole Singapore.

    Same is the story with water supply to WiFi. Various cafes across the city have fast free Internet access and people indulge in work to meetings there.

    Lots of planning is done in developing residential complexes. They have all basic amenities. Ample parking space and good green cover. Industrial complexes are well connected to public transport and some of the best work places are built over MRT stations. Very accessible, secure and built to last.

    Society

    Society is welcoming of foreign nationals and country has a cosmopolitan milieu. Lots of social freedom. People don't interfere in each others' business and are friendly. It's totally safe to travel anywhere at any hour. Almost negligible crime rate. People are happy and respectful. Lots of cultures means lot to learn and see. In my opinion Singapore has best of all neighboring nations and cultures. Although I did ended up having vegetarian food which had fish in it (Fish is considered vegetarian!).

    Many activities and events to participate in. Good clubs, restaurants and sport areas. For some reason people like to jog a lot. Are definitely very competitive in a good way and like to keep learning.

    It is also a plus that locals have to spend two years in military. That prepares them for life and instill discipline and camaraderie in them.

    Talent

    Singapore invites lots of bright students from across Asia and offer huge scholarships. They have finest education system which is truly focused in creating leaders for tomorrow. A lot of emphasis on entrepreneurship and building thought leadership. Lots of exchange options are available which again gives edge to students to work in a truly global world. Government grants are readily available for right candidates. Lots of on campus programs to nurture talent.

    Economy

    Singapore is financial capital of the world. Has huge ports and is center for lots of trade and host headquarters of lots of banks. Even after all this Singapore has almost negligible inflation. I read somewhere that it was .03% for year 2009. Quite an achievement. Food and other goods of daily use are cheap. Taxes are low and simple. Although cars are heavily taxed. Which is a good thing considering Singapore has a brilliant transport system.

    Per capita income is higher than average wages! Which leaves lots of money with government and government invest heavily in infrastructure.

    Corporate Governance

    I was surprised to learn the easiness with which businesses can be setup in Singapore. Red tape is almost non existent and if you have all the right papers you be good to go in no time. Singapore has no nonsense corporate laws and proper checks are in place; which are followed.

    All said, Singapore is the best place to start a business. Moreover, possibly the best place to live in Asia. Look no further.