In the world of software development, I submit that the hardest thing to do is to continue developing your code after it has been integrated into someone else’s code, which they are also continuing to develop.
The challenge here is that you and this other person are now co-dependent. If you break the build, it’s broken for both of you, and vice-versa. If your next feature requires some "almost finished" feature from the other party, your deadline depends on their deadline. This isn’t so bad with literally you and one other person, but what if you’re part of a large team working on one product, and the other person is an entirely different team working on a different product altogether, with different priorities and different deadlines? That’s just asking for headaches.
Adobe has some kind of magic handle on how to do this really well. Let’s start from the beginning: for a while, they just did Photoshop, which was pretty neat. Then they added Illustrator, a great Photoshop companion. Interoperability was a bit rocky at first, but now it’s a piece of cake moving a design from one tool to the other.
Then from the opposite direction, they released Flex Builder. Web mark-up integrated with Flash. Adobe gets it right again, bridging the gap between two like technologies. But do you know what made things really interesting? Catalyst.
With the release of Catalyst, suddenly everything has to work together. Designs made with a combination of Photoshop and Illustrator have to be compatible with Catalyst, which has to play nice with Flex Builder, which relies on Flash. This is a lot of complex products interacting with a lot of complex technologies; it’s an absolute mess of dependencies. And you know what? They made it work. Seamlessly.
Take a moment and appreciate how awesome that is. Imagine what would happen if they wanted to add a new feature to Catalyst. First, there are the normal issues that may come up in Catalyst:
- Will this break any of Catalyst’s existing features?
- Does the user interface match the rest of Catalyst?
- Does it introduce any new bugs into Catalyst?
- Does it open up any regressions in Catalyst?
- etc
Then, you have to consider what this will do to any incoming Photoshop/Illustrator design files:
- How will new design files take advantage of this feature?
- How will existing design files react to this feature?
- Does the underlying design file format have to change?
- If so, does that cause any bugs/regressions in Photoshop or Illustrator?
- Who is expected to report/fix/test these issues? The Photoshop/Illustrator guys? The Catalyst team? Some combination of both?
- Besides that, is there any work at all required on the Photoshop/Illustrator side?
- If so, do the Photoshop/Illustrator guys have time budgeted for it?
- What parts of the Photoshop/Illustrator changes depend on what parts of the Catalyst changes?
- Can any of the Photoshop/Illustrator work be done in parallel with the Catalyst work? How much?
- How will this affect the deadline?
And of course, that same list applies to how this feature affects the content Catalyst exports for Flex Builder. And that’s just the obvious dependencies — it gets even worse:
- What if a team can’t fulfil their side of the changes? Reschedule? Cancel? Release anyway?
- If one team is late, what does that mean for the others? What if several teams are late? What if everyone is late?
- What happens if the release cycles between any of these products don’t match up?
- Can we release Catalyst with its changes before the changes to Photoshop/Illustrator/Flex Builder/Flash are released?
- What if a user upgrades one product but not another? For that matter, how backwards compatible is this for outdated versions of any of the products?
- Aren’t there thousands of possible version combinations? How many should be tested? Who’s managing this?
And this is just what I’m thinking of as I type. I can’t even imagine what a mess it must be to coordinate features in all these applications. How do you even measure what effect a new feature in one product will have on any of the other products’ thousands of features?
I don’t know how Adobe does it, but they do it and they do it well. If they can keep this up, they’re going to be around for a very long time.