Successful Software Delivery in Spite of Evil IT
Join the DZone community and get the full member experience.Join For Free
in my previous post, i glibly said that slas represent waste that an organization has identified and formalized . reader 'kenfin' commented on my post, rightly calling me out to provide alternatives .
if you believe that sla’s ‘formalise waste’ this way how would you approach my situation where communications are beyond poor (atrocious) and the org structure is silo’d and no one is accountable for their work?
kenfin’s example illustrates my point quite well - the organization’s structure is an obstacle to effective delivery. since he’s not in a position to fix this problem, he’s turned to sla’s as a way to manage the problem. they won’t make the issues go away, but they may give him a handle to manage them, and importantly, make them more predictable.
but it’s a fair question, what can someone in kenfin’s shoes do in the face of an it organization which is inherently not aligned to effectively providing the services he needs to deliver software to his users effectively?
a common strategy, and one that i’ve helped teams inside these kinds of organizations do, is to completely bypass the existing it organization. the goal is to put control of everything that the product team needs in order to deliver into its hands, rather than leaving it at the mercy of a group (or multiple groups) who have other priorities.
one way to do this is outsourcing, finding another company that specializes in the functions that the it group would provide, whether this means development, integration, hosting, or something else. this works best if the project is not seen as core to the business, so that it avoids fear of entrusting sensitive data or business critical functions to outsiders. it also helps if the project needs skills that can’t be found in-house.
my friends at cognifide have built their business on this, building technically complex content-focused websites for corporate clients, delivering far more quickly, and with greater expertise, than most corporate it organizations can manage. this is also the premise that software as a service (saas) is based on. by choosing salesforce for crm a company completely bypasses the massive it project that would be required to implement an off the shelf, self-hosted crm package (integration with other applications aside).
there are pitfalls to outsourcing to bypass it. many outsourcers are no more responsive than an in-house it department, using slas and change control processes to make their workload, risks, and profitability more manageable.
do it yourself!
the strategy i’ve most often been involved with myself (although i didn’t really think of it this way at the time) is product departments building their own it capabilities. again, this is about having control of the services and resources the group needs in order to deliver to its own customers.
the typical pattern is an “online” (or often, “digital”) department of a company where online was originally on the fringes of the main business, but has in recent years grown into a major channel for sales, customer service, or even delivery of products (for example in publishing).
the online team leverages their growing importance, as well as the specialized needs they have compared with typical corporate it custometrs, to get approval from top management to create their own “digital operations team” or similar. this team may outsource elements of infrastructure, such as hosting (with iaas cloud providers as an increasingly appealing option), but they are able to respond immediately to the needs of the online product group, because a) they don’t have to juggle requests from other departments and teams, and b) they report directly to the manager of that group.
but what if i have to use the crappy it guys who don’t care about my project?
those strategies are not feasible for every team. i’ve certainly had to support projects where we had no alternative but to struggle along with unresponsive it. in these cases, slas may well have to do, even though they represent waste and inefficiency.
there are a few other things you might at least try out in these cases. your goal is still to have the resources you need in order to get things done at your disposal as far as possible. so see if you can identify those services which are especially critical, and particularly those which are likely to change frequently, and see if you can get some dedicated resource assigned to your project. you want someone who will sit with your team, be incentivized by the success of your project, and who has the skills, authority, and system privileges to carry out the tasks you need.
if full time secondment of people to your team is not quite feasible due to budget, lack of available resource, etc., see if you can at least get commitments of time from the right people. can someone come to daily standups? weekly meetings? regular release management meetings? ask for as much as possible to start with, then see what you can get.
also, maybe you can hire someone into your own team with qualifications and background that will help them effecitely liaise with difficult it teams. your own dba, security consultant, etc. can engage with the it groups using their own language, couching things in terms that address their concerns. they may be able take certain tasks off the it group’s plates, which ends up giving you the ability to get things done more quickly, while at the same time making it grateful that their workload is lighter.
but the right thing to do is …
these are all ways to work around the core problems. the best solution is of course for the organization to restructure itself in a way that aligns its resources with its goals. most companies, especially large ones, insist on organizing themselves in ways that are self-defeating. it’s a shame that many people who work in large companies accept this as normal, often even as desirable.
grouping everyone with a given function into a single group forces them to focus on juggling the competing needs of many stakeholders, managing their own risks (especially the risk of getting blamed when projects fail). they will inevitably favor the abstract principles of their own technical practices over what is most effective in making the business succeed. much better to group people into units that have complete ownership for delivering business value, and find ways to connect staff of given function with each other so they can develop their skills as working practices.
unfortunately most of us are rarely in a position to influence this, so i hope that my suggestions will be helpful to some people in making things a little less painful.
Published at DZone with permission of Kief Morris, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.