Where I currently work has been without a product manager for about four months.
We’re a small group of devs (five of us) and we have a lightweight “agile” process – really, it means a meeting Monday morning, a meeting Friday, and JIRA, which is convenient for organizing tickets.
I’ve seen a lot of companies, and I’ve seen them do a lot of things, and I’ve generally not minded or much cared, so long as it didn’t get in the way of me getting work done.
In fact the elephant in the room for software engineers is the simple fact we’re all forced to work in offices and that this reduces productivity by a factor of ten. No one speaks about it, because we all know managers require everyone to be in the office.
The problem is the people who run companies and organize software groups are never or almost never software engineers, and so they have absolutely no idea about the requirements for software engineering productivity; in fact, I would say, in all or almost all cases, the matter simply doesn’t come to mind. It’s not thought about. It’s simply – we have an office, everyone is in the office.
So, we’re in all in an office, and then we have all this fashion about how to organize the software engineering effort, *as if this was a major factor in engineering productivity*. The problem is all or almost all companies are in fact gung-ho on organizing productivity but not about *actual productivity* – and software engineers working in an office have bugger all productivity. I do in one six hour session at home what takes a week in the office.
The loss to companies is catastrophic. Software engineering is regarded as an incredibly slow process – in fact it is not, *at all*, but the problem is that software engineers are basically being asked to work while in a disco.
So – this is how I would arrange a software engineering group, althoug here I only talk about the internal organization of the group itself. I’m not talking here about integration with other groups, which is vital.
1. Everyone works at home. Engineers NEED to be PHYSICALLY REMOVED from the office, so other people cannot disrupt them. If home is not peaceful, they get an office of their own, provided by the company, AWAY from the main office.
2. Communication happens by email, real-time chat, or VOIP (and this specifically must include group VOIP). Some conversations are best by email, but some MUST happen verbally (too subtle or complex for typing) and group chat is necessary for meetings.
3. A product manager exists, who keeps track of all work requests, and who’s currently working on what. When an engineer finishes a task, the PM and the engineer select the next task. None of this “plan for two weeks ahead” idiocy. Why do it? when my OS switches tasks, it picks the next best job out of all available – it doesn’t pick a dozen so it’s commited for the next ten seconds.
And this will never happen, because managers want people in the office. They do not know about software engineering productivity to care about it, and as such they are in fact not qualified to run a software engineering group.