Feb 11, 2012

Politics and nerds

Skill in organizational politics is a function of social skills. The more you have of one, the more you have of the other. Computer nerds are reputed to have a distaste for organizational politics. The word 'nerd' is often used as if the word itself meant 'someone who lacks social skills'.

It takes, however, an exceptionally analytical and logical mind to become a good programmer. In other words, you have to be rather smart to be a good programmer. So how come that smartness seem to flounder in the face of organizational politics?

Some may say that the smartness that nerds possess is of a different sort from the smartness required to engage in politics.  Perhaps.  There are indeed different kinds of smarts.  But I'm more convinced that their smartness is just not focused on politics.

Nerds simply detest politics. Such an attitude comes out of the pureness of heart mixed with  a little naiveté.  They see politics as an unnecessary evil played by people who need to cover up for their incompetence, or by people who see it as a tool to feed their greed. One of the early definitions of politics that roamed the internet was a play on the word itself ("poli" - many, "tics" - blood sucking parasites).

Besides the attitude toward politics, nerds are also unprepared to manage things that fight back. They deal extremely well with computers and software, which respond with a deterministic response to stimulus.  In other word, computers act the same way each time.  Any difference in reaction triggers deeper analysis and debugging to understand why the unexpected variation happened, and what needs to be done to remove that variation.

Politics is about managing people. And people are deterministically unpredictable. The same request to the same person will receive a different response each time. People tend to not want to be managed and tend to want to manage. The nerd is afraid that the engaged person may attempt a coup and end up managing the nerd. Such do not happen in a nerd cum machine interaction.

The pervasive view that politics is only for the incompetent is unfortunate because it gives the viewer an unnecessary disability.

Politics is a part of organizational life. It is an essential part which cannot be removed. Anytime two or more people get together, there is going to be politics. Even if these two people happen to be the most considerate of sweethearts so madly in love with each other. She will do what she needs to do to make sure his eyes do not flit to another. In other words, she will attempt to control his behaviour. She will attempt to manage.

Politics is so pervasive that it is just unavoidable. It's like air. No matter where you sit in the totem pole you are within its reach. The lowliest messenger has to conform to politics. If you're not in the totem pole, you are not in any organization. You are either unemployed, or a Warren Buffet.

While politics exist at the bottom and the middle, at the top it is even more acute, and the stakes higher.  The politics at the top is even more pervasive. Even the highest officer in the land has to contend with politics. The US president may have the most powerful military on earth, but his power over it is limited. Even he has to play games of give and take with senators and congressmen. He also has to engage the same games with countries ranging from the big ones like Russia and China, to small ones like Venezuela, and even with close allies such as Japan, Australia, and the UK.

Politics is as unavoidable and as necessary as grooming. Unfortunately, many nerds also tend to dislike grooming -- some cats have better grooming skills.

If you cannot avoid it, join it.

The first step is to embrace a new attitude toward politics. Politics is like the Marvel comics character ‘Galactus’. It is a "force of nature." Politics is neither immoral nor moral. It is to be likened to grooming, manners, eating from plates instead of cans, and common courtesy -- society expects them and woe to those who do not conform.

There is no free lunch.  There is no getting ahead without politics.

Feb 7, 2012

The Project Manager

Big undertakings involving many individual activities and many individual people need some form of management to organise and direct the works.  Without this management, everything will just sit around and nothing will be accomplished.

What is needed is a project manager.  This  person’s job is to:

  • Ensure clarity of purpose – why are we undertaking this project?  What is the vision for the project?  What is it expected to deliver?
  • Identify constraints – is there a budget we are aiming for?  Is there a timeframe?
  • Determine what needs to be delivered and the activities required – what do we need to deliver to accomplish the purpose of the project?  What activities need to be undertaken to deliver what we need to deliver?
  • Determine the dependencies between activities
  • Identify what resources are needed to perform the activities – resources include skills, material, equipment, and so on
  • Procure the resources
  • Plan the activities – generate a work plan that respects the dependencies between tasks, respect the available resources, and when executed deliver the deliverables.  The result is a schedule of work.
  • Determine the risks that the project face, and plan countermeasures
  • Determine how much the project will cost
  • Determine the cash flow requirements of the project – how much does the project need on a monthly basis?
  • Execute the plan
  • Monitor and control the plan

This list of activities is roughly linear, but they will be performed in an iterative fashion because the activities depend on each other.  The plan determines what resources we need, but what resources are available determine the plan we can have.   The target timeframe determines the schedule of work, but the schedule of work determines the timeframe as well.

Feb 2, 2012

The Essence of Agile

How much of Agile practices can you remove before it becomes no longer Agile?

I was having a discussion that other day with another project manager, and this fellow was saying that he didn’t think you could do Agile without having a card wall.  Now, I’ve done Agile development before using just an Excel spread sheet instead of a card wall to track the progress, so I know for a fact that you could do Agile without the card wall. 

So I said I disagreed and we left it at that.

A little while later, I thought about the matter a bit more and decided that I haven’t changed my mind.  It is not the card wall that determines if you are doing Agile or not.

Let me give an analogy.  The other week my 6-year old son and I were playing basketball.  We weren’t in any basketball uniform.  I was in jeans, and he was in his civvies. We were still playing basketball, weren’t we?

We also were not following basketball rules: each time he makes a shot, it’s worth 50 points. Each time I make a shot, it’s worth 1 point. We were still playing basketball, weren’t we?

Also, he didn’t have to dribble: he could run with the ball as much as he likes. We were still playing basketball, weren’t we?

Lastly, we were not even using a basketball ball. We were using a soccer ball (our basketball ball was too heavy for him). We were still playing basketball, weren’t we?  I believe so.

My point is that there is a core in Agile that represents the essence. The card wall is not an essential part of it.

The idea of the card wall originated from the concept of ‘kanban’, a Just-in-Time (JIT) system developed at Toyota many years ago (as far back as the 1930s would you believe it?).  I’ll write about what kanban is in another post, and explain the big difference between it and how the card wall is used in Agile development. 

The important thing is that in Agile, the card wall is simply a reporting tool.  It give you a synoptic (‘at a glance’) view of where things are.  It is not part of the essence of Agile.

The essence of Agile is constant feedback and constant adjustment

The card wall, the daily stand-ups, even the sprints, are merely communication and administrative techniques.  You can replace each one of these with completely new techniques (potentially better) and still be doing Agile!