Choosing in-house or external development

Tip: Choose Save as PDF in the print dialog to download. Use A4 paper size.

Choosing in-house or external development

Name:
Date:
Class:

Quick Questions

Shade in the A or B circle for each question.

1. A bank must keep tight control over how customer data is handled. Which sourcing choice usually gives it more direct control?
A In-house development
B External development
2. A small start-up needs an app built fast but has no developers. Which option is likely to suit its time and skills criteria?
A Wait to train a new in-house team from scratch
B Hire an external development company
3. Which is the best way to make a sourcing decision?
A Compare each option against criteria linked to the organisation's objectives
B Pick whichever option has the lowest upfront price
4. Which contract clause best protects an organisation's security when it uses an external developer?
A Letting the supplier choose its own security practices without checking
B Requiring the supplier to follow set security requirements and allow audits
5. What is a hybrid approach to development?
A Using an in-house team for sensitive parts and an external supplier for other parts
B Using two different external suppliers and no in-house staff

Match the Pairs

Draw a line connecting each item on the left to its match on the right.

Left columnRight column
1criteria = [cost, skills, control, security, time] ASecurity requirements are not specified. The contract should state the security requirements the supplier must meet, because outsourcing does not remove the organisation's responsibility.
2contract.require(secureCoding, breachReporting) BThe decision uses only cost. It should weigh cost, skills, control, security and time against the organisation's objectives.
3A hybrid approach keeps sensitive work in-house and gives less critical work to an external supplier CauthModule = IN_HOUSE; websiteDesign = EXTERNAL
4Comparing options against criteria means scoring each option on every criterion and choosing the best fit for the objectives DA supplier contract clause that sets security requirements the external developer must meet
5choose EXTERNAL because it is cheapest EIF totalExternal > totalInHouse THEN choose EXTERNAL
6contract: supplier handles security, no requirements written FThe factors an organisation weighs when comparing in-house and external development against its objectives

Definitions

sourcing decision

Fill in the Blanks

Complete each line of code by filling in the missing parts.

1.
__ inHouseSkills = FALSE THEN option ← "external" END IF
2.
score ← cost + skills + control + ________ + time
3.
IF contractSigned ___ auditDone THEN approveSupplier() END IF
4.
IF coreInHouse AND supportExternal ____ approach ← "hybrid" END IF
5.
IF supplierRiskScore _ maxRisk THEN rejectSupplier() END IF

Spot the Error

Shade in the letter of the line that contains an error.

Question 1
A in_cost = 90000
B ext_cost = 60000
C if ext_cost > in_cost:
D choice = 'external'
Question 2
A clause = True
B nda = True
C audit = True
D if clause or nda or audit:
E sign_contract()
Question 3
A core_code = in-house
B extras = 'external'
C approach = 'hybrid'
D print(core_code, extras)
Question 4
A cost = 4 * 0.3
B skills = 5 * 0.2
C score = cost * skills
D print(score)
Question 5
A weights = [3, 2, 5]
B total = sum[weights]
C print(total)

Answer Key

Choosing in-house or external development
Section A: Quick Questions
Q1
A — In-house development
Q2
B — Hire an external development company
Q3
A — Compare each option against criteria linked to the organisation's objectives
Q4
B — Requiring the supplier to follow set security requirements and allow audits
Q5
A — Using an in-house team for sensitive parts and an external supplier for other parts
Section B: Match the Pairs
Q1
criteria = [cost, skills, control, security, time] → The factors an organisation weighs when comparing in-house and external development against its objectives
Q2
contract.require(secureCoding, breachReporting) → A supplier contract clause that sets security requirements the external developer must meet
Q3
A hybrid approach keeps sensitive work in-house and gives less critical work to an external supplier → authModule = IN_HOUSE; websiteDesign = EXTERNAL
Q4
Comparing options against criteria means scoring each option on every criterion and choosing the best fit for the objectives → IF totalExternal > totalInHouse THEN choose EXTERNAL
Q5
choose EXTERNAL because it is cheapest → The decision uses only cost. It should weigh cost, skills, control, security and time against the organisation's objectives.
Q6
contract: supplier handles security, no requirements written → Security requirements are not specified. The contract should state the security requirements the supplier must meet, because outsourcing does not remove the organisation's responsibility.
Section C: Definitions
Q1
sourcing decision — Choosing in-house or external developers by weighing cost, skills, control, security and time against the organisation's objectives, sometimes using a hybrid of both.
Section D: Fill in the Blanks
Q1
IF inHouseSkills = FALSE THEN option ← "external" END IF
Q2
score ← cost + skills + control + security + time
Q3
IF contractSigned AND auditDone THEN approveSupplier() END IF
Q4
IF coreInHouse AND supportExternal THEN approach ← "hybrid" END IF
Q5
IF supplierRiskScore > maxRisk THEN rejectSupplier() END IF
Section E: Spot the Error
Q1
C — On the cost criterion, external development is only the better choice when it costs less. The test should be ext_cost < in_cost, not >.
Q2
D — The organisation should only sign when the supplier meets every security requirement. 'or' lets one requirement pass the check, so it should be 'and'.
Q3
A — The text 'in-house' must be in quotes. Without quotes Python reads in-house as a subtraction of two undefined names. It should be core_code = 'in-house'.
Q4
C — A weighted decision score adds up the weighted score of each criterion. Multiplying them distorts the result. It should be score = cost + skills.
Q5
B — Functions are called with round brackets, not square brackets. It should be total = sum(weights) to add up the criteria weights.