Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pragmatic Programming

Pragmatic Programming

The tensions between business & engineering and some thumb rules of how to be a pragmatic engineer.

Vishnu Gopal

June 14, 2020
Tweet

More Decks by Vishnu Gopal

Other Decks in Programming

Transcript

  1. About Me Programmer, loves to build products. • Around ~15years

    experience programming. • First job was at SlideShare • Was part of & founded a few startups. • Currently very interested in frontend stuff. • Joined Doist 12th May. • @vishnugopal on Twitter, Github • vishnugopal.com
  2. Topics 1. The what & why of pragmatic. A personal

    definition. 2. Prioritise change: One basic thumb rule to judge “pragmatic” 3. The Pragmatic Programmer book
 4. Innovation Points & NIH syndrome 5. Measure what you want to improve
  3. Business Technology 1. “Good for customer” 2. Brings in revenue

    3. A feature that a customer is asking for 4. Good for sales & sales leads. 5. Convincing investors. 1. “Build good software” 2. Reduce tech debt 3. Improve architecture 4. Build team skills. 5. Contributes back to open source.
  4. Business Technology Pick “React” for fast development. Build a marketing

    landing page using a static site provider Introduce Cypress for integration testing Quickly launch a feature so that we can get featured on Techcrunch Allocate some work in a sprint to fix bugs. Make a specialised white- labeled version of the product just to make the first sale
  5. Business Technology Understand technology problems and fit them into business

    buckets like “budget”, “roadmap” and “investor decks” Understand business problems and use the right technology pieces to solve them.
  6. Business Technology Understand technology problems and fit them into business

    buckets like “budget”, “roadmap” and “investor decks” Understand business problems and use the right technology pieces to solve them. Pragmatic
  7. Business Technology Understand technology problems and fit them into business

    buckets like “budget”, “roadmap” and “investor decks” Understand business problems and use the right technology pieces to solve them. Pragmatic: “The Middle Way”
  8. Business Technology Pragmatic: “The Middle Way” 1. Lifelong search. 2.

    More “art" that science. 3. It’s ok to zigzag as long as you recognise you are zigzagging & come back to the middle way.
  9. 1. Find out where you are 2. Take a small

    step towards your goal 3. Adjust your understanding based on what you learned 4. Repeat
  10. When faced with two or more alternatives that deliver roughly

    the same value, take the path that makes future change easier.
  11. Example: “My sales team wants to do A/B testing for

    our landing pages” 1. Code-based static site provider: Jekyll 2. Build an in-house A/B testing solution 3. Switch to a fully-managed landing page provider 4. Find a library that implements A/B testing 5. …?
  12. Example: “My sales team wants to do A/B testing for

    our landing pages” 1. I want to track conversions. 2. I want pretty graphs 3. I want to do segment-based targeted pages 4. ..?
  13. Big Rocks = things unique to your product. Small Pebbles

    = stuff that directly helps your business Sand = everything else.
  14. Big Rocks = your core product idea Small Pebbles =

    Slack, Email, Google Analytics, … Sand = glue that holds everything together.
  15. Big Rocks = closed-source “IP” Small Pebbles = outsource everything

    (open- source or paid) Sand = spend ~10-20% of your dev-budget.
  16. Utilize open source. Maybe it doesn’t do exactly what you

    want, but if it does 80%, and it’s not a big rock, use it as pebbles (outsource) + sand (glue you write).
  17. Pieces that connect to mobile operator The telephony and call

    bridging logic The business logic & workflow around voice interaction GUI & backend CRM tools to manage workflows
  18. Pieces that connect to mobile operator The telephony and call

    bridging logic The business logic & workflow around voice interaction GUI & backend CRM tools to manage workflows
  19. Pieces that connect to mobile operator The telephony and call

    bridging logic The business logic & workflow around voice interaction GUI & backend CRM tools to manage workflows Commercial product from a vendor for SIGTRAN connectivity Open source product Asterisk for call bridging In-house developed framework Mix of a Rails CRM library + glue code to pull in data into a database.
  20. Software Quality Lagging measure = number of bugs reported in

    production. Leading measure = coverage% for new code.
  21. Build lagging measures to see the reality of the situation

    1. Bugs by customer 2. Severity of bugs 3. Bugs effort estimate 4. Sprint metrics
  22. Build leading measures to track influence & change 1. Code

    coverage for existing code 2. Code coverage for new code 3. Feature coverage for user workflows 4. Defect Escape Rate