Tech Challenges
A 15min guide to managing them
By Iain Hunter (for hire)
iain.hunter@outlook.com
@hunt3ri iainhunter.wordpress.com
Tech Challenge Brief
Significant Implications
Technical in nature
Various possible resolutions
None being obvious
Sounds like a problem for...
Topics I Considered
That time when we...
- Ported our app to Windows Azure
- Chose Moq as our mocking library
- Chose Zencoder to encode user uploaded video
- Ported our email to SendGrid
- Chose Castle Windsor as our DI Framework
- Chose Unity as our Game Engine
Beyond scheduling/budgetary issues these decisions were mostly non-controversial
Legacy Code - Defined
"Legacy Code is often used as a slang term for difficult-to-change code that we don't understand. To me Legacy Code is simply code without tests. Without tests we don't know if our changes are making things better or worse."
Michael Feathers, Working Effectively with Legacy Code, 2005
Case Study : Travel 2
The Problem
Enhance bespoke Legacy Airline & Hotel Reservation System
-v-
Purchase Off-The-Shelf Solution
Team comprised manager and 4 developers
Present to CEO and key business stakeholders
Rationale for change
Staff Training Costs
Greenscreen Interface
High Bus Factor
Creaking Infrastructure - parts from Ebay!!!
Difficult to change and react
Vendor golddust
My Recommendations
Port infrastructure to new servers
Create XML-RPC interface into the Business Layer
Create Modern Web Interface
Slowly document, understand the BL layer
Focus on Hotels first
Reasoning
It's a mistake to replace your business differentiator with an off-the-shelf solution
Don't choose an off-the-shelf solution if >20% of the project is customization
Cheaper and Safer
No big bang, incremental roll out. Hotels first than tackle larger Flights problem.
Result
- Successfully ported to new infrastructure
- Hotels processing was hugely improved.
- Company bought over prior to kick-off of flights
- Team moved on to create www.travelbag.co.uk
Tech Challenge Toolbox
YAGNI - If in doubt choose the simplest solution
MVP - Create the Minimum Viable Product as quickly as you can
Play to your team strengths
-1000 points rule - Anders Hejlsberg
Be aware of the realpolitik
Confirmation Bias - Impossible to eliminate
Tech Challenges Managed Right
- WhatsApp - Erlang - 50+ billion messages per day
- Circa 50 members of staff
- Sell to Zuck for $19B
Conclusions
Evaluating options is very difficult
No right answers, only trade-offs
Hindsight is a wonderful thing
Get on the plane - Seth Godin
Doing nothing is not an option
Questions
https://github.com/hunt3ri/TechChallenge