www.eatingpolicy.com Open in urlscan Pro
2606:4700:4400::6812:2418  Public Scan

URL: https://www.eatingpolicy.com/p/project-vs-product-funding
Submission: On December 18 via manual from CA — Scanned from CA

Form analysis 7 forms found in the DOM

<form class="_form_15pnt_9"><input class="_emailInput_15pnt_32" placeholder="Type your email...">
  <div id="error-container"></div><button
    class="pencraft pc-reset pencraft _buttonBase_bxx6e_1 _button_bxx6e_1 _buttonOld_bxx6e_51 _buttonOldColors_bxx6e_70 _priority_primary-theme_bxx6e_285 _size_md_bxx6e_166 _fill_filled_bxx6e_432 _grow_bxx6e_37 pc-justifyContent-center" tabindex="0"
    type="submit">Subscribe</button>
</form>

POST /api/v1/free?nojs=true

<form action="/api/v1/free?nojs=true" method="post" class="form _form_11q5m_6" novalidate=""><input type="hidden" name="first_url" value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="first_referrer"
    value=""><input type="hidden" name="current_url" value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="current_referrer"><input type="hidden" name="first_session_url"
    value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="first_session_referrer" value=""><input type="hidden" name="referral_code"><input type="hidden" name="source" value="subscribe-widget"><input
    type="hidden" name="referring_pub_id"><input type="hidden" name="additional_referring_pub_ids">
  <div class="_sideBySideWrap_11q5m_10">
    <div class="_emailInputWrapper_11q5m_57"><input type="email" name="email" placeholder="Type your email..." class="pencraft _emailInput_11q5m_23"></div><button type="submit" class="button rightButton primary subscribe-btn _button_11q5m_76"
      tabindex="0"><span class="button-text ">Subscribe</span></button>
  </div>
  <div id="error-container"></div>
</form>

POST /api/v1/free?nojs=true

<form action="/api/v1/free?nojs=true" method="post" class="form _form_11q5m_6" novalidate=""><input type="hidden" name="first_url" value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="first_referrer"
    value=""><input type="hidden" name="current_url" value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="current_referrer"><input type="hidden" name="first_session_url"
    value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="first_session_referrer" value=""><input type="hidden" name="referral_code"><input type="hidden" name="source" value="subscribe-widget"><input
    type="hidden" name="referring_pub_id"><input type="hidden" name="additional_referring_pub_ids">
  <div class="_sideBySideWrap_11q5m_10">
    <div class="_emailInputWrapper_11q5m_57"><input type="email" name="email" placeholder="Type your email..." class="pencraft _emailInput_11q5m_23"></div><button type="submit" class="button rightButton primary subscribe-btn _button_11q5m_76"
      tabindex="0"><span class="button-text ">Subscribe</span></button>
  </div>
  <div id="error-container"></div>
</form>

POST /api/v1/free?nojs=true

<form class="form _form_11q5m_6" action="/api/v1/free?nojs=true" method="post" novalidate=""><input type="hidden" name="first_url" value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="first_referrer"><input
    type="hidden" name="current_url" value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="current_referrer"><input type="hidden" name="first_session_url"
    value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="first_session_referrer"><input type="hidden" name="referral_code"><input type="hidden" name="source" value="post-end-cta"><input type="hidden"
    name="referring_pub_id"><input type="hidden" name="additional_referring_pub_ids">
  <div class="_sideBySideWrap_11q5m_10">
    <div class="_emailInputWrapper_11q5m_57"><input class="pencraft _emailInput_11q5m_23" type="email" name="email" placeholder="Type your email..."></div><button tabindex="0" type="submit"
      class="button rightButton primary subscribe-btn _button_11q5m_76"><span class="button-text ">Subscribe</span></button>
  </div>
  <div id="error-container"></div>
</form>

<form class="_form_1lzjp_6">
  <div style="--scale: 32px;"
    class="pencraft pc-display-flex pc-width-32 pc-height-32 pc-justifyContent-center pc-alignItems-center pc-position-relative _flexAuto_1tdk8_341 pc-reset _bg-secondary_1tdk8_212 _outline-detail_1tdk8_67 pc-borderRadius-full _overflow-hidden_1tdk8_351 _sizing-border-box_1tdk8_385 _container_1yh57_1">
    <div style="--scale: 32px;" title="User"
      class="pencraft pc-display-flex pc-width-32 pc-height-32 pc-justifyContent-center pc-alignItems-center pc-position-relative _flexAuto_1tdk8_341 pc-reset _bg-secondary_1tdk8_212 _outline-detail_1tdk8_67 pc-borderRadius-full _overflow-hidden_1tdk8_351 _sizing-border-box_1tdk8_385 _container_1yh57_1">
      <picture>
        <source type="image/webp"
          srcset="https://substackcdn.com/image/fetch/w_32,h_32,c_fill,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Favatars%2Fdefault-light.png 32w, https://substackcdn.com/image/fetch/w_64,h_64,c_fill,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Favatars%2Fdefault-light.png 64w, https://substackcdn.com/image/fetch/w_96,h_96,c_fill,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Favatars%2Fdefault-light.png 96w"
          sizes="32px"><img src="https://substackcdn.com/image/fetch/w_32,h_32,c_fill,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Favatars%2Fdefault-light.png" sizes="32px" alt=""
          srcset="https://substackcdn.com/image/fetch/w_32,h_32,c_fill,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Favatars%2Fdefault-light.png 32w, https://substackcdn.com/image/fetch/w_64,h_64,c_fill,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Favatars%2Fdefault-light.png 64w, https://substackcdn.com/image/fetch/w_96,h_96,c_fill,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Favatars%2Fdefault-light.png 96w"
          width="32" height="32" draggable="false" class="_img_16u6n_1 pencraft pc-reset">
      </picture>
    </div>
  </div>
  <div class="pencraft pc-display-flex pc-flexDirection-column pc-gap-8 _flexGrow_1tdk8_338 pc-reset"><textarea name="body" placeholder="Write a comment..." rows="4"
      class="pencraft _input_1lzjp_1 _autogrowing_1ve2b_17 _textarea_1ve2b_5 _inputText_1ve2b_25" style="height: 98px;"></textarea>
    <div style="height: 0px; transition: height 250ms var(--animation-smoothing), opacity 250ms var(--animation-smoothing); display: block; flex-direction: column; opacity: 0;">
      <div style="padding-top: 0.05px; padding-bottom: 0.05px; display: block; flex: 0 0 auto; flex-direction: column; transition: transform 250ms var(--animation-smoothing);"></div>
    </div>
  </div>
</form>

POST /api/v1/free?nojs=true

<form action="/api/v1/free?nojs=true" method="post" class="form _form_11q5m_6" novalidate=""><input type="hidden" name="first_url" value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="first_referrer"
    value=""><input type="hidden" name="current_url" value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="current_referrer"><input type="hidden" name="first_session_url"
    value="https://www.eatingpolicy.com/p/project-vs-product-funding"><input type="hidden" name="first_session_referrer" value=""><input type="hidden" name="referral_code"><input type="hidden" name="source" value="subscribe_footer"><input
    type="hidden" name="referring_pub_id"><input type="hidden" name="additional_referring_pub_ids">
  <div class="_sideBySideWrap_11q5m_10">
    <div class="_emailInputWrapper_11q5m_57"><input type="email" name="email" placeholder="Type your email..." class="pencraft _emailInput_11q5m_23 _emailInputOnAccentBackground_11q5m_49"></div><button type="submit"
      class="button rightButton primary subscribe-btn _button_11q5m_76 _buttonOnAccentBackground_11q5m_89" tabindex="0"><span class="button-text ">Subscribe</span></button>
  </div>
  <div id="error-container"></div>
</form>

POST /api/v1/user/profile

<form class="form " action="/api/v1/user/profile" method="post" novalidate=""><label for="name">Name (Required)</label><input autofocus="true" type="text" class="profile-name" placeholder="Type your name..." name="name" id="name"><label
    for="handle">Handle</label><input type="text" class="profile-name" placeholder="Type your handle..." name="handle" id="handle"><label for="bio">Bio</label><textarea class="profile-bio" placeholder="Say something about yourself..." name="bio"
    id="bio"></textarea><label for="email">Email (Required)</label><input type="email" class="profile-email" placeholder="Your email…" name="email"><label class="pencraft pc-display-flex pc-gap-8 pc-reset _tosCheckbox_653qn_1">
    <div class="pencraft">
      <div
        class="pencraft pc-display-flex pc-justifyContent-center pc-alignItems-center pc-boxShadow-xs pc-position-relative pc-reset _border-detail_1tdk8_25 pc-borderRadius-xs _sizing-border-box_1tdk8_385 pencraft _container_jtp38_1 _sm_jtp38_18 _enabled_jtp38_43 _checked_jtp38_56">
        <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-check">
          <path d="M20 6 9 17l-5-5"></path>
        </svg><input checked="" class="pencraft" type="checkbox" role="checkbox" name="free_signup" data-testid="free_signup" aria-label="free_signup"></div>
    </div>
    <div class="pencraft pc-display-flex pc-flexDirection-column _flexGrow_1tdk8_338 pc-reset"><span class="pencraft pc-reset _line-height-20_h3mln_80 _font-text_h3mln_106 _size-15_h3mln_47 _weight-regular_h3mln_142 _reset_h3mln_1">Subscribe to the
        newsletter</span></div>
  </label><input type="hidden" name="confirmation_redirect_pathname" value="/p/project-vs-product-funding"><input type="hidden" name="photo_url"><input type="hidden" name="user_id"><input type="hidden" name="needs_photo" value="false"><input
    type="hidden" name="token">
  <div id="error-container"></div>
  <p class="left hidden">undefined subscriptions will be displayed on your profile (<a>edit</a>)</p>
  <div class="modal-ctas">
    <p class="skip hidden"><a class="small">Skip for now</a></p><button tabindex="0" type="submit" class="button primary">Save &amp; Post Comment</button>
  </div>
</form>

Text Content

EATING POLICY


SubscribeSign in


SHARE THIS POST

Eating Policy
Project vs Product Funding
Copy link

Facebook

Email

Notes

More

DISCOVER MORE FROM EATING POLICY

In business, culture eats strategy. In government, culture eats policy. Here
we'll talk about the problems of state capacity (government's ability to achieve
its policy goals) and how to fix them. From the author of Recoding America.
Over 6,000 subscribers

Subscribe
Continue reading
Sign in


PROJECT VS PRODUCT FUNDING


MODERNIZATION SHOULDN'T EVEN REALLY BE A THING AT ALL.

Jennifer Pahlka
Jun 03, 2024
79


SHARE THIS POST

Eating Policy
Project vs Product Funding
Copy link

Facebook

Email

Notes

More
16
6

Share


Photo credit: Scott Robinson, CC BY 2.0 DEED

A few months ago, I made a slide deck about the differences between funding
technology as projects and funding them as products1. Every time I’ve shown it
since then, people have asked me for a copy of the slides, so I thought I’d
share them here in case they can be helpful more broadly. I also wrote up the
narrative that goes along with them and included it in my Congressional
testimony in January, so I’ve adapted that below. A link to the slides
themselves is at the end.

As with most of what I talk about, this is nominally about technology in
government but applies far beyond tech. We need to acquire ongoing capabilities,
not static things, in lots of parts of government.

***

We procure and fund software as if it were static, and thus make it both worse
and more expensive. This is best illustrated through a series of graphs, each
one entirely fictional but representative of two fundamentally different
approaches to funding software.


Subscribe



Government typically follows a “project” model. The following graph shows the
number of staff who work on an IT project at its outset, as requirements are
being developed, a request for proposal written, bids from contractors sourced
and evaluated, and a winner chosen. The contractor, once hired, brings a team to
develop the software based on the RFP, and the staffing levels (counting both
internal and contracting staff) shoot up. There is a development period,
followed by a short period of “user acceptance testing,” and then the project
falls into “operations and maintenance,” (or O&M), which is generally a
different color of money than the development funds. (This is a huge problem
worthy of a separate discussion, but see here for a start.)



Contrast this with a typical “product” model, in which, instead of a
requirements gathering phase up front, a small team, often but not always
internal to government, conducts what are called discovery sprints to better
understand the problems the software is supposed to address. If some parts of
the proposed solution are riskier than others (for instance, it’s not clear
whether a data integration will work well), they find ways to test those
problems first, before an entire software solution has been built. They may
develop prototypes to help question their assumptions, and they engage with
users from the beginning. Product teams almost always leverage contractors, but
the contractors are there to complement a core internal team which holds the
product vision and provides clear direction to vendors. Staff is added slowly
over time as the team learns what they need, but doesn’t dramatically ramp down
once a first or even second version is shipped. As my colleague Dave Guarino
quips, “Google didn’t lay everyone off after they put up search.” Indeed, they
invested more.



At this timescale, there seems to be an obvious reason to prefer the project
model: the minimal ongoing expense. This is what appropriators and oversight
staff in Congress and elsewhere seem to be looking for as a sign of success. But
as anyone following government technology appropriations knows, this is not the
right timescale to look at. What happens next on the project line is one or more
of the following scenarios: the software doesn’t work well for its users, and
funds are sought to fix its defects; it quickly becomes outdated, either by
changes in the technical environment, the policy environment, or other external
factors, and funds are sought for modernization; or new needs have emerged that
the existing software doesn’t address…and funds are sought to meet those needs.
Thus, the actual project model line looks more like this in the medium term: 



And then in the longer term, as modernizations fail, needs escalate, and even
more money is allocated, like this:  



Here is where the slow and steady product line starts to look a lot more
attractive, on a purely cost basis.



But cost is far from the only reason to prefer it. Having a consistent team over
time may look like an unwanted ongoing expense, if we assume that development
work is at some point “done,” but that is not the case. (“Software is never
done” was one of the precepts of the Software Acquisition Practices report I
contributed to for the Defense Innovation Board). If software isn’t updated, it
rots in a variety of ways. O&M should be relabeled ROT. (Someone please
backronym that for us.)2

Leave a comment



The product model is not only less expensive in the long run, it results in
working software that doesn’t need “modernization” of the kind you’ve become
used to hearing about because it’s constantly being updated and improved. To
extend Dave’s quip, you don’t hear about Google pausing search for a
modernization. Google Search first came out in 1998, and I doubt its code base
today bears much relation to what existed then. But Search is a product, not a
project. It never went into O&M. It changed daily, not every other decade.

If you’ve worked in government you’ve seen Whong’s Law in action: “Every
government agency, everywhere is working on a “new system”; It will solve *all*
of their data problems and will be ready to use in 18-24 months.” The joke, of
course, is that it will always be ready in 18-24 months, and in the meantime,
because the new system will solve all problems, no improvements can be made.
Have a need? Find a workaround for the time being…which turns into effectively
forever. When I worked on unemployment insurance in California during the
pandemic, the team had been working on a procurement for a new system for eleven
years. The request for proposal hadn’t even gone out for bid yet, so the start
of development was at least a year away (probably a lot more), but the team had
been in this "find a workaround” state, in which problems get kicked down the
road (or more accurately, kicked into the requirements of a mega-project that
will take another decade to build) since the last modernization shipped. Of
course the UI system in California couldn’t scale to meet demand. It had been
rotting for decades.

In contrast, New Jersey’s unemployment insurance team was making improvements
every few days throughout and beyond the pandemic. The Department of Labor just
crowed about that state’s successful new system, a success built on “a
continuous approach to IT modernization over an all-or-nothing strategy.” Dave
Cole, New Jersey’s Chief Innovation Officer, said at the press conference: “Far
too often, other states, large and small, have spent hundreds of millions of
dollars to do one monolithic overhaul of their UI technology and applications,
only for the resulting experience to remain just as confusing, just as
frustrating, and just as demoralizing for claimants and state UI staff.” It’s
great to see a state escape that trap. More eyes should be on New Jersey.

Products also don’t wait to meet their users until they’re in a “testing phase”
at the end, when some of the engineers have already been moved to other projects
and the project’s budget is almost entirely spent. Understanding users — not
documenting requirements, as the two are different — is what that tiny initial
team is doing, and what the growing team does along the way.



The biggest difference between the project and product models is that the steady
investment over time delivers effective service to the American people. Periodic
investment in “projects” is how we get backlogs and confused and frustrated
constituents.

Share

A summary of the differences in these models is below3:



As much as it's tempting to hold agencies accountable for their addiction to the
project model, this is not something they can fix on their own. Congress would
need to enable ongoing funding streams (in addition to procurement changes
previously discussed) in order to see agencies develop in the product model.
Congress should work with OMB and agencies to change the laws, regulations,
processes, and practices that impede agencies from operating in the product
model.

***

That last sentence is a bit of a doozy, I admit. It’s the kind of thing one says
in the written version of Congressional testimony, as if it were something that
one could just do, or that anyone in Congress actually wanted to do. But it’s
our jobs to make it a priority for them, and as we do, we need to figure out
tactically how this will really work. I hope you’ll contribute to that plan.

In the meantime, here’s a link to the slides. Feel free to use them with credit,
but let me know if you do, and in what context, and how they are received.


Subscribe


1

My best shorthand for the difference here is that project management is the art
of getting things done. Product management is the art of deciding what to do.
(Thank you to Bennett Hillenbrand for that line.) (See Chapter 10 of Recoding
America for more.) But obviously, there’s a lot more to it.

2

Update: 20 mins in and we already have a winner here. April Harding suggests ROT
could stand for Recurring Obligations for Technology. I love it.

3

In the chart (which is an image from the slides because Substack doesn’t seem to
do columns), I list Byrne’s Law under the Product Model side. That’s from my
book Recoding America. This is Mike Byrne’s assertion that most government tech
projects could cost 10 percent of what they do and still provide 85 percent of
the functionality. This is not quite the same as the concept of a minimum viable
product (MVP), which would be far less than 85 percent of the functionality, but
in the same general direction.




SUBSCRIBE TO EATING POLICY

By Jennifer Pahlka · Hundreds of paid subscribers

In business, culture eats strategy. In government, culture eats policy. Here
we'll talk about the problems of state capacity (government's ability to achieve
its policy goals) and how to fix them. From the author of Recoding America.


Subscribe


79 Likes
·
6 Restacks
79


SHARE THIS POST

Eating Policy
Project vs Product Funding
Copy link

Facebook

Email

Notes

More
16
6

Share

DISCUSSION ABOUT THIS POST

Comments
Restacks

Kevin Sutherland

3 Jun

Liked by Jennifer Pahlka



I love this post! As someone who has been either planning and delivering large
system modernization projects for over 20 years, it really resonates!

Unfortunately, my experience is states are not equipped / able to shift to a
product funding model for many of the reasons so beautifully articulated in
Recoding America. To name a few:

1. State organizations are primarily functionally organized. I.e., IT is a
separate hierarchical structure from the business areas.

2. The current technology is like an archeological dig site with layers upon
layers of older, highly coupled, poorly understood technology making it
challenging to even identify a "product"

3. The accountability paradox is deeply ingrained in the culture and behaviors
of staff.

In my experience, the desire to move to a product model will fall short unless
these issues can be resolved. Interested in thoughts from the community on how
to address.

Expand full comment
Like (4)
Reply
Share

2 replies by Jennifer Pahlka and others
Dave Rooney

3 Jun

Liked by Jennifer Pahlka



Great post! I worked on a team from 1992-1998 in the Canadian federal government
that used this model (fund the team, not projects). There were a few capital
investments over that time on new server hardware, for example, but the ongoing
operating costs were really just the costs of the team.

We did *great* work, at least according to the people who used the systems we
produced. We were responsive to their needs and could pivot quickly when there
was a change in the business. I wish more organizations today we like this one
was 25-30 years ago!

Expand full comment
Like (3)
Reply
Share

2 replies by Jennifer Pahlka and others
14 more comments...
Top
Latest
Discussions

Bringing Elon to a knife fight
Wishing for a more orderly disruption may misunderstand the nature of government
reform
Dec 13 • 
Jennifer Pahlka
244


SHARE THIS POST

Eating Policy
Bringing Elon to a knife fight
Copy link

Facebook

Email

Notes

More
68



Stop telling constituents they're wrong
But start making sure your policies don't fall prey to the cascade of rigidity
Nov 22 • 
Jennifer Pahlka
195


SHARE THIS POST

Eating Policy
Stop telling constituents they're wrong
Copy link

Facebook

Email

Notes

More
82



The DOGE strategy is a cop-out
Elon and Vivek's workforce plans would backfire terribly. There's a welcome
alternative.
Dec 2 • 
Jennifer Pahlka
102


SHARE THIS POST

Eating Policy
The DOGE strategy is a cop-out
Copy link

Facebook

Email

Notes

More
27


See all


Ready for more?


Subscribe


© 2024 Jennifer Pahlka
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great culture


SHARE


Copy link

Facebook

Email

Notes

More





CREATE YOUR PROFILE


Name (Required)HandleBioEmail (Required)

Subscribe to the newsletter


undefined subscriptions will be displayed on your profile (edit)

Skip for now

Save & Post Comment


ONLY PAID SUBSCRIBERS CAN COMMENT ON THIS POST

Subscribe
Already a paid subscriber? Sign in

CHECK YOUR EMAIL

For your security, we need to re-authenticate you.

Click the link we sent to , or click here to sign in.

This site requires JavaScript to run correctly. Please turn on JavaScript or
unblock scripts