More communication problems across the company’s pyramid

I often complain about my managers forcing me to argue lengthly about why I would do something a specific way or why I want to include this feature over this one in the next version of the product.
They force me to bring them up to speed on the current state of my knowledge in order for them to be able to take a decision. The decision being: to let me do it or to prevent me from doing it.

They are very intelligent people and I have them in high esteem but this situation seems wrong to me.

Teach me your job

On one side you have the people working on the project, their heads are geared toward working with the underlying concepts. They’re very comfortable with the building blocks and they can hopefully solve the higher order problems without having to be hindered by basic issues.

On the other side you have a manager which might have technical background (more or less recent) but doesn’t know the details of the project that well. They might know the general concepts and they might have recollection of a previous presentation of the project but their scope is more around deadlines, deliverables and coordination.

The ‘sync up’ usually happens through mail or during a meeting of a couple hours maximum. Very often, during the meeting or sometime after it, in an attempt to “drive” the project the manager will take a decision based on what he learned during his interactions. The hope being that with enough interaction the manager will have gathered enough knowledge to be able to decide what’s best for the project.

The problem is that very often it leaks into the tech domain. And then, in my opinion, It becomes very similar to asking a novice to take a design/feature decision on the product he has just been trained on. The chances that this person will take a better decision than the trainer are small.

You could argue that those people have been in similar position in the past, have a lot of experience, are very capable. But we know how much gap their can be between two similar situations, especially in the still relatively chaotic world of software engineering.

Evil lives in details.

In Orbit

Distance works both for and against the 3rd party observer. He might be able to give more weight to the big picture since that’s all he knows but the remarks and decision he makes often cover issues having been dealt with in previous sessions within the project team. And this is assuming that he grasps the big picture.

I agree that the role of a 3rd party observer or mirror is important to prevent a loose canon from causing a project to drift away. I’m just saying that it shouldn’t be the manager.

Also from a consequences point of view, these managers won’t have to suffer the full impact of their mistakes. Like a general sending part of its troops to a certain death, it will be inconvenient for you to not have these troops for the next offensive but the war is not lost and you’re still a general. Even if your responsibility is invoked, it might be hard to determine that the failure was directly linked to your decisions. And even if you can’t sleep at night you’re better off (some people might differ) than those who lost their lives.

Faith, Trust, etc.

The fact that a lot of managers in the software industry come from an engineer background could also explain why the interaction is sometimes going wrong. They can’t give up the tech side, they’re interested in the details because for most of them it’s sweet memory.

There’s also an issue of trust:
“My project depends on these people to do this and that, if they don’t, I’m screwed! I have to make sure they do it right!”

Note that everyday you do trust random people to do things you rely on: drive the bus, manufacture the stove in your apartment, prepare your coffee, give you an X-ray, etc. and in some cases their failure means more than just you sitting in the hot chair in your boss’s office.
But suddenly as you become the manager you suddenly can’t trust anybody anymore? Maybe you’re aware that you’re surrounded by incompetence and in this case there is a deeper problem you need to care of. But you can’t just live in distrust or can you?

On the other hand, it’s probably right that you can’t trust one person alone.
“L’erreur est humaine” (people make mistakes)

You don’t want to leave any decision unchallenged but you need to be in a position where you can challenge it efficiently and I would argue that a manager is not in a position to do so.
He will only be as efficient as a mirror and the reflected image could have defects which are defects belonging to the mirror. Also in the case of managers who are ex-engineers, there’s a conflict of interest right there! They still have the tech faith, they have some power… It’s so tempting for them to impose their beliefs.

Object Oriented Management

This reflexion is far from being over as far as I’m concerned but I believe the solution is somewhat of an object oriented approach: Leave the people with the most relevant information make the decisions, providing the input relevant to your level of abstraction if necessary. Do not break the encapsulation !


Meeting The Mythical Man Month (part 1)

I’ve been aware of the book titled The Mythical Man Month for quite some time now. It’s meant to be a must read for any software project manager. It’s about time I go through it, I was running the risk of being shot!

Any software manager who hasn’t read this book should be taken out and shot.

It’s definitely a good read, I learned a lot from it, below are some comments on the things that made me react.

Old but still kicking!

This book is relatively old, it was originally published in 1975 and the most recent 20th anniversary edition I purchased is already more than 10 years old. So you could ask yourself does it really matter today? With all the changes in the field during the last 30 years, should I really care? It’s almost like archeology at this point, isn’t it?
Some parts of the book are dealing with actual implementation, they’re not so many of them and they often contain some general wisdom. I confess, I skipped a couple pages where I was getting drown into implementation details (company name, system version, languages) of little use to me but that’s a really small percentage of the content.

Truth is, this book is not so much about technology than it is about groups of people achieving complex tasks so it’s still relevant nowadays because people haven’t evolved much in 30 years.

Some fuel for day to day arguing

I was happy to find in this book multiple references to studies, books and articles providing me with facts to help me convince people around me of the good/toxicity of certain practices. Some examples of this:

  • Hoping that everything will go well is foolish
  • Man and Month are not interchangeable. Add too many people at the wrong time and you’ll be later, your time will be spent in training and inter communication instead of actual development.
  • Adding more people = more work for everybody
  • Architect to embrace change
  • Two step forward and one step back: fixing a bug has a 20-50% chance of introducing new bugs

Many of these points are obvious when you think about it but I often struggle to clearly demonstrate it. Moreover, as the proverb says: “No one is a prophet in his own country” , so when you’re trying to convince management, or anyone, of something, it helps if you can say: “Look! This ultra famous guy says the same thing in his book”.

Interlude: Size matters!

It’s a bit of a side note, but the size matters argument, or more exactly “program space as cost”, appears in the book in the context of system programming back in the 60′s when memory was not so abundant. So you could say that now that we got crazy fast computers with myriads of CPUs and tons of RAM it’s an outdated concern. But a speech by SUN’s CTO and a few articles such as this one woke me up to the idea that size is coming back in the equation. For example, it has an obvious economic impact in the relatively new world of cloud computing such as Amazon EC2 and S3 services for which you get billed by machine configuration, CPU and bandwidth usage. Even for company running their own farms of machines, there is a cost associated with the data center.

30 years old somewhat Agile methodology

Continuous integration, incremental, iterative, etc. I was expecting a lot of Waterfall and related project management concepts but I was surprised to discover that a lot of the ideas in the book are very “Agile”. A reminder to myself that the concepts are not new. Those who know everything will excuse my surprise as I walked through this book reading description after description of agile practices. But after all, Agile methodology is mostly common sens.
Statements such as “the Only Constancy is change itself” or “Architect to embrace change” are typical in the book.

I read:

“It is really impossible for clients, even those working with software engineers, to specify completely, precisely, and correctly the exact requirement of a modern software product before having built and tried some versions of the product they are specifying.”

That was in 1975… So I ask the question, why are we still trying to get the perfect spec? Why is it that I’m asked to produce documents where I’m pretty much guessing the future?
It seems that our industry as a memory problem. Is it a symptom of the lack of maturity of the field?

Tons of example like this: Rapid prototyping, Growing software organically, Finding unobtrusive control methods, using clean debugged component saves a lot of time during component testing (test early).
The author is all about communication.

I like Agile principles because it takes into account the actors of the game (us). We’re not flawless so the methodologies should be oriented toward protecting us from ourselves and not adding more activities that we will potentially screw up. It’s the whole idea that writing down an idea helps dispel the inconsistencies. It’s a form of trial by fire and reminding me of the saying “What is clearly understood can be clearly explained”.

But still there is a smell of waterfall

He’s talking about testing the specification before using it for implementation. It’s agile in the sense that it’s an attempt at shortening the feedback loop but still his aiming at grasping the whole thing before getting down to the dirty work. Smells like waterfall…

He puts a big emphasis on documentation (Objectives, Specs, Schedule, Resources). For the record, I’ll join him on the importance of a diagram. To reuse his terminology, I see UML as a powerful tool to fight the “invisible aspect of software”. But I would avoid aiming at the Pulitzer with my documentation. Truth is that in the world (mine at least) most people don’t read it. In my current environment, at best, it’s a ‘cache’ I use to shorten my interactions with people asking questions. But they still come to me first.

Conceptual integrity is the key

Amidst this agility, the author still retain a somewhat rigid approach illustrated amongst other thing by his attempt to control everything in one place. For him, a centralized decision power is a key, the system needs to be born out of a single (+ backup) mind in order to be consistent and survive. I’m not too sure I agree with that for couple reasons: I think creating artificial communication barriers, for example by separating people in categories: developer, architect and forcing formal communication between them, will only hinders work. Also, people make mistakes so I believe it’s better if nobody (but the majority) has the hierarchical upper-hand in an intellectual discussion, and sometimes the best ideas comes from where no-one expected.

In the end I think I’m more of a believer in the natural way, the best idea should prevail even if it’s coming from a junior developer. Also I believe people work better if they’re implicated in setting the global direction, because you give more value to something you’ve contributed to build. Also people sharing the vision and participating in the thinking process will be on the same “wave length” which will reduce the amount of necessary communication in their day to day interactions.

Spending your time with machines makes you weird

The book doesn’t mention the whole discipline of Usability engineering. His approach seems to try to guess the user rather than directly study the user. His argument seems to be the cost associated with it. But As far as I’ve observed, there’s a strong disconnect between software engineers and regular (non tech savvy) end users. Plus generally software engineers are not the most empathic beings and they lack a lot of education necessary to interpret the user ‘s expression of his need.

(to be continued in part 2…)


Dual Boot Kubuntu/Vista on the T61

Most logs of this kind start with a disclaimer like the following:
“Make sure you backup all data before you continue”
I would add
“Make sure you’re not in a hurry”
“Make sure you have a second computer with Internet Access available

Because you probably didn’t plan on getting a Degree in Linux installation before starting this installation
and because the first time you end up at a prompt looking like this:

grub>

Well, good luck…

Every story has a beginning

I received this brand new Lenovo T61 (beautiful beast), some people like the chrome and shine of Macs,
I like intense black and monolith like shapes (reminds me of 2001: A Space Odyssey).

It comes pre-installed with Vista. I wanted to have an alternative Linux system.
I picked Kubuntu based on a friend’s suggestion and records of installing it on a T61

Constraints

The T61 has a “Service Partition” I wanted to keep (for now, just in case it contains something I wouldn’t find anywhere else)
I didn’t want to nuke everything and start from scratch because I already had Vista running and I’m passed the time when I was enjoying installing an OS.

Doing the job

0. Backup everything
Because it’s very likely that something will go wrong

1. Make room for Linux
I initially to resize the Vista partition using the Computer Management tools in Vista but it resisted me, giving me excuses such as: “Access is Denied”
I switched to using the GParted live CD.
I downloaded the ISO and burnt it to a CD
Booting using the GParted live CD brings you into a minimalist OS into the GParted application (see next section).

2. Partitioning: Think about a sharing strategy
You most likely want to share your data between the 2 OSes, what file system should you use?
My intent was to initially explore Kubuntu therefore I wanted to favor Linux. I formatted my shared data partition using ext3 file system and I installed a driver to read ext2/3 partitions from windows.
The other way is possible as well using ntfs-3g driver for r/w access of NTFS partitions under Linux.

I left the service partition alone, resized the Windows partition (NTFS), created a Primary partition for Linux (ext3), and an Extended Partition containing a partition for the Linux Swap (swap fs) and used the rest of the space for the shared data partition (ext3).

Done. Restart.

3. Installing Kubuntu

Nothing much to say, I restarted the computer with the Kubuntu CD in the drive, It booted from the CD, I went for the “Install Kubuntu”. During the Partitioning step I made sure I wasn’t touching any of the windows stuff.
My layout:
- “/” on the Primary ext3 partition
- the Swap on the swap partition
- “/home” and the second ext3 partition.

Things went smooth.
At the very end of the setup before starting the actual install, there is an “Advanced” button leading to a menu where you have the option of not installing “Grub” to the MBR. I remembered some article mentioning that Grub, if installed to the Master Boot Record would most likely screw up my ability to boot into the service partition.
So from this menu I chose not to install Grub.

4. Escape from bootloader Hell
So that’s when, I think, I made my first mistake. During the installation process Kubuntu (I believe) changed the (active/not active) state of the primary partitions.
So now suddenly after the restart I end up on the Service Partition, and it tells me that my MBR has been defiled but that he’s very nice and it can fix it for free.
It does its magic and there I go again restarting and this time I end up in Vista.

That was close…

Back on the net, with in mind the will to preserve my MBR the way it is, I’m trying to setup Windows Bootloader to do my bidding.
And I came across Easy BCD, nice tool, not the most usable but I managed to do something which ended up not being what I expected.
The application (EasyBCD) welcomed me with a message which, to me, was more or less saying ” I (EasyBCD) don’t know what I’m doing, please help me!” no need to say I was on my tippy toes.
It had already identified the current Windows partition, I thought I just needed to add an entry for the main Linux partition which I did.
It worked. But the same way it works when you step on a mine.

That’s how I met Grub

What EasyBCD does is to setup the Vista bootloader to boot either Windows or to delegate the boot to NeoGrub which of course needs to be configured as well.
I had not configured NeoGrub, naive me. Since I was not prompted to do so I thought the default settings would just do fine. There were signs I confess, but I guess I was lacking the 3 hours of reading necessary to interpret them.

That’s how after restarting I ended up there:

grub>

Tell me, honestly, how am I supposed to come up with:

root (hd0,2)
kernel /boot/vmlinuz-2.5.24.16-generic ro root=/dev/sda3
initrd /boot/initrd.img-2.6.24-16-generic
boot

After every reboot, I would end up facing this prompt, no more Vista, no more nothing.
Hozed, with a ‘z’ like in “zere’s no way I’m getting out of zis”.

That’s when a second computer comes handy!

Happy Ending

After solving the grub configuration issue I was able to enjoy a fully functional system. Since then I’ve been able to get to the real interesting work.


Experiments in email composition

“If I had more time, I would have written a shorter letter.” – Blaise Pascal

No need for suspense, write the conclusion first !

When you’ve written what you wanted to say and made sure you didn’t say too much (or to little), try moving the conclusion to the top of the mail or even in the subject box if the conclusion is short.
Adjust any weirdness, you’re good to go.
This way you increase the chances that your message will pass and if people want to know more, they’ll just continue reading.

A lot of people, in my experience, write their mails like stories or speeches. I personally find mails written this way more difficult to read. I don’t think suspense has its place in professional email correspondence. Avoid convoluted sentences and fancy phrasing, at least if you’re writing to be understood.

Be easy on your reader, consider their attention span and the fact they have other work to do.

Watch yourself read emails, how is your endurance? Do you sigh when you see that the text go past the bottom of the screen? Personally at this point, my motivation drops by 70% and I start looking for hints telling me that I don’t need to read it.

I very often find myself in a situation where I have to send an email announcing a disruptive change. People not getting my message will be people coming to me for help in person later on and I want to avoid that as it is a big time consumer.

That’s my experience so far, tell me if it works for you.

Original quote from Blaise Pascal’s “Lettres Provinciales”, Letter XVI:
Mes Reverends Peres, mes lettres n’avaient pas accoutume de se suivre de si pres, ni d’etre si etendues. [...] Je n’ai fait celle-ci plus longue que parce que je n’ai pas eu le loisir de la faire plus courte.”


Did you say communication problem ?

My manager and I were having an off topic discussion about communication problems…

Not easy

As far as I’ve observed, communication is very hard and most people suck at it. Even language is a poor vector to communicate ideas. It’s too imprecise, people have different centers of reference and will interpret the same input differently. It’s getting even worse with the workplace gone global.

Isolation room

The difficulty of communication within a business seems to be reinforced by the pyramid structure used in most companies (software company in my situation). I came across a book where the author and his team created a revolutionary environment to answer the problem. They leave it to the people who have the best understanding of the problem to make the decision and facilitate their access to the information.

Consider the following example:
when during a meeting in the high spheres, somebody ask a question, the answer is important, decisions will be made. No one in the room picks up on it because the subject is not fresh in their head, the next question comes up too fast and the previous one falls into oblivion.

This event will not make it outside of the conference room and the idea is lost. Sometime later the result of the discussion will take the shape of a decision impacting people, very often those people who could have answered the question and potentially prevented waste to happen (hopefully).
It reminds me of an major idea in software testing, the earlier you test and find a bug, the cheaper it is to fix it. I believe it’s the same with ideas.

Lost in translation

A manager cannot possibly reflect the entire thinking power of his team and cannot channel the exhaustive content he’s exposed to on the other side.
Some would say that it is his role to act as a filter to prevent people around to be flooded with irrelevant information. But truth is people can filter it themselves with mostly low overhead, you might get dragged into a meeting irrelevant to you but you should be able to smell that before hand most of the time and avoid it. And if you failed to avoid it, hopefully you’ve brought your laptop and you’ll be able to quietly mind your own business.

The Wisdom of the crowd

Another example: My manager pointed me to the InTrade website which allows the users to bet on predictions. A way to leverage ‘the Wisdom of the crowd’.
He told me that some companies use it internally to take the “pulse” of the company (ex: Is this release going to be late? Is the new pension plan a good idea? etc.)

People using InTrade internally are in my opinion looking to find a way to harvest the information they cannot see because of the filters they’ve created by parking people in different levels of knowledge.

Collaborative management instead of consultative management

Let the information flow, broadcast the meetings, allow channels for feedback. What are you hiding anyway? We’re all working for the same company.

Managers should be the enzyme that accelerate the metabolism of their team. Not the head. I see Managers as the producers of the team, their agents. They go and represent them in the real world but they don’t pretend they are them.

Can you imagine Deep Purple or Aerosmith’s agent showing up at the record company’s office and proceeding to play their latest song to get a contract?


Discovering new Alternatives for SCM

Quite some time ago, I worked with Clearcase and I liked it. I enjoyed the flexibility of the views, it’s merging capability, the integration in the explorer (I was working on Windows back then) but It’s a fuel guzzling Monster Truck.

Recently, I’ve been working with CVS and I’ve learned its limits. Can’t move files around, lack of meta-data, overall performance when things get really big. It does the basics but get pushy and it will drag you to the dark side forcing you to accumulate brittle hacks.

A couple weeks ago I’ve heard about GIT and it seems promising.
For now I’ve only put the tip of my toe in. I was naturally going to SVN for salvation but a friend introduced me to GIT. He gave me a little demo on his laptop and It picked my curiosity.
Side note: It’s good to have tech savvy friends doing the tech watch when you’re knee down in everyday crap.

One of my criteria for evaluating it will be: how much can I do before I realize it’s there? I’ll pass it through all the problems I’ve had with the others, and see how it goes. Then I’d like to find what it can do that I would never have hoped of doing. I’m worried about the installation/roll out, we got users on windows and the binary available list issues such as missing features. I’m curious about the deployment also, we’ve got all this people across the world, in India for example where the connection is very slow, will it solve the problem?

I got my repository on Git Hub, I guess I’ll figure it out soon.


Welcome

Starting today, I will try myself at blogging.

I’ve read here and there that it is a valuable exercise for personal development. Through blogging you can learn to write better, to communicate better.

If people deign participate and reflect your ideas, you might find an opportunity to learn about your subject or just about communication.

Blogging is like entering a room full of mirrors.

J.


Follow

Get every new post delivered to your Inbox.