Monday, September 7, 2015

Today we continue reviewing the book Rainmaking Conversations.
RAIN making conversations follows a process, beginning with helping us take stock of our readiness to succeed in a sales role, planning your actions and helping us build skills and knowledge, and providing a process for our rainmaking conversations.
In the conversation readiness stage of the RAIN making conversations roadmap, we begin by defining what success readiness is. This and goal setting affect each other.  Goal setting determines the sales knowledge we need. Consequently sales knowledge leads to success readiness. Between these three stages, we articulate our objectives in a way that we can start planning actions. Therefore Action Planning follows goal setting.  Action Planning leads to both Conversation Planning and Conversation Generation.  Conversation planning also affects conversation generation.

When the conversations are planned and generated we can transition from RAMP stage to RAIN stage where the first step is to build a rapport. Armed with the readiness and conversation planning, we proceed to building the rapport with our customer. Throughout our engagement from rapport to commitment, we maintain the influence and trust.  The authors developed the Rainmaking Conversations to provide a framework, a road map and a learning process to those who want to become rainmakers. To realize this, we should take the following ten principles to heart: 1. Play to win-win  : satisfy the best interests of both the prospects and clients as well as ourselves. The play-to-win part is never lost though.
2. Live by goals - Rainmakers are goal-setting and goal-following fanatics. Goals are their part of daily rituals.
3. Take action - Rainmakers realize the goal without actions don't get us very far. Rainmakers do it.
4. Think buying first, selling second - The selling processes is mapped to the customer's processes and psychology of buying.
5. Be a fluent expert  - Rainmakers are masters of the market knowledge, customer needs and their products and services, their value, their competition and everything else they need to know to succeed at selling.
6. Create new customers every day. Rainmakers never coast. They do not let a single day go by without speaking to customers, prospects, and referral sources, with the intent to source new business.
7. Lead masterful rainmaking conversations - Rainmakers lead the conversations through prospecting, discovery, closing and account management.
8. Set the agenda, be a change agent - Rainmakers recommend, advise and assist.  They are change agents who are not afraid to push when it benefits the customer.
9. Be brave - Rainmakers rise to the occasion in sales no matter how difficult the challenges may be. 10. Assess yourself, get feedback and improve continuously - Rainmakers are never afraid to learn the cold hard truth about themselves. They take what they discover - the good and the bad - to learn grow and change for the better. They never stop their cycle.

Sunday, September 6, 2015

Today we review a book named Rainmaking Conversations by Mike Schultz and John Doerr. This book is about dialogs that rise about the noise and create engagements. Its a sales book and it teaches the skills, knowledge and processes to excel at winning new business. In this book we get to see that anybody can be a rainmaker with hard work, preparation and proven methods.
RAIN, RASP and the ten rainmaker principles form the core of the RAIN Selling method - the training and the development program that the author's RAIN group use to help create dramatic improvements in sales.
RAIN is an acronym for Rapport, Aspirations and Afflictions, Impact and New Reality. These concepts are the core concepts we use to lead a rainmaking conversation. RAIN is about the things we do between the first meeting where we build rapport to the time when we gain commitment. During this process start finding the gaps that get bigger and bigger between the impact of success and failure and start closing on them to the point where we win commitment. This process is elaborate and we discover more about it in this book. During the discovery of this increasing gaps, we find the initial value gap at the point when we help articulate aspirations and afflictions. The high point in gap occurs when we find the true value gap. At this point, we fully realize the gap between the impact of success and failure.  Then we start altering the new reality to craft a solution that closes the gap.
There are essentially six types of rainmaking conversations.
1. Conversations with anybody - where we begin new relationships, enhance current ones and answer questions like "what do you do "?
2. Prospecting conversations - where we create a conversation that will eventually lead you to sale.
3. Core sale conversations - where we lead each sales call from the first sale to the close.
4. Presentations and product demonstrations - where we deliver key messages and content, share specifics about products and service capabilities.
5. Winning the deal - where we close the sale stage of the process - and open the customer stage
6. Account management and expansion - when we work to service, resell, cross sell, and up sell our current clients.
RASP is about the four keys to rainmaking success.
Companies and individuals  that achieve significantly higher sales results than the rest focus of four areas: Role readiness, action, skills and knowledge, and process (RASP). This is what the best do. The authors note that too often the sales methods focus on sale process and skills, but rarely on readiness, action or knowledge.  The author says this is backward because:
Role readiness:  the degree to which a person is fundamentally prepared to succeed in sales.
Action:  the execution of activities that will lead to sales.
Skills and knowledge: Skills - the various abilities needed to sell, and a degree to which a person can perform them well. Knowledge - the grasp of information needed for selling and the ability to discuss relevant information and topics fluently.
Process: A system or framework in which to perform actions to achieve the best possible sales results.
In short, there is a ton of effort in conversation readiness before the rainmaking conversation that helps to build influence and trust from rapport to commitment.


#coding exercise
Explain sister delegation
public class root { virtual void foo(); }
public class sibling1 { void bar() { foo();}}
public class sibling2 {void foo() { std::cout << "here"; }}

 

Saturday, September 5, 2015

#codingexercise
Generate n numbers in ascending orders which are having given k factors.
For example, if we are given {2,3,4,7}
The numbers generated would be 2,3,4,6,7,8,9,10...
Let us assume that there are no duplicates in the number.

# http://www.cs.utexas.edu/users/EWD/ewd07xx/EWD792.PDF

n = 15
bases = [2, 3, 4, 7]

nums = [1] * n
candidates_indexes = [0 for _ in bases]
candidates = [base for base in bases]

for i in range(1, n):
    nextn = min(candidates)
    nums[i] = nextn

    for index, val in enumerate(candidates):
        if val == nextn:
            candidates_indexes[index] += 1
            candidates[index] = bases[index] * nums[candidates_indexes[index]]


print(nums)
Start:
candidates=[]
candidate_indexes []
nums[2]
From Stackoverflow
The original design talked about prime factors. Here we have liberally used non primes.

Friday, September 4, 2015

In continuation of the book review of The Innovative Sale by Mark Donnolo, we now review the four phase Innovative Sales Process. This uses a blend of analytical thinking and functional creativity. It consists of four phases and there are eight steps within the four phases.
Phase 1: Conditions -  This is the set of boundary conditions  such as the constraints that include the time, price or product specifications that the customer has requested.
Phase 2: Known approaches - All of the brainstorming in the sales organizations consists of this phase.
Phase 3: Discovery -  This is where innovation happens. Ironically, this is where teams start to resist because it puts them out of their comfort zones and they complain about feeling lost.
Phase 4: Application - This is where we rubber meets the road as the idea is put to practice.
Now we look at the steps within each phase. The first step of phase 1 is when we define the challenge and the constraints, confirm or validate it or improve our understanding of the broader context and give more space for ourselves to act within this boundary.
In step 2 we gather insights about the challenges in the project.  These could include
customer challenges - in terms of financial performance, markets, products and resources,
causes - This set of questions addresses the causes and drivers behind the customer challenge.
precedents - when we lookup previous business models
In step 3 we create initial approaches - by looking up a list of all that has worked before in similar situations and picking out candidates. This just helps with a quick answer to the challenge and may not be the one that we find as we progress into the next few steps.
In step 4 we destroy false constraints by testing the boundaries which include operating rules, procedural rules and the accepted truths. This is where the discovery phase begins and we try to find alternatives or compromises to that constraints.
In step 5 we combine parallels which many not even come from business but from other life situations. In order to do that, we
look into the generations - the term generations here means looking beyond the immediate environment, company, competitors, industry or business. Parallels in each of these generations provide solutions that may never have been considered.
deconstruct our challenge question - we have an inventory of possible parallels from the five generations which we use together with the parts of the question for mix and match
find matches that address twenty five percent of the challenge -  because we use the rest to change our thinking
and put the pieces together - ideas generated by examining parallels and put them together to test their logic and potential application.
In step 6, we explore horizontally, where we create an abundance of ideas across a divergent range of options
In step 7 we develop vertically, which entails selecting the best ideas and digging deep down to build out the solution
The final step is to implement and communicate  which requires managing change. Here we :
understand the degrees of change where each degree represents a risk and a communications opportunity
we develop our positioning - where we recapture our reasoning and position our overall thinking
we operate our communications campaign - where we bring together target audiences, directed messages, communication medium, proof sources and message repetition on schedule
we manage resistance and push through - here we find where we can be flexible and where we cannot for a successful outcome.
#codingexercise
string x = "1..5,8,11..14,18,20,26..29"
string y = "1,2,3,4,5,8,11,12,13,14,18,20,26,27,28,29"
Expand a given string x to y.
For every numeral in x if the following notation is .., then we take the next numeral as end of range and expand it. If the range notation is missing, we copy it.
Let us take a closer look at some of the test cases.
For example, the range could start with the marker or the end numeral for the range may be missing.



Thursday, September 3, 2015


This is a book review of the innovative sale by Mark Donnolo.

Sales and creativity expert Mark Donnolo introduces us to blending the left-brain and right-brain thinking in order to develop better answers for your customers or market that differentiate you from the competition. The reason for the blend is that most people tend to operate in one of two extremes – operating analytically or by the seats of their pants. He argues this is a proven sales innovation breakthrough.

Mark starts by challenging the notions around creativity. He reminds us of a few perception and realties. For example, there is a perception that you have to be born with creativity. The reality is that most creators and innovators have learned how to be creative. Another perception is that creative ideas come from eureka moments. The reality is that creative moments are usually the culmination of a creative problem solving progression. Similarly another perception is that you have to work in a heralded innovative organization in order to be creative while the reality is that any organization can adopt innovative practices, and any individual can use creative methods independently. One more perception is that innovation doesn’t apply to sales while the reality is that innovation wins deals. Yet another perception is that creativity is creativity and it’s all the same whereas the all creativity is not created equal.

Mark cautions against what he means by creativity. He says artistic creativity has limited application in sales which is governed more by goals, expectations and objectivity. Instead, sales organizations demand functional creativity where there is a right answer.

He says the first step is to recognize that there are constraints. Constraints enable creativity. For example, a sales strategy for your CRM product only comes into picture when your customer has a tight budget, a three month time frame and must get approval from the CFO.

Innovative ideas for such strategy require the best of both brains. Finding equilibrium is necessary.

There are six innovative sales principles – inspired by principles of art and each one has three imperatives.

The first principle is Pattern. In sales, pattern refers to our instinct to find related ideas in a given situation. To apply this principle, use the following imperatives:

1)      Get comfortable with feeling lost.

2)      Combine unrelated ideas

3)      Become a student of history

The second principle is Variety. Variety describes the dissimilarities between design and the same idea applies to innovative thinking. The three imperatives in this case are:

1)      Produce an abundance of ideas

2)      Think in divergent directions

3)      Know that less is more

The third principle is Unity. Unity refers to how all of the elements work together to make a whole. The three imperatives in this case are:

1)      Assemble the right team

2)      Collaborate as an individual

3)      Understand other perspectives

The fourth principle is contrast. Contrast invites the sales team to critically question and pushback against established practices. The three imperatives in this case are:

1)      Break rules

2)      Don’t accept the accepted

3)      Get comfortable with criticism

The fifth principle is movement.  Movement refers to the natural progression of ideas as we proceed through the problem-solving process. The three imperatives in this case are :

1)      Ask the right questions

2)      Grow with the flow

3)      Walk away from the problem

The sixth principle is harmony. Harmony is achieved when there are several different but related elements in a composition. The three imperatives in this case are:

1)      Keep perspective

2)      Check degrees of change

3)      And be persistent.

 

Wednesday, September 2, 2015

In continuation of the review of the book titled Rookie Smarts by Liz Wiseman, we look at a few more instances where constant learning is more valuable than mastery and how to apply this principle. 
The author invites us to take a look at what it takes to rouse us from the comforts of the convention. She says one such thing is the newer challenge level that  we should overcome by working up the learning curve. In some places, where we start working our intellectual muscles again, we feel the most engaged. 
She says don’t hesitate to place yourself on new terrains but pace yourself.  
Shift from leader to learner. She says in this case you have to overcome the confirmation bias to capture the tendency of the people to favor information that support their hypotheses. There is also the convenience factor playing in this as we move from  where we are to where we want to be. 
We should step into the discomfort zone. Its only outside the comfort zone where we encounter “expectation failure” – when things don’t go as we want. 
But we pace ourselves by taking small steps – when the gap is too big, we break. Perpetual rookies must continuously guard against routines. 
The rookie smarts not only apply at a personal level but also at an organizational level. Rookies are most capable than most people imagine. But they need managers who can place them in an environment conducive to learning and insight. There are three ways how this can be done: 
  1. Freedom with direction: as a manager, provide clear directions, guardrails and criteria for completeness of solution. But direct them to experts. Activate the Hunter-gatherer mode. 
  1. A constructive challenge: Offer stretch goals, but don’t overwhelm the rookies. Provide challenges with feedback. Just as the challenges should be small, the best feedback comes in small doses and quick bursts. 
  1. A tightrope with safety net: The author says that when we operate at a level that demands more than the current skill, we walk a tight rope. As mangers make it safe for the rookie, they lower the rope and raise the safety net. 
Similar to how we build an organization with rookie smarts, we can also build powerful teams. Rookies are capable of doing amazing work themselves and they can be tapped into four configurations that have the potential to produce stellar results. 
  1. The ground and the spark : A veteran – rookie pair where the veteran brings the a ground to reality and the rookie brings energy and determination. 
  1. The talent scout and the new talent -  The rookie brings the novel ideas and a new approach and the veterans champion the rookies promise 
  1. The advisor and the entrepreneur – The rookie brings a new idea and the veteran brings contacts and network 
  1. A hetero genius team – people with different backgrounds and experience level may find it difficult to work together but it produces better outcomes where creative thinking is needed. 
The author concludes with a note on talent management. She says, when hiring, hire for traits shared by perpetual rookie. When designing a job and planning a succession, rotate talent to keep it fresh. When making development investments,  target people in rookie assignments. Finally, she reminds us that rookie smarts is not about age or experience level but a state of mind that is willing to unlearn and relearn. It is also a choice that will enable your success in the new world of changes. 
#codingexercise
Given an array of positive integers, you have to insert one of +,-*/ between two number such that the result is maximum
Since the operations are symmetric, we can sort the numbers.
For all ones we can do a sum pairwise and then multiply.
For numbers that are not ones, we can multiply them directly.

Tuesday, September 1, 2015

Authentication and Authorization modules that don’t encapsulate the credentials in one piece such as a token suffer from the problem that they are just about as secure as SMTP. Anyone can spoof anyone by passing different user ids. That said there is a real need to be able to switch users in the request.user such that an API implementation can be tested and have very little or no instrumentation for the live usage by a logged in user as well as for the passive testing for coverage. The latter can possibly be alleviated with test accounts that are created beforehand for all API implementations. Such a test account may need to be registered in the Active Directory as a user that can sign in. This may or may not be available. On the other hand, when  user information in the passed credentials are hardened, then they become tamper proof and push the switching to using different tokens.
With the above two requirements in a landscape with a typical portal or WebUI accessing different API functionalities through a gateway, we now look at the minimal steps or changes required to merely use the token and nothing else for authentication providing a one-point maintenance and hence secure switching. Each request is therefore authenticated and the sessions is guaranteed for the lifetime of the token.
Django-oauth-toolkit 0.9.0 package https://pypi.python.org/pypi/django-oauth-toolkit provides all the implementations for an RFC compliant OAuth server. By definition of OAuth, when users accept certain applications to access some or all of their information, they enable the OAuth server to cut tokens that represent the user+client+the-issuing-authority. The token can then be passed directly in the Authorization header or in its own custom header or as query string whichever is convenient.  The application can be a web portal and will have its own client id and client secret. When a user logs in to the portal, she blesses certain modules aka clients. These modules can in turn request token from an OAuth server.  Ideally, the identity provider such as Okta will implement the Oauth token server itself and hence we could use those OAuth APIs  as priority. In the absence of these OAuth apis, we write an OAuth server but don’t put it behind the Nginx server that forwards to different destinations. Since the clients are registered in  a table and the users are also registered, the OAuth server does not need to verify the requestor to issue the token. Besides, the verification of the token requestor is handled within the protocol.
The first step therefore it to use an OAuth server such as the out-of-box OAuth server with the toolkit referred above and deploy it outside the gateway to different API functionalities.
Second the portal needs to provision a page that lets clients be registered. Note that a developer who writes a client application is the user who logs in to access this page. Clients may be written by one user (owner/developer) and request the server for tokens on behalf of the users of the client. This page has captures the information such as the name, description, callback URL and environment.
Third the portal needs to provision a page that lets logged in users to permit different clients to request tokens from the OAuth server on their behalf. This page usually has the description of the client and the kind of information it will be accessing from the users profile. In addition, it may disclose all the actions it will take the user’s information.
Fourth, the use of a utility package to verify the token employs a static method (one that relies entirely on the parameters passed in and does not have an instance associated for any API implementation) that takes a request header and validates it against the OAuth server.  Given a token, an OAuth server can reverse lookup the associated user, client and check itself as the issuing authority. The method returns this looked up information.
Finally, the API implementations should have the ability to get information such as
Request.user.id
Request.user.email
Request.user.fullname
And arguably request.user.password (encrypted)

With these an API should be able to impersonate the logged in user.