how did we end up here
play

How did we end up here? Trisha Gee - @trisha_gee Todd Montgomery - - PowerPoint PPT Presentation

How did we end up here? Trisha Gee - @trisha_gee Todd Montgomery - @toddlmontgomery Shout out: Martin Thompson - @mjpt777 How bad can things really be? Software Project Success Rates Successful Challenged Failure Ad-hoc 49% 37% 14%


  1. How did we end up here? Trisha Gee - @trisha_gee Todd Montgomery - @toddlmontgomery Shout out: Martin Thompson - @mjpt777

  2. How bad can things really be?

  3. Software Project Success Rates Successful Challenged Failure Ad-hoc 49% 37% 14% Iterative 61% 28% 11% Agile 60% 28% 12% Traditional 47% 36% 17% - Dr Dobbs 2010

  4. Software Project Success Rates – by Team Size < 10 11 - 25 > 25 Ad-hoc 70% 58% 40% Iterative 88% 68% 55% Agile 83% 70% 55% Traditional 69% 51% 50% - Dr Dobbs 2010

  5. Well that‟s the optimistic view!

  6. Software Project Success Rates Successful: 32% Challenged: 44% Failure: 24% – Standish Group Chaos Report 2010

  7. Software Project Failure Rates < $350,000: 20% $350,000 - $1,000,000: 25% > $1,000,000: 28% – Gartner 2012

  8. In a study of over 5400 large scale projects (> $15m) 17% go so badly that they threaten the existence of the company undertaking them – The McInsey Group with Oxford University 2012

  9. Sacred Cows - It’s BBQ Time!!!

  10. Enterprise Software

  11. ent • ter • prise noun \ ˈen - tə (r)- ˌprīz \ : a project or activity that involves many people and that is often difficult : the ability or desire to do dangerous or difficult things or to solve problems in new ways Source: http://www.merriam-webster.com/

  12. Naming Matters !!!

  13. Product Management

  14. Minimum Viable Product ?

  15. Product Owner ?

  16. Technologists ARE part of the business

  17. Take responsibility for ROI

  18. How can I get an answer for the minimum investment?

  19. Agile Methods

  20. Water-scrum-fall

  21. What really matters?

  22. Need to focus on learning, feedback cycles, and outcomes

  23. There is an uncomfortable truth…

  24. “What would have been different if you were not involved?”

  25. Shared Mutable State

  26. “…Shared Mutable State...” the most feared words in computing

  27. …if not they should be!

  28. Shared Mutable State should only be used for systems programming

  29. Embrace append-only, single writer, and shared nothing designs

  30. If you don‟t... math will hunt you down and there is nowhere to hide!

  31. Universal Scalability Law 20 18 16 14 Speedup 12 10 8 6 4 2 0 1 2 4 8 16 32 64 128 256 512 1024 Processors Amdahl USL

  32. Be ruthless in reducing complexity

  33. Text Encoding

  34. But it‟s human readable...

  35. Binary is hard to work with...

  36. Big Data

  37. Communications Battery life and bandwidth?

  38. Synchronous Comms

  39. Bad things will happen!!!

  40. Synchronous Communication is the crystal meth of distributed programming

  41. Causes a coupling in location and time

  42. Errors need to be first class messages

  43. Are your micro services on crystal meth?

  44. Abstraction

  45. “All non -trivial abstractions, to some extent, are leaky.” - Joel Spolsky

  46. “The detail of underlying complexity cannot be ignored.”

  47. “the purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise” - Dijkstra

  48. We could say the main issue is that people don‟t understand abstractions...but...

  49. Sins committed in the name of Abstraction

  50. ORMs !!!

  51. Functional Programming

  52. What is the biggest issue with functional programming?

  53. Functional Programmers

  54. Functional programming is NOT the answer to multi-core

  55. Software Transactional Memory was a failed experiment!

  56. Universal Scalability Law 20 18 16 14 Speedup 12 10 8 6 4 2 0 1 2 4 8 16 32 64 128 256 512 1024 Processors Amdahl USL

  57. No Mechanical Sympathy?

  58. However there is genuine brilliance in functional programming

  59. Collaborate and great things can happen...

  60. Throw hardware at it… development is too expensive

  61. The free lunch is over… we cannot be sloppy anymore…

  62. Code must be simple and composable

  63. Cache Sub-System L0(I) – 1.5k µops MOB 128 bits / cycle 16 Bytes / cycle TLB LF/WC Pre-fetchers L1(I) – 32K Buffers L1(D) - 32K 32 Bytes / cycle 32 Bytes / cycle TLB Pre-fetchers L2 - 256K 32 Bytes / cycle Ring Bus QPI Bus QPI PCI-e Memory Controller Controller Memory L3 – 8-20MB System Agent Channels

  64. Patterns of access and locality are key to performance

  65. Memory Sub-System Performance Accumulated Bandwidth Improvement Latency Time

  66. Accumulated Network Improvement Bandwidth CPU Cores Storage Capacity Memory Capacity Response Time Time

  67. What does this mean for software?

  68. Think in terms of transformation and flow of data – not code!

  69. Diversity

  70. Testosterone Driven Development

  71. What did the Carnegie Mellon studies show?

  72. Fake it until you make it…

  73. “As soon as you realise that most people don‟t know what they are doing the world makes a lot more sense…” – Farley’s second law

  74. We need to look seriously at training programmers

  75. Coaching and Apprenticeships

  76. “The most important thing I've accomplished, other than building the compiler, is training young people .” - Grace Hopper

  77. “'Do you think we can do this?' I say, „Try it .‟ And I back 'em up. They need that. I keep track of them as they get older and I stir 'em up at intervals so they don't forget to take chances. - Grace Hopper

  78. In closing…

  79. What are the greatest achievements of the human race?

  80. The Scientific Method

  81. Understanding of Evolution

  82. Don‟t feel bad… We are living in the era of Software Alchemy

Recommend


More recommend