DEV Community

CodingBlocks

The Pragmatic Programmer – Tracer Bullets and Prototyping

The Pragmatic Programmer teaches us how to use tracer bullets versus prototyping while Joe doesn’t know who won the Game of Thrones, Allen thought he knew about road numbers, and Michael thinks 475 is four letters.

Using your podcast player to read these show notes? You can find this episode’s full show notes and be apart of the conversation at https://www.codingblocks.net/episode108.

Sponsors

  • Discover.bot – a digital space for bot developers and enthusiasts of all skill levels to learn from one another, share stories, and move the bot conversation forward. Want to learn more about building bots? Get started with their Guide to Bot Building Frameworks.
  • Datadog.com/codingblocks – Sign up today for a free 14 day trial and get a free Datadog t-shirt after creating your first dashboard.
  • Clubhouse – The first project management platform for software development that brings everyone on every team together to build better products. Sign up for two free months of Clubhouse by visiting clubhouse.io/codingblocks.

Survey Says …

Anonymous Vote
Sign in with Wordpress
Do you discuss podcasts with your friends or co-workers?
  • Are you kidding? That's all we talk about.
  • Absolutely. They need all of the help they can get.
  • Absolutely. I need all of the help I can get.
  • No. It's my secret, super power. They can't know where my tips come from.

News

  • As is tradition, we take a moment to thank those that took time our of their day to leave us a review:
    • iTunes: s0dz, TheCrow2269, Aphexwolf, AshleyJWalker
    • Stitcher: takunnithan, iwantoutlawtoreadmyname, SkywalkerIsNull
  • Don’t miss your chance to kick Allen in the shins! Allen will be speaking June 24th at the Atlanta Intelligent Devices meetup, giving his talk Moving from Batches to Real Time with Apache Kafka. (Meetup)

Ready, Aim, Fi … Wait, Gotta Recalculate

Tracer Bullets

  • There are two effective way to fire a machine gun in the dark:
    • Have knowledge of the environment, run some calculations, and execute.
    • Or use tracer bullets.
  • Tracer bullets “light up” when shot.
  • They give immediate feedback. If the tracer bullets are hitting your target, so are your other bullets.
  • Think about how this relates to Project Management:
    • Waterfall: Full knowledge, excellent planning, and execution, vs
    • Agile: Shorter feedback loops and continuous adjustment.
Tip

Use Tracer Bullets to Find the Target,

  • “Tracer Code” is not throwaway. It contains all of the validation, documentation, tests, etc. that production code has.
  • Design is feedback driven.
  • Similar to the agile movement, continuous integration, and MVP notions that are popular now, i.e. you incrementally improve.
    • The alternative is to subdivide everything into modules, build in a vacuum and put it all together and hope it works in the end.

Advantages of “Tracer Code”

  • Users get to see things working early.\
    • Reduces the risk of disappointment and makes the stakeholders invested in the process.
  • Developers build a structure to work in.
    • “The most daunting piece of paper is the one with nothing written on it.”
  • You have an integration platform as opposed to developers working in silos and then hoping to get them working all together.
    • Continuous Integration/Delivery
  • You have something to demonstrate.
  • You’re more in touch with progress.

Tracer bullets don’t always hit the target

  • Tracer code is designed to show you what you’re hitting. It’s okay if you miss as long as you can adjust.
  • Tracer code starts out small, when changes are easier to make.
  • “A small body of code has low inertia.”
  • The business will feel more comfortable with change when they see how easily things can change.

Tracer Code vs. Prototyping

  • Prototypes are designed to explore a single aspect.
  • Prototypes are designed to be throw away.
    • You might prototype a landing page to see if the business users like it.
  • Tracer code is agile, lean but complete.

Prototypes and Post-it Notes

  • Prototypes are throwaway projects designed to test out an idea, aka “proof of concept”.
    • Typically used to test out specific aspects of an idea as well; how it looks, how it works, etc.
    • Provides the ability to correct at a much reduced price.
  • For example, you don’t need to build a whole car for wind tunnel testing.
  • The prototype acts as a model, something we can use to analyze and expose risk and validate ideas for cheap.
  • Use post-it notes to depict a workflow.
  • Use a whiteboard to draw out GUI concepts.
  • If you can’t give up on the details of a project, then maybe it’s not a prototype. Maybe tracer bullets are better.

Pro-tip The more prototypical your project looks, the less likely it will get shoved to production.

What to prototype?

  • Anything that carries risk.
  • Architecture
  • New functionality.
  • Structure or contents of external data.
  • Third-party tools or components.
  • Performance issues.
  • UX
Tip

Prototype to Learn

What can you ignore?

  • Correctness (dummy data is good).
  • Completeness (fake or disable other components).
  • Robustness (who needs validation?) – choosing a non-approved path may crash n’ burn (i.e. only this workflow “works”).
  • Style (slacking on documentation/comments).
  • The higher level the tool, the better. Saves you time.

Prototyping Architecture

  • Post-it notes work pretty well and can tell you:
    • Are the responsibilities well defined and appropriate?
    • Are the collaborations well-defined?
    • Is coupling minimized?
    • Can you identify sources of duplication?
    • Are interface definitions and constraints acceptable?
    • Does every module have an access path that it needs?

How not to prototype

  • Communicate the intentions of the prototype project. You don’t want your prototype code to be “released” code.
  • Advocate for tracer bullets if you’re worried about your prototype making its way to production.

Using prototypes properly can save a lot of money and time by identifying problems early in the process.

Resources We Like

Tip of the Week

  • My Top 8 Visual Studio Code Tips and Features (scotch.io) … spoiler alert, Joe’s favorite is Zen mode.
  • The design tools you need in your toolbox:
    • Adobe XD – Wireframe, design, prototype, and more (adobe.com)
    • Infragistics indigo.design – Visual design, UX prototyping, and code generation/development (infragistics.com)
  • Building a new battle station? PCPartPicker is your friend! (pcpartpicker.com)
  • Lorem Picsum – Like lorem ipsum … but for photos! (picsum.photos)

Episode source