Concepts / The Gravel-Road-to-Highway Pattern

The Gravel-Road-to-Highway Pattern

A slice library is a collection of reusable code slices accumulated from past engagements and meant to be adapted for new customers.

  • Programming

A Practice With Years of Finished Code

Imagine a practice that has delivered work for many customers over several years. Each engagement produced code, and some of that code solved problems that will come up again. A natural question follows: what does the practice actually gain by holding on to that code in an organized way? This article answers that question, and also explains why a solo operator who never grows past one client can still benefit from the same habit.

The source treats this accumulated code as a concrete asset rather than a side effect of the work. Slices pile up naturally as engagements close. Whether they become valuable depends on whether the practice keeps them in a form that a later engagement can pick up and use. Keep that condition in mind as you read, because it drives everything that follows.

What a Slice Library Is

Definition

A slice library is a collection of reusable code slices accumulated from past engagements and meant to be adapted for new customers.

The definition contains two details that matter. The first concerns the source of the contents: they come from work already completed for real engagements, not from code written in advance as a generic exercise. The second concerns the purpose: a slice in the library is valuable because it can be taken, modified, and reused. A folder of old code that nobody can adapt is not yet a library in this sense.

Key point

A slice library is the operational form of the gravel-road-to-highway pattern. The pattern describes initial efforts becoming templates for future work, and the library is the place where that idea is actually carried out in day-to-day practice.

Where Library Contents Come From

Library contents are not produced in a separate step. They are the by-products of individual customer engagements. When a piece of work for a customer is complete, the part of it that solved a reusable problem can be captured as a slice. The source emphasizes that this accumulation happens as engagements close, so the library grows as a natural consequence of normal delivery work.

Capturing is a deliberate act, though. Slices pile up naturally, but they only become a library when the practice keeps them in an organized form that a later engagement can use. The next diagram shows the full path, from finished engagement work to the template that a future customer benefits from.

Engagement workCompleted for a customerCustomer acceptsEngagement closesSlice capturedReusable part keptSlice libraryOrganized for reuseAdapted sliceModified for a new customerFuture templateInput to later workdeliveredwork continuesstoredtaken and modifiedsupports next template
What happens to a slice after its engagement closes, and how does it reach a future template?

Reading the pipeline left to right traces the pattern. The first engagement's work is not finished as soon as the customer accepts it. Its value continues if the practice captures it, and that captured material then supports the next template.

Tracing One Slice Through Time

The growth of a library is easiest to see by following one slice through time. Consider a hypothetical practice. In the first engagement, a customer needs a particular piece of functionality. The practice builds it, the customer accepts it, and the engagement closes. At that point the slice exists, but it is only one of many finished artifacts. Its value depends on the practice recognizing that the reusable part is worth keeping.

The slice is then captured into the library in a form that someone can later find and pick up. When a new customer arrives with a related need, the practice does not start from a blank page. It starts from the captured slice, which serves as a working prototype. The slice is taken, modified for the new customer's situation, and reused. That adapted version is what feeds the template that later work builds on.

Original sliceFrom a past engagementPast customer contextWhere the slice was builtAdapted sliceTaken and modifiedNew customer contextWhere the slice is now usedadapted for reusecontext changes
What changes between the original slice from a past engagement and the adapted version used for a new customer?

The before and after views show the same underlying slice. The adapted version differs in the parts that the new customer's situation requires, and it is still recognizably the captured slice. That recognizability is why the library is useful: the practice gets a head start without pretending the old work fits the new customer exactly as it was.

Two Practical Benefits for a Practice

The source names two specific advantages of a library. They differ in kind. One affects how quickly the next engagement can begin. The other affects how the practice communicates with a customer before any code exists for that customer. Both depend on the library being organized so that its slices can actually be used.

Mistakes When Reusing Slices

  • Common mistake

    Treating a folder of old code as a library

    Why it fails

    The source states that a folder of old code that nobody can adapt is not yet a library. Storage alone does not create reuse.

    Do this instead

    Keep captured slices in a form that a later engagement can find, understand, and modify.

  • Common mistake

    Assuming a slice can be copied unchanged for a new customer

    Why it fails

    The source describes slices as meant to be adapted for new customers. Reuse means taking, modifying, and reusing, not duplicating the original as is.

    Do this instead

    Start from the captured slice, then adjust it for the new customer's situation.

  • Common mistake

    Believing the value ends when the customer accepts the work

    Why it fails

    The source notes that an engagement's value continues if the practice captures the work, and that captured material supports the next template.

    Do this instead

    Decide which parts of a closed engagement are reusable and capture them.

  • Common mistake

    Thinking the library only matters for large practices

    Why it fails

    The source says a solo operator who never grows past one client can still benefit from the same habit.

    Do this instead

    Apply the habit of capturing and organizing reusable slices regardless of practice size.

Check Your Understanding of the Pattern

MEDIUM

A practice finishes an engagement for one customer and accepts that the work is complete. Using the gravel-road-to-highway pattern, explain what happens to the reusable part of that work, and describe how it could feed a future template. Name which of the two library benefits would apply when the practice later pitches a related project to a new customer.

Hints
  • Look at the pipeline diagram and follow the path after the customer accepts the work.
  • Think about whether the work's value ends at acceptance, according to the source.
  • One benefit concerns how quickly the next engagement starts; the other concerns what the customer sees before code exists.

Key Takeaways From the Pattern

  1. 1
    A slice library is a collection of reusable code slices accumulated from past engagements and meant to be adapted for new customers.
  2. 2
    Library contents come from work already completed for real engagements, captured as engagements close.
  3. 3
    A slice becomes useful as an input to a future template only when it is kept in a form that can be taken, modified, and reused.
  4. 4
    The library offers two benefits: starting new engagements from a working prototype, and giving customers a credible view of what will be built before code exists for them.

At a glance

  • A slice library is a collection of reusable code slices accumulated from past engagements and meant to be adapted for new customers.
  • Library contents come from completed engagement work, captured as engagements close rather than written in advance.
  • A captured slice can become an input to a future template, but only if it is organized so that it can be taken, modified, and reused.
  • The library helps a practice start from a working prototype and lets it show customers a credible view of what will be built.