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/