J. B. Rainsberger

J. B. Rainsberger works as a trainer and mentor to software development professionals. He travels the world (most years) sharing what he’s learned about programming, managing his workload, interacting with people, and designing his lifestyle. He spends much of his professional time helping programmers do better work with less stress, but he also consults with, mentors, coaches, and provides training to companies. He helps clients cut through the confusion about lightweight approaches (such as “Agile”) to their essence so that they can realize the benefits that the modern Agile movement has been trying so hard to offer. He offers self-study training at, provides mentoring through, and offers coaching to a handful of individuals per year in whatever they need to perform better.

He lives in Atlantic Canada with his wife, Sarah, who both miss travelling to Europe.

Unlocking the Awesome Power of Refactoring

Evolutionary design, and in particular refactoring, has the power to drastically improve the moment-to-moment work of programmers. Employers are interested in delivering work sooner, over-investing less often in up-front design, wasting less time yelling about design decisions in meetings, and hearing fewer rationalizations from programmers about why it takes so long to get anything done. Programmers often care about those things, too, but I care even more about helping them do their work with less stress: more confidence about where the design is heading, that they can adapt the design to changes in requirements, that they can experiment freely without committing "forever" to every design decision, and recovering more easily when one of their colleagues insists on pushing a bad idea only to realize later what a bad idea it was. Reducing the cost of changing our minds frees us up _and_ generates better results. Everyone wins.


Many programmers get stuck when they try to learn evolutionary design, particularly the refactoring part of it. It never seems to get easier, it never seems to go faster, and so it always seems safer to rip things apart and write them again. If you or someone you know feels stuck like this, then let's talk about why that happens and what to do about it. I'm pretty sure that will also provide a nice starting point for larger discussions about our work as programmers, how evolutionary design (TDD, refactoring) fits in, and anything else that we feel vaguely interested in talking about. My brain will be open.