My name is J. B. Rainsberger. I help companies profit sooner from their software projects. I help individuals navigate the complex world of work. Since that sounds perhaps a bit vague, please let me tell you a little more about how I do those things.
How I Can Help You
I’ve worked as a software professional since 1996. When I started my career, I focused on writing good code. As time went on, I began to see that programming is the easy part, at least when compared to the complexities of people, their interactions, and the systems in which they live. This led me eventually to tweet one of those unexpectedly-popular tweets:
When I say that programming is the easy part, I don’t mean to dismiss programming. I care deeply about technical excellence and have made a career from teaching programmers how to design software well. It just so happens that I’ve noticed a pattern:
- We sit down to write code together.
- I ask some simple-yet-powerful questions.
- You point out some non-programming obstacle in our path.
- We begin to talk about things that go far beyond testing, design, and code.
It always seems to happen within an hour or two of trying to solve a programming problem.
- “He (pointing) doesn’t like it when we do it that way.”
- “Who am I to push this kind of design change on the rest of the team?!”
- “I can’t seem to get anyone to listen to my good ideas.”
- “I don’t know why we do it that way; I just got used to it.”
- “I know we should do it that way, but we don’t have time.”
You get the idea. Even when we sit down to solve a code problem, a people problem shows up.
So how do you know that I can help you?
Click here for a list of some of the key influences to my work. It might give you a good idea of how I think, what I care about, and how well that would fit your needs.
- Lightweight software development approaches, iterative and incremental techniques, the things that we would call “agile” if that word hadn’t developed such a bad reputation in the 2010s. I recall the rallying cry of Extreme Programming: What is the least we could do and still build great software?
- Theory of Constraints and Complexity. It’s true that social systems are complex adaptive systems, but many organizations benefit from thinking in terms of constraints as a stepping stone towards more-fully embracing complexity and systems thinking. We can do both; I see no conflict.
- Gerald Weinberg (Secrets of Consulting, Becoming a Technical Leader) and Virginia Satir, who strongly influenced his work. Software as a deeply human endeavor. People build software. People have emotions. I help software professionals feel more comfortable with questions of self-awareness, how they interact with others, and how to resolve conflict in the workplace. This way, we can focus more energy on the work and less energy on protecting ourselves.
- Manufacturing slack (avoiding 100% resource utilization; nothing to do with the chat system) as a way to protect production capacity at the same time as improving productivity. When we pay attention to and invest in both, we get better results.
- The power of habits, as in the work of Charles Duhigg and James Clear. Like grandmaster chess players, I help people relentlessly accumulate small advantages over time and let the power of compounding (exponential growth) lead to significant improvements.
- Technical excellence as a key to improving business results. We practise evolutionary design because it increases profits and accelerates cash flow. Extreme Programming and Test-Driven Development are business-focused approaches, not only code-focused ones.
This gives you some idea of my areas of expertise, but you probably want to know how we would work together.
I’ve managed to transform the occasional career. Click here to read David’s story of feeling free to do great work.
I was at Iowa Student Loan when we moved from Waterfall and VB6 to XP and Java (2003-2004). It was under your guidance that we became one of the most aggressively agile teams in the midwest, according to David Hussman. One of our teams was featured in Gojko Adzic’s book Specification by Example due to our extensive investment in FitNesse. You pointed us towards Fit and FitNesse early on. You laid the rails of XP that lead to our long term success. I started to calculate my pairing hours for a talk recently and was surprised to realize that I had over 10,000 hours of pairing. Iowa Student Loan’s commitment to pairing and TDD were a direct result of your mentoring, coaching, and zeal.
On a personal note, I wholeheartedly believe that I wouldn’t be in software development today if it weren’t for the hyper-focused Red-Green-Refactor solutioning cycle. I was terrible at math throughout school, especially with large math problems with multiple moving parts. TDD released me from balancing multiple parts. Once I released a small piece from my focus I was able to freely focus on the next part without any fear of breaking previous parts. It was liberating to maximize the way I thought to create and innovate. XP liberated me. Thank you for putting my career on a firm foundation.
— David Kessler
Teacher or Partner? (or both?)
Are you looking more for a teacher or more for a partner? Don’t panic: you can change your mind later and we can always do both. Here’s how I see the difference.
If you’re looking for a teacher, that’s probably because you know how you want to improve and you want to be more competent, more skilled, and more effective. I work primarily with programmers to improve their skill in testing and design, so that they can both build it well and build it to last. I also teach programmers how to work more harmoniously with so-called “product owners”, using a combination of techniques for understanding what the software needs to do and communicating more effectively with the people asking for those features. I’ve made a career on helping programmers excel at the craft of programming, but I don’t stop there.
Even if you’re not a programmer, you could probably benefit from learning some techniques related to managing your workload, improving focus and concentration, and managing your energy better as a way to finish tasks sooner, avoid rework, and stop tasks from falling through the cracks and sneaking up on you. I also teach groups the importance of working effectively together, resolving conflict, planning their collective work, adopting new ways of working safely, and why forecasting costs is usually more trouble than it’s worth… if you’re looking to improve your capacity in a specific way, then you want a teacher, and I’m ready to teach. Click here to learn more about training courses and learning programs designed to fit a variety of situations. If you don’t see what you need, then please feel invited to ask me about it.
If you’re not sure exactly what you need to learn, then you’re probably looking for a partner. Specifically, you need a partner who can help you figure out what you need to learn, then help you figure out how to get started learning it. Sometimes you need a partner to help you organize your thoughts, understand what’s going on inside you, or hold you to commitments to your co-workers as well as to yourself. At times I act as a consultant, a mentor, or a coach. I’m a consultant when I work with you to analyze your situation and point out problems that you might not realize need your urgent attention. I’m a mentor when I offer advice and potential solutions to the complex problems that you’re already worried about. I’m a coach when we work together to help you get out of your own way and see that you have the tools that you need to solve your own problems. I’m ready to do any of these things. If you have the feeling that you need more than just a teacher, then read a little about consulting, coaching, and speaking to find something that fits your needs or the needs of your group.
Just You, Your Team, or Your Company
I offer a wide variety of services suitable for individuals, small groups, and the entire enterprise. Classroom-style training, one-on-one sessions, facilitated group sessions, consulting on change programs, speaking at conferences (both public and internal) and working sessions where I act as a part-time member of the team (writing tests, splitting stories, writing examples). If you think I can help, but you don’t see exactly what you need here, then contact me directly and tell me about your needs, your hopes and wishes, and your obstacles. I’m confident that we can figure out together how you can make progress towards your goals.
Marjan is one of the many people I’ve managed to find with just the right recommendation at just the right time.
You Need To Know More
If you’d like to get to know me better, then please spend a little time reading some of my articles. I’ve been writing on topics in software development since the early 2000s. Start anywhere.
- https://blog.thecodewhisperer.com About programming: evolutionary design, TDD, refactoring, simple design, all things code.
- https://blog.jbrains.ca About everything else: teamwork, communication, planning, personal productivity, lightweight software development process, personal and team growth.
If you like videos, then click here to see a selection of performances that gives you a clearer picture of what you can expect from working with me.
If you’d like to start working together, then you have several options:
- Browse my training options
- Book a working session
- Arrange some ensemble programming for yourself or your group
- Join my personal mentoring/coaching group (or log in, if you’re already a member)
- Invite me to speak at your event
I look forward to the opportunity to help you get the results you want from your work.