Bill Caputo

Chicago, IL ยท

Hello! My name is Bill Caputo and I have a passion for understanding computing, organizations, problem solving and people.

This page serves as an introduction to me and my career as a professional software engineer and technology leader. Over the past twenty years, I have had the privilege of working on many fascinating and valuable technology delivery efforts with some amazing and very smart people for companies like Redbox, ThoughtWorks & DRW Trading. Currently I work for a great Chicago startup named Provi where we are transforming how businesses buy and sell alcohol. Along the way, I've developed an expertise in deliverying high-quality software quickly and efficiently today without placing unwanted debt onto tomorrow; and a drive to help others learn how to as well.

Working Together

If you are interested in exploring the possibilty of working together, then Welcome!

First thing you should know about me: I'm a doer. I have a deep need to be in the thick of the biggest challenges and to understand what it takes to solve them wherever that might lead. In a little over twenty years, I've delivered software solutions for accounting, trading, insurance, kiosk automation, e-commerce, visualization, and real-time messaging systems—both as a hands-on programmer, and as a leader with nearly fifteen years of experience in roles ranging from lead-engineer to director. And not just software teams. I've also developed and led successful security, facilities and customer service organizations. I also founded Agnomia, my research and consulting company. What every one of these experiences have in common is that each required me to roll up my sleeves and dig into whatever challenges stood between our teams and success, learning and doing whatever was needed to get the job done!

The next thing you should know, is I'm a thinker. I love the myriad theoretical and philosophical challenges that arise in the pursuit of finding technology solutions, particularly those that involve the interactions and complexities of people working with technology to solve difficult problems. I thus like to write about the nature of organizations, the constraints of technology and overall pursuit of people's growth and happiness.

Finally, you should know that I'm a rabid learner. I'm always looking for new ideas and techniquies to improve my leadership and technical skills. So that whatever the situation calls for, I am ready to help others succeed.

I am not currently actively looking for new opportunities. However, I'm always open to discussing interesting possibilities and meeting new people, so feel free to reach out if you have something you think would interest me.

If you value:

  • Compassionate Leadership
  • Getting things done
  • People's happiness and welfare
  • High-quality code
  • Being able to adapt and pivot delivery efforts as the situation changes

And you offer:

  • An interesting problem-solving opportunity
  • Competitive compensation
  • An environment that allows delivery excellence
  • The opportunity to interact with good people
  • Diversity, honesty and mutual respect

Then perhaps we can do something amazing together!

Preferred Roles

These days, I am more interested in mid-level leadership roles such as CTO for a smaller organization or director-level positions in a larger one. I am particularly interested in growing and mentoring direct reports who are themselves taking their first steps into servent leadership.


You can browse my full career history and also contact me via LinkedIn

The rest of this page is meant to give those interested additional insight into my interests, experience and approach to technology delivery in the hope that it might help you to better understand who I am and how I approach my profession...

Leadership & Delivery Organizations

The most dramatic impact a company will have on it's technology-related results will be how they structure their technology organization and its leadership. Get either of these wrong, and no amount of strategic vision, goodwill or deep-pockets will save you from the escalating complexity, unmet demands and disaffected (followed by mediocre) employees that will result.

Get both right however, and the results can be extraordinary. Here are some of the more important principles that I've learned over the years:

  • ϕ Technologists are best understood, not as typists or implementors, but as expert problem-solvers. Many of us feel compelled to analyze any problem, at any time! It thus follows...
  • ϕ ...that good technologists are already motivated by what they do. Effective leaders cultivate this by including software and other technical engineers early and often; leveraging their unique expertise on how best to apply technology as partners in achieving the organization's goals
  • ϕ Relatedly, holding leaders accountable for fostering a culture of eudamonia ensures that interests to excel are aligned with interests to succeed financially & strategically
  • ϕ One-size-fits-all reviews, organizational models, processes, etc — while simplifying things for upper management, tend to reward the most ambitious or confident members of a tech organization, not it's most skilled or effective.
  • ϕ Empowerment is about giving people authority and resources, then getting out of their way. Effective orgs don't just pay lip service to this idea, or adopt the latest team-building fad, instead they continually invest in building and sustaining a culture that entrusts responsibility to small groups of technologists, so that they have true opportunities to succeed (and fail!) while learning to stand on their own. Such orgs adjust their bet size, instead of their control models in order to account for the risk such trust necessarily entails.
  • ϕ Similarly, these organizations grow and cultivate leaders among their technologists while simultaneously avoiding the trap of requiring everyone to be leaders in order to advance their careers.
Side Bar: What about Agile?

My views on Agile are complex. For the better part of a decade—starting in 1999, when I discovered and joined the "Extreme Programming" mailing list (on egroups!)—I was an active and enthusiastic member of what became one of the most significant movements in the history of our software engineering; one based on a simple but profound idea: That people and their interactions are the most important consideration in what makes for successful software delivery. Everything I've done for the past twenty years has embodied and built upon the ideas and practices that I first learned during those exciting years!

However, the process-centric nature of Agile as it's widely understood today, has eroded the principles of the manifesto in favor of generalized, ritualistic approaches that are perhaps easier to adopt (and sell!), yet too often detrimental in achieving highly-effective technology organizations. As a dynamic system of social interactions, evolving opportunities and emerging complications, technology delivery is far too complex to be reduced to a set of standard tools and processes.

Instead, I view processes and tool selection, not as an input into creating a great organization, but the result of doing so. Rather than starting from pre-selected, "best-practices", the best organizations develop and evolve their process, tools and organizations by considering the unique needs of the people and challenges in their delivery context.

When approached as an exericise in accounting for all of the needs & demands of all interested parties, process and team-building become perputal optimization opportunities; effective organizations continuously solve for the structures and interactions needed to meet the demands of their ever changing environments.

In short: Agile as practiced today, has become the very thing it orginally opposed: A formal process that too often causes the very inefficiencies that people hope to avoid by adopting them in the first place. Thus, while I have over two decades of experience as an agile practitioner, I cannot endorse Agile as it is commonly understood today.

Software Engineering

Four Skills

There are many different ways for programmers to practice our craft. Some of us become language experts. Others specialize in certain business domains. Still others on specific technological problems and their solutions.

I belong to the category that treats programming itself as a discipline to be mastered. I approach this by perpetually honing these skills (and I still code every day!):

  1. Learning how to learn. Determined to go from ignorance to competence on any topic faster than anyone else.
  2. Learning how to ship. Always finding a way to deliver a solution that provides the most value at the least cost for everyone involved.
  3. Learning about computation. From the most theoretical to the most pragmatic; from circuits to the internet and everything in-between: Endlessly studying the power and beauty of these fascinating machines that we call computers.
  4. Above all: I never stop striving. To understand. To improve. To succeed!

My Philosophy

Here are some of things I've come to believe about programming in general:

  • ϕ Always be Deployable.
  • ϕ A great way to increase value is to lower the cost of communication.
  • ϕ Keeping code quality high is the best way to go fast.
  • ϕ Effective testing methods do not verify, they falsify.
  • ϕ Diversity increases the odds of finding the best solutions faster.
  • ϕ Opinions must be allowed to flow freely, but also with accountability, kindness & respect—both for individuals and their responsibilities.
  • ϕ Conway's Law is not something that can (or should!) be avoided; it is an observation of how the context is reflected in the code.
  • ϕ There are no (known) general best practices. Correct software process is a dynamic function of people and context.
  • ϕ Make sure to understand (at least) the abstractions immediately above and below the code you are currently working on.
Selected Programming Languages
I have delivered professional software using the following languages:
Web Development Stack
Most of the websites I've created (including this one!) were made with basic tools such as:
Selected Tools & Services
The following are some of the tools I use a lot (or used to!)
Preferred Operating Systems
Over the past decade, these have been my development (and deployment) platforms:
Process Expertise
  • Extreme Programming expert
  • Continuous Testing expert
  • 15th signatory of the Agile Manifesto
  • Continuous Delivery practitioner
  • Very experienced at building cross-functional teams

Writing & Other Stuff

Blogs & Other Sites

I occasionally write things about and build sites for stuff I'm interested in. Here's where to find them:

Other Tidbits

I haven't done much public speaking lately, and most of my work has been for my employers, but here are some of the more recent of those sorts of things: