how did we end up here
play

How did we end up here? Todd Montgomery - @toddlmontgomery Martin - PowerPoint PPT Presentation

How did we end up here? Todd Montgomery - @toddlmontgomery Martin Thompson - @mjpt777 How bad can things really be? Software Project Success Rates Successful Challenged Failure Ad-hoc 49% 37% 14% Iterative 61% 28% 11% Agile 60% 28%


  1. How did we end up here? Todd Montgomery - @toddlmontgomery 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. “...the larger the company, the greater the chance that what drives tech investments isn't what's best for the business, but what's best for the decision- maker's career.” – Information Week (EA Section)

  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. Enterprise Software Are you selling code, people, or one-throat-to-choke?

  13. Product Management

  14. Minimum Viable Product ?

  15. Product Owner ?

  16. Technologists ARE part of the business

  17. Take responsibility for ROI

  18. Agile Methods

  19. Water-scrum-fall

  20. What really matters?

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

  22. There is an uncomfortable truth…

  23. Bug Triage

  24. tri • age noun \ trē - ˈ äzh, ˈ trē - ˌ \ : the sorting of and allocation of treatment to patients and especially battle and disaster victims according to a system of priorities designed to maximize the number of survivors. Source: http://www.merriam-webster.com/

  25. “Worse is Better...”

  26. Really???

  27. “The bitterness of poor quality is remembered long after the sweetness of a low price is faded from memory.” - Aldo Gucci 1938

  28. Shared Mutable State

  29. Shared Mutable State... the most feared words in computing

  30. …if not they should be!

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

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

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

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

  35. Text Encoding

  36. But it’s human readable...

  37. Binary is hard to work with...

  38. Big Data

  39. Communications Battery life and bandwidth?

  40. Synchronous Comms

  41. Bad things will happen!!!

  42. Synchronous Communication is the crystal meth of distributed programming

  43. Causes a coupling in location and time

  44. Errors need to be first class messages

  45. Full-duplex vs Half-duplex

  46. Are your micro services on crystal meth?

  47. Abstraction

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

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

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

  51. We could say the main issue is that people don’t understand abstractions...but...

  52. Sins committed in the name of Abstraction

  53. ORMs !!!

  54. Functional Programming

  55. What is the biggest issue with functional programming?

  56. Functional Programmers

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

  58. Software Transactional Memory was a failed experiment!

  59. No Mechanical Sympathy?

  60. “...software is not constrained by the physical world... d on’t be a douche” - FP Fanboi

  61. However there is genuine brilliance in functional programming

  62. Collaborate and great things can happen...

  63. Cloud Computing

  64. Why has cloud computing taken off?

  65. BOFH

  66. Business Prevention Office

  67. Opportunity Cost!!!

  68. “Optimise for speed of delivery and you will deliver so fast you reduce costs” - Adrian Cockcroft

  69. Virtualization

  70. Jigsaw

  71. Throw hardware at it… development is too expensive

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

  73. Loops L0 1534 µops LB 28 µops LB 28 µops

  74. Code must be simple and composable

  75. Cache Sub-System MOB L0(I) – 1.5k µops 128 bits / cycle 16 Bytes / cycle TLB LF/WC Pre-fetchers Buffers L1(D) - 32K L1(I) – 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

  76. Patterns of access and locality are key to performance

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

  78. What does this mean for software?

  79. Diversity

Recommend


More recommend