www.luxoft.com Industrial approach with small bugs That’s one small step for a man, the giant crash for a project (Unknown programmer)
www.luxoft.com Background Industrial programming deals with • big projects • long living projects • complex projects • rapidly changing environment
www.luxoft.com Parralels from other areas 1.Building development 2.Automotive 3.Tailoring 4.Warfare Each of this areas encountered evolutionary leap: “Order beats numbers”
www.luxoft.com Regular Programming efforts complexity
www.luxoft.com Expert Programming efforts complexity
www.luxoft.com Why this happens? • High-skilled experts are rare • State-of-art code • Losing of control happens anyway
www.luxoft.com In ancient warfare ● Changes in equipment (gladius, square shield) ● Training to hold the line ● Logistics
www.luxoft.com In Building Development • standard parts and materials • patterns at several levels • engineering knowlege
www.luxoft.com What to do with this • patterns and other design stuff • code styles and developed process • alter priorities • Agile
www.luxoft.com Industrial Programming complexity efforts
www.luxoft.com Shift your priorities • robustness vs application perfomance • general vs optimal • stability vs productivity
www.luxoft.com Boring? • no “fun” like debug someone’s masterpiece • no cranches and similar “teambuilding” • less inventing: a lot of good things are implemented before us
www.luxoft.com Reward Only one reward: ability to reach your goals
www.luxoft.com Cattle rule Pour water into the cattle Wait water to be boiled Prepare your tea Pour water off the cattle
www.luxoft.com Bowie Knife rule • Dont rely on bruteforce • Listen for yourself. Count your time • Make notes. • Convert notes to system, refactor it constantly Reverse architecture principe
www.luxoft.com Handle with bugs void Object::shift( double velocityX, double velocityY, double time ) { position_x += constants::shiftFactor * velocityX * time; position_y += constants::shiftFactor * velocityX * time; }
www.luxoft.com Regular programmers actions Fix the bug Report task is done Profit!
www.luxoft.com Better way to fix the bug #include <project/common/math/Vector2.h> void Object::shift( Vector2 velocity, double time ) { position += constants::shiftFactor * velocity * time; }
www.luxoft.com Experienced programmers actions Analyse code and modify system Fix the bug (if it survived refactoring)
www.luxoft.com Industrial programmers actions make this bug evident: • improve logs, clear trash messages • make unit tests Analyse code and modify system Fix the bug (if it survived refactoring)
www.luxoft.com THANK YOU!

Евгений Руднев: "Programmers Approach to Error Handling"