Showing posts with label Themes and Theories. Show all posts
Showing posts with label Themes and Theories. Show all posts

Monday, November 29, 2021

Example case study research in software engineering

An approach to presenting your own research is to identify an existing academic/scholarly article that reports in some way that you find informative and that might steer your analysis of your own case study or development/maintenance management system.
The following 'convenience sample' of articles ranges over diverse perspectives but offer (in my opinion) useful and informative case studies researching empirical software engineering.


A field study of the software design process for large systems
B Curtis, H Krasner, N Iscoe - Communications of the ACM, 1988 - dl.acm.org

Ethnographically-informed systems design for air traffic control
R Bentley, JA Hughes, D Randall, T Rodden… - Proceedings of the …, 1992 - dl.acm.org

ISO9000 and the very small firm
EM Wareham - IEE Review, 1994 - ieeexplore.ieee.org

Conversational Conventions and Participation in Cross-Functional Design Teams
E Wynn, D G Novick - Proceedings of COOCS, 1995 - ACM

Flight of the Eagle: The Birthing and Life of a Super-Minicomputer.
J Faughnan, S Stevanovic - Project Management, 1996 - faughnan.com

Embracing change with extreme programming
K Beck - Computer, 1999 - ieeexplore.ieee.org

A case study of open source software development: the Apache server
A Mockus, RT Fielding… - Software Engineering, …, 2000 - ieeexplore.ieee.org

Working artefacts: ethnomethods of the prototype
L Suchman, R Trigg, J Blomberg - The British journal of …, 2002 - Wiley Online Library

Reflective Design Practices in Human Computer Interaction and Software EngineeringELC Law - Proceedings of the Workshop on Designing for …, 2004 - Citeseer

When software engineers met research scientists: A case studyJ Segal - Empirical Software Engineering, 2005 - Springer

Sociomaterial practices: Exploring technology at work
WJ Orlikowski - Organization studies, 2007 - oss.sagepub.com

Scrum in a multiproject environment: An ethnographically-inspired case study on the adoption challenges
A Marchenko, P Abrahamsson - Agile, 2008. AGILE'08. …, 2008 - ieeexplore.ieee.org

Collaboration and co-ordination in mature eXtreme programming teams
H Sharp, H Robinson - International Journal of Human-Computer Studies, 2008 - Elsevier

The influence of organizational structure on software quality: an empirical case study
N Nagappan, B Murphy, V Basili - … conference on Software engineering, 2008 - dl.acm.org

Rottman, J. (2008), Journal of Information Technology, 23, 31–43.

Distributed Communication as Collective Socio-material Sensemaking in Global Software WorkS Vidolov, S Kelly - 2009 - aisel.aisnet.org

Guidelines for conducting and reporting case study research in software engineering
P Runeson, M Höst - Empirical Software Engineering, 2009 - Springer

Understanding project survival in an ES environment: a sociomaterial practice perspective
EL Wagner, S Newell, G Piccoli - Journal of the Association for Information …, 2010 - Citeseer

Scrum+ engineering practices: Experiences of three microsoft teams
L Williams, G Brown, A Meltzer… - … Software Engineering …, 2011 - ieeexplore.ieee.org

Sociomaterial bricolage: The creation of location-spanning work practices by global softwaredevelopers
A Johri - Information and Software Technology, 2011 - Elsevier

Entanglements of creative agency and digital technology: a sociomaterial study of computer game development
NS Panourgias, J Nandhakumar… - … Forecasting and Social …, 2013 - Elsevier

The validity of case study research is often called into question by asserting that the findings from single cases cannot and should not be generalised beyond the specific contexts and events of the case's empirical setting. However, the criticism ignores our human ability to generalise and glean learning ourselves when we hear stories of others' experiences. You could call it vicarious learning, looking over someone's shoulder, it exemplifies our innate ability to juxtapose and translate learning from one context and apply it to a different context. Furthermore human activity systems, of which software engineering is but one example, are intrinsically 'in vivo' settings. They are open and transparent to  sociological enquiry insofar as its actors participate reflexively within a wider social world. The reflexivity of human actors is present in so far as we, as protagonists, are aware of and take account of ourselves in terms of our behaviour, actions, and agency.

I adopting a stance that human activity systems diverge from the usual notions of functional science and therefore argue for the value of learning gained from cases. Rather than extrapolating from the specific to the general, cases encourage us to reflect on and relate learning from the specifics of cases to other contexts or situations.


Footnote: The field you address will relate to the findings you arrive at from your analysis of the data you gather, which of course is influenced by the access you have to an empirical case study site.
empirical case + access levels -> data gathered -> analysis -> findings -> audience / field
The field or conference you publish in will have its own format template that is simply adapted for the write-up.

Monday, November 1, 2021

On the subject of Writing

A couple of general points may be useful.
Working Title: Initially, phrase a research question as the title of the paper (you can change it later).
Abstract: Restate and expand on the research question in the abstract (you can change it later when you have analysed your findings).

Research Access: Make good use of your personal access to your contacts, projects or companies, past or present for providing data.

Gather data and working backwards:
What I mean by this is that you will almost certainly end up changing/revising the research question as you go along, and the abstract will need to be revised at the end. The working title and abstract written at the beginning was just a first stab at the paper.
A research question is a prerequisite and precursor to a research project. Having a question puts the focus on a few things; the kinds of data you might expect to gather which could be anything from interviews, observations, documentary/documents, to literature review/desk research etc. etc.
A (tentative) research question usually implies particular kinds data, so ask, what kind of data does the question imply? What constitutes evidence for the phenomena under investigation? What data will (or might) provide the kinds of evidence that could be used to make justifiable statements about the research context?
A clear idea of the kind of evidence and data sought leads us to consider the types of data capture methods (research methods) that can be used to produce data or the evidence sought. This in turn indicates a typical overall research model, research design and research approach. Sometimes a programme of research will involve many of these approaches. For example, literature review, a distinctive family of desk based text research, is generally a prerequisite for all other research activities; evident in an introduction or positioning section of a paper, or constitute the whole research project itself. In very general terms, the gamut of research designs or models includes - but is not limited to:
Essay: Purely theoretical, elaborating a conjecture, speculation, conceptual, philosophical argumentation, thought experiment, word games, word play, rhetoric, logicism, formalism, constructionism.
Review, meta-analysis of prior research, selective literature review, systematic literature review.
Empirical: descriptive, idiosyncratic, case-study, naturalistic observation, questionnaire survey.
Correlational-causal: studies adopting systems model views, inputs factors, outcomes, case-control study, observational study, survey, structural equation modelling.
Statistical meta-analytic: research derived from other research, findings based on aggregations of other research.
Semi-experimental: research styled on intervention in settings, field experimentation not amenable to laboratory control, quasi-experiment, trials, living labs.
Experimental: classical closed system model of scientific discovery, reproducible experiment, blind experimentation, random assignment experiments.
(partially derived from the Wikipedia article on Research Design):

These various research models involve or require differing philosophical commitments and assumptions or beliefs around the nature reality and the world (worldview, ontology), and of the nature of knowledge (epistemology is the theory and nature of knowledge; objective, subjective, social). Usually it is sufficient to simply acknowledge the stance adopted for the purpose of the research, be it: interpretive, critical, critical realism, naive realism, post-modern, deconstruction, construction, positivist, aesthetic, utilitarian, speculative, qualitative, quantitative.

Improve the draft:
Commence your paper with an introductory/positioning piece that incorporates a short selective review of relevant recent literature critically addressing the topic areas you are working with.

Provide a presentation to peers or colleagues if possible, talking through your ideas, the data, your analysis and findings. Doing so will inevitably help refine how well you communicate the story, your message, convincing evidence, the key points, highlight your contribution and findings.

Template

Start using a scientific conference template for writing up. I recommend using the LaTeX or Word template from the ECIS 2015 conference (http://www.ecis2015.eu/participation/submissions.html)

Further reading

Links to various related conference templates below:
A LaTeX and a Word version of an ECIS Template - from Muenster 2015 - recommended!!
A LaTeX version of an ICIS Template - Ryan Schuetzler - a bit gnarly. A Word version of an ICIS Template - it's Word :-(

Monday, April 11, 2016

Managing Systems Development

The innovation engine of an ICT-enable organization is its capacity to configure, construct, create, develop, deploy and maintain high tech systems. However, the collaborative production and delivery of robust systems presents significant challenges and team issues. An understanding of the tools and techniques used by professionals is therefore essential for managers who supervise systems developers or liaise with them during innovation projects. For each era and moment in the history of high tech development there is an associated technical backdrop representing the acme of infrastructure, technology and tools. The technical infrastructure is mirrored in turn by a social infrastructure – specialist knowledge, norms for communication, professional identity, behaviour, and expectations for teams. It is fruitful therefore to learn about the spectrum of current practices and apply theory to (critically) evaluate and subsequently adapt or formulate new processes, activities, and practices necessary for development in the situations we encounter ourselves; thereby better understanding and acting effectively in settings of high tech use-production.

How should a manager, software architect, designer, programmer, team lead or product manager,act to organize and manage high tech systems development projects? My goal is to help form answers to this and to the following questions:
  • What management techniques, practices, lifecycles and frameworks are applied in contemporary systems development projects?
  • How might we integrate the diverse concepts and theories of software systems development, and translate these concepts into personal, team, and management practice?
  • How is value generated and delivered in real situations?
  • What is the significance of new engineering approaches, from agile and lean methods to more functional approaches like CMMI and RUP?
  • How do lifecycles and methodologies balance the tension between a necessity for orderly production and quick responses to changing contexts?
The material covered includes current and emerging organizational/management approaches to development include: lifecycles like SDLC, Waterfall, Spiral; frameworks like CMMI, RUP, ISO 9001; and approaches termed ‘agile’ like XP, Scrum, and Lean Production. The key goal that these software production and systems development lifecycles address is how to create digital media, although they attach differing importance to the need for various system artifacts (design diagrams, code, documentation, issues, etc.).

The overarching objective for this work it is to show that the generation of any or all system artifacts is an outcome of underlying social interactions such as joint development, peer review, user involvement, automated testing, use assurance. Consequently system development’s process and its context is itself a kind of social structure for managing production (in the development team) and users. Power is an essential and underlying concept in order to understand the 'assumed' orderly underlying social interactions of programming teams and others they need to deal with in order to 'get the work done'.

OBJECTS OF DEVELOPMENT
Our capability to successfully create and utilise high tech products is linked with a variety of challenges across a number of diverse domains; organisational theory and sociology for management and societal use patterns; economics and systems theory to understand aggregate behaviour; physiology, psychology and ethnography to understand use factors and design for finished products; maths, materials, and physics, for microprocessor and computational innovation.

Let’s take a closer look at the objects of software, the expressive environment for software engineers. The following illustrations are representations of different aspects of a not untypical digital product (Figure below). In this case a rendered simulation of an apartment, a wireframe model of the same scene, the software services for configuring the simulation, an XML description of objects present in the simulation, the build log for compiling the simulation and some source code for one of the objects. Furthermore there are many more layers of source and representation with their related technologies associated with this particular product.

ExpressiveObjects
Figure Images from Microsoft Robotics Developer Studio 2010

These are all ‘representations of’ and ‘resources for’ an interleaved complexly reinforcing structure that can be un-picked or un-packed right down to single lines of code. The point of this presentation is to illustrate the argument that “developers solve problems at all levels, between the ‘whole project level’ and the ‘one line of code’ level (and everything in between.” (Racoon, 1995)

LayeredObjects
Figure Layered perspective of digital production

The many layers of digital production are interleaved and interconnected from the single line of code right through to the whole project as Racoon (1995) suggests. This may account for both the brittleness of digital systems and their complex resilience. The same work dynamic occurs across large and small teams, across large and small organisations, across the world and is an important aspect of the defining qualities of software development work. Significantly, the practice of high tech production also depends on creative and collaborative processes; software engineering is a designing profession regardless of whether the engineer is working on a version 1.0 project or maintaining an existing product through multiple generations and update releases. Yes crafting and designing software is a kind of individual contribution, a highly cognitive process, however in practice it is also a highly communicative and essentially social process comprised of many various interactions in a team.

MAKING OUR DIGITAL LIVES
The modern era is increasingly delineated by a ‘digital life’ or form of engagement that entwines complexly with our existence in a physical world. IT and high tech use-production is seen as the enabling force for overcoming immobilities. They are implicated in transforming our social or organizational interactions and generate heightened perceptions of speed, movement, presence, both global and local awareness, and interconnectedness. We introduce the idea of high tech use-production to try to overcome the idea that these transformations result from push processes originating in the development centre.

Why do we need to think about the processes and structures used for developing high tech products and services? It is true that the emphasis on organizing high tech production has shifted focus from gifted individuals to being a team-based mode of production if not a team-of-teams in case of large-scale infrastructural architectures. Engineers do not start and complete whole projects overnight. Producing value takes time, effort and many small instances of failure and learning to create viable systems. It takes time, people and other technologies to produce these things. Managing the process involves making trade-offs between the ordering of events and activities over time, access to other complex systems (software, tools, work techniques) and the services of other actors. Importantly the very idea of a system implies ‘use’ and modern innovation processes are increasingly reliant on lead user involvement to establish both how the system is used and consequently how it is designed (Von Hippel, 2005).

Positioning the role: managing high-tech production
What does a manager need to know about the IT function in order to manage it? The manager of the IT function needs to know how to go about producing the product, and also, how to go about producing users. However, rather than relegating ‘use’ to a phase of implementation and delivery at the end of the systems production cycle, ‘use’ and ‘users’ have become intrinsic to driving the development process. The following highlights ways of producing, delivering and servicing our demands for ICT, IT and high tech goods. We don’t need to be engineers to manage the process, but we do need to be technology savvy and know enough to make a difference; how to bring technology, business and users together. The technology manager’s role is to bridge the two communities of production and use, to translate, interpret and make sense of the gaps between the technological and customer worlds (Figure below).
From Scrapbook Photos
Figure: Roles translating between technological and customer worlds.


A SYSTEMS PERSPECTIVE ON HIGH TECHNOLOGY DEVELOPMENT AND USE
Mid-Range Systems Concepts and drawing the Boundaries of High Tech
Systems development is closely associated with the production of technological artifacts, in particular with computer based high tech products and projects. Systems development is presented as an engineering design method (Gregory and Richard L., 1963, Brooks Jr., 1995). Indeed engineering design has become doubly system-like as systems development concepts were applied both to the design of high tech products and to the organization of the work of high tech production itself. The very idea of systems and systems thinking is so pervasive as to become an intuitive concept. A system can be considered as any assemblage or set of objects (concepts, things, distinctions) connected in some orderly or meaningful arrangement.
“The systems approach to problems focuses on systems taken as a whole because there are some properties of systems that can only be treated from a holistic point of view.” (Ackoff, 1971)
Like any powerful concept the idea of system is flexible and adaptable. The questions posed by systems thinking are what elements to include, how to relate them, and where to draw the outline of the ‘whole.’ The boundary (if any) becomes crucial, what is considered inside or outside, is the boundary itself another element or does the idea of boundaries or interfaces even make sense?

THE PROBLEM OF HIGH-TECH SYSTEMS
Why does it take so long to get software ready?
Why are development costs so high?
Why can’t we find all the errors before we give the software to our customers?
Why do we continue to have difficulty in measuring progress as software is being developed?
Adapted (Pressman, 2000).
The same questions have been raised at every point in the history of computing and are still being raised today. Furthermore they are as relevant now as they were then. However, in 2003, Nicholas Carr famously declared that IT doesn’t matter anymore (Carr, 2003). He suggested that organisations should spend less on IT, copy other organisations’ technology infrastructure rather than generate innovations, and focus on operational improvements rather than creating competitive advantage through radical innovative development. So, if IT doesn’t matter anymore, why is there an on-going problem managing high tech products and IT governance?

We observe a continuous current of media, practitioner, and research literature reporting the failures of large-scale system implementations (Ruey-Lin, 2006, Krigsman, 2010, Lyytinen and Robey, 1999, Currie and Willcocks, 1998, Keil and Montealegre, 2000). Much of the reportage and research concludes that IT use, production, delivery and management are brittle. IT is incredibly sensitive to situation, context and human factors (Suchman, 1987) and, evidently, as IT shifts across the product/service spectrum from stand-alone product to service rich high tech systems, outcomes become more costly and chaotic (Brooks Jr., 1987).
IT systems have become more complex and therefore more difficult to manage. Project planning and governance is particularly challenging when the subject matter is highly virtualised and intangible. IT systems become organisationally systemic even as system knowledge and skills become more specialised and rare. Various actor strategies and organisational structures may disconnect or invert necessary links between knowledge, responsibility and power.
Adapted (Avison et al., 2006).
First some definitions. IT (Information Technology), ICT (Information Communications Technology), and High Tech are broad terms and difficult to pin down. For the purposes of these readings we can consider them to be products and services utilising microprocessors and the related objects they entail. High tech systems utilise hardware (electronics) and software (programs), often in the form of computing devices, computers, networks and Internets, although some high tech systems are less evident or may now be considered old tech, e.g. wrist watches.

The organization of the high tech development and production is naturally important but equally significant is how the development process is used to understand, formulate and resolve the real world needs or problems addressed by high tech products. Product systems are created against a backdrop of our prior assumptions and understanding of what systems actually are. Our understanding of what constitutes a system needs therefore to be clarified, so, what in fact are ‘systems’?

The idea of systems and ‘systems thinking’ is so prevalent as to have become an intuitive concept or perspective of any aspect in the world. The word system is now linked with the environment, ecology, markets, engineering, society, and politics. The OED defines a system as;
“a set or assemblage of things connected, associated, or interdependent, so as to form a complex unity.” (OED, 2010)
The system concept is used for operations research to create models; mapping representations of disparate phenomena and functions, presenting them as an organizational whole. In the most general sense the system concept is applied when a complex phenomena is perceived to
“…display the character of being organized.”
(Emery and Trist, 1965)
The appearance of organization, of being organized, is assumed to arise out of interdependencies between underlying processes or other related phenomena. One of the challenges to studying and interacting in complex relational environments is the very act of defining the system.

Systems can therefore be understood as descriptions that limit the extent of an enquiry. A system is constructed by description. A system is a more or less exhaustive statement of more or less arbitrary boundaries, inputs, outputs, interactions, behaviour, performance, relationship, of abstract and concrete objects.

At its most general the very idea of a system helps us to organize ideas about the relationship between things. The system concept offers a way of representing, sometimes modeling, an often arbitrary arrangement of elements that exhibit a relationship or correlation of behaviour.
“A system is a set of interrelated elements. Thus a system is an entity which is composed of at least two elements and a relation that holds between each of its elements and at least one other element in the set. Each of a system’s elements is connected to every other element, directly or indirectly. Furthermore, no subset of elements is unrelated to any other subset.” (Ackoff, 1971)
A closed system is self-contained with interaction taking place solely among the system’s elements. Delineating the set of elements in a closed system defines the boundary between that system and its surrounding environment. For a closed system the environment acts simply as a source of variables affecting the system’s initial state or condition.

An open system is a system that interacts both internally and with the surrounding environment. The outputs of an open system alter elements in the environment which in turn affect the system’s state over time and so on. Dynamic systems change over time and may both generate and respond to events thus changing even more over time.

Where systems concepts include human actors, as individuals, or organizations and markets, the act of defining the system becomes a subjective exercise that may or may not correspond to obvious or unambiguous distinctions (Avison and Fitzgerald, 2006). Ackoff (1971) presents a hierarchy to classify systems (Figure below). At the lowest level a mechanical system is state-maintaining. A goal-seeking system uses the environment as a source of information to attain a goal. Multi-goal-seeking systems are devices or objects that can be re-tasked to achieve multiple goals such as a general-purpose programmable computer. Purposeful systems involve humans and are intrinsically open, dynamic and unstable. Purposeful systems are subject to changing goals, motivations and relations as the human actor constructs these things through their interaction with/in the system and their constantly evolving interpretation of goals, values, outcomes, identity etc. Purposeful systems may contain all other system types as more or less well-understood elements and objects. Weinberg (1975) characterised types of systems with respect to associated methods we have of dealing with them (Figure below). Organised simplicity: I (machines), unorganised complexity: II (large populations and markets), and organised complexity: III (mid range systems between the extremes of I & II).

Figure: Classifications of system types.

SYSTEMS THINKING
Systems thinking analysis can be used to illustrate and group the problem domain of trade-offs between the scale of a system and its connectedness as depicted below. We can imagine a problem space for systems thinking to vary along the dimensions of complexity and randomness, or as suggested (Figure below), by connectedness and scale (complexity and complication). I have adapted Weinberg’s terminology in this diagram his original axes were x=complexity, y=randomness however the original intent remains the same; to characterize a conceptual problem space between mechanistic models and statistical models which he termed ‘medium number systems’ or ‘organized complexity.’

Different regions in the problem space are amenable to either: analytical, statistical, or (as Weinberg argues) a systems thinking approach. Recalling the trade-off between scale and connectedness. The first category: organised simplicity, describes relatively well-described simple systems that may be modelled analytically or deterministically as machine-like systems. The second category: unorganised complexity may be modelled statistically and applies in situations with sufficiently large, complex populations when aggregate behaviour begins to approximate stochastic (probabilistic) processes. The third category: organised complexity, describes dynamic structure-determined systems as evidenced by emergent properties and behaviour. These are medium number problems that are…
“too complex for analysis and too organized for statistics. This is the region of systems.” (Weinberg, 1975)

Figure: Types of systems with respect to methods of thinking (adapted from Weinberg, 1975)

Mid-range complex systems are typically the subject matter for management, engineering, sociology, and politics. They deal with problems that are dynamic and interrelated but essentially beyond finite analytical modelling because factors cannot be isolated or parameterised, or the computational load of a detailed model is excessive or based on unrealistic assumptions. Yet these problems are not large enough or randomised such that stochastic or probabilistic methods are useful for predicting or managing outcomes.

MID-RANGE COMPLEX SYSTEMS
So what is a mid-range complex system? Weinberg suggests that it is an open evolving system. The assumption of being bounded and approximately mechanical does not hold. It is a structure-determined system that adapts and evolves over time. A mid-range complex system is coupled with its environment and its boundaries are defined by its interfaces; processes of interaction and transformation with the environment it exists in and which it in part constitutes (Winograd and Flores, 1986).

How do system-like effects arise in the environment for high tech product/services? High-tech products typically invoke new system-like behaviour from users that over time begins to pervade the lives of individuals, families and groups in ways that we cannot predict with certainty.

EXAMPLES: The following examples depict the emergence of system-like interaction and behaviour arise between people and high tech objects (credit: Stefan Klein).

The telephone is not just another way to talk to someone over a wire; the mobile phone is not just a traditional telephone without a wire. The telephone, a spatially fixed communications device, could never attain the pervasive availability and use that the mobile phone has achieved. Mobile telephony has led, in turn, to the discovery of novel forms of coordination, collaboration and surveillance. It has redefined the notion of availability, and dramatically extended the scope of options to get information or call for assistance in everyday situations.

RFID technology was designed for simple product identification, but it can also be used for tracing and tracking things, ranging from the identification of licit products to the surveillance of teenagers. The meaning that is assigned to technologies and their modes of use is highly contingent on the context of use, (groups of) users, their relations, etc.

CONSTRUCTING SYSTEM DESCRIPTIONS
There are many tools offered as frameworks or as aides to the job of gathering information and constructing system descriptions. We will look at two simple but useful approaches for describing complex organisational market relationships with technology.

Organigraphs for Describing Organizations
Organigraphs are a tool for drawing and representing the relationships and activities of an organisation. They are an alternative to organisational charts as a tool for mapping an organisational relationships and interactions.
They can be treated as an antidote in some respects to the traditional organisational chart, instead of the familiar hierarchical view depicting names, titles and formal lines of authority.
“Organigraphs have been able to demonstrate how a place works, depicting critical interactions among people, products, and information. …to stimulate conversations about how best to manage their operations and which strategic options make the most sense,” (Mintzberg and Van der Heyden, 1999)
Organigraphs are a view of the organisation that can be more aligned with its activities and their interrelationships or workflows. Activities and functions could be thought of as the organs and muscles of an organisation. The act of redrawing the system of the organisation in this way offers a lexicon for represent and redefining organisational action. It provides a “new vocabulary, and associated pictures... [to bring] choices into high relief.” (Mintzberg and Van der Heyden, 1999) The Organigraph Palette consists of: People, Products, and Information (Figure below). Different actors internal and external to the organisation are included. The boundary of the system is loosely defined; in fact the value of depicting organization in this style is that the boundary can be redrawn and rethought.

Figure: Organigraph elements and simple example applied to a newspaper publisher.

The ‘ecology’ of the organization, its products and the environment within which they exist can be highlighted. Furthermore these views depicts people (as individuals, teams, or divisions), products (things, services), and information, equally. There are three basic representations; chains, hubs and webs. Typically nodes will be people or products and arcs or connections will be product movement, transformation or information. The following example illustrates the multiple ways we may represent the product development and support function in an IT organization (figure below).

Figure: Three representations of customer interaction with an organisation

There are no ‘right’ organigraphs, just those that are more or less useful. Remember, the different organisational metaphors are simply useful ways of thinking about organisation. As an analytical approach this kind of organisational mapping can draw out and juxtapose the various connections and flows. It highlights sequential, radial and web-like relations. They allow us the opportunity to redesign the relations, or highlight them so they can be better understood and supported. The graph provides a system-like view of the organisation in its environment and the activity focus within the organisation and for actors outside the organisation.

Activity Theory as a System for Describing Systems
Activity Theory has been employed as a descriptive theoretical framework to assist systems development, for eliciting and refining requirements with the goal of developing prototypes through to new technology in live user settings. It was adapted to analyse user situations and needs when cooperative work settings are reconfigured with computer support. It has strong theoretical constructs, an iconic structure, it focuses on the individual within organisations and society, and its primary unit of analysis is activity. Activity Theory includes the actors and objects involved in the process of someone transforming something into something else. This is the key process of development where the new product embodies or signifies new meaning for a wider community of others (e.g. customers, other members of the organisation). The approach has also been drawn on as a theoretical foundation to design methods like Interaction Design and Participatory Design (Moggridge, 2006, Cooper, 2004, Cooper et al., 2007, Kaptelinin and Nardi, 2006). Researchers have also used it to look at organisational interaction specifically in the contexts of seeking to attain new outcomes in the wider environment. As such activity theory can be used when we attempt to manage the development or intervention in mid-range systems, to innovate social, organizational, and technological processes. It provides a conceptual framework for making sense of how organisational actors can or should go about taking action in situations of changing requirements in dynamic market environments.

Figure: Generic Activity Theory diagram for describing a workplace/setting.

HUMAN SYSTEMS
Human behaviour in groups has proved difficult to manage well using classical scientific methods. Human behaviour is intrinsically complex and revisable. Social phenomena , purposeful systems (Ackoff, 1971), are the edge cases for scientific enquiry (Checkland, 1981). Checkland describes four classes of systems: natural, designed physical, designed abstract, and human activity systems. In spite of the elusive and changing character of purposeful human systems there remains much we can do when acting mindfully in settings to develop new technology and systems.

This issue of boundary setting and description dogged early attempts to construct detailed models of physical processes (e.g. in biology, materials, etc) and led to the idea of closed and open systems. ‘Systems thinking’ is presented as a systematic approach to thinking about ‘wholes’ rather than simplified reductions. By thinking holistically ‘systems thinking’ makes explicit the role of the problem describer (not necessarily the problem setter) as both observer and as an agent actively involved in articulating and refining the problem statements. There are, potentially, many relevant aspects of human activity systems that remain unknown or may be ignored based on how the object of concern and its environment are understood. For example, we generally assume that the outputs (products) of an organization are its primary means for acting in its market or operating environment. However there exist multiple other avenues that are often overlooked: welfare effects from corporate profits, political actions in industry and public forums, marketing, word-of-mouth, ethical and wider corporate governance etc.

The challenge for defining and describing product systems when humans are involved is in determining what we should include (and exclude) from analysis, and therefore, what is understood as relevant ! In essence the description of a complex real world system we be inevitably incomplete. Quantitative models of human activity systems become increasingly sensitive to initial conditions and are vulnerable to unknown factors, in large measure due to “the messy richness of ‘biological effects’” (Checkland, 1981). The problem of complexity is compounded in social studies and organizational behaviour because the social environment and its conditions of possibility are themselves social constructions; where a social construction can be understood as an on-going process of participation in collective sense-making (Giddens, 1984). Therefore, in human systems (organisations, markets, culture, society) – the subject matter for management, engineering and social science – working hypotheses, laws and generalities may hold for periods of time, but they remain open to revision and reinvention. The added complexity of social processes in society, markets, and organisations, and associated problems we hope to resolve, may often work against the rationality of scientific or engineered solutions (experimentation, observation, reduction).

REFERENCES

Friday, April 1, 2016

A brief history of computing technology

The ideas behind the design of this course/blog revolve around the work of information system development and delivery. As an element of a Masters level subject we're hoping that you try to be a critical learner, that is critical in the sense of being prepared to engage in analysis that considers the merits and the flaws of the accounts we read. Critical also in the sense of arriving at your own judgement on the merits of claims from the literature be they drawn from practitioners, academics, from popular culture, or your own experience.

A central learning process is to undertake critical readings of the literature and media. To better articulate the challenges posed by software/system development, to appreciated the values of multiple modes of delivery, technologies, tools, and structures used to produce both software and systems of use. Being critical means being open to considering alternate paradigms of software production that appear to conflict with consensus views on management and control.

Ultimately you must form your own perspectives, on what you recognise to be the significant aspects of development, the values and qualities of its workers, and to arrive at your own measured responses to the challenges of its organisation.

Starting this process means acknowledging the point from which you start from, that in turn implies that you understand something of the history and context from which you begin. The three presentations below highlight the context and milestones in the history of computational technology:
  1. Timeline of Computing History (by Computer.org link)
  2. Some Milestones in Computer Input Devices: An Informal Timeline (by Bill Buxton link)
  3. (A History of) Mobile Computing (by Jesper Kjeldskov link)
A subtext to the history of computing technologies, is the resilience of various beliefs and assumptions held by managers, designers, users and others,  for example, in the agency of technology, assumed rational/irrational behaviour of users, the efficacy of management structure, and the availability and control of knowledge. You will encounter politics, selective facts and seemingly incontrovertible truths bound up in the work of designing, developing and applying technology. The pace of technological centred development and innovation is faddish and gyrates. Beliefs and fashions change, and there is a fascination with the 'new' or radical that often overlooks its relationship and dependence on other older innovations and systems.

We might note resilience of certain ideas, concepts, aspirations, and observe the often selective couching of seemingly incontrovertible "facts" surrounding the design and development of technology. What is the relationship between management thinking and apparently newer and radical departures from a linear conceptualisation of trajectories of innovations?

Tuesday, March 8, 2016

The Rise of Agility

The move to agility involves refocusing on practices and discourse. An introduction to the principles and moves in methods termed ‘agile.’ A review of Extreme Programming (XP), the Agile Manifesto, and Scrum.

"We need to make our software development economically more valuable by spending money more slowly, earning revenue more quickly, and increasing the probable productive lifespan of our project. But most of all we need to increase the options for business decisions."
(Beck, 2000)

AGILE PRACTICE
Towards the end of the 90’s and early 2000’s saw the emergence of so-called Agile or improvisational models, including Extreme programming (Beck, 2000), Agile Development (Highsmith, 2002) and derivative approaches like Lean Software Development (Poppendieck and Poppendieck, 2003). In 1999 Eric Raymond (Raymond, 1999) posited that there were two diametrically opposite strategies evident for organising and engaging in design work; the Cathedral way and the Bazaar way. The then current radical movements in the software industry centred on Open Source software, extreme programming (Beck, 2000) and agile methodologies (Highsmith, 2002), were all characterized by frequent iterations, dynamic planning, intensive testing and making releases available regularly. The Open Source and Agile movements represented the Bazaar way for software development. The use of strict lifecycle models or organisational control frameworks (e.g. CMMI, RUP, ISO9001 style frameworks) was emblematic of the Cathedral way of software development.

Agile methods have since completely transformed practitioner understanding of how to organise software and high-tech development. These practitioner-oriented methods assume software development occurs in response to early, frequent, feedback. This in turn requires management commitment to allow and enable plans to evolve continuously. Agile methods have so successfully capture the development imagination that the CMMI and RUP (among others) have attempted to incorporate ‘Agility’ within their own meta-narratives.


EXTREME PROGRAMMING
In 1999 Kent Beck introduced the world to the idea of Extreme Programming (XP) (Beck, 1999). He presented an interesting and compelling vision of the process of programming that appeared to offer substantial, almost radical, benefits if adopted or adapted into organisations.
Beck’s paper and subsequent book (Beck, 1999; Beck, 2000) provided explanations and actual cases and generated such interest that it has since taken on the appearance of a 'movement' in among professional software engineers. Such is the respect with which it is held that management and teams should take XP evaluation seriously, if only to establish a position on it on a principled basis. The culture of XP is based on the following four values: Communication, Simplicity, Feedback and Courage. In practical terms the challenges that XP address are characterised in terms of the traditional variables of project management: Cost, Time, Quality and Scope. These aspects describe the mind-set and the degrees of freedom you operate within when you work XP.

Distinguishing Characteristics of XP
The defining features of XP were set out by Beck as follows:
To learn from early tangible feedback from short development and delivery cycles; that is to develop and release often.
Incremental planning is therefore essential if learning from early release is to be fed back into the development cycle. The software development project or plan therefore needs to evolve continuously.
The schedule should be flexible to enable the team to implement new ideas, measure their cost and test their benefit, and then reset the schedule.
All tests should be written before coding. One way of understanding this is that tests are written as code is written and changed as code is changed.
All tests need to be automated and run as often as possible. What this means is that all the tests can be run 'at will' but at the very least with each build of the software.
Communication must become the very heart of development; communication can be many things but is perhaps the key practice of XP.
Design therefore needs to be reviewed continuously. XP rejects the idea that design is a one-shot up-front “design phase” that ceases prior to coding, nor is there a place for one-dimensional roles like analyst, architect or test engineer. Everyone does some design and the design is continuously evolving.
Finally, all coding needs to be collaborative. Collaborative coding implies that code is subjected to continuous to peer review and contributions through XP's emblematic process 'pair programming'. The consequence of this that responsibility is also shared. No one 'owns' the code yet everyone 'owns' the code.

XP'S FOUR VALUES
Communication Is done through source, test and code, in comments and other artifacts. It r requires real commitment, and can be in-your-face at times; it can be uncomfortable, unsettling. Communication requires engagement in all spheres, written, verbal, non-verbal, in-code, on walls. Kent's catchcry to 'embrace change' can be read as 'embrace conflict' too.

Simplicity is as aesthetic appreciation of what code and the design becomes. As a philosophical principle for design it can be used like a knife to continuously pare the program to necessary essentials. Simplicity requires eternal vigilance as is in a sense the driving dynamic behind the practice of 'refactoring'.

The very idea of feedback is integral to an XP style of working. Feedback is supposed to be real world and is exemplified by Beck's request that you bring the customer into the development environment, have the customer/user sitting and working beside you. Customers are necessary because developers are ignorant, ignorant in this case because you (the developer) are not an expert in the customer's domain and you can not know what the customer really needs, in spite of attempts to codify and capture in requirements documents. (Note: sometimes neither does the customer but that’s where eXtreme succeeds). In the same way that the customer does not know about your domain of expertise (coding).

And Courage. Right! But think again; coding, recycling, throwing it away after you have learnt how to do it right, taking an idea and writing/testing some stuff compile/debug, then using it, throw it away and start again. Thinking of programming as something miraculous, making something intangible tangible, bringing thoughts to substance in a program, thinking of programming as an inherently creative and therefore unknowable a-priori; it takes courage and perhaps a certain amount of luck to get it right.

THE VARIABLES
XP, like any systems development approach attempts to maximise project cost, time, scope and quality: Four variables of mixed types, uncertain (even changing) definition. If correctly modeled this problem would involve finding the maxima/minima on a complex perhaps fractal multi-dimensional surface?

Cost can increase or decrease and depends on the availability of money, people, hardware, tools. Time is generally limited and linked to estimation, other resources, need etc. Timeframe is also a concern, how long will the software be used for, is maintenance required, are people available, is the product dependent on other product release cycles. Scope should be variable, the customer can of course demand features, the goal however is to deliver on the features you really need now, leave the other stuff till later. Don’t deliver now what you can put off to a later iteration.

And Quality; the one variable that shouldn’t be treated as a variable and also the one perhaps most difficult to define. Quality is often an indicator of the success or failure of our ability to balance the dynamic interactions between cost, time and scope. Compromising quality undermines and destroys the values XP aspire's to; a craftsman strives for quality, the inherent value and appreciation of things made for use.

XP PRACTICES AND RULES
Many of these practices and rules have since become accepted as general professional practice on systems development projects. Many projects already apply some of these rules but XP aims to use ALL the rules as they reinforce each other. At least half of this list is accepted as general-programming-best-practice. Evidence of the following practices and rules defines whether a workplace is employing XP or not.
Small Releases: Start programming, check your progress against your goals, correct your direction and continue programming, repeat until you finish!
Metaphor: A simple design analogy or descriptive rubric that describes the software in a language that people from very different backgrounds can share.
Particularly useful for the customer to illustrate the problem in terms that are meaningful, e.g. “the IP packet routing and subnet bridge device” becomes “networking networks”, or “the host server proxy and daemon product” becomes a “portal”, or “the object request broker architecture for distributed applications” becomes “middleware”.
Simple Design: Focus on the real business problem, then design to meet that need, not anticipated needs or “really neat stuff” that some hypothetical future customer might find useful. You’ll probably get the first (and second) one wrong anyway so don’t invest unnecessary physical and intellectual capital into something you may throw away once, twice or three times.
Testing:  You write the code, you write the test (this is a “plural” you, see pair programming to follow).
The test is written before you code, automate the new test, run it often to boost your confidence.
On-site Customer:  Have full-time access to a customer or someone representing a customer working on the team, on-site with you as you code up the features.
Coding Standards:  Each programmer accepts the collective coding standard to support the all the source code, by making the style and formatting conform to a common standard so that the code is accessible to all past, present and future programmers that will touch the project.
No arguments about the position of curly braces or indentation, layout of functions etc.
Pair Programming: Can be roughly approximated as peer review or code review. Recall the Open Source pardigm “with enough eyeballs all problems are trivial”. The heart of XP, if you aren’t pair programming you aren’t doing XP. This (and the Planning Game) is the mark of a true XP project.
Collective Ownership: Has huge cultural and behavioural implications, this implies behaviour and practices akin to open source development. Everyone has access to the codebase, therefore everyone can (in principle) become expert in the architecture and ‘theories’ of the design of the software. But with ownership comes responsibility, instead of zones of ownership you have zones of greater or lesser expertise, ideally these average over the team, expanding over time or disappearing when members leave. The ideal outcome is to have sufficient knowledge embedded in practices, experience, memories and knowledge of the team members developing and maintaining the product.
Continuous Integration: Requires modern and usually open tools for managing source code, e.g. Subversion, CVS, git etc.
40 Hour week or Sustainable Pace:  A reasonable expectation on the part of workers and the business.
Refactoring: Coupled with attention to classic Patterns (architectural motifs), is a way to introduce simplicity of design on a continuous basis. Without refactoring bug fixes and the addition of new features or enhancements leads to increasing cruft, entropy and fragility. Refactoring removes what is termed 'cruft', it restores order and returns the software to stability.
The Planning Game: The planning game consists of periodic meetings development and the customer (or the customer’s representative) to explore the requirements and track progress. It facilitates incremental planning, reprioritisation and change. The plan and the software evolves continuously and visibly. The Planning Game involves the Business (customer) and Development (supplier) sitting at the same table. The game itself consists of three moves, exploration, commitment, and after an iteration, steer. Within an iteration the game is continued via Stand-up Meetings with the developers and the on-site customer present. The same moves can play out (exploration, commitment, and steer) but we can also follow how well the developers implement the 'user stories', verify the value and usability of completed stories, track progress and problems, and attempt recovery.
From Scrapbook Photos
Figure: The relationship between XP's key practices.

Agile work environments are supported by a host of tools and equipment. The
Soft Infrastructure requires good source control tools, test frameworks, build frameworks, email, news, messaging etc. An effective physical infrastructure includes best in class computer workstations, large (and multiple) monitors, accessible desk space, shared workspaces and personal areas, meeting rooms, whiteboards, display walls (information radiators) etc. The social environment has its own qualities, typically a strong espirit d'corps, pizza and social outings, sports at lunch and other social/work activities. The key point is that these values, rules, culture and practices support each other, weakness in one is covered by strength in another.

THE AGILE MANIFESTO
From Scrapbook Photos
Figure: Manifesto for Agile Software Development (source: agilemanifesto.org)
In 2001 a group of developers gathered in the Lodge at the Snowbird ski resort in the Wasatch mountains of Utah. Inspired perhaps by Richard Stallmans's GNU manifesto (www.gnu.org 1985) or Mitch Kapor's Software Design Manifesto in 1990 (for an extract see hci.stanford.edu), Seventeen of them put their names to the "Manifesto for Agile Software Development" (agilemanifesto.org). The 'Manifesto' had two significant effects, it launched the 'Agile' turn in software development by offering a broad sketch of principles and a vision for the values of software development. It also inspired the proliferation of other 'manifestos' in the software industry and beyond", many commercially focused, some ironic (soa-manifesto.org, www.waterfallmanifesto.org, www.halfarsedagilemanifesto.org, failmanifesto.org, manifesto.softwarecraftsmanship.org, www.relisoft.com, Library Software Manifesto).
From Scrapbook Photos
Figure: Principles of Agile Software (source: agilemanifesto.org)

BENEFITS AND RISKS
Agile approaches characterise a shift from the general situation where decision-making at key development milestones where authority resides in management and gatekeepers. It facilitates a shift in power and responsibility towards the engineers themselves in the product teams. As Beck’s opening introduction states it:
"...turns the conventional software process sideways. Rather than planning, analyzing, and designing for the far-flung future, XP programmers do all of these activities—a little at a time—throughout development."
(Beck, 1999)
One way of reading the agile movement is that it is an attempt by software engineers to exert or reassert a claim of power (autonomy, authority etc) over the production of the software. While Beck and others claim the effect is limited to just the software engineering domain, the implications for the wider orgranisation will be significant if engineering teams adopt agile practices (and principles). The consequence therefore of adopting agile approaches on even one team is to introduce organisational changes with ‘viral’ potential, where practices taking place in one part of the organisation alter local understanding of work control and decision-making, with implications for the wider organisation. The results are unpredictable; as with any alteration in the power balance within an organisation, change itself is often subversive to current management knowledge and understanding. These are radical claims which, if we follow the agile movement, may end up leading us to an unknown place and so a caveat; when attempting to adopt any new business process or methodology, members of the organisation need to carefully consider the potential impacts.

REFERENCES

Monday, February 8, 2016

Software Engineering isn't the problem...

Consider this statement from the 1980s...
"Writing code isn't the problem, understanding the problem is the problem." (Curtis et al, 1988)
Software engineering is the systematic production of software by teams of engineers. Software engineering is a well understood domain, it encompasses structured methodologies, industrial/organisational frameworks like RUP and CMMI, through to agile methods such as XP, SCRUM and others. We have moved beyond the era where writing code was seen to be the problem. We no longer agonise over how to organise software development. These things are well known, their limitations and potentials understood. In short, we can effectively and successfully address the management and organisational challenges of software engineering. So, if software engineering as a problem has been solved, what's the problem?

Interface, UX and interaction designers argue that our biggest challenge is how to design great products that are usable and valuable. Like the software architect in Curtis et al, Paul MacCready (designer of the Gossamer Condor, quoted in Raskin (2012)) argues that "the problem is we don’t understand the problem." His view is that design is a process in which the best strategy is to learn quickly, to discover what the problem is; to fail early and fail often.

...How well equipped are we therefore, to deal with the problem of "understanding the problem"? Is the real problem design and therefore designers or is it 'design as a process'?

References:
CURTIS, B., KRASNER, H. & ISCOE, N. 1988. A Field Study of the Software Design Process for Large Systems. Communications of the ACM, 31, 1268-1287.
Raskin, Aza. 2012. Blog post on Paul MacCready (link)

Friday, March 9, 2012

Parameters of Development

THE PROJECT MANAGEMENT VIEW
The classic project management view of high tech development projects characterizes the work in terms of four key variables: Quality, Cost, Time and Scope. However the four variables are interdependent in complex ways, correlating both negatively and positively to each other. Have you ever tried finding maxima/minima on a curve? How about a surface? What about a 4-D surface? What if the variables have different and incomparable types (money, people, hardware, tools, feature, effort, complexity, internal dependencies, importance, priority, time, holidays, etc.).

COST
"more software projects have gone awry for lace of calendar time than for all other causes combined... but adding manpower to a late software project makes it later."
(Brooks Jr., 1995)
What do people do when a project slips behind schedule? "Add manpower, naturally." (Brooks Jr., 1995) Cost or its equivalence resources – things like money, people and equipment etc. are a necessary input to any project. Available resources include for example; the salaries of administrators, programmers, office space, computing hardware, software licenses, fast networks, and 3rd party services. Covering these costs and providing people and resources is a necessary prerequisite to project success but soon produces diminishing returns.

That is, all initiatives may reach a point beyond which the addition of further resources produces a diminishing return or may even degrade the project outcome. Why is this so? In the eponymous chapter of his influential book ‘The Mythical Man Month’ (1995) Fred Brooks makes the point that the theoretical unit of effort used for estimating and calculation project schedules is "not even approximately true [for] systems programming."
"the man-month as a unit for measuring the size of a job is a dangerous and deceptive myth. It implies that men and months are interchangeable." (Brooks Jr., 1995)
Brooks’ explanation, is that the idea of an ideal man-month, is only useful as an effort estimation technique if the task is perfectly partitionable and requires no communication whatsoever with others.
From Scrapbook Photos
Figure: Project success as a function of available resources
In the worse case situation a task (‘A’) cannot be partitioned and will take exactly as long as it will take regardless of how many (or few) people are assigned to it. Partitionable work is work that can be divided evenly among an arbitrary number of workers thereby allowing the task to be completed in the shortest possible time by adding more workers.
CASE: Imagine delivering and collecting census forms from 1000 households. Census collectors can discuss and plan in advance who will deliver and collect from which households. The activity of planning adds a finite amount of time to the collection.
A single census collector would need to make at least 1,000 trips (waiting for the form to be completed if the residents are at home).
Ten census collectors would need to make at least 100 trips. Additional time may be required to re-coordinate if collectors double up on the same address etc.
If however the task cannot be partitioned perfectly (some citizens aren't home, need help filling in the form, a census collector is out sick) the collectors need to spend more time communicating and coordinating closely with each other. As the number of collections increases they reach a point beyond which adding additional workers imposes a communication/coordination overhead that in turn delays the work.
From Scrapbook Photos
Figure: Completion time versus number of workers (adapted from Brooks Jr., 1995)

Tasks on high tech projects, almost by definition, involve complex interrelationships with other tasks that in turn demand a high degree of intercommunication between workers. Consequently high tech projects reach a point beyond which adding more people will result in the project delivering later (or not at all) rather than earlier. Understanding the degree of interdependence between project tasks in systems development highlights the need for communication in coordinating team members. It suggests that systems development projects are complex and difficult to manage.

TIME
"How does a project get to be a year late?... One day at a time."
(Brooks Jr., 1995)
Time is a crucial dimension of production activity. It turns out that an appropriate time line is a huge enabler for a project. However too aggressive a time target dooms a project to undue hast, unrealistic delivery times and, potentially, failure. Similarly, an excessively long time frame can defocus a team’s attention and starve the project of valuable feedback and checkpoints (figure below).
From Scrapbook Photos
Figure: Project success as a function of available time.

Time to delivery falls into three categories: too little leading to unrealistic schedules and delivery expectations; too much leading to analysis paralysis or gold plating; and just enough, when work is delivered, often incomplete, but early and usable enough to give useful feedback to both the user and developer.
CASE: In 2002, Mitch Kapor, the creator of Lotus 1-2-3 brought together a group of people to build his dream, a new class of software that redefine how people kept in touch with each other and managed their time. At the time some thought his OSAF was building an open source replacement for Microsoft Exchange but Kapor wanted something much more radical, a distributed mesh-like system that could collect and transform and share generally unstructured data for ideas and calendar items (Rosenberg, 2007). Towards the end of 2008 the project was nearing the end of the financial support that Kapor and others had provided. The paid programmers and contributors have gradually moved on leaving the project in the care of volunteers from the open source community. The software project, code-named Chandler, was funded by charitable contributions amounting to over 7.8 million USD. The project delivered preview versions over 2007/2008 but had finally run out of money, energy and time.
Two practices usefully address the problem of managing time, iterations (or timeboxes) and milestones. Milestones and timeboxing are essential approaches to managing time when project tasks are complexly interrelated and require developers coordinate and communicate closely with each other. Milestones are the large-scale markers for the completion of major stages in a project. The classic waterfall project is broken into stages, a stage-gate model, where the project transitions from one state to another. McConnell (1996) states that while milestones may be good at providing general direction they are usually too far apart and tool coarse-grained to be useful for software project control. He suggests using 'miniature milestones,' small one or two day tasks that can be finished and demonstrated.

An iteration or timebox creates an achievable conceptual boundary for the delivery of multiple work processes and is recognized as good practice for software projects (Stapleton, 1997). In recent years the concept of the iteration has been refined to be a release of new useful functionality developed over a one to four week duration that a customer can use and test (Beck, 2000). The key is to arrive at an appropriate timebox for the project. A timebox of several days or weeks can be considered an iteration or incremental delivery stage (see the section on Software Lifecycles). The key value of using milestones and release iterations is that they are opportunities for feedback; clear, unambiguous feedback.

SCOPE
A written statement of project scope and objectives is often a project’s start point. The scope may describe the problem area being addressed, necessary and desirable features. Project scope will expand over time to include detailed features (figure below).
From Scrapbook Photos
Figure: Project success and value creation as a function of scope.

The desired scope or feature list of a project should be clear and concise. Too large a list of features or feature creep generates problems of priority and coherence. A concise set of the most crucial features probably has a stronger (positive) influence on the underlying architecture of the product. Furthermore "less scope makes it possible to delivery better quality" (Beck, 2000) 'I want it all and I want it now' is simply not reasonable. Consequently scope must always be limited, refined in some way. It is essential therefore that feature requests be valued and prioritised in terms of time importance, and realistically estimated.
"For software development, scope is the most important variable to be aware of. One of the most powerful decisions in project management is eliminating scope. If you actively manage scope, you can provide managers and customers with control of cost, quality, and time." (Beck, 2000)
Requirements will usually appear to have a natural or priority; what is most important, a prerequisite, a 'must have', a 'nice to have'. MoSCoW rules can be used to help expose priority (Stapleton, 1997)
Mo Must have
S Should have
Co Could have
W Want to have but not this time round
A perhaps unexpected consequence of product scope statements is the relationship between Scope's features and the eventual system design or architecture over time. This has implications for team structure, implementation architectures, and functional behaviour among others. The often close mapping between detailed requirements and the end design raises a risk that the user interaction model for the finished product will be strongly linked to or influenced by the underlying implementation model or technical architecture of the product. The end result is that a requirements document can overstretch its own 'scope' and verge into prescription for the eventual technical design.

Consider the following headings from a template for a single software requirement (Pressman, 2000).
Requirements definition: A clear, precise statement of what the user requires the system to do.
Statement of scope: State the goals and objectives of the software.
Functions: Functions or functional description of how information is processed.
Information: Information description (data) depicting data content flow and transformation.
Behaviour: Behaviour or interface description depicting control and change over time within the operating environment.
Validation criteria: What tests demonstrate valid operation and behaviour.
Known constraints: Procedural, legal, environmental, compatibility etc.
QUALITY
"Quality is a terrible control variable"
(Beck, 2000)
Finally quality! However quality might be defined we should keep in mind that a definition of quality is a non-trivial exercise. Quality is usually highly contextual, situated in a prevailing culture of what constitutes good or bad quality. In the case of software the product (or service) is not a physical good and so does not wear out in the way that hardware does. Hardware degrades over time due to physical wear and tear, breaking down and mechanical or physical failure. Software still fails and so it undergoes maintenance work to fix or enhance it over its economic life. For the purpose of a particular project the product’s quality is generally a negotiated concept.
From Scrapbook Photos
Figure: Project success as a function of quality

Measures of product quality (open bugs, stability, user satisfaction, speed, scalability) may be identified in order to lock down the release date or one of the other variables. But the cost of treating quality as the control variable in order to satisfy a release date is often negative in the long run. Compromising quality affects pride-in-work, it erodes customer confidence, and undermines your credibility and reputation. Don’t deliver something you know hasn’t been tested, or fails the tests; quality should be used to set thresholds and targets, using it as a control variable undermines and destroys the values we all aspire to.

AN XP TAKE ON THE ECONOMICS OF DIGITAL MEDIA
The XP approach to the production of digital media takes an opposite view to the conventional wisdom applied to the cost and complexity of software over time (Beck, 2000). The traditional logic of the increasing cost of change and added complexity over the life of a programming project motivates exhaustive up-front analysis and resistance to changing anything late in the development life cycle. XP makes the opposite claim, explained as follows; implement only what is needed now: check then correct before moving on to the requirement that is needed next. This process of deliver, correct, deliver, correct, continues for the entire life of the system, even after deployment or being put into production (see below). If the product or service is delivered digitally then distribution to customers can be made an almost trivial process. While the work of applying and using updates shifts to the customer, even the update and deployment processes can be gradually streamlined to facilitate customers who choose to update. Further, if the product is delivered as an on-line service then deployment reverts to the development organisation and a customer's use can be perceived as continuous and unimpeded by regular releases even when training may be needed to use new functionality.
From Scrapbook Photos
Figure: The cost of change over time: Traditional vs. XP view

Likewise for design complexity, traditional software development invests massive effort in up-front design and requirements analysis, and allows relatively little revision or change during development and no change after deployment. (Beck, 1999) This results in a tapering off of design complexity over time. The initial design starts out relatively complex as much of the architecture and design is done before coding commences. The architecture remains static while code complexity gradually increases and then ceases to change as the product is finalized (see below).
From Scrapbook Photos
Figure: The increase in design complexity over time: Traditional vs. XP view

Because XP invests only as much up-front design and requirements analysis as is necessary to deliver the minimum required functionality first, design complexity increases slowly. The most valuable features are delivered now because that’s when they are needed, other features will be identified and refined as the project proceeds. The design architecture may appear to grow organically linked to the most important requirements. Furthermore the process called ‘refactoring’ anticipates that redesign without additional feature development is often necessary (for ‘ity’ demands: stability, scalability, usability etc). Refactoring as a process acts as a check on continuously increasing design complexity and is coupled with XP’s valuing the principle of ‘simplicity’.

The corollary is that traditional projects front-load as much cost (effort in design and requirements gathering) as possible, anticipating that they’ll understand the problem early and select the correct solution. Waterfall exemplifies this approach. XP implements only what is needed now, you check-then-correct before moving on to the requirement that is needed next, and this continues for the entire life of the software, even after deployment or being put into production


In summary:
  • Cost, +/- it can cost more or it can cost less
  • Time, +/- it can take t, or 2t, or t+n. So how long is a piece of string? How long will the software be used? Is this the first release of many?
  • Quality, an artisan strives for quality, the inherent value and appreciation of things being made, pride in solving a difficult problem, in producing an elegant solution. Quality should not be treated as a variable. Instead quality is an indicator of the success or failure of our ability to balance the dynamic interactions between cost, time and scope.
  • Scope, +/- you can have many or fewer features, the goal here is to go for the features you really need now, leave the other stuff till later. Don’t deliver now what you can put off to a later iteration.

Thursday, March 8, 2012

Outsourcing

Henry Ford’s Model T was the emblem of modern manufacturing systems characterised by suppliers and integrators working together to create value.
Industrial production, contracting, subcontracting and contracting out have been defining features of modern organisational forms since the industrial revolution and perhaps prior.
Two main organisational forms have prevailed in the modern era:
  1. Vertical integration, managing and owning the whole value chain process from procurement of raw materials through to production of end product.
  2. Horizontal specialisation, focusing on crafting/creating/delivering excellence at once core stage of the process of production before passing the processed good onto another stage.
  3. Fordist manufacturing created conditions for interfaces between different tasks, activity, input, output, or stages of transformation making up the manufacturing process.
  4. Japanese Kanban system is one extreme of layered specialisation from many small suppliers coming together under the umbrella of the main supplier/contractor/manufacturer in the manufacturing environment.
  5. Inter-firm information/data process specialisation was enabled by EDI (Electronic Data Interchange) standardisation initiatives from the 1970s through to the turn of the century, now continuing under the aegis of XML and newer standards.
EDI enabled ‘e’ interfaces to be constructed between firms in a similar way to the input/output models of staged manufacturing.
Along the way it demonstrated the overcoming of geographical, spatial and temporal barriers to data exchange.
The modern global supply chain is an extreme case whereby a process’s implementation is facilitated by data exchange between a diverse array of firms thereby creating the very possibility of an integrated supply chain.


As an outsourcing destination Ireland has lost appeal throughout the last decade.
Rising costs and competition from developing countries has eroded many of the advantages that Ireland once held.
Consequently Ireland has itself become a net consumer of outsourcing services.
A driver of this trend is the steady erosion in competitiveness in Ireland at country level, a trend which has been in place since the mid-1990s.
The Irish Central bank quarterly bulletin January 2010 provides harmonised competitveness indicators (HCIs) for the Irish economy. Cost driven deterioration in Irish competitiveness has been partially compensated for by increases in productivity but only it appears by shifting lower cost lower value added activities and processes offshore.
The picture for IT outsourcing is however less clear as Irish based offices of multinationals move up the value chain.
Like all mature markets Irish firms and multinationals based in Ireland often outsource organisational function activities to local or international-based outsourcing providers; for example traditional areas like payroll, accounting, finance, legal, HR, purchasing, and logistics, but also such as marketing focused on SEO (search engine optimisation), web development, website hosting, IT services like e-mail and spam filtering, virtualised storage, and telephony services.
Core or primary value processes may also be outsourced but at a higher risk or for reasons other than cost reduction alone.
Whether providers of outsourced services based in Ireland themselves source their activities offshore or not is a matter for their own operations.


Claims for the size of Ireland destined outsourcing activities and Ireland generated outsourcing vary, range widely between 100s of millions and billions.
Helpdesk and international call centre operations is one area where firms still see value in Irish based operations, particularly where multilingual skills and addressing the European market are important requirements.
In 2003, the value of the outsourcing market in Ireland passed €209 million ($234 million).
Irish banks have outsourced considerable operational activities to third-party providers (e.g. Bank of Ireland's multi-year deal with HP followed by the switch to IBM).
The public sector in Ireland also has long experience with outsourcing services particularly IT (e.g. The Irish Revenue Commissioners and Accenture).
Regardless of the provisioning destination (whether onshore or offshore) the trend is for organisations to increase the investment in outsourcing projects.
Even so firms experience with the outsourcing phenomenon is mixed as expectations to deliver higher levels of service grow and priorities change from simple cost reduction towards valued added.
Regardless of the experience with individual projects outsourcing is likely to remain a popular option with over half CIOs in Irish firms having budgets cut in 2009, cost saving will remain a huge driver or outsourcing initiatives.


HP Video Podcast: Be "on the business" for strategic IT and outsourcing
Tim Hynes, IT Director Europe, Middle East & Africa, Microsoft
HPVideoBlog_01

Why Global Sourcing?
I argue that the sourcing phenomenon is an intrinsic feature of human societies that is amplified by scientific advance, manufacturing innovation, technology more generally, and accelerated in the modern era of computer based infrastructures, high-tech products and services.

What organizational activities and products are amenable to sourcing beyond the traditional boundaries of organizations? And if activities and products can be sourced beyond the boundaries of the organisation what models or modes can be used?

Outsourcing isn't a business fad, it is a fundamental part of modern industrial production. Capital based manufacturing and production of goods and services is predicated on the basic idea of a division of labour. Specialised stages of manufacture, in other words a supply or value chain exist when skilled work is applied to some material, goods or activity to add value until an end point when the good or service is consumed. All industrial and professional specialisation represents therefore a kind of outsoucing. No one organisation, firm or individual has within its power the totality of knowledge, skills, resources, effort and time to produce everything we need or desire. Sourcing has therefore been and remains an intrinsic aspect work (labour and production) in society, from the most rural to the most metropolitan.

What therefore is sourcing? Consider the following definition:
“Sourcing is the act through which work is contracted or delegated to an external or internal entity that could be physically located anywhere. Sourcing encompasses various in-sourcing and outsourcing arrangements such as offshore outsourcing, captive offshoring, nearshoring and onshorning.” (Oshri et. al, 2009)
In light of the prominence and pervasiveness of inter-firm sourcing what are the advantages and disadvantages of different sourcing modes and how are they justified and applied in historical and contemporary settings? The current situation is never completely estranged from its historical contexts. Historical trends in global sourcing lead in to current topics and help to explain how local conditions have evolved.

For one reason or another various sourcing modes have proved more successful in particular industries and in particular locations. The relationship between technology trends and the emergence of expanding arrays of options around sourcing of product components and services offer one set of explanations, explanations such as the irresistible imperative of technology driven change or particular organisational structures. Other ways of understanding the success of sourcing through uncertain contextual conditions and processes of emerging knowledge adapting to and taking advantage of unique situations and knowledge.

An interpretation of global sourcing discourse that managers can use effectively should be more than the straight application of technological recipes, formulas, methods, rules, and organisational templates. Reflective actors will always seek to identify the interests involved, to be aware of who benefits (or looses) in order to juxtapose and evaluate among the various strategic decisions between in-house and outsourced delivery. Sourcing initiatives may proceed smoothly but if not what remedial measures can be employed addressing the organizational and technological issues relating to global sourcing?

The reflective manager has a broad palette of concepts and frameworks for interpreting and deciding sourcing cases. However this area of organisational operations is constantly evolving and changing and so the manager must be adept at identifying emerging trends in sourcing relationships that are likely to be important in the future with implications for current situations. In this way involved actors can merge theory with context, against a historical backdrop, extrapolate and justify the implications of changing sourcing arrangements in complex inter-organizational relationships.

Case: Bank of Ireland Outsourcing 2000-2011
Irish banks have, in the past, outsourced considerable operational activities to third-party providers. Bank of Ireland's multi-year deal with HP followed by the switch to IBM exemplifies one particular case of the benefits and risks of adopting a deep outsourcing strategy in a digital 'information' industry.

(24 February 2003: article-link) BOI license desktop and server software from Microsoft.
(4 April 2003: article-link) BOI announce 7 year deal with HP for IT services worth ~500M, over 500 bank employees to be transferred to HP.
(2 July 2003: article-link) BOI announce multi-million deal for banking software products.
(3 November 2010: article-link) BOI announce 5 year deal with IBM for IT services worth ~500M,


References
Oshri, I., Kotlarsky, J. & Willcocks, L. P. (2009) The Handbook of Global Outsourcing and Offshoring, Palgrave Macmillan.