Design, Develop, Create

Wednesday 30 October 2019

Fred Brooks adage: "adding manpower to a late software project makes it later"

Fred Brooks' adage about software projects (known as Brooks' law) states, "adding manpower to a late software project makes it later". He explains the problem in terms of the communication overhead in a group. For example as the number of people involved in a project grows, the communication overhead grows faster. The overhead grows so fast that projects quickly become unmanageable.
Can you identify the errors in the diagram?

For a group of 'n' people, which of the following might be suitable functions to use to model this behaviour. What assumptions would you need to make to justify your choice?

f(n): n

f(n): n-1

f(n): n+1

f(n): n-m

f(n): n^2

f(n): n^2/2

f(n): n(n-1)

f(n): n(n+1)

f(n): n(n^2)

f(n): n(n+1)/2

f(n): n(n-1)/2


Friday 25 October 2019

(PART 1) IONA Technologies - genesis

Iona’s Genesis
"New York, 26th February 1997, 9.29am. The coming of age after six years of infancy. A Croke Park-pitch size of a room with hundreds of computer screens replacing the light lost by blind-dimmed windows, replete with silently intense players grizzled beyond their age. The second-hand tranquilly rotates to mark the opening of the market at 9.30am, and the Lehman Brothers trading room explodes, keyboards pounding, phones shrilling answered with bronx cacophony. Our own stock opens its very first day up, our trading volume is good, and our initial public offering (IPO) on the US Nasdaq stock exchange is completed after a full year of preparation with our bankers, underwriters, analysts, and lawyers." (Chris Horn, 2012)
After NASDAQ Iona lists on the Dublin Stock Exchange (1997)

The narrative of Iona’s trajectory to success can be summed up in a sentence. IONA progressed from campus company in 1991, releasing Orbix in ’92, IPO on NASDAQ in ’97, and over the next 15 years spawning over 20 other spin-off companies before being acquired by Progress Software in 2008. The detail of IONA's history however is more complex and interesting (Baker, 2000).

Trinity College's Distributed Systems Group (DSG) was a small team of academics and engineers conducting research and development into the problem of inter-network computing architectures. The DSG had become a centre for excellence in distributed systems technology and more importantly in distributed object technology. Over the previous 14 years many of them had become international experts and built up a wealth of experience in designing and building distributed systems support platforms. Their research was supported initially by the college and then by the the EU through the (then) EEC Espirt research programmes. The leap from the academic to the commercial world was tempting as industries like banking and telecommunications embraced networks and internets.
Figure: Iona's Engineering division mission statement (see the video on Vimeo)

A Trinity College Dublin campus company, IONA occupied space in Trinity's rambling offices along Westland Row before spilling into office space on Pierce Street. At its height IONA would eventually employ over 1,000 people around the globe, providing work for many of the academics, researchers and post-grads from the DSG but at the end of that first week as an independent firm only seven new employees marked the occasion quietly with a toast at Mahaffey’s pub.

IONA's founder talent all came from this environment of academically led technological innovation and they were active contributors to the process of defining standards-based distributed object technology.
“[T]he start-up had three staff – Chris Horn, Sean Baker and AnnraĆ­ O’Toole. But it had no bank balance, no marketing budget and no physical assets... On the other hand, the founders of Iona did not need to make a complete break from academic life or their incomes as lecturers. They could reduce their teaching time over three years, while they built up the company.” (Sterne, 2004)
Iona’s Justin Mason set up one of the first 100 servers on the new worldwide Internet. www.iona.com became the first non-academic Irish website (Mason, 2009) and Iona’s software could be downloaded on-line via FTP access – a radical departure from the conventional thinking that software came in a box or on disks.

During the early years the organisation funded itself through C++ training and consultancy services. Professional services work (aka consulting), brought in needed revenue from the Irish divisions of multinational technology firms like ICL and DEC. While the consulting wasn't as profitable as software sales it did produce unanticipated benefits. Delivering training and services contracts acted to expand the spread of object oriented skills and knowledge in wider industry. It produced new customers for Iona’s products and a cadre of skilled engineers many whom would subsequently work for Iona. They also leveraged their relationships in the local offices of multinationals to reach out internationally.

Inter-networked software was the heart of Iona's value proposition and its employees took advantage of the growing possibilities of the net.  IONA attracted talented people across all the disciplines: technology, programming, product management, legal, marketing and sales and more. In time many went on to start their own companies, innovating and playing influential roles in the open source movement, in standards development and other areas.

At the official launch at Object World in San Francisco in 1993 Orbix 1.0 defined and led the international trend to internet enabled computing. IONA was the first to market with its release of a commercial implementation of the CORBA standard. Orbix ran on Windows, Solaris, HPUX, and a long list of other operating systems (Durham, 2001).

Distributed systems arise organically in (and between) organisations because they allow specialised divisional applications to interoperate via standard interfaces with other applications running anywhere on the net. Iona’s Orbix technology enabled all these different programs to work together independent of their operating system or hardware platforms.

Iona was surfing the wave of the most recent paradigm shift in software architecture; object oriented design. The beauty of Iona’s approach to ‘object oriented’ was that Orbix could ‘wrap’ legacy software in a future proof IDL interface. IDL made programs look like ‘objects’ even if they weren't object oriented designs as such. It enabled firms to retain and maintain their huge investments in legacy and mainframe systems. It also provided the bits and pieces for the new distributed computing paradigm.
Orbix, Iona’s implementation of the CORBA specification, consisted of a software development kit (SDK), a daemon (computer service) and set of run-time libraries (libs). Orbix was also the technology used at the core of Iona’s growing family of internet centric products and services.
The CORBA standard enabled applications to deliver network interactivity ‘by design,’ at the same time as it future proofed legacy applications by wrapping them in an Object Oriented front-end. Object orientation could be layered over any system regardless of whether their underlying design was procedural, functional, or just plain ancient. Iona’s Orbix SDK (Software Development Kit) and the Orbix orb (an Object Request Broker daemon and libraries) enabled programmers to easily design distributed programs using IDL (Interface Definition Language), which enabled software object interfaces on one system to call and interoperate with objects on distant systems. Iona also provided language mappings to C++, SmallTalk, Java, Ada, and OLE (enabling access to Visual Basic, Delphi and Power Builder environments).
CORBA (Common Object Request Broker Architecture) is an open independent specification for distributed software architectures based on the object oriented interface paradigm. The Object Management Group (OMG) manages the CORBA standard.
Iona's products were being used in some of the most exciting software engineering jobs in the world; Boeing’s distributed aircraft configuration system DCAC/MRM (Newcomer, 2006) and Motorola’s IRIDIUM global satellite telephony service (Computergram, 1994) in Seattle, Washington State, and Phoenix, Arizona, respectively to name two. These were cutting edge international computer engineering crucibles and their trajectories were shaping the Orbix feature list, releases and fixes.
DCAC/MRM is Boeing’s Define and Control Airplane Configuration/Manufacturing Resource Management systems.
IRIDIUM now an independent company, was developed by Motorola to deliver a constellation of over 66 satellites providing seamless mobile telephone communications across the globe.
Friday Night at Toner’s
Friday night in Toner's pub on Baggot Street was a good spot to catch up and enjoy some after-work banter. Tonight the talk was all about the recent jump in the share price and where the NASDAQ was headed. The share price had become an 'icebreaker' ever since the IPO (initial public offering) in February the previous year. Anyone with stock options had, unsurprisingly, developed a keen interest in the stock market.

People returning from `international duty' on customer consultancy ‘gigs’ in the Professional Services division (PS) could hold court in the snug, share war stories or catch up on the local scene. Some considered PS work to be something of an elite job. It came with international travel, expense accounts and overtime, but it meant living from a suitcase, sometimes for weeks on end. There was intense pressure to perform, to deliver the goods on customer sites. Many in office-bound engineering roles relished the stories but it also gave meaning and importance to their work too. PS had an unvarnished view of both client projects and Orbix's capabilities. The information was golden, what customers were attempting to do, what worked, what didn’t and somewhere within all that, what the `next big thing' could be? Orbix product quality or features were never far off. Heroic tales and gripping yarns if you knew the jargon; version, source code, debug, compiler, ridiculously large IDL, memory leak, o/s patch, hot-fix.

Paula, VP of Engineering, couldn't help overhearing...
Brian, Mark, Pierce and James were talking about one such tale, set in a secure bunker for some government contractor. Exciting stuff if you enjoyed that kind of thing, but it annoyed Brian (the QA guy); The problem shouldn’t have occurred in the first place he complained. It was preventable!

Mark, the PS engineer, had resolved a major issue on site at an undisclosed location in California. This particular customer site (some muttering about the security or defence sector) was completely locked down. Mark had had to reach out to home base. He had been on the phone to Dublin for hours. First to James (a software engineer in customer support), then Pierce (a software engineer on the product team). The three of them had worked through a day and night, frantically trying, first to reproduce the problem, and then devise a fix or workaround to perhaps make a patch for Orbix 2.3c. Finally, Pierce had a fix (he thought). A two line code change. He compiled the patch and copied it to the FTP server. But no! The customer site wasn't just firewalled, it was physically disconnected from the internet. Mark had a choice, go outside through six layers of security, copy the fix to a disk and walk it back in to apply it, or... he had a local source snapshot on his laptop. Could Pierce not talk him through the lines of code? It would be quicker to recompile a new Orbix daemon on the laptop and copy it directly to the live environment...

These discussions played an essential part in making sense of the market for Iona's product managers and the engineers, if only because PS engineers were in ‘the field’, often isolated behind government or corporate firewalls and multiple layers of military grade security. Being on-site demanded absolute commitment, technical ability, some heroics, but it also depended strong social connections between  engineers throughout the organisation.

References:
  • Baker, S. (2000) The Making of Orbix and the iPortal Suite. ICSE 2000. Limerick, Ireland, ACM.
  • Computergram (1994) Motorola Admits to Deal with Iona on Iridium. Computer Business Review. (link)
  • Durham, J. (2001) History-making components : Tracing the roots of components from OOP through WS. IBM. (link)
  • Iona Technologies (1997) Best of Breed Products: On time everytime. Dublin, Iona Technologies.
  • Mason, J. (2009) jmason.org. (link)Dublin.
  • Newcomer, E. (2006). Iona Technologies. (link)
  • Sterne, J. (2004) Adventures in Code: The Story of the Irish Software Industry, Dublin, Ireland, The Liffey Press.
  • Horn, C. (2010) Be Inspired. Be an Entrepreneur, DIT Hothouse 'Be Inspired' Seminars (link

Monday 21 October 2019

Agile at Guidewire videos

Agile Development at Guidewire. 

"What’s good about Agile is it makes process personal."
These videos convey something of the character of work in an Agile software development environment. Thinking in terms of practices, of 'practice theory' try identifying routinized bodily interaction, look at the way these people actively produce and interpret happenings to do with the focus of their work, how things like tools, screens, boards, scraps of paper, proximity, and conversations - occurring in distinctive locations - think about what it takes to know how to perform here, to know how performances matter, how involvement produces knowing.

Guidewire's video archive
Product management - identify the important practices...
https://www.youtube.com/watch?v=N0wVEqeEEI4

Testing is the foundation of any successful product
https://www.youtube.com/watch?v=-myDy3EcEDA

Agile implementation - different groups perceive different benefits, value/values
https://www.youtube.com/watch?v=CtJYCV_tZNk

The big internal shift within Guidewire - cultural, systems, workplace practices
https://www.youtube.com/watch?v=tQuTBp8L_ls

Is it necessary for support roles to work the same way? They say they do but do the?
https://www.youtube.com/watch?v=uZ5GG7v-dug

Big insurance companies will never do this...
https://www.youtube.com/watch?v=2Nj5IFpoaYc

A philosophy for everyone? - sales, customers, design, production alike?
https://www.youtube.com/watch?v=CaJUPJZ07Q0

And the perspective of customer organisations? Or the role for customers in development?
https://www.youtube.com/watch?v=Z46xJ1psqWw


On imposing a single estimate.

Mike Cohn from Mountain Goat Software posted a reflection on imposing single estimate for a backlog item that will necessarily involve more than one specialism. He wrote:

"During the heat of a Planning Poker session, it can be very tempting to decide to shorten some of the discussion by using multiple estimates instead of a single value. For example, if testers and programmers are having a hard time coming up with a single estimate for the full work, someone may suggest putting “programmer points” and “tester points” on each product backlog item. This is almost always a mistake."
After reading the full post I think the key idea is that you can't really trust composite estimates, made by several contributors, working on what is ostensibly the same job. Any estimate and re-estimate must be down to the judgement of the person who signs up for the item, even though it is implicit that they will necessarily need to involve other specialisms. As I see it estimation shouldn't be a back-door to task atomisation. The correct reading of estimation is that it offers a process of sharing knowledge and, in conjunction with the standup meeting, shared support. Ulimately we want a person who 'takes it on' also takes responsibility to make sure it gets done done, not 3 or 4 people all pointing fingers at the other to blame for a problem.

Saturday 19 October 2019

Cost+ estimation


Estimation attempts to address the two great unknowns of complex technological systems development:
How much things cost

and

how much things cost!
Q: Why did I write "cost+"? 
Because I want to highlight that we're interested in more than monetary cost. Cost can be thought of in terms of the resources available or needed, things like the effort (of knowledgable people), resources we already have or can alter (tools, spatial arrangement, environment), and other things we can acquire (more or newer tools, equipment, space, specialist inputs etc). Linked with this is also the idea of "opportunity cost", the hypothetical cost of not doing something as we pursue one goal over another. However the point of this post is to develop the concepts and understandings needed to perform estimation.

For the moment I'll focus on the first "how much things cost"; the second "how much things cost" is the province of the complex technical sale, value perception and price, an entirely specialised domain, skill and art in its own right.

The question here is "how much will it cost to develop? What is the effort? How long will it take? How many people for how long to produce a nominal deliverable (more or less?)?

Accepted wisdom suggests that you make a guess, double it and hope for the best. Why? Novel valuable high tech requirements are by definition unknowns. And estimating how to produce an as yet unknown, unfinished thing is necessarily an art, not a science. But we don't need to leave it there; there are some approaches and practices, that combined, enable us to make informed 'guesstimates' or scientific wild-ass guesses (SWAG) that help us overcome this bind.

For example, if a requirement is very similar to something we have encountered, resolved or done before then, all things being equal, we use the prior experience as a template to estimate the cost of addressing the new requirement.

But as the new requirement strays into the unknown then risk and uncertainty increases and estimates inexact. Yet even here rigour can be applied, knowledge, expertise and judgement employed to suggest effort, cost and timeframe estimates.

"Estimation as practice" relies on the skill, knowledge, resources and contexts of those involved in a situation. Estimations are 'situated' in the same way that other kinds of knowledge work are situated amongst context, history, place and moments in time.

The methods below offer the rigour of organisational processes, from which estimates can be produced (and refined) for planning.



The Planning Poker method is a Delphi technique, an approach that harnesses the collective knowledge experience, judgement and wisdom of team members.



Constructive Cost Model (COCOMO), currently titled COCOMO II, is a holistic method for estimating software costs and schedules using generalised software design elements as a cost units. In simple terms you start from a figure of one person-month per function point (incorporating specification, design, test, documentation etc), and refine according to the empirical results your team/organisation achieves.  COCOMO II provides three models for estimation/planning:
  1. Application composition; applies complexity-weighted costs for objects like screens (with layout, buttons, input, displays), data tables/schema, reports/outputs, components, objects etc. 
  2. Early design; combines function point numbers and sizes with personnel attributes.
  3. Post-architecture: includes source lines of code (SLOC), function points, current architecture, code use/reuse, and project history data.


Friday 18 October 2019

Exercise: Planning poker scenario


Scenario: You are a member of a joint committee of Engineers Ireland and the Irish Software Association tasked with developing instructional documentation, training videos and conducting an outreach programme for secondary schools.
Your goal: Excite students about a career in bridge design!
The volunteers are ‘sizing’ the effort needed to deliver educational exercises addressing stated requirements. Mary is facilitating the workshop. Yi and Daniel are engineers.
Yi started; “This kind of estimation technique is called ‘planning poker.’”
“What’s planning poker?” asked Daniel.
“It’s an approach to overcoming some of the difficulties surrounding estimation” said Mary. “The problem of different people anchoring their estimates in others’ figures, you know, when the first person picks a number out of the air, and you go along with it just because it’s out there”.

Yi added; “We have a list of stories captured from the requirements study.” (Table 1)
Mary explained, “Our goal is to size these stories for the next iteration. We’ll be using the story points I talked about before, remember this is just to get a general feel for the size and difficulty of the story before we talk about how long it will take.”

“Shouldn’t I be thinking in terms of how long it’ll take?” said Daniel.
“Not yet,” said May, “this way we’ll get a general feel for the size, complexity, and difficulty of the story, and maybe even agree some of the detail and what the story means.”
Yi spoke up, “each of you take the numbered cards. Think of estimates ranging between ‘small, medium, and large’. We deal with duration after we’ve got a feel for difficulty and complexity.”



Note: Estimation challenges include: anchoring behaviour, task misinterpretation, not understanding one task's relationship to other tasks.


References and Links
Inspired by ‘Agile Estimating and Planning’ (Cohn, 2006).

Monday 14 October 2019

Scholarly Search

Writing the literature review
A literature review is not a summary of "what you've learnt from what you've read". Rather, consider the challenge to be writing a 'problem oriented narrative'. A simple problem-oriented narrative has three parts. 
Beginning, middle, end.
Problem, framing literature, resolution. 
Identify an overall issue and gradually introduce scholarly works, develop an integrated framework, arrive at a clearly focused question.

Accessing academic literature
Search for related prior research that would inspire and inform your next steps. Select and refine relevant keywords for this search. The following databases index academic (peer-reviewed research) publications.

  • The DOAJ (Directory of Open Access Journals) (link) - a community-curated online directory that indexes and provides access to high quality, open access, peer-reviewed journals. 
  • Google Scholar* (link)
  • Scopus* (link)
  • Web of Science* (link)
  • Elsevier* - also hosts some open access journals (link)
  • SAGE Publishing* - also hosts some open access journals (link)
  • Springer* - also hosts some open access journals (link)
  • Routledge* - also hosts some open access journals (link)
  • JSTOR* - also hosts some open access journals (link)
  • Project MUSE* - a public index/catalogue (link)
* Search functions and file access to search results may be restricted to registered users or computers on campus networks.

If you find (potentially) interesting articles but cannot access them freely you should consider contacting the author(s) directly by email. Introduce yourself and reason for seeking access to a copy. Many authors will respond generously to such requests from students and share drafts or pre-press copies.

Another tack to take. Assuming that the article/chapter/section/publication sought is not the only relevant research dealing with this topic in the research world, you can conduct a forward citation search, that is, search for articles that cite this one. Searching forward ("cited by") approach is also a good way of the paper's impact and of identifying similar current research publications.

Writing - Reading Group

(a modified `writing - reading tutorial' protocol based on a description by Alexa Zellentin, of her experience running Oxford tutorials)

We read and discuss in turn a draft paper from each of a group of no more than three students.
  1. Reading out one’s work to others
  2. Author then quietly listens to others' discussion noting agreement/disagreement, comprehension etc.
  3. Each reader makes one (1) suggestion of how a might point may be made more clearly or forcefully.
Revision for next week to demonstrate visible progress in the development of the paper - with personal benefits for how interpret feedback; for how to make more nuanced and clearly expressed arguments.

Friday 11 October 2019

Products/services are just a means...

The Delft Design Guide asserts that:
Products are just a means for accomplishing appropriate actions, interactions and relationships; products provide meaning for people only through interaction. (Buijs, 2012)
In essence, products and services don't exist for their own benefit, they are tools through which people achieve their goals by interacting with the products.



References and further reading:

Buijs, J. (2012). The Delft Innovation Method: a design thinker’s guide to innovation. Eleven International Publishing, The Hague.

Planning Poker Workshop

I put this video together to introduce and document the Planning Poker workshop from 2010.

Planning Poker Estimation. from Allen Higgins on Vimeo.

Agile is dead - Dave Thomas (Pragmatic Dave) presentation.

Dave Thomas offers a timely call to turn back to the basic ideas and principles behind the Manifesto for Agile Software Development. Not "Agile" as such but courageous "agility". Strive to keep this attitude in mind!!

Thursday 10 October 2019

The Digital Methods Initiative

https://wiki.digitalmethods.net/Dmi/ToolDatabase

The index of tools curated by The Digital Methods Initiative (DMI). The DMI is one of Europe's leading Internet Studies research groups. Comprised of new media researchers and PhD candidates, it designs methods and tools for repurposing online devices and platforms (such as Twitter, Facebook and Google) for research into social and political issues.

Monday 7 October 2019

Requirements vs Specification

The distinction between the two, Requirements vs Specification, can be subtle at times.
Both may run the risk of containing incompatibilities and inconsistencies that need to be teased out through various means.
An to approach the challenge of making sense of requirements, and making requirements sensible is to create a compatibility matrix.

So as an exercise - assess the interdependencies and linkages (positive and negative) between the Good Friday Agreement (GFA) and the proposed replacement for 'backstop' previously agreed as part of the the UK-EU Withdrawal Agreement (WA).
The following requirements can be used for this exercise

  1. To protect the GFA the signatories require:
    1. There must be no hard border between Ireland and Northern Ireland
    2. Within a customs territory there can be no tariffs, quotas, or checks on rules of origin.
    3. The Common Travel Area arrangements between Ireland and the United Kingdom must remain.
    4. There must be a Single Electricity Energy Market on the island of Ireland.
    5. North-South cooperation and the all-island economy must be protected.
    6. Regulation will remained aligned to preserve the EU's Single Market and covering: legislation on goods, sanitary rules for veterinary controls (“SPS rules”), rules on agricultural production/marketing, VAT and excise in respect of goods, and state aid rules.
  2. To enable an independent UK Trade Policy on withdrawal from the EU HMG require:
    1. Border checks in and out of the territory of the UK.
    2. To restore the UK Supreme Court to the court of last resort for the UK (the highest judicial body within a jurisdiction).
    3. To apply UK's own customs tariffs for goods entering the UK market.
    4. To establish UK's own goods rules, legal compliance regulation and checks.
    5. To have UK Govt. only controlled internal goods market.
    6. To have UK Govt. only controlled services market.
    7. To have UK Govt. only controlled labour market.
    8. To have UK Govt. only controlled immigration policy (movement of people).
    9. To restore UK Govt. only controlled maritime resources.
    10. To apply UK's own independently determined Customs Tariffs.
    11. To enable UK's own approach to industry supports and subsidies (may be subject to WTO competition rules).
    12. To negotiate and establish UK's own trade deals with 3rd countries.
Partially completed feature requirements matrix for Brexit (+/- correlation, o=no or unknown effect)


WA - proposed protocol on Ireland/Northern Ireland
https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/836029/PM_letter_to_Juncker.pdf
... and a decoding of the letter
https://www.politico.eu/article/boris-johnson-big-brexit-offer-decoded-annotated/

The GFA (only 35 pages)
https://www.dfa.ie/media/dfa/alldfawebsitemedia/ourrolesandpolicies/northernireland/good-friday-agreement.pdf

European Commission notes on Brexit
https://ec.europa.eu/ireland/news/key-eu-policy-areas/brexit_en

Thursday 3 October 2019

Exercise: (a) Design your ideal search page

This exercise familiarises students with interface design approaches and tools. The exercise is inspired by Carol Snyder's book titled "Paper Prototyping" (2003).

Objective
To practice creating design artifacts to display and test technology use/interaction ideas.

Material
Sheets of A4 paper, post-it notes, pens and pencils of different colours.

Instructions
1. In groups of 2 or 3 use paper/pencil sketch a mockup of a basic Internet ‘search page’. (allocate 10")
2. Collect the sketches and display them to the class; allow the group to provide a brief commentary. (allocate 10" to display all mockups).
3. In the same groups use Balsamiq to create a digital version of the design. The new design may vary from the paper/pencil sketch. (allocate 15")
4. Discuss the following reflection points (in groups first followed by class discussion). (allocate 10")

Reflection
Describe your feelings and thoughts on the process of translating your ideas into a concrete representation.
Comment on the discussion dynamics within the group.
How did the tool used shape, constrain or enable your design thinking?
Consider the difference between paper/pencil sketch vs Balsamiq.

References
Snyder, C. (2003) Paper Prototyping: The fast and easy way to design and refine user interfaces, San Francisco, CA, Morgan Kaufmann, Elsevier Science.



Student Examples

Whole class examples in collage:
designdiagrams01