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.
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:
And you offer:
Then perhaps we can do something amazing together!
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...
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:
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.
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!):
Above all: I never stop striving. To understand. To improve. To succeed!
Here are some of things I've come to believe about programming in general:
I occasionally write things about and build sites for stuff I'm interested in. Here's where to find them:
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: