Pragmatic Programming Principles I Have Learnt over The Last 30 Years Peter Lawrey

2020-03-01 105浏览

  • 1.Pragmatic programming principles I have learnt over the last 30 years QCon Shanghai 2019 Peter Lawrey CEO, Chronicle Software
  • 2.Contents
  • 3.Peter Lawrey Self funded $2.1m/y revenue Several Tier 1 banking clients 18m downloads 2018
  • 4.Low latency FIX Engine < 20 us 99.9% Low latency Replication < 30 us Low latency Persisted messaging < 1 us 99% Custom FX Trading With 3 month ROI
  • 5.First computer 5 Mhz 8” floppies 128 KB Keyboard cost $2k
  • 6.Retraining as Computer Programmer “Computers are easier to fix than people” Working with people is harder than working with computers
  • 7.Requirements vs SolutionsMyth:Developers spend most of their time writing code.
  • 8.Requirements vs Solutions Developers spend most of their time understanding the problem and only about 10% writing the code which will be used in production.
  • 9.Your career is harder to predict than your think. “In ten years, 30% of graduates will be in an industry which doesn’t exist” WWW, Java, Algorithmic Trading didn’t exist when I graduated
  • 10.Effective communication Don’t underestimate the importance of effective communication
  • 11.Effective communication If you develop something but no one knows or understands it, it might never the be used
  • 12.Effective communication Public speaking was far important to my career than I imagined
  • 13.Productivity Junior developers measure how much code they added Senior developers measure how much code they deleted
  • 14.Productivity I used to think exercise was for health reasons only. Exercising for 30 minutes several times a week helps reduce stress and improve concentration.
  • 15.Programming Principles Developers love solving problems, whether they need to be solved or not
  • 16.Programming Principles YAGNI You Ain’t Gonna Need It "Always implement things when you actually need them, never when you just foresee that you need them."
  • 17.Programming Principles DRY - Don’t Repeat Yourself WET - Write Everything Twice Avoid duplication but also too much abstraction
  • 18.Programming Principles KISS – Keep It Simple Junior developers take a simple problem and build a complex system
  • 19.Programming Principles KISS – Keep It Simple Senior developers take a complex problem and build a simple system.
  • 20.Programming Principles Separation of Concerns Make each component work independently with a clear contract or interface => Microservices.
  • 21.Programming Principles Avoid Premature Optimisation Keep it simple and the JVM will do a good job of optimising it. Complex tricks will probably confuse the optimiser.
  • 22.Programming Principles Clean Code is Clever Code. Most code will be read many more times than it was written. Write code for readability and ease of understanding.
  • 23.Programming Principles In six months time someone will read your code and find your code confusing. That someone could be you.
  • 24.Finding bugs early reduces the cost of fixing them
  • 25.Driven Development Test Driven Development Behaviour Driven Development Model Driven Development Documentation Driven Development
  • 26.Driven Development Driven Development works for developers who have done it before. Otherwise Prototype Driven Development
  • 27.Driven Development Chronicle Decentred is a High Throughput Blockchain. This was something to new to me so after years of TDD and BDD, prototypes were the only way to start.
  • 28.Driven DevelopmentMyth:Prototypes can be productionised. Always plan to rewrite any prototype using TDD or BDD.
  • 29.Low latency Data for humans should be limited Data for computers can be much faster and sometimes has to be
  • 30.Low latency 24 Hz 42 ms Limited change between frames
  • 31.Low latency OPRA market data feed 54 billion per day Peak in 10 milliseconds 944,000 messages 78,000 packets
  • 32.Low latency Low latency means different things based on context. 1 second 1 millisecond 1 microsecond
  • 33.Microservices People and software work better together with clear seperations of concern and clear contracts of engagement.
  • 34.Microservices Microservice models help keep separate area of concern developing independently. Your messaging infrastructure needs to be fast enough to support your SLA
  • 35.Real time processing of transactions
  • 36.Real time processing of transactions
  • 37.Real time processing of transactions Series of low latency, non blocking tasks End to end latencies consistently low
  • 38.Real time processing of transactions
  • 39.Store every event model is getting cheaper 3.84 TB- £830 7.68 TB - £2100 15.36 TB - £4,200
  • 40.Come to my next talk Friday 18th 14:00 Banquet Hall 2 Designing, Building and Testing Deterministic HFT Systems
  • 41.
  • 42.QuestionsLinkedin:https://www.linkedin.com/in/peterlawrey/