Posted 2013-09-26 03:42:00 GMT
I've worked at big companies for a while and when planning a software project you need to figure out how to be a organisational team player and fit with all those other teams and their roadmaps. Here's a handy guide to how well another team's project will help yours:
Apparent suitability for your project,
after meeting the other team
|Development||100% fit, can accommodate your capricious feature requests, designed to scale while consistently providing low latency, beautiful UX in the next quarter/half||Non-existent, vaporware, not used for anything|
|Production||Team tells you to go away until next quarter/half, will not discuss your use-case||Bug-ridden mess failing at its first use-case|
|Deprecated||Unmaintained, so no team to talk to||Years of consistent operation for real use-cases, could do easily do yours if it weren't scheduled to be retired in the next quarter/half|
The kicker being, of course, that the next quarter/half never seems to come around.
A ring of truth perhaps, and why is this?
I would say, the typical incentive structure primarily: proposing a project, you need to make the business case, and once that's locked in (the production stage), you don't want to compromise that by taking on something else — as the first case determines how you'll be evaluated. And once it's working, you will have many requests to fix the tough issues that have small wider benefit — but which are important to the users of the system harming your relationship with them — so it's time to create another project.
How to fix it? Do not emphasize project ownership (outcomes ownership instead), reward engineers who are willing to get their hands dirty across traditional team boundaries, and let them participate in evaluating the performance of the people who work on those other teams. In nearly every business there are teams with conflicting goals, and often directly conflicting, but it is possible to foster a culture of technical collaboration despite that.
A little thought at the beginning of a project in terms of its design can have a huge effect on the lives of everybody who has to work with it, and a little thought about the way people are included even more so. It's too natural for engineers, and engineering managers, to think there are no major feature requests for their system, simply because they have never spent time with the people who interact with the system every day.
Post a comment