Skip to content
Mahmoud Hashemi

Artwork: Micha Huigen

Intentional creation

Tap into creativity with the 4 Cs: Consume, critique, curate, create.

Photo of Mahmoud Hashemi
Stripe logo

Mahmoud Hashemi // Staff Software Engineer, Stripe

The ReadME Project amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day.

We all have it. Whether it gets you up in the morning or keeps you up at night, you've felt it: creative potential.

Turning potential into productivity can prove challenging in an internet-connected environment that offers a constant stream of consumables. How do we pick a direction? 

In this guide, you'll see how to distill the elements of creativity into four deliberate stages: 

  1. Consume

  2. Critique

  3. Curate

  4. Create

These 4 Cs comprise a straightforward, adaptable approach that works well in both group and solo settings. You've already started on step 1… read on to find out what happens next.

Consume

Step 1: Turn passive consumption into active research

From the moment you open your eyes in the morning, you're accosted with calls to consume. Articles, videos, podcasts, the newest Wordle variant. When consumption is the default mode of our modern computing environment, how is a builder supposed to build?

To create, we must first recognize its inverse: consumption. Consumption is a useful stage, but can be dangerous if it’s terminal. An infinite loop in this stage kills any chance of creation. But little is created in a vacuum. Creation still starts with consumption, albeit consumption disarmed with an intention: Research and critique.

Critique

Step 2: Capture your reactions in critiques, and research no faster than you can react

As with so many software problems of our day, the answer is simple: React. No, not the JavaScript framework, but the human act of reaction. Intentional creation starts with giving yourself pause on new inputs. Seek a reaction from yourself. A semi-structured reaction, or critique, is a time-honored practice in creative fields, like architecture.

Infinite scroll may prove challenging to overcome, but before turning your consideration to the next item in your feed, activate your critical senses. Draw some conclusions. Even unvetted, they're yours. 

If you're finding it hard to summon a critique, this is a clear sign you're consuming faster than you can reflect. If you're not reflecting, you're not learning. You may need to go deeper on individual items, or just take a break.

Your critiques have never been easier to capture, whether typed in markdown, dictated to automatic transcription, or written down in a notepad on your desk. Try opening your editor or critique tool before opening any new resources. Feel free to open one now. 

Curate

Step 3: Curate critiques into collections that act as reservoirs of creative reference

Critiques are only proto-creative output. Writing anything helps prime the creative pump, but criticism is raw reaction. You want a refined synthesis. Once you've got enough critiques under your belt, curate the positive examples into a collection. 

From interior designers to lab researchers to club DJs, creators recognize the value of a structured, referenceable collection. Sometimes a situation calls for urgency or direction, and an organized, well-researched collection can offer an existing solution. Sometimes, in the context of a comprehensive collection, the lack of a referenceable solution is itself a signal that it's time to invent.

Curated collections become artifacts unto themselves. I've helped create a few, including 0ver.org, seealso.org, and the Awesome Python Applications list. There’s more awesome out there beyond Awesome Lists, like explorabl.es, the Cooperpress newsletters, or the “swipe file” phenomenon used among designers and content creators. There's respectable work in curation. Still, curation is more important as a stepping stone to our original higher calling. Less is more.

Create

Step 4: Return to your curations regularly to discover your creative path forward 

Collections of a certain size tend to produce interesting findings. Patterns and gaps emerge that inspire creative next steps. As an example, while researching approaches to Python packaging, a pattern emerged that led to one of my most popular concepts/blog posts/talks, The Packaging Gradient.

Whole projects can be born out of connections made with collections. My framework Clastic, which was eventually used by teams at PayPal and Wiki Loves Monuments, came out of the curated combination of pytest semantics with werkzeug primitives.

Realistically, the majority of creation happens below the threshold of standalone artifacts. For instance, when adding a feature to an existing system, a parallel approach in a different project serves as a useful guide. I've lost track of the number of times I've swiped techniques from Awesome Python Applications, including ones used to port my dayjob's 300k SLOC codebase from Python 2 to 3.

Most creative outputs have a similar lineage. Only now we have an explicit process.

Debugging the process

It's easy to see creations we appreciate as towering achievements that sprung fully-formed from their creators' genius. But creation comes in fits and starts. If creation comes slowly, here are a few strategies to consider : 

  • Search for a natural split in an existing collection that's getting too big, and explore what makes it interesting. 

  • Revisit an old, contentious critique and re-react. What did you get right/wrong?

  • Pick a particular exemplar and turn it into a case study. One beautiful aspect of FOSS projects is that going deep can mean getting involved. There's nothing like proximity to a problem to inspire creative thinking.

More generally, be wary of one-size-fits-all solutions; while prescriptive techniques such as the Zettelkasten Method may work for some, creation is idiosyncratic. Embrace your own process.

Putting it into practice

When inspiration hits, connections can form so quickly that we take for granted what goes on. When inspiration proves less willing to strike, we can keep ourselves primed for creativity by ensuring all four activities continue in balance.

Pyramid with Create at the top, followed by Curate, Critique, and Consume

There are a few notable benefits of intentional creation:

  1. When you've built something, the influences are well-documented. It can be easier to involve others when there's a clear creative thread to pull on.

  2. Sharing your critiques and curations invites collaboration with other creators and curators. 

  3. Self-awareness. If you're not finding your critiques crystallizing into new thoughts and ideas for projects, that's a sign you're looking at the wrong stuff. Are you following your interests or passively consuming trending content?

Practically, intentional creation means consciously spending less time on consumer sites, from Twitter to Hacker News, and more time taking notes, tagging bookmarks, and creating your own knowledge base. Attempt activities that are less entertainment and more you, ultimately closing the gap between you and your creative goals.

If it sounds too simple, that's because it is. You're still accountable to you, that's the hard part. But hopefully you'll find some value in this simple hierarchy that lets you check in on your own activities and make adjustments toward a more creative end. Spend less time consuming, and more time on the other three Cs. Consume only enough to allow yourself to critique, curate, and create.

If you made it this far, then start now. Step 2. Use any tool or service you like, from spreadsheets to YAML, and answer this: What's your critique? 

Hey! I’m Mahmoud. I’m based in Silicon Valley—the heart of tech (or the geographic one anyways). I’ve been in payments since I first came out here to work at PayPal, and was previously the engineering director at SimpleLegal, a Y Combinator invoicing startup. Currently, I’m a staff engineer at Stripe leading efforts in our B2B payments group. On the side I blog, help run the Pyninsula meetup group, give a few talks, and occasionally post lo-fi mixtapes (though lately I’ve been learning violin).

More stories

Finish your projects

Aaron Francis // PlanetScale

The case for using Rust in MLOps

Noah Gift // Pragmatic AI Labs

About The
ReadME Project

Coding is usually seen as a solitary activity, but it’s actually the world’s largest community effort led by open source maintainers, contributors, and teams. These unsung heroes put in long hours to build software, fix issues, field questions, and manage communities.

The ReadME Project is part of GitHub’s ongoing effort to amplify the voices of the developer community. It’s an evolving space to engage with the community and explore the stories, challenges, technology, and culture that surround the world of open source.

Follow us:

Nominate a developer

Nominate inspiring developers and projects you think we should feature in The ReadME Project.

Support the community

Recognize developers working behind the scenes and help open source projects get the resources they need.