Monday, December 25, 2017

Gujarat elections: what it represents for Indian polity

Recently, state elections concluded in Gujarat and Himachal Pradesh. Like the elections for past few years now, this one again had been a high pitched election campaign, with racial slurs, abuses and insinuating comments being thrown all around. This obviously follows the pattern from the past 1 decade onwards, whenever elections happen in a crucial state with significant electoral mass. In recent times, even the tactics have become more nuanced - for example, the award wapasi by a host of "eminent" people during 2015 Bihar elections.

What separated the Gujarat election from all these elections was the fact that Gujarat is home state of the BJP's Prime Minister and party president. Such was the importance of these elections, that national media outlets seemingly didn't care about the Himachal Pradesh election results which served more as filler news. Even the stock market dipped 850 points at one time when Congress gained a relative lead.  No wonder that there are some very important conclusions that can be drawn here that should hold true for elections to come in the next few years:

1. BJP/NDA is not invincible
Every policy decision is bound to make one section of the society happy at the cost of another section of the society. While BJP may be working hard on some reforms like taxation (GST), insolvency and bad loans (IBBI and NCLT), the benefits of all these policies are mostly being absorbed by the corporates, and is not being passed to the lower strata of the society. As such, economic disparity is widening, and there is a huge untapped frustration within the majority of the electorate, most of whom obviously don't work within corporate setups. The rural urban divide in Gujarat was massive, and it will be interesting to see how BJP bridges the gap, and how others reap benefit from it.

2. Rahul Gandhi is not Pappu anymore
Rahul Gandhi has grown, at least in the eyes of the media, from being a Pappu to more mature politician. Thankfully for Congress, Mr. Gandhi has learned restraint and didn't make any self goals when delivering his speeches in these elections. He even scored brownie points by rightly targeting Mr. Modi in his speeches, like with "Modiji always talks about Modiji". Some of his observations have resonated well with the urban masses, and Congress successfully emerged as the party of choice for regional leaders representing people's anger with the dispensation. While how much effort Mr. Gandhi himself put into the strategy and how much effort was put by his advisors and media team can always be debated, the fact is, he managed to strike at the BJP's roots in the rural areas. Going forward, he and his team will command more respect if they are able to sustain this momentum in elections to come.

3. Hindutva is no one's monopoly
Congress, and many regional parties have at times indulged in minority appeasement at the cost of the majority. While India is a secular nation, one can not forget that a majority does exist . By visiting temples, and comments like Janeudhari Brahmin, Rahul Gandhi has established his soft Hindutva credentials. While they may not be enough to convince the mature/hardline voter, there can now be enough confusion amongst the general masses to not care about it. Its interesting to see what just a few temple visits can do in politics. The re-alignment of Congress outlook is another thing to watch for in future.

4. There is greater scope for parties representing minority interests now
With Congress moving towards the Soft Hindutva bandwagon, and BJP anyway having been associated with Hindutva and RSS for long, there is a good scope for regional parties to get increased seat share in constituencies where the minorities are a sizeable chunk. While the Congress may not have had minority appeasement points in its campaigns, it had been the party of choice for the minorities. However, with the Congress having not won the elections overall, there is only so much patience minorities will have with it in the next set of elections before they start looking at other options.

5. Doubts on credibility of EVMs and VVPAT can cease now
In the Gujarat elections, the election commission did a random match at booth level to compare the EVM and VVPAT trail in each of the constituencies, and found a 100% match across constituencies. With this, the doubts on the credibility of EVMs will now hopefully be put to rest in future elections. The result tally in Gujarat would have been much more skewed if there was any malfunctioning of the EVMs, given the BJP's stated goal of 150. Any party, which seeks ballot voting system over EVMs/VVPATs would now be seen as plainly cribbing and trying to take back elections to the days of booth hijacking and fake ballots, thus loosing its appeal with the urban voters.

6. Modi is the only Star BJP has
While many agencies were predicting BJP defeat, BJP was able to pull back from the jaws of defeat because of the extensive campaigning Modi did in the last 30 days. However, the BJP needs to seriously build its next generation of leaders if it wants to stay relevant in another decade or so. While it has Yogi, Swaraj, Jaitely,  and a host of other politicians who score well on administration and other agendas, it doesn't have any other national leader who has the mass connect that Modi has across India. Modi is currently 67 years old, and given BJP's stated preference of retiring politicians at 75, he can only be relevant for one more term of 5 years. It is the right time now for BJP to find a batch of younger leaders, and nurture them not just administratively, but also politically, so as to stay relevant in mid 2020s. In comparison, Congress has Mr. Rahul Gandhi and Priyanka Gandhi, who could still be very relevant 10 years from now.

7. India will still take years to overthrow Caste equations with Vikas
For development to be relevant to all, its results have to reach everyone. While GST may have solved woes for many a companies, the average Indian has hardly seen any meaningful benefits so far.  In the UP elections earlier this year, caste coalitions were believed to be a major factor in BJP's massive victory in the state. With Congress hinging onto 3 regional leaders representing different strata, Hardik for Patidars, Jignesh for dalits, and Alpesh for OBC-Thakors, and BJP drawing mileage out of the "neech" comment by Mani Shankar Aiyyar, caste equations are still very relevant today. Schemes like farm waivers may work for certain sections, but the BJP will do well to be more responsive to the needs of the other strata of the society not just in name, but also in action.

8. Congress is still very much relevant in Indian politics
While the BJP/NDA may currently have Governments in 19 of the 31 Indian states, with the Gujarat election, Congress has shown that it is still relevant. Congress managed to increase its vote share, the number of seats it won, and ended up giving a tough fight to the BJP on its home turf. Even earlier this year, it managed to win Punjab (which AAP was believing it had in its pocket), and has a government in Karnataka which is another major state of India in terms of electoral mass. While it might look like the Congress is slowly dying, it could also be a case of reversal happening right now, something which will get clarified in the next couple of years.


Wednesday, December 20, 2017

Responsibility Assignment Matrix

Today, I was randomly exploring project management concepts, when I came across an interesting tool - Responsibility Assignment Matrix. Specifically, I had landed on the RACI model (Responsible, Accountable, Consulted, Informed) to manage projects.

The textbook definition of a a project is any temporary or time bound organization of resources, which helps in delivering one or more business objectives. In reality, most of the work that one does at a startup could be thought of as a project - if you are fixing issues for a group of stakeholder, with interaction from other teams, which involves doing things that are not part of day to day job, then you are working on a project.

Every project has 3 key roles(s) without fail - the project manager, the project sponsor, and the project stakeholders. While there may be multiple sponsors and stakeholders, the boundaries between them are usually virtual, and overlap of roles is possible (persons playing them) is possible in reality.

Every project can be broken down into sets of tasks. But herein lies the root of the problem - defining who is responsible for what within a project is a hard task in itself. One solution to this problem is the responsibility assignment matrix, and the prominent industry way of doing it is via the RACI matrix.

A role is not the same as a person - instead, it is a collection of tasks and responsibilities that a group of people can do, and roles may even have overlaps amongst themselves. Everyone should know who is R responsible (R) for doing every task - the foot soldier, who is accountable (A) for ensuring that the task is done right, who needs to be consulted (C), and who all need to be informed (I).

The Standard way of doing this is:
  • Identify all required tasks and activities
  • Find out the different roles (Emphasis roles and not person)
  • Now assign the RACI code, who will be accountable, responsible, consulted, or informed
  • One role can have one or more amongst RACI
  • Identify what the gaps are - only one role can have A accountability, every task must at least have one R and one A, you can’t have too many C for one task, and low number of C and I on chart means low communication between team members
  • Make improvements as a team, and get alignment on each of the steps, to minimize overheads

Projects can come in different flavors, and while RACI may be suitable for some projects, there are other ways of doing the responsibility assignment as well - for example:
  • RAPID (Recommend, Agree, Perform, Input, Decide) created by and trademark of Bain & Company
  • RACI-VS (Verifier, Signatory) - expanded version of RACI with acceptance criteria
  • PACSI (Perform, Accountable, Control, Suggest, Informed) - useful to organizations where the output can be reviewed and vetoed by multiple stakeholders
  • and so on..

Thus, depending on the project at hand, the ideal responsibility assignment matrix can be picked up, to make everyone's life easier at the end of the day.

You get a matrix like below at the end, which keeps everyone in the team aligned on who is contributing where. In my opinion, it doesn't matter who you are interacting with, this kind of matrix would always help you with the "non-developer" stuff that you can take care of as a developer, so as to maintain your visibility and keep everyone around you happy. I also helps you be selective in who you can be proactive with, and at what stages, so that you are in everyone's good books - something that should help in longevity at any organization :)


Friday, December 08, 2017

Startups of China

For the past few years, I've been generally curious about Alibaba, and Jack Ma, and the other Asian companies and their founders of the internet era. Much of this interest has been generated by the kind of billion dollar investments these organizations are pumping into the Indian startup ecosystem right now. FWIW, I've worked at Ibibo in the past, which had Tencent as one of its shareholder. But so far, the kind of narratives I had come across were the same stories of individuals retold by different persons. Getting the bird's eye view of the whole ecosystem while understanding the general environment had been hard.

I was finally spurred into action when I saw the trailer for Jack Ma's movie, Gong Shou Dao.


Now anyone can start a company, but it is completely another thing to turn it into a $500 billion business. And, amongst all the $100 billion business creating first generation founders I know of, I can't recall any other who starred in his own movie. But that is not the point. What I realized was that there was much more to Jack Ma than the press would tell. So far, every article I've read about him would mention for sure that he used to be an English teacher. But nobody ever wrote that the he is a master of Taichi, or commended him for the master networker he is.

So this time, curiosity got the better of procrastination, and I began researching books on Jack Ma. After carefully going through reviews on Amazon and Goodreads for many of books on him, I decided to get a copy of Alibaba: The House that Jack Ma Built, written by Duncan Clark.

At best, what I had hoped for was a thorough account of Jack's life, and the eulogising content that biographies usually have. After reading the book, I will admit that I had set my expectations far too low.

The book tells an excellent narrative of not just Jack Ma's life, but of the whole startup ecosystem, since the early internet days in China. It has ample sections on many other entrepreneurs, who were running some of the hot ventures of their time, before Alibaba became the hottest venture of all time out there. And of course, how the Chinese government initially struggled to classify internet as a communication tool, the strategy they adopted, and the impact these companies have had on businesses and consumers in China. The Taobao feature of haggling over chat was a real eye opener - every feature is worth building if the customers need it. The message, that customer is the king is hard to miss, chapter in, chapter out.


It is one of the best books out there for getting a 10000 feet view of the ecosystem. I learnt more about the other internet companies of China - like JD.com and tencent, than I've learnt so far from the news article and other profiles. Some other lessons, like the humiliation faced by ebay China, are worth remembering for future executives when entering a new geography. The perspective that many a investors, including Masayoshi Son, used to hold in those days are well documented.

Having read the book, its clear the kind of strategies the trio of Softbank - Alibaba - Tencent are now employing in the Indian ecosystem. Tag teaming for many investment opportunities, the kind of consolidation they are aiming for and the general parallels in the trend to China is hard to miss. This is a must read book for anyone who wants to get the hang of Indian startup scene over the next 5-10 years, and where the direction mid to large players are going to move in.

PS: I've one advice for any future reader - the book, at a lot of places tries to underplay the kind of numbers that Alibaba was achieving. While it looks unintentional to me - it could be done so as to maintain a modest or underdog-ly narrative, or because Alibaba is so successful today that the milestones seem small in comparison - I'm pretty sure many startup founders today would be shouting their mouths off if they achieved one such metric. 

Wednesday, December 06, 2017

Robo-recruiters and Github commit history

Some time ago, when I was looking out for a job change, I had an interesting conversation with a recruitment consultant X.

Now most of these consultants just look for buzzwords in candidate resumes, without understanding the true meaning of those requirements. In the days of linkedin and other tools, this search has been made even more pedestrian. So you hear of cases, like a recruiter asking candidate why he has no experience with NoSQL even though Cassandra and Redis are on the resume, or recruiter assuming that candidate is hard core iOS developer because he wrote Java and mobile web development on resume, even though iOS or Objective-C or Android wasn't mentioned.

Cases like the above are understandable - in the ever changing technological landscape, technologies come and get outdated every 2 years, and keeping track of which technology is used for what is a hard thing to do. This makes the recruiter's job challenging. For a consultant working with multiple partners, it can get only more confusing.

However, my conversation with X was different at a fundamental level - the kind of contributions and skills I had. Though I had worked at multiple startups on many key projects, and am otherwise a high contributing user on StackOverflow, recruiter X began questioning me on my open source contributions. Specifically, why the commit history on my Github was sparse. I mean an open contribution is an open contribution, be it github or stack overflow, and I'm anyway well conversant with the major technologies and paradigms of the day.

Though I could convince X that I had the skills the job required, this episode made me realize the kind of power these robo-recruiters hold. Most of these robo-recruiters don't understand technology or technological concepts, and yet, they have an immense amount of power in the hiring decision at the onset during shortlisting. The fact that most robo-recruiters are working to maximize their commissions, and not the applicant's interests, doesn't help either. So, the idea germinated - write a script that creates a commit history, to bypass in future the set of rob-recruiters who overlook other competencies in absence of Github activity.

Now git provides two excellent environment variables, which it uses while setting the time of a commit:
GIT_AUTHOR_DATE
GIT_COMMITTER_DATE

So all we need to do is execute the below in a loop, with commit dates in past:
export GIT_AUTHOR_DATE=$COMMIT_DATE
export GIT_COMMITTER_DATE=$COMMIT_DATE
git commit -m "commit for $COMMIT_DATE" --quiet

Relying on this information, I created a basic script which on execution would create a fresh git repository, add commits from a year in past to an year in future, and push them to your github account. The number of commits per day would be random, and the number of lines per commit would again be random to fool anyone using naive programmatic bots.

So, all that is needed is download the script, and run it as
sh script.sh <Your name> <Your primary github email> <An empty repo>

And viola! You now have a github commit graph, ready to bypass the next Robo-recruiter :)



PS: If you are wondering why I am pushing the commits in two phases in the script, it is due to the way github's streak feature is implemented. It only checks for the top 1000 commits in a single push for the purpose of creating a commit graph, which I detected by trial and error. So, in the interest of time, I decided to lazily copy paste and execute code again rather than cleanly breaking this into chunks of 1000.

PPS: Tested on Mac, comes with no warranties.
You can Download from Github