Tuesday, January 14, 2014

Can a Successful Business Analyst be a Successful Manager?

The topic today is more of a general discussion on management track against the business analysis track as in most of the companies project managers do play the roles of both manager and business analyst.
Let's decide on the skills which a manager must possess to be successful in the career.They are 
  1. Conceptual Skills
  2. Human Skills
  3. Technical Skills 

The above image or rather the graph clearly display the skill levels a manager needs to possess to be successful in career.
Conceptual Still is what is mostly necessary by the top management as this term describes the analytic skill and the envisioning still which a manager needs to possess.Further it is the cognitive ability to see the whole system as one and then the relationships between every single small section.It is strategic thinking.A manager always needs to have a long term plan  of fore see the problems. Conceptual Skills for a Business Analyst: Business Analyst or a Business Consultant is the person whose rather walk to the clients office, analyse the business/system , consult the clients and show the better roots and ways of doing things or even provide support to design a effective system which may improve the efficiency of the business.A Business Consultant needs to foresee the future of the client's business and help to grow more and more.So as envisioning becomes an important factor i would say to envision something in a real of proper manner that person definitely needs to have analytical skills as well.Power of Analysis and Envision creates a good manager as well as a good business analyst.

Human Skill is people management skill which is needed by all the managers.A manager needs to be a good communicator, a good human being to understand and lead the team towards the goal.A manager needs to be a good facilitator.Human Skills for a Business Analyst: Business Analyst or a Consultant needs to work close with the clients in order to get a better understanding about the system.Better relationships with the client always make the work easy for a business consultant.So human skills is so much important to a business analyst.

Technical Skills is the understanding of the proficiency in the performance of specific task.Technical skills includes mastery of the methods,techniques and equipment involves in specific function.A manager have its own set of technical skills which are extremely necessary to perform the tasks related to management.Technical Skills for a Business Analyst: Business Analyst or a Consultant  requires a different technical skill set for a manager.So the technical skill of a business analysis differs from management though both needs documentations and organizing skills.

So this match tends most of the companies to convert a business analyst to a manager as the both roles possess mostly common characteristics in their careers.



Sunday, January 5, 2014

ESB + LinkedIn Connector+Business Analysis

As explained earlier a  connector allows you to interact with a third-party product's functionality and data from your message flow.Connectors allow you to connect to and interact with the APIs of services.So let me explain more on connector concept using LinkedIn Connector which will allow you to access and interact with the LinkedIn application.

To begin with I would like to talk about the  "Authentication" methodology for LinkedIn Connector.BTW I selected REST API over SOAP because of the fact  that the upcoming trend for services will be REST over the rest of the services.

Authentication:-

Follow the few easy steps below to make your first LinkedIn API call using OAuth 2.0.Still what is OAuth?

I am creating an application which needs to get your 1st degree connection list and if i want to know your LinkedIn credentials for that... what do you think?  

This is where OAuth comes into play, as it outlines an access-delegation/authorization framework that can be employed without the need of sharing passwords. It can be thought of as a special key that allows access to limited features and for a limited period of time without giving away full control.OAuth allows you to share your private resources (photos, videos, contact list, bank accounts) stored on one site with another site without having to hand out your username and password. Giving your email account password to a social network  site so they can look up your friends is the same thing as going to dinner and giving your ATM card and PIN code to the waiter when it’s time to pay. Any restaurant asking for your PIN code will go out of business, but when it comes to the web, users put themselves at risk sharing the same private information. OAuth to the rescue.

So now you want to get the  1st degree connection list  of mine from LinkedIn and i send the request to the LinkedIn authentication server.It send me an Authorization code back to the user and the user must make another request sending the token which she/he received earlier.Then the server replies with the access token and the refresh token.

Now the user must make another request to the LinkedIn  resource server using the access token which i received and via this call i could get the 1st degree connection list of ur's even without getting your user name and password.

Below image describes the above words in pictorial way.


LinkedIn Method Analysis:

LinkedIn API reference documentation  contains many groups and each group contains its relevant functionality list available for the users/developers in the format of methods.These are the methods implemented by  LinkedIn developers and exposed to the general public/ developers to use and develop their own applications.

Below displayed is the selected functionality list  amongst all the functionalities.

People Operations:
• getProfile-The Profile API returns a member's LinkedIn profile.
• getProfileFields - LinkedIn Members publish a variety of information about themselves on their member profile.
• getConnections - The Connections API returns a list of 1st degree connections for a user who has granted access to his/her account.
• peopleSearch - The People Search API returns information about people.
• accessOutOfNetworkProfiles - Presenting with people resources that are outside of the current member's three degrees.
                
Companies:
 
• companyLookup-Retrieves and displays one or more company profiles.
• getCompanyStatistics - The Company Statistics API provides the ability to retrieve statistics for a particular company page.
• searchCompanyPage-The Company Search API enables search across company pages.
• followCompanyPage-Members can follow companies to receive updates for company activities such as new job postings, employment changes, and new products

Jobs:
 
• viewJobs-The Jobs APIs provide access to view jobs and job data.
• searchJobs-The Job Search API enables search across LinkedIn's job postings.
• closeJobPost - Allow to close an existing job at LinkedIn.
• postJob - Allow to post a new job to LinkedIn. 
                
Share and social stream:
 
• shareResources - Through the Share API, you can enable users take full advantage of this functionality within your application.
• getNetworkUpdates - The Get Network Updates API returns the users network updates, which is the LinkedIn term for the user's feed. This call returns most of what shows up in the middle column of the LinkedIn.com home page, either for the member or the member's connections.
• sendActivity - The Post Network Update API allows you to send in an activity from your site to be posted to the first degree connections of the LinkedIn user.
                
Communication:
 
• invitePeople - The Invitation API allows your users to invite people they find in your application to their LinkedIn network.
• sendMessage - LinkedIn offers a simple API for sending messages via LinkedIn between two or more individuals connected to the member sending the message.
                
Status Updates:

 
• getStatus - Get the current status of a user who has granted permission to the application 

Note: Analysing the Jobs API of LinkedIn some if the methods can not be used as they require special permission levels of LinkedIn.
EX:

Posting a Job:
This is a closed program, available to select partners at LinkedIn's discretion. You must contact LinkedIn and sign an API agreement before implementing or using the Job Posting API.


Searching a Job:
The Jobs APIs provide access to view jobs and job data. Jobs API is a part of our Vetted API Access Program. You must apply here and get LinkedIn's approval before using this API.


Job Lookup:
Job Search API is a part of our Vetted API Access Program. You must apply here and get LinkedIn's approval before using this API.


Closing a Job:
Job Posting API is to close an existing job at LinkedIn. This is a closed API. You must contact us, meet certain criteria, and sign an API agreement to use it.


It is very important to identify such restrictions as it can minimize the implementation time and utilize that for some other tasks of the project.

Wednesday, January 1, 2014

WSO2 ESB and the Upcoming Connector concept study as a Business Analyst

I am about to explain you my analysis with regards the Enterprise Service Bus (ESB) architecture and Connector concept.

There are many ESB s and among this many i would like to take up the WSO2 ESB and upcoming concept of connectors  for my analysis.As a business analyst whose exposed more to functional analysis , this is quite a challenge though this is how i took it up.Still my approach may be very much wrong and if so please reply me with your valuable advises.

As the very first step i wanted to learn the ESB architecture and below are my findings.

ESB is a software architecture that enable communication among various applications.Instead of having to make each of your applications communicate directly with each other in all their various formats, each application simply communicates with the ESB, which handles transforming and routing the messages to their appropriate destinations.

WSO2 ESB is a full-fledged, enterprise-ready ESB. It is built on the Apache Synapse project, which is built using the Apache Axis2 project. All the components are built as OSGi bundles.

WSO2 ESB Messaging Architecture:



When the application send a message to the ESB Transport pick the message  and pass it through the pipe line.This pipe line operation should be either mediators or proxy services.

A proxy service is a virtual service that receives messages and optionally processes them before forwarding them to a service at a given endpoint. This approach allows you to perform necessary transformations and introduce additional functionality without changing your existing service.

As the diagram specifies, there is no clear separation between message transformation components and routing components. WSO2 ESB call this the mediation framework. Some transformations happens before routing decision has taken. Some transformations happens after the the routing decision has taken. 

This part is the Synapse implementation.

After this message is injected to the separate pipes depending on the destinations.

The diagram shows how a request propagates to its actual endpoint through the ESB using its architecture. Response handling is the reverse of this operation. 

Connector Concept

A connector allows you to interact with a third-party product's functionality and data from your message flow.Connectors allow you to connect to and interact with the APIs of services.

For example Twitter Connector allow the third party application to deal with the Twitter API Reference.
Further if you have enabled the Twitter connectors in your ESB instance, your message flow could receive requests containing a user's Twitter name and password, log into the user's Twitter account, get a list of the user's followers, and if you also have a Google Spread Sheet Connector you can even  write that information to a Google spreadsheet. 

WSO2 has already released some connectors and they will be releasing more and more in the future. 

Analyzing an API reference document for a connector development is as below.

I would choose Google Drive connector and it uses REST service.Authentication would be one of the most important component for  any connector and specifically for google drive the users must create a service account and obtain a serviceAccountEmail and serviceAccountPKCSContent. Else the users can also pass the client ID along with the Access Token and the Refresh Token also can authenticate a user to access Google drive.

Then the most import task is identifying the value added functionalities for the connector.Analyst needs to read through each method and identify the most value added methods and use those for the specification.The parameter identification is another hard task and an analyst needs to have an end to end picture about the method behavior to perform this activity.

Each connector has its own different API reference formats as some provide proper information and some don't.I would rather suggest to work with the developers and understand the API reference as it is the key for this sort of an analysis. 

This analysis might have loop holes.Please feel free to comment with your suggestions.