Engineering Software 
& 
Software Lifecycle
Talking & Videos 
Q&A (jump in anytime) 
www.slideshare.net/specialised
Keith Mitchell 
Group Engineering Manager, Future Media Sport 
t: @specialized 
e : keith.mitchell@bbc.co.uk
Lancaster University 
1994 - 1997 - Undergraduate 
1997 - 2011 - PhD & Research Fellow 
BBC Future Media 
2011+
NEWS 
LIVE 
Radio 
SEARCH 
WEATHER 
HOMEPAGE 
ABOUT THE BBC 
TRAVEL 
MUSIC 
Bitesize 
ARTS 
FOOD 
NEWSBEAT 
PROGRAMMES
SPORT
96 million 
Brazil World Cup - The Open Championship 
(12 June - 20 July)
77.6 million (June) 
Biggest month in our entire history 
bit.ly/BBCSportRecord
Engineering Software 
& 
Software Lifecycle 
Will cover People & Technology
Programming is easy 
software development (and engineering) is hard
before we see why its hard to engineer software 
lets cover the basics
Agile
Individuals and interactions over processes and tools 
Working software over comprehensive documentation 
Customer collaboration over contract negotiation 
Responding to change over following a plan
scrum, the basics 
https://www.youtube.com/watch?v=vmGMpME_phg
product owner 
technical project manager 
business analysts 
dev/engineering team 
test
Title Text
estimation (Tee/poker/points/relative) 
planning 
velocity - burnup and burn-down 
stand-up / retrospectives
Any questions ?
So.... 
... how do we do it? And .... 
... why is it so hard?
We talk alot
Many stakeholders
AGILE process 
EPICs & Initial User Stories 
Estimation 
Expand Stories 
Business Analysis 
Tech Investigation 
Identify dependancies 
Tech Architecture 
Designs 
Sprint Planning 
3 Amigos 
Daily Standups 
Build 
Daily Standups 
Show and Tell 
Retrospective 
Deploy
The team 
Communication (Tickets) 
Ceremonies
we use of patterns / processes
Behaviour driven development 
test driven development
BDD at the BBC 
http://tinyurl.com/pn4hhth
pre 
three 
agree
Ruby & PHP App 
Moving to Client-side JS 
Cucumber worked for a while...
BA (& dev) driven change 
It Should over Given, When, Then scenarios
Should IT 
github.com/bbc-sport/ShouldIT
BDD + TDD 
Living documentation (organic) 
You know when you are done 
Helps drive the design 
Reliable and tested product
Agile 
SCRUM or Kanban 
3 Amigos 
Definition of Ready 
Definition of Done (DoD) 
Dev Practices 
Behaviour and Test Driven 
Version Control (branch, release, trunk) 
Continuous Integration 
Testing and Tooling
Summary 
Deliver value early 
Generalists v Specialists & Comms 
Incremental & Working - Stop at any time 
Handle change - e.g. diff colour 
Less waste 
Faster
Intermission? 
Digital Media Graduate Scheme - Now Open! 
http://www.bbc.co.uk/careers/trainee-schemes-and- 
apprenticeships/technology/digital-media-
Engineering Excellence
the day in the life of 
bbc.co.uk/academy/technology/software-engineering
Operations 
as live production 
Dev 
int test stage live 
sandbox 
shared platform 
rpm rpm 
A Sport 
Engineer 
rpm 
rpm rpm 
done 
must be 
stable & 
trustable 
Audience 
bbc.co.uk/developer
Operations 
as live production 
Dev 
int test stage live 
sandbox 
SPORT NEWS HOMEPAGE 
shared platform 
rpm rpm 
A Sport 
Engineer 
rpm 
rpm rpm 
done 
must be 
stable & 
trustable 
Audience 
bbc.co.uk/developer
Standard Services 
Message Queues 
Datastores 
Key/Value Store 
Generic Services 
BBC iD / Media Players 
Frameworks 
Mast Head / Analytics / Logging / Monitoring 
Greenhouse 
secure/shared dev environment 
Eclipse / NetBeans / Sublime / TextMate / 
IDE / PHPStorm / WebStorm 
Sandbox - VM 
GitHub 
Hudson / Jenkins (CI) 
Maven (Project Object Models) 
Confluence (wiki) 
JIRA (tickets) LAMP 
Linux/Apache/MySQL/PHP 
- but no MySQL directly 
bbc.co.uk/developer
bbc.co.uk/developer 
ReactJS 
AngularJS 
Ajax 
HTML 
CSS 
PHP (Zend) 
Java (Spring) 
RESTful APIs 
SQL / RDF / JSON / XML
Engineering Excellence and ‘4 Good Things’ (TM) 
Meaningful code reviews 
Developers being accountable for non-functional requirements 
(DoD, NFR checklist) 
Continuous integration 
Automated acceptance testing
Meaningful code reviews
“You know you are working on clean code when 
each routine you read turns out to be pretty much 
what you expected...” 
-- Ward Cunningham
Bad code is easy to recognize. 
Clean code is hard to write. 
It requires discipline, courage, and skill. 
Some of us are born with “Code-Sense”. 
Others have to fight to acquire it.
reading code 
reveal your intent 
int d; // elapsed time in days 
int elapsedTimeInDays;
This code isn’t complicated 
BUT 
not explicit 
reveals no intent
This code isn’t complicated 
BUT 
not explicit 
reveals no intent
Functions 
do one thing 
do it well
code reviews
Why?
improve quality 
clarity 
verification & validation 
know your code base / comms 
knowledge sharing 
collaborative 
mentoring 
share best practice 
consistency / standards 
insigtful 
increase confidence 
audit trail
What and How? 
pair programming 
pull requests
What and How? 
part of workflow 
code smells
Consistent feature files 
Linting - PHP/js/html/ 
Exception & Error handling 
Logging 
Analytics 
Monitoring 
Cacheable
Duplicated Code 
Use extract or pull up patterns to refactor 
and keep the camp clean! 
Method/Function Length 
Long methods/functions 
Large Classes (with lots of instance variables) 
Long Param lists & Long message chains
Feature Envy 
showing too much interest in other classes 
Invoking methods on objects to calculate values 
Switch statements 
these are bad
version control 
just use it!
Developers being accountable for Non functional Requirements
NFRs part of 
definition of done
what are NFRs
Performance 
Scalability 
Availability / survivability 
Security 
Consistency / reliablity 
Monitoring 
Reliability / Resilience 
Failover/disaster recovery 
Interoperability 
UKFS / IFS / editions / localisation 
Accessibility 
24/7 Operational Support
Are they really NFRs? 
Could they be functional?
e.g. Performance 
Page weight 
Load time (timeline) 
Time to glass/first byte (TTG/TTFB)
e.g. accessibility 
remember Ian’s talk 
we can measure / automate
make ‘em functional 
make ‘em testable!
Continuous integration
hudson / jenkins 
Build the system on commit and/or nightly
Automated acceptance 
testing
we test (almost) everything 
we automate (almost) everything
viewporter 
http://bit.ly/I7xZSv
wraith 
https://github.com/BBC-News/wraith
sandbox live diff
when things go bad 
no blame 
just cake (or donuts)
Programming is easy 
software development (and engineering) is hard 
BUT 
it’s fun / collaborative / rewarding / character building / ……
You & the art of engineering 
team 
no ‘I’ in team 
test 
first 
TDD / BDD 
tools 
Git 
Open 
Source 
texts 
Uncle Bob Martin 
Martin Fowler 
GOF 
Kent Beck
Thanks for your time 
Keith Mitchell 
Group Engineering Manager 
t: @specialized | e : keith.mitchell@bbc.co.uk 
BBC Digital Media Graduate Scheme 
http://www.bbc.co.uk/careers/trainee-schemes-and-apprenticeships/ 
technology/digital-media-graduate-scheme

Engineering Software and Software Lifecycle