I have found that what is important for a software team is having members that can work well together. It takes time to make such a team and some people can never work well together. Organisations should spend considerable effort building and maintaining effective teams. I am often surprised at how poorly this is understood.
Technology also takes time to understand and be effective with. A good team can usually work on anything and still be a good team, given that they have enough time to ramp up, though.
My personal feeling: build strong teams. Ignore technology for the most part. Put all your effort into getting people who work well together, working together. Allocate time and money into making sure that the team has time to gel and that they have the resources (tools, equipment, and working environment) that they need (hint: each team requires different resources. Think hard about what each individual team needs).
After that you have choices. Keeping a team on a single "product" eliminates ramp up time. On the other hand, it also leads to singular ways of thinking and silos. If you have a "product" that absolutely needs responsive development all the time, then consider having a "product" team.
On the other hand, not everything requires instantaneous response. A good team will usually be able to ramp up to very near full speed in about 3-4 months. For some things, that is completely reasonable. You have to consider the cost of maintaining a "product team" vs the cost of ramping up a "project team". The advantage of the "project team" is that a new team can often come in with new ideas that will improve the project. Moving project teams around from time to time can ensure that teams are exposed to other ways of thinking and this can help your organisation. The advantages and disadvantages are not necessarily obvious.
It doesn't take the contradicting interests in to account. People in IT should really stop to pretend that they are the only smart people that know how to run a business.
A cfo can easily understand the benefits of an organizational capability to continuously improve a core business asset. But he also understands the difference between capex and opex and needs to take decisions in order to achieve the strategic goals of the company. This strategy can or can not define software development (for a specific goal) as a core in house capability that gets an investment. This relates also heavily with the defined core business etc. Without understanding the long term strategy of a company, it does not make a lot of sense to come up with generic advice.
The ceo and the management board do generally (almost intuitively) understand which activities will generate competitive advantage. If they are not in the silicon valley hype, this can mean that they can make a deliberate choice to invest in other things than software teams. Is it really that unthinkable that other things than software can bring value to a company? Do all companies need to act like Google or Facebook?
>>for greater responsiveness and a higher benefits realization ratio, “product-mode” is a more effective way of working than projects.
This is a sweeping statement. This could definitely lead to higher benefits and lower responsibility for the consulting company. That is almost for sure. But that doesn't mean that a short living project organization is a bad idea by default. The choice needs a much more substantial argument like the probability of a positive realization result (depending on the complexity and uniqueness of the software) versus risk if it does not get realized etc. If it can't be bought of the shelf, it can be outsourced or developed entirely in house by long term perm employees...
>>it may feel unsound to those who are used to approving big change programs with detailed roadmap...
If a project can be predicted by a high enough level of certainty, I would say that there is nothing wrong with a detailed roadmap. Also here, a false dichotomy.
>If a project can be predicted by a high enough level of certainty, I would say that there is nothing wrong with a detailed roadmap. Also here, a false dichotomy.
In large orgs, roadmaps come to be depended upon by stakeholders and other internal dependencies, who immediately base their roadmaps and thinking around yours. That means the cost of changing something on yours quickly mounts — it's no longer a matter of hoping your boss is flexible enough, almost your entire org has to be able to cope with a massive re-roadmapping exercise as the changes cascade through dependencies.
Sure, you said 'high enough level of certainty'. And that's fine for building bridges. Less so software. Not least because it needlessly constrains innovation. If a team comes up with a better idea part-way through building something that's on a published roadmap, what does it do? Change the roadmap and cause all the upheaval above? Try and hit the original date even by starting over on the new idea? Or just plough on building what it now knows is a less-than-best idea?
I've seen teams do each of these things, and cause needless misery, all because of unnecessary roadmapping. It's such a seemingly innocuous request — "what things are you working on this year and what dates will we get them?" — yet answering it (as asked) can have dramatically outsized repercussions.
> It's such a seemingly innocuous request — "what things are you working on this year and what dates will we get them?" — yet answering it (as asked) can have dramatically outsized repercussions.
Yet, the extreme alternative of being entirely unable/unwilling to answer the question: "I need this, when are you able provide it?" also has huge repercusions.
If your organisation is aiming to be more than a bunch of independent units that happen to share a balance sheet, you need co-ordination and sometimes that requires a roadmap.
If the internal "Database as a service" product team doesn't offer any sort of Geo capability, and I need it then I have to solve that problem.
If that team cannot provide a roadmap, then I have to build a work around within my product team. This costs money, and that affects the P&L of the organisation. The organisation's goals are best met by having this capability built in the right place, with respect to upfront cost, ongoing cost and time to market.
You need _some_ form of roadmap to make this stuff work. The argument is about size (volume and duration) and flexibility. But those aren't absolutes, and we can argue forever about "how big is too big?" (but let's not). And so we end up with articles that talk in vagaries like "big change programs with detailed roadmaps" which doesn't mean much.
> If your organisation is aiming to be more than a bunch of independent units that happen to share a balance sheet, you need co-ordination and sometimes that requires a roadmap.
Yes, you need co-ordination. No, you don’t need a roadmap. If you’re doing innovative new things, a roadmap is almost the worst possible way to try and co-operate on them.
Let’s say you really do need your geo feature now. There are two happy answers from the DB PM: “we’re working on it now, estimate is x” or “it’s top of our list, we estimate starting on it after x”. Neither of these need a roadmap.
The unhappy answer is something like “we’re not working on it, it’s fifth on our priority list”. You also don’t need a roadmap for this. In fact, this is a more honest and useful answer than the roadmap one — which would be something like “it’s behind four other things so slated for Q3”.
The roadmap is a crutch to avoid the hard conversations about priority that are the core of good co-operation. Why? Because the roadmap suggests that while geo isn’t priority 1 now, somehow by the time Q3 rolls around it will be, and so you can start planning against that. That is going to leave you unhappy in Q3, almost for certain.
Because the truth of the matter is implied in the priority list answer: “this is fifth to us. So we will work on it when we finish what we’re on now and if we get through the four things in front of it and if nothing else comes up as a higher priority in the meantime.”
If you need geo, either way you now need to make a case for higher priority, to escalate, or figure out some other way to do what you want because clearly what you need isn’t an overall business priority. The roadmap also makes all those conversations harder because they become about dates and the PM can say “of course it matters to us we just can’t start it until Q3, do you really want to resequence all these other things? What about the impact on all the other dependencies? Seems bad”.
Obviously this just leads to worse and worse conversations, until management steps in and says the real problem is a lack of transparency. What is really needed, they’ll say, are better roadmaps, ones that expose dependencies properly, ones that let the consequences be seen, ones with a much higher granularity. And a PMO to help us run it all.
Before long, you’re no longer co-operating, you’re fighting over Gantt charts. This is the state of affairs the article is intending by “big change programs with detailed roadmaps”.
And it can all be avoided by not pretending that work stretches out in front of us on a calendar. We don’t work on geo because Q3 has arrived and “we promised on the roadmap so I suppose we’d better”. We work on geo because of all the items on the shifting sands of priority, geo is the top one now and that priority is broadly agreed across the business.
All you need are three ordered lists: “stuff in flight”, stuff that’s up next” and “stuff we’re looking at but haven’t committed to at all”. All the benefits of roadmap transparency and priority still surface, with none of the bad consequences of trying to express those things via a calendar.
> If you’re doing innovative new things, a roadmap is almost the worst possible way to try and co-operate on them.
Very few organisations are or should be exclusively doing "innovative new things". Upgrades of old tech, compliance with new regulations, automating out dated processes. Those are all needed and rarely need innovative new things.
> it’s top of our list, we estimate starting on it after x”. Neither of these need a roadmap.
Because you've decided that "roadmap" is term that doesn't apply to "starting on it after x".
"We haven't started on this, but we will plan to do it next" is a roadmap!
"We like the idea, but the team are all busy on things that we expect to take up all their time for the next 6 months" is also a roadmap
As I said in my parent comment:
> You need _some_ form of roadmap to make this stuff work. The argument is about size (volume and duration) and flexibility.
It is unlikely that any organisation can/should do a 3 year roadmap. But a lot of teams already have a 6 month roadmap because they're already committed to that work.
> Because you've decided that "roadmap" is term that doesn't apply to "starting on it after x".
It's more like you're defending the idea of roadmaps by saying any list of stuff to do — or even saying "we're busy!" counts as a roadmap. That's not what's generally understood by the term, nor is it what the article is getting at.
I know you know what's really meant by roadmap, because your example of "when am I getting my geo?" doesn't work without a classic date-driven roadmap.
> But a lot of teams already have a 6 month roadmap because they're already committed to that work.
And those teams are inviting trouble when things pop up that override those commitments. Like Meltdown/Spectre. Or an unexpected competitor event. Or an economic change. Or a third-party intervention. Or any one of a number of things that need reasonable-sized responses and can't wait six months.
If you're working off a prioritised but uncommitted list, none of these things are problem, because you won't have allowed your stakeholders and those dependent on you to become coupled to your current 6-month view. If you have allowed them to become coupled, then you've just multiplied the organisational impact of each one of those events.
PMs should be creating decoupled, co-operative and flexible organisations where disruptive change is expected and accommodated, not tightly coupled, brittle, organisations where change is mitigated and worked around. Dated roadmaps are a symptom and a cause of the latter.
> It's more like you're defending the idea of roadmaps by saying any list of stuff to do — or even saying "we're busy!" counts as a roadmap. That's not what's generally understood by the term, nor is it what the article is getting at.
I'm defending roadmaps because I believe that any plan with future dates counts as a roadmap, and because such things are essential to any sort of cross unit coordination.
If the DB team says "I've prioritised Geo, but I've not committed to it, so I therefore cannot give you any idea of dates", then that's not helpful to me. I still need to deliver my Geo capabilities, but all I know is that the team I'm dependent on may or may not do it, at some point in the future, and even though they have the best information about when that might be - because they know their priorities, workload and team size, better than I do - they're not willing to tell me what it is.
So, I need to work around them to get something done, and build it myself, even though there's a possibility that they'll deliver it in the timeframe I need. I have no other choice because they won't help me put a plan together. Sure, I've now avoided being affected by those "things that popup" but only because I've avoided having any dependency on the team that ought to be doing the work.
Other teams are making plans. Launching a product takes time. Meeting compliance deadlines takes time. Reskilling a workforce takes time. Getting contracts signed takes time. They are incorporating your roadmap into their plans, and if the roadmap you give is "I'm not willing to give you any predictions past the end of this month" then that's the roadap that they're basing their plans off. It absolves you of any responsibility because you never committed to anything, but the organisation as a whole suffers because everyone else is having to spend more time and money to work around you.
> I still need to deliver my Geo capabilities, but all I know is that the team I'm dependent on may or may not do it, at some point in the future
I think the point I'm trying to get across to you is that this is always the case — even if they try to shut you up by putting it on a roadmap.
If Geo's not such a priority that they'll do it now or next, then it's going to be at the mercy of whatever it's competing against when the roadmapped date rolls around. You may not get it then either — and you'll have wasted all the time and money you spent on compliance/reskilling/contracts based on the faulty assumption.
The idea that "I need this thing and they provide the thing, so they ought to do it" is nonsensical. They ought to do what provides the most business value at any given time. If that's genuinely providing your thing, gravy, it'll be high enough up their priority list that you'll know they'll very soon be working on it.
If it's not, then the fact that it's on a roadmap for somewhere in the next year is still meaningless: the chances are extremely high that something of higher business value is going to arise between now and then.
Basically, you should treat other internal teams like you would any third-party supplier. Have a plan B. Say it's (eg) Oracle who are promising a geo feature you need in their upcoming release. You don't know when it's going to ship, but you know if it does you can make use of it. So you plan and act as if you might get it, but you also work out what you're going to do if it gets pulled.
That's prudent risk management. You should be doing that anyway. It's not "working around Oracle". Your organisation doesn't suffer because it doesn't control Oracle. Your organisation is more resilient because it has increased its flexibility.
>> for greater responsiveness and a higher benefits realization ratio, “product-mode” is a more effective way of working than projects.
> This is a sweeping statement.
It also can quickly degrade to being horribly untrue. A product team justifies its headcount and activity decisions in a silo.
The product owner justifies a budget that translates roughly into team size and then sets to work on whatever satifies the objectives they've been given.
But a recurring truth of large organisations is that silos evolve to justify their own existence and size. You keep having $N people costing $X working on product $T because the product owner justified it to someone, not because it delivers the high benefits realization across the organisation.
The article's "New Silos" section just sweeps this to the side with "but it's better than the old silos".
And it can be, but isn't definitively so.
Any autonomous unit runs these risks, and unless the unit has its own P&L (with a real source of income, not just money taken from other people) preventing it from becoming bloated and serving its own desires (over the objectives of the organisation) takes hard work and requires proper oversight.
Wouldn't it be easier to measure the P&L of a product (i.e. the output of a product-mode team), vs. the contribution of a single project to the company?
I agree that the product/project dichotomy doesn't solve the silo problem entirely, but it seems to make it easier to tackle if the organization is inclined to do so.
I think you're right that in the case of some organizations, the momentum of a product team could cause it to be harder to scale down than a project team (since it's expected that all project teams will wind down after a fixed time), but I don't think it's a clear win either way.
> People in IT should really stop to pretend that they are the only smart people that know how to run a business.
But one problem I have seen as a consultant is companies don't realize they are software companies now. For instance, they are no longer a bank having a small IT department, IT is now their core business and should be treated as such.
Not to be nit-picky, but the 'means' to provide the result are in the core-business of the enterprise inseparable from 'the business'. Being in the 'conceptual' banking business without the means to do banking isn't going to fly. Same as casting a farm as a 'food produce provider' and telling them that farming is not what their core business is about. Semantically correct, but not useful for most purposes.
Grandparent said IT is a means. There are other means to provide the core business of banking. There are banks who outsource / spin-off not only their IT, but even transaction processing and settlement.
> Same as casting a farm as a 'food produce provider' and telling them that farming is not what their core business is about
The correct analogy would be the other way round: a 'food produce provider' whose core business it is to distribute food produce. Here, too, the farm is a means to the end, but it's not the only means.
Depends on the company, maybe some methods seem primitive by our standards but they can be extremely effective nonetheless. I strongly suspect a lot of it unnecessary, I've seen a VC funded startup tackle the same problem that someone solved with a mailing list. Software expertise seems to be the most expensive generic skill set that you can hire for anywhere today -- even if you hire the people they still might be crippled by having to work with legacy infrastructure; I've seen a live SCO Unix server not too long ago.
i would think Martin Fowler would know better than this.
to argue that the meaningful rubric of effort ought to be a "product", he creates a straw-man called a "project"
the much more meaningful comparison is to compare products versus "platforms" and "tools/infrastructure"
if he had done that, then he i bet that he would conclude that all three rubrics of effort are necessary, and preferring one vs the other is a question of priority, not "do one instead of the other"
ie: some things you built to sell; other things you build so you can build those things better and more efficiently; and still others you build for use as reusable or modular components across multiple future products, so you don't have to build the same component over again for each product that requires it
"tools", eg: the 250-developer-hours spent on a "project" to create an automated testing & deployment pipeline, will likely net out in a few months and result in higher quality products almost immediately
"platform": a "project" to factor out code common across many workflows in a typical web app, and re-implement that code as microservices having endpoints available to any of the multiple data flows that need them (for instance, "user-login & authentication", "user-profile fetch", "re-ordering user-search results using learning-to-rank algorithm" etc
a project to build such reusable utility micro-services obviously don't result in a "product", and yet such a project is usually cost-justified (in CFO terms) even over short-term periods (< 90 days)
The opposite of this would be "build it to walk away." It's not obvious that every project worth writing some custom software for is worth having a dedicated team working on it.
You need to think seriously about how to avoid changing dependencies, though. It's like planning an exercise in retrocomputing in advance.
1. Create a team to build a product and maintain it.
2. Once the product matures, and needs less attention, shrink the team or use the free capacity to build another product and add it to the team's portfolio.
3. If at any point in time the workload becomes to much, grow the team.
4. If the team gets too big, split it and distribute the product portfolio onto the two parts.
I used to think like that, then I became a consultant and got to enjoy how companies whose main business is not at all related to IT do work.
100% of them don't care about code beauty or maintainability, just something that does what they need for their actual business, done in X days within Y euros/dollars/yang/....
So they get what they want, with the quality they are willing to pay for.
I find it interesting to observe that Apple - THE product company - works in project mode. Apple is mainly organized by function. Presumably to avoid product silos
My impression is that Apple works in project mode only for building a new project, not improving existing ones. The reason quoted for this was secrecy, not breaking down silos.
Where did you read that they work in project mode more widely?
This should be called "problem-mode", not "product-mode". The distinguishing feature is that teams continuously work to solve a problem. This doesn't end when the product is finished.
I'd like to see more organizations adapt this way of thinking in terms of the way they build software. Turns out business functionality is a great way to define boundaries for a service in a micro-service architecture. There's really no reason why the application code that gets a list of book recommendations (functionality provided by the business) can't be completely separate from the code that provides the user with a bio for an author (functionality provided by the business), or ratings for a book. This allows teams to work independently and in parallel. Organizing software development around projects makes it more difficult for software developers to leverage tools for continuous delivery and deployment. Project based development really does slow you down.
Hmm... I guess my way would be to have teams that work together to deliver business functionality over products or projects. Functional teams, if you will. I see thinking in terms of products as a step in that direction.
I'm not sure much can be done about this. It is what it is. Some organizations can afford to maintain an "A-team" to crunch through their problems with a good folk-memory. Other organizations can't. In addition the first kind of organization often needs something done pronto, ahead of when the A-team can get to it.
Working in big orgs, I've seen before the problems that too extreme a project mentality can cause. Developers who move on to the next project on another system losing institutional knowledge, systems left to "rot" because no-one has budget to fix them or keep them up-to-date.
However, what they are describing is really a series of projects with the same team on the same system or "product".
I think there are advantages to both ways of working, but the appropriate one needs to be chosen.
It is ironic that, right now, we are in the midst of an event that shows this to be a false dichotomy, and that projects and products can be cross-cutting concerns. I am, of course, referring to the multi-product project of dealing with Meltdown and Spectre.
Technology also takes time to understand and be effective with. A good team can usually work on anything and still be a good team, given that they have enough time to ramp up, though.
My personal feeling: build strong teams. Ignore technology for the most part. Put all your effort into getting people who work well together, working together. Allocate time and money into making sure that the team has time to gel and that they have the resources (tools, equipment, and working environment) that they need (hint: each team requires different resources. Think hard about what each individual team needs).
After that you have choices. Keeping a team on a single "product" eliminates ramp up time. On the other hand, it also leads to singular ways of thinking and silos. If you have a "product" that absolutely needs responsive development all the time, then consider having a "product" team.
On the other hand, not everything requires instantaneous response. A good team will usually be able to ramp up to very near full speed in about 3-4 months. For some things, that is completely reasonable. You have to consider the cost of maintaining a "product team" vs the cost of ramping up a "project team". The advantage of the "project team" is that a new team can often come in with new ideas that will improve the project. Moving project teams around from time to time can ensure that teams are exposed to other ways of thinking and this can help your organisation. The advantages and disadvantages are not necessarily obvious.