What NOT to do when someone pisses you off in a meeting

Kiss up and kick down is one of the more common phenomena in corporate environments. It makes sense, after all, bosses are able to offer rewards subordinates can’t.

So when you become a manager, you may be surprised to find there exists an entirely different paradigm, kiss down and kick up!

I have had bosses who I have taken to be some kind of demigod. They handled almost everything with grace and poise. To this leaders, I may have at times been aggressive to the point of being disrespectful.

Too commonly lesser managers have reacted in ways which made the situation worse. In this entry, will be discussing some of the things to avoid.

Ridicule the individual who has pissed you off

The need to revenge is deeply embedded within us. The story of Cain and Abel, a story of betrayal and revenge is literally one of the first stories in the bible.

Thus when we feel attacked, we will immediately feel a rush of emotion pushing us to give ’em all we got.

It doesn’t help our homegrown culture of “Mchongwano” has trained us on the art of snark.

Why it doesn’t work

Your reports know more about you than you do about them. If you think about it, there is nothing strange here, as their manager, you hold a dispropriate amount of control on events in their life. Companies depend on managers for reviews which then inform bonuses or even state of employment. To understand your boss is a survival strategy.

This means what you say may be taken personally affecting the person’s view of themselves. Even worse, you close yourself off to future feedback from the person and anyone else who may have been watching.

What to do instead

No one owns your emotional state. If you are angry, no one made you angry, you made yourself angry. Events in the world just are.

As Ryan holiday put it:

The perceiving eye is weak, he wrote; the observing eye is strong. Musashi understood that the observing eye sees simply what is there. The perceiving eye sees more than what is there. The observing eye sees events, clear of distractions, exaggerations, and misperceptions. The perceiving eye sees “insurmountable obstacles” or “major setbacks” or even just “issues.” It brings its own issues to the fight. The former is helpful, the latter is not.

Instead of reacting to whatever the person has said, be curious, try to understand why they said it.

If you are overwhelmed by emotion, take a break, go get a glass of water. Follow up with the offending individual later. This break will help you formulate a more useful response.

Chastise the whole team

Back when I was in primary school, one of our teachers called the entire class into the staff room. This was not a common occurrence. Neither was the big cane she was holding or the space created between the desks.

As it turns out, the class had performed very poorly, it seemed the best performing student had about 10/30. So she decided the best way to remedy it would be to administer the balance of marks to 30 as cane strokes.

This was not a good experience, it did not help later it was discovered she was using the wrong marking scheme.

While as a manager you hopefully don’t resort to physical abuse, verbally abusing the entire team is just as bad.

Why it doesn’t work

As humans, we naturally lean towards our groups for direction. Especially when feeling confused or afraid. When you attack the entire group, you characterize yourself as the enemy.

If you have ever participated in some kind of civil action, you must have experienced how fear of authority vanished under group fever.

Even if the team does not dramatically rise up against you, you will take hits in productivity. For knowledge workers, which all developers are, you need their commitment to your goal.

What to do instead

Take time off to reflect. Was the vision not clear? Was the team not empowered to act on it? Was there a major blocker which I was not aware of?

Call in a retrospective. This is not the time to blame anyone, you need to see what is going on as objectively as possible. Solicit feedback on how you can better define the objectives.

Finally, learn from your mistakes and move on.

Take over and make all the decisions

Winslow Taylor defined scientific management as knowing exactly what you want men to do and then see that they do it in the best and cheapest way.

Unfortunately, software developers and really all knowledge workers don’t take on too well to this paradigm.

If you feel you are dealing with a particularly idiotic individual or even worse team, the temptation may be to simply make all the hard decisions and give direct orders.

Why this doesn’t work

Modern products and companies that make them are complex. So much so that no individual human could ever fully understand the workings of a modern product, say a vehicle.

As Walter Powell put it:

There are a number of jobs that are based, in large measure, on either intellectual capital or craft-based skills, both of which have been honed through years of education, training and experience. Many of these kinds of knowledge-intensive activities, such as cultural production, scientific research, design work, mathematical analysis, computer programming or software development, and some professional services, require little in the way of costly peripheral resources. They are based on knowhow and detailed knowledge of the abilities of others who possess similar or complementary skills. Knowhow typically involves a kind of tacit knowledge that is difficult to codify

No matter how smart you are, the people working on the product will always have more details than you. This is not even a bad thing. It means your team can scale.

What to do instead

Embrace the power of the team, you see if everyone is working towards the same goal, they will make the continuous improvement on various aspects of the product making it better in ways you did not anticipate.

What you need then is come up with some kind of process with incentives which nudge the team towards good decisions.

How do you handle being kicked? Talk to me in the comment section below, my Linked in chenchajacob  or my twitter @jchex

Facebooktwittergoogle_plusredditpinterestlinkedinmail

Why we are moving to microservices

Ever since I joined Twiga, there has been talk of switching to a microservice architecture. This idea had been baked into the product from the beginning so the switch should not be as hard.

I don’t actively code so there is no technical satisfaction but am still excited about what is coming next.

In this entry, will be talking about what I foresee coming.

The project becomes more expressive

In a previous entry, we delved into what it means to properly name entities in your code.

Having a big vocabulary is useful because we are better able to attend to concepts we have a name for.

By breaking up our system into microservices, we are able to have multiple entities to talk about. For example, it will be possible to have a meeting to discuss authentication and have its code cast in the background that is functionally separate from the rest of the system.

This tallies well with our brain which is wired up for affordance. Briefly described, the theory of affordance states we don’t see things as they are but as what they mean to us. Eg a cup as something to reach towards. Thus our code will now express meaning.

Evolution on multiple timelines becomes possible

Working for a fast growing startup has turned out to require far more versatility than I originally thought. The core product needs to serve multiple parties each having their own goals, values and tech readiness.

We could always work out what would be the best processes for the organization and then code it but of what value would that be to the person using it?

To ensure the product we deliver actually has value to a human, we need to evolve the product to better serve them, when we have multiple classes of users with fundamentally different needs, we are in effect building out a suite of products.

Microservices should help this flow much easier by enabling us to evolve at the rate of the relevant party.

Easier to scale the team

As I briefly explained in the entry How managers cripple their best team members new team members are inherently destabilizing.

Yet a feature of a growing startup is an influx of new team members.

The switch then should enable us to set up independent teams to work on different services while preserving the integrity of existing high performing teams.

Furthermore, it’s now possible to use multiple languages across the system growing our hiring talent pool and enabling us to use the best language for any specific use case.

Do you use microservices in your own organization? Talk to me in the comment section below or on my twitter @jchex

Facebooktwittergoogle_plusredditpinterestlinkedinmail

What it means to be a leader in a software team

In my career in technology, I have had the chance to serve in several leadership roles, latest being Twiga foods. My first time, I assumed leadership, or as the organization referred to it, management involved defining what was good for the organization, breaking that up to tasks then delegating the tasks to individual developers.

Over time, I have come to realize this model of leadership is seriously flawed, not in the least because developers are very smart people, smarter than I am.

Even more important, by monopolizing the work of visioning, I simultaneously lost out on great ideas from others and demotivated them at the same time!

In this entry, we will be looking at what I see is the role of the leader in a software team.

Custodian of priority

All teams face a bombardment of new information every single day. In this blizzard, its very easy to get lost and like the proverbial hyena get split in half!

Your job is to make sense of this incoming mess of requests, messages and bug reports and in the light of your team goals, give them meaning.

Not all tasks are the same, by giving them context, the team can then decide which tasks will give them the greatest return on their time and energy investment.

This also means you guide them in reviewing old commitments to see if they still make sense.

Trawl for new useful information

Nassim Taleb in his classic book The black swan introduced the concept of the unknown unknowns.

A black swan is an event, positive or negative, that is deemed improbable yet causes massive consequences.

In software, this translates to unplanned work. As mentioned in How you pay for technical debt

Like matter and antimatter, in the presence of unplanned work, all planned work ignites with incandescent fury, incinerating everything around it

As the leader, you need to be constantly monitoring your environment for signs of this black swans. It may come in the form of changing business environment for your clients or even unresolved disputes in choices to be made.

Either way, bring them up to the team for discussion and resolution.

Ensure personal growth

Maybe I have been more lucky than others. All engineers I have worked with have been naturally curious autodidacts. Yet for those new in the field, they may have no idea what they need to know or the experiences they need to have to mature into senior roles.

Your work as a leader then is to appreciate raw talent and provide support for growth.

Peter Senge establishes Personal Mastery as one of the core disciplines. He defines it as:

Personal mastery is the discipline of continually clarifying and deepening our personal vision, of focusing our energies, of developing patience, and of seeing reality objectively.

This is very important to understand and practice yourself while encouraging it for others as well.

You see, the higher the skill level of those around you, the more peace of mind you experience. When you are knee deep in a project this is not the time to start wondering if your colleague will drop the ball.

Provide feedback to the team

All successful systems are so because they have someway of getting and acting on feedback from their environment.

This means even as the team is working on the next iteration, you must be mindful of how the last release is being used. What do the users think of it?

Even here, you must be careful the team does not develop a culture of aloofness and insensitivity to the message coming from the rest of the business.

Through this entire entry, you may have noted the leadership I talk about does not need any official designation to execute, yet it will provide a lot of value to your team.

How have you provided leadership to your team today? Talk to me in the comment section below or on my twitter @jchex

Facebooktwittergoogle_plusredditpinterestlinkedinmail