Tag: teams

  • Does Modeling Have a Place in DevOps?

    Does Modeling Have a Place in DevOps?

    As organizations adopt DevOps, they not only release smaller changes sooner, but they also change the way they develop software. Additionally, applications no longer are seen as giant monoliths, but rather as dispersed across dozens of services that may be built on different platforms (from Node.JS to .NET), depending on the team and technology du jour. To complicate matters even more, as technology is changing, so are business requirements.

    This is where an application model comes in. It saves time, ensures quality and increases organizational knowledge of the application and its components that are constantly being changed and rebuilt. This article will explain what an application model is, who is involved in creating one and how to start using it.

    What is an Application Model

    The application model is not a specific set of unified modeling language (UML) diagrams or models used in a direct 1-to-1 relationship with the code. Rather, it is a high-level document that furthers understanding of the application and helps provide insights about that application.

    The model needs to be approachable to personnel from many different business roles, including developers, project managers, IT administrators and even users. The array of people who might use the model should give a rough idea about technical level.

    Kanban2

    What makes the application model so different, so useful and so important is that it defines not just the field of the application but also the specific domain, which is also why it can be called a domain model.

    Field vs. Domain

    For example, a core function of banks is to underwrite loans, but they do many different types of loans. A field of underwriting could be as specific as commercial underwriting for loans over $5 million. This field will have many similarities no matter the bank because underwriting is a regulated practice; therefore, the information used to make a decision is mostly identical.

    However, the field isn’t specific enough to create an application model because it doesn’t include the unique factors of a specific bank—things such as the amount of weight a system gives to any number of loan factors (credit score, cash on hand, etc.), processes that are unique to an individual bank or even specific nomenclature that bank uses. All of these factors go into creating the application model.

    In the end, the team gathered will build a complete model of what the application is and how it currently works. It’s important that the model being created reflects the actual application and not an idealized version of it. Because many business applications are quite large, it often makes sense to have a broad model for the entire application and several more intricate models for specific sections or features.

    Bite-sized chunks

    For example, a bank will have different criteria for commercial underwriting depending on size, income and even type of business. While the overall application covers all the different types of businesses being underwritten, different sections could easily be divided by requirement and modeled individually as part of the whole.

    Lastly, it’s important that the model is reflected in the code base for easy understanding by the development team. If the model is meant to serve as a central hub for conversations about changing and improving the application, the decisions and insights found during those conversations can be relayed and documented for the development team more easily and much better if there is a tight relationship between the model and the code base.

    How to Create the Model

    As mentioned earlier, the model must be approachable and understandable to individuals across many different business roles and with different backgrounds because it is the thing around which conversations about change and improvements happen. So, the first logical step in creating the model is assembling the team.

    The core team should share several attributes for success. They should all (no matter their business title) be very familiar with the application and the current processes; this is not the place to learn about how things work.

    At a minimum, the team should include developers, operations and project managers, but knowledgeable users can also be invaluable. Everyone should also be above average communicators because they will be working to create understanding with the core team and relaying that understanding to non-team members.

    Communication Matters

    Communication is an extremely important skill for any member of the model team to have. For example, there could be an incredibly gifted developer who has vast knowledge of the application being modeled, but who speaks the local language as a second language and without advanced and nuanced proficiency. This is fine when changes that they are working on are documented through a ticket system and can be understood by reading the ticket and looking at the code base; however, it’s not appropriate for the modeling team.

    At best, that developer will slow down the entire modeling process because they will have to ask many questions to fully understand what is being said by non-developers. At worst, that developer will not ask questions to get the understanding needed, and therefore will not be able to share their insights with the modeling team nor adequately explain the model to fellow developers.

    Once a team has been created, the best start is to talk about the application itself as it is. The goal is to create a shared understanding of how the application works and how it’s being used. Some good starting topics are:

    • What does it do well, what doesn’t it?
    • What’s missing from the application?
    • What’s in the app that’s not being used?
    • What other applications does this interact with and which processes?
    • Is the application being misused (e.g.: a field labeled one thing used for another)?
    • What is the process and data flow?
    • How much overlap is there between data and objects?
    • How granular are security requirements?
    • What are the application deployment specifics?
    • Which users will need access?
    • Which APIs will be used?
    • What are the Performance and Health Monitoring requirements?

    Conversing around a whiteboard is often helpful for quick sketches and lists that everyone can see. You’ll note that there are both non-technical and semi-technical topics above, so a good project manager who is familiar with both ends of the application can be invaluable in facilitating discussion.

    Miscommunication

    For example, if an underwriter who works on business loans was describing the process to a group modeling an underwriting application, they might inform the group that a credit rating is one of the factors that is used in determining loan worthiness and needs to be recorded in the application. Credit ratings are something that everyone who has ever had a credit card, home loan or even auto insurance is familiar with. However, it also presents an opportunity for miscommunication.

    Individual loans (for things such as a mortgage) use a credit rating score that can go up to 850. A developer might know this from personal experience and create a field on in the application to record a credit score. Restraints on the field could be numeric only, with a range of 300 to 850 (this would help ensure that only valid scores were entered). However, businesses are given credit ratings with letters and symbols—not numbers—such as AAA, for example.

    In this example, if there were no follow-up questions and no examples used even though multiple people on the team were using the same term and thought they were using it correctly, there is still miscommunication that would result in an error in the final software that would then need to be fixed.

    As discussions progress (and it will take time), what is being developed by the modeling group is a shared understanding of the application, as well as shared knowledge of how to talk about it. This allows words to be used precisely with the assurance that everyone on the team is using them in the same way.

    Sometimes this understanding is referred to as a universal language because through questions, miscommunications, explanations, demonstrations and discussions, what was created by the core group is a way to easily and fluently talk about the application without any misunderstanding.

    Using this shared understanding documenting the application should be achievable. Because the application model isn’t a set series of diagrams or maps, there isn’t a definitive template for creating one, but many teams have found that a combination of data flow, activity, use case, sequence and component diagrams are at a high enough level that everyone can understand and use them, while still being technical enough to be useful for the development team. It can also be helpful for text documents of notes, snippets of sample code and even photos of whiteboard drawings to be part of the model.

    Of course, a series of diagrams and notes can be messy to use and organize, so oftentimes a mind-map can be helpful as a method of keeping track of the disparate parts and diagrams and maintaining ease of use.

    Modeling for Development

    Having a model is all well and good, but how does the model help with development? By defining the application not just from the developer point of view, insights will have been gained about what needs to be tweaked, what needs a major overhaul and what needs to be demolished completely.

    By not just knowing what needs to be changed but why it’s broken and what lead to the break makes changing the software not just an issue on a ticket, but a complete picture. Also, noting application traits such as data overlap, object reuse and layers of abstraction allow the core development team to be able to develop and iterate quickly without worrying about changing functionality in an unplanned way, thereby saving on testing time and costs.

     Modeling to Save Time

    For example, if a new federal regulation were introduced, and several new pieces of information had to be logged for loans of a specific size (or greater), the domain model might show:

    • That some information was already being collected and only needed minor updates.
    • None of the information was being collected at that size loan; but it was for a different size, and that function could easily be added to that section of the application.
    • That data wasn’t being collected on loans of any size, and a conversation might ensue to determine if it was worth including the same data requirements on loans other than newly regulated.
    • That information could be calculated based on existing procedures and would only need to be accurately logged and kept.

    Surely, a model is only useful so long as it’s current. Any changes to the application need to be entered into the model. An outdated model can be worse than having no model at all since conversations that occur around it are started with false data and assumptions. If a model isn’t maintained, then all of the organizational time and effort that went into it and shared knowledge it created are lost.

    Maintaining the model is key to ensuring its usefulness long after it is first “complete.” Once a model is created, it also can be helpful for the members of the modeling team to present and discuss it with their department coworkers. Sharing knowledge beyond just a few people ensures that no matter what personnel changes happen or what development trends and methodologies are implemented in the future, the model can carry on and maintain usefulness as a teaching and documentation tool.

    Modeling for Operations

    As applications and infrastructure become more and more intertwined, it becomes critical that both Developers and Operations are involved with creating an application model. Any changes that will be considered based on the model will have to take into account factors such as security, application monitoring and the host of other criteria that Ops deals with.

    Designing Changes with Devs and Ops

    When evaluating an organization for a loan, the credit rating of that organization will need to be acquired. There are vendors that perform the task of rating other organizations, and individual banks will have preferred vendors for that metric.

    If the task of gathering these ratings were to be automated, a developer might want to implement a simple process wherein the application queries the vendor through its API and waits for a reply. This is simple and straightforward, and only requires two pieces of data: the query and the report. However, Operations would certainly step in because this scenario would be a security risk. It would either involve two-way communication or require leaving the communication channel open for an extended period of time.

    A better solution that could be created with input from operations might involve an additional piece of data: a query ID. The interaction would then consist of multiple steps such as a query being made, a query ID getting returned and, then, at regular intervals, the vendor being sent the query ID until the report is ready.

    Operations will be involved in the application development, either from the start where it can help define practices and procedures that the development team must follow, or before the application is released and it raises red flags and security issues the development team must comply with before the changes are released. It’s much more efficient for Operations to be involved from the start.

    Get Modeling

    Organizations have proprietary software because it is a competitive advantage for them to create their own applications based on their business needs. Because business needs are constantly changing and evolving, the software that encompasses them must change and adapt as well.

    Finding methods that allow for quicker changes while ensuring better change quality should be a goal in any organization. Creating an application model, and the shared understanding that goes with it, can be an invaluable part of any application that faces maintenance or overhaul.

    About the Author / Scott Reece

    ReeceScott Reece is a huge fan of the greater visibility and communication enabled by DevOps. As a Friend of Astah Scott has been successfully closing project communication gaps by using models and team building. With more than 10 years of project management experience, Scott currently serves as a Partner Director at Inedo.

  • To Be Continuous: The Fear of Shipping

    To Be Continuous: The Fear of Shipping

    In this segment of To Be Continuous, Edith Harbaugh and Paul Biggar talk about the fear of shipping and if code is an asset.

    Edith Harbaugh, CEO LaunchDarkly

    Edith is CEO and cofounder of LaunchDarkly, a continuous delivery tool of “feature flags as a service.” LaunchDarkly powers software teams to quickly launch, measure and control their features.

     

    Paul Biggar, CEO CircleCIPaul is the CEO and founder of CircleCI, a continuous integration and deployment platform that automates development workflows and IT operations, allowing developers to ship quality software significantly faster.

     


    [soundcloud url=”https://api.soundcloud.com/tracks/229127881?secret_token=s-fslKp” params=”auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&visual=false” width=”100%” height=”166″ iframe=”true” /]


     

    Paul: Okay, so one of the things we wanted to talk about this week was the idea of shipping velocity and how it’s affected by team structure, sort of miscellaneous factors that aren’t part of continuous delivery.

    Paul: So at the end of the last episode, Edith, you said, I think this was a quote from Yammer VP, “The organization you design is the software you built.”

    Edith: Yeah, it was actually from the CTO Adam Pisoni and it really struck home from me because I see this at so many companies, they have a lot of engineers and they wonder why they have a lot of code but not a lot of product. And it ties back to what you just said of specializing the product management role.

    Paul: Right. I think that this a name. I think it’s Conway’s Law and the way that I saw that expressed is that if you have, if you’re building a compiler and you have four different teams that are building a compiler, you’ll end up with a four-pass compiler.

    Edith: There’s no one vision.

    Paul: Right. When looking at lots of different teams and team structures, the interesting one that I found was the Heroku one.

    And they have a language team and they have an add-ons team and they have sort of sharp delineations in their software, or in their stack, that allows them to really focus on one particular area because they’re such sharp demarcations between the different areas of the product.

    Edith: I think that’s good if you’re a fairly mature product. I think in the early days of Heroku that would not have worked at all.

    Paul: I wouldn’t say it’s quite from the early days, but relative to now it was quite early, I think they had that sin Cedar, which was around 2010.

    Edith: I just more meant when you’re an early stage start-up, sometimes you change your entire product.

    Paul: Well okay, yes, yes. I mean, absolutely. I think once you get into, once you get past the first stage of the product, and if you’re able to draw very good interfaces between how your customers understand what your product is.

    Edith: I don’t know, I mean I’ve seen this go bad in so many organizations, where you have entrenched engineering organizations that care more about staying on their current project, then actually about where the market is going.

    You know, like we’ve always worked on this, so we need to stay here because we don’t know anything else versus being able to evolve to where the market is going.

    Paul: Right. This reminds me a little bit of something that I’m working on at the moment. We brought in some UX experts to look at our app and to help us sort of transform it into something that was a little more usable.

    And they did a fantastic job and I spent this afternoon reading some of the reports. But what was difficult was understanding where the product needed to be. So for us in particular, there’s not enough focus on the deployment.

    There’s a lot of focus on the build and there isn’t really sort of a broader look at what do engineers actually do when they’re trying to do continuous delivery. And so we ended up with what was in the product was redone in a really fantastic way, but there wasn’t much affordance made for here’s the thing that actually needs to be in the product.

    And when you talk to customers, it’s hard for customers to tell you oh here’s the thing that you actually need to be or they look within the box you’ve drawn for them.

    Edith: Yeah. I say this ’cause I had a similar evolution to you, I actually started off in engineering. And when I was in engineering it was very obvious what we should built next, extremely obvious. And so I always thought that our product manager was an idiot for not seeing as clearly as me. When I became a product manager, I realized how myopic I had been as an engineer.

    Paul: Can you give an example of what was the next thing to build that in retrospect was wrong?

    Edith: I would see all the little bug fixes that we should be doing instead of the next big features. Or not even the next big features, but the next big product.

    Paul: I think big or small, or big picture versus small picture, is a good way to distinguish these two. I think that it’s very easy when you’re talking about product management to get the idea that a product manager knows everything and the engineer is just an implementer.

    And I think this is where a lot of the resistance to product managers comes from with an engineering organization’s the idea that they’re going to be relegated to mirror kind of peasants in the…

    Edith: Code monkeys.

    Paul: Code monkeys, there we go.

    Edith: You know, nobody wants to be a code monkey. That doesn’t sound very fun.

    Paul: Right, right. I would disagree with that, but I think that’s–

    Edith: Wait a second, we never disagree.

    Paul: It is very frustrating trying to understand everything. And on the other hand, it’s very satisfying to ship things and to get your stuff in front to customers. So very often, the ability to just be a code monkey for a certain period of time is this sort of soothing feeling of just shipping software that fixes a lot of small problems.

    I remember reading one of the famous GitHub guys, I don’t remember which one it was, but let’s assume it was Kyle Neath, that spends a lot of time on big projects. And in between the big projects, he needs to find what is the next big project to work on.

    And it’s often very frustrating, or very you go down certain rabbit holes and whatever, and you end up kind of not shipping things, or you end up getting frustrated or whatever. And what he likes to do then, is just reach to the back log and just take a bunch of small fixes. And he spent like two weeks of just like implementing very small things.

    You don’t need to think about it, and it’s cathartic and it lets you ship and so a couple of weeks as a code monkey I think is a very useful thing to sort of refresh the head and that sort of thing.

    Edith: I agree, but I think nobody wants to do that full-time and I’ll also challenge something else you said, which is everybody wants to ship.

    I think there are a lot of people who find shipping terrifying. and they’d rather keep holding stuff on until it’s perfect.. Like, I’ve certainly been with in situations like this where it’s like–

    Paul: Right, where we can’t ship because it’s not perfect yet or it’s not complete.

    Edith: Yeah, and as an engineer you have this real battle of well what if people want this, or what if they want this or this might be not quite right.

    Paul: Yeah. The personal strategy that I use to manage that is to try to write the blog post that you’re going to launch this with and to, cause very often you’ll be like, “oh I can’t launch this cause it hasn’t got this feature, it hasn’t got this feature.”

    And in the blog post, assuming that you’re going to tell people how to use it, or you’re writing the doc maybe, if not the blog post. You get that sort of feedback as you’re trying to explain to your user how to do this you’re going to say, all you need to do is this, and you’ll realize that this is seven steps long instead of one step long.

    Edith: Yeah, the Amazon model. So at Amazon, they actually start with writing the press release first.

    Paul: Okay, right.

    Edith: And everything and that’s a really good guide back.

    Because too often, people do the other end of they’ve built this gargantuna thing and they’re trying to write a press release or blog post and they’re like, woah, we’ve built all this stuff but there’s nothing actually to talk about.

    Paul: Right. And part of that, and something which I think engineers have a difficult time thinking about is how to get this widely in use. So you can build the feature, but its no use having built it if no one uses it. So you need to build the bread crumbs, you need to figure out the ways that are subtly hinted that this is the feature that you want when it’s the feature that you want and to draw people’s attention to it.

    And sometimes that’s putting it in docs and sometimes that’s doing a big announcement, but more often it’s trying to get the product in a place where the UX naturally implies the right path or the right direction for users to discover parts of the product.

    Edith: Yeah, I mean the whole idea of responsive design, and I think even more, and this goes back to why I started LaunchDarkly, is you might have built it, but nobody might want to use it.

    Like, you could have put all this effort into building it and done all these bread crumbs that nobody follows. So that’s the idea of you actually start doing the bread crumbs first and see if people start following that path.

    Paul: So with LaunchDarkly, I’m guessing that the way that you see whether someone is using it is whether it’s enabled for them. Is that right?

    Edith: Well no, so what we do is we allow people to turn on features for certain users.

    Just turning on a feature for a certain user doesn’t necessarily mean that they start using it.

    Paul: Right, exactly. So do you tie this to mixed panel usage? Or some sort of analytic stuff?

    Edith: We could tie it to different back ends, like we tie it to New Relic, we tie it to actually optimize so you can see if people are even, and we have our own internal analytics.

    Paul: Gotcha, okay. So this is the thing for me, that I started a project recently, and the first thing I did is built the dashboards for adoption. And we’re still at the stage in the project where there’s no adoption, or there’s tiny amount of adoption amongst early users.

    A trickle. A trickle that you can’t even see on the graphs.

    Edith: So it’s more like a fine mist.

    Paul: A fine mist. But what you need to get is you need to get to the place where everyone is using this. ‘Cause if you just build it, they’re not going to come.

    They need to be told about it, they need to understand how to use it, and getting those first customers to using it and where it’s deployed amongst them is it gives you incredible feedback about how one actually ships that software to the larger customer base.

    Edith: Totally agree. I mean, this is classic Lean principles of just making sure some people can use it well before rolling it out further.

    Paul: We discovered a part of the product that exactly three customers were using.

    Edith: How did that make you feel?

    Paul: Well, we didn’t actually know it was a feature. This was the idea that you could do deployments in parallel. So at CircleCI we paralyze your build and so the idea is that basically we take your test suite and split it across 20 or 50 or whatever machines.

    But it turns out that that applied to deployment as well. And there were exactly three customers using that. And one of them had a valid use case for it. Out of thousands of customers, exactly one valid use case was there.

    Edith: So what did you do with the feature?

    Paul: We killed it.

    Edith: Did you tell him?

    Paul: I hope so. Yeah, I know. I think we reached out to that guy. There was another way for them to do it.

    Edith:

     The painful part of project management is also when you have a feature that you like to kill but that a subset of power users loves.

    So like at TripIt, we’re a mobile travel itinerary but we let people do a printout. And one time we’re like, oh nobody prints anymore, let’s just kill it. Turns out that people print and they really really like printouts.

    Paul: Right, right. I understand that, yeah.

    Edith: Like particularly if you’re traveling to a foreign country.

    Paul: Yeah, you’re not going to have internet or your phone’s going to be dead.

    Edith: Or you want to show something to a passport guard.

    Paul: Yeah, or a local. Without handing over your phone, like here’s what I’m doing.

    Edith: Yeah, so they were furious with us.

    Paul: Right. So, had you killed it at that stage?

    Edith: Oh we killed it. Like we were just like oh, we didn’t have good analytics on people printing, so we just said oh nobody’s printing, let’s kill it.

    Paul: Oh, wow wow.

    Edith: So our analytics later was that people complained. Quite loudly.

    Paul: And so had you properly killed it at that point, or had you merely disabled it to see if it went away?

    Edith: Let’s see. We disabled it. I think we could get it back but people were really really upset.

    Paul:

    I like the thing of shipping something turned off, rather than actually deleting the code. Even though it’s incredibly cathartic to delete the code and to hide and it and remove it. But the turning something off with a feature flag is just a lot better way to sunset something.

    Edith: Why do you think it’s cathartic?

    Paul: Oh deleting code is amazing. It’s like my favorite thing to do.

    Edith: It’s funny. My cofounder John, he was from Ex Atlassian, and he said the winner of their hack competition was always the person who deleted the most code.

    Paul: Right, right. That makes perfect sense.

    Edith: Cause that’s what they wanted a reward is tidiness.

    Paul: Yep, yep. It’s very much related to the idea of product management and validating things and making sure that you don’t build too much of the product. Code is not an asset.

    Code is an asset in the financial sense of it in that you think you want it but you actually don’t. You actually want the best performance with the least amount of code slash asset available.

    Edith: Yeah it’s like, so a friend asked me once, should I pay my developer’s more if they write more lines of code? I was like, no. It was like no, that’s a really easy metric to gain.

    Paul: Right. So we were talking about deleting features by feature flagging them. I think that this is an awesome way to delete a feature because it’s very, very easy to get back. It’s much easier to get back than a rollback.

    Rollbacks are this thing that nobody wants to do because they’re very, very painful. Especially if a ton of code has come in between. So if you ship something, or if you delete something by literally putting a feature flag in around it, and then you ship the code and then it’s still on, and you turned it off for a certain amount of people, see if anyone complains, see that it still works and that you know, show it to ten people, and then you delete it for everyone just by flicking the flag.

    And then if you get someone saying, you know, we really, really, really need print it, You can turn it back on for them while you have a think about how you really want to solve this problem.

    Edith: Yeah, I think feature flags is a really misleading term.

    So feature flags implies that it’s always on or off, when really it’s more of a feature control.

    It’s a way to encapsulate a portion of functionality such that you have total control over it, from the sunrise of it, you know, from launching it to certain people, seeing their reaction, getting analytics, and then all the way to the end, as you said, every feature eventually you want to kill.

    For more on Continuous Delivery and to find out about new episodes you can follow the show on Twitter at @continuouscast.

  • Encouraging a ‘big picture’ view of enterprise DevOps

    Encouraging a ‘big picture’ view of enterprise DevOps

    Welcome to the latest post in a series where I answer some of the many questions on how to approach an Enterprise DevOps transformation at scale.

    Human issues continue to pop up – not surprising, as people and culture are at the heart of DevOps. This next question asks how to encourage a ‘big picture’ view across a complex org:

    Q: Keeping an eye on the bigger picture is getting harder with larger scale operations. Do you have any tips to feel each person in the team responsible for this?

    In larger enterprises IT is often positioned as a factory that services the whole business. Software is created to meet specifications, often with no real connection to larger business goals. Fixes are prioritized by development, releases are controlled by operations, and the business units are expected to be happy with whatever they are given. Specialists get tunnel vision, and barely understand their impact on business goals like “accelerate customer acquisition” and “penetrate new markets.”

    The ‘generalist vs. specialist’ question from my previous Q&A (along with the ensuing debate on LinkedIn) keenly informs this challenge. Ultimately the type of people in your org – specialists or generalists, system thinkers or silo thinkers, I-shaped or T-shaped, goats or sheep – will have a huge impact on how well they collaborate and share responsibilities. But here are some ideas on how to encourage a shared responsibility for the ‘big picture’ of IT service delivery.

    Take a refresher course on corporate strategy

    Start by ensuring everyone, on every team, knows the corporate objectives. IT staff often don’t connect with corporate goals simply because they don’t know them. For large public enterprises, the annual report and/or recent SEC filings are a great place to start. Listen to earnings calls, read press releases, and follow other executive messages. Understanding corporate goals as a team is critical to sharing responsibility for the bigger picture.

    (Re-)Discover your business unit objectives and contributions

    Invite the business unit(s) you support to present to IT their role in the business and their objectives. Ask them to describe how their goals align with corporate strategy, how they contribute to corporate goals, and (if they can) how IT helps them achieve these goals. Then workshop across teams on how every role in the IT value chain contributes to specific business outcomes. This will help to establish each team member’s shared responsibility for those objectives, and their responsibility for each other.

    Formalize shared goals and measure results against them

    Reflect shared responsibilities by establishing and measuring formal performance objectives for individual, team, business and corporate goals. For example, make operators responsible for infrastructure stability and on-time release; make developers responsible for code quality and break-fix; make DBAs responsible for schema design and transaction throughput; make everyone responsible for speed, quality, cost and security. Make individuals accountable to each other, their business, and the company through shared goals and metrics.

    Bring people together with shared process

    Map out the application delivery workflow so everyone can see clearly the shared responsibilities in an end-to-end process that contributes to business objectives. Do not make these process maps rigid; rather, encourage everyone to continuously look for improvements to the process flow. Make them highly visible too, to remind everyone of their shared responsibility in the end-to-end service delivery process, rather than as a reference guide to be slavishly followed.

    Bring people together with shared technology

    Provide shared technology to help establish common language, foster communication, and streamline team interactions. Look for scalable, multi-site, multi-user capabilities for automation and management in a shared toolchain. Adopt common social software to enable fast and easy communications among and across teams. Use common tools, screens, and reports to monitor performance against key individual, team, business, and corporate metrics.

    Align staff intentionally with key business processes

    Where possible align end-to-end (or ‘full stack’) IT teams to business areas rather than grouping specialist teams to service the whole company. Closer alignment helps build a connection between the business and service delivery teams, with a shared responsibility for business outcomes. This ‘artisan’ approach can be hard to enact in a ‘factory’ structure, but it can be adopted incrementally (by geo, by BU, by product line, by project) to make it easier.

    More ideas?

    These are a start, but as with all my tips and answers, definitely not the final word. Please feel free to add your ideas in the comments on how to foster a shared feeling of responsibility for the big picture in a large, complex environment. Or you can tweet your comments to @AndiMann. Or take them to your favorite social site and discuss this article there. I’d love to see any other ideas you have, or chat with you about these ideas wherever you log in.