Refactoring – Prepare, Improve, and Clean

Posted January 8, 2016 by Bryan Beecham in Learning, Refactoring, Software Design, Test Driven Development

Refactoring is at the heart of the way we improve code. We make changes to the code for the purpose of making it easier to understand and easier to modify while maintaining the same behaviour.
Read more

No comments


Modern Agile

Posted November 3, 2015 by Joshua Kerievsky in Agile Transition, Anzen, Anzeneering, Culture, Estimates, Extreme Programming, Kanban, Lean Startup, Mob Programming, Refactoring, Software Design, Tech Safety, Test Driven Development

Have you ever seen someone using an older laptop and just felt bad for them? That’s how I feel when I see most people practicing agile these days. We’ve advanced so far beyond where agile was in the mid 1990s, yet so many teams practice agile like it’s 1999! Meanwhile, agile/lean pioneers and practitioners have […]
Read more

54 comments


Multiple Asserts Are OK

Posted September 29, 2015 by Bill Wake in Software Design, Test Driven Development

Some people suggest we should restrict ourselves to a single assertion per test. Are multiple asserts in a test ever OK?
Read more

3 comments


Evolutionary Design

Posted August 12, 2015 by Joshua Kerievsky in Anzeneering, Learning, Software Design

What is agile’s most valuable practice? It’s called Evolutionary Design. No other practice does a better job of managing risks in software development. Evolutionary Design influences how we organize people and teams, plan what to build, collaborate, integrate, develop and release. So why aren’t more people using it? Perhaps they don’t understand Evolutionary Design and […]
Read more

12 comments


Fake and Mock Objects in Pictures

Posted February 13, 2015 by Bill Wake in Software Design, Test Driven Development

Interesting objects collaborate, but some collaborators are tricky to work with. When objects have awkward collaborators, test doubles (stub, fake, and mock objects) replace the collaborators to make testing easier.
Read more

3 comments


Improving Extract Method

Posted November 19, 2014 by Joshua Kerievsky in Refactoring, Software Design

Automated refactoring tools have gotten better and better over the years, yet the pace of improvement seems to have slowed dramatically. I now find myself living with flaws that I’d love to see fixed. For example, the Extract Method automated refactoring seems to be unable to do something really basic, like recognize cases of duplicated […]
Read more

6 comments


Refactoring to Patterns Ten Year Anniversary Sale

Posted September 18, 2014 by Joshua Kerievsky in Agile eLearning, Learning, Software Design, Software Patterns

It’s been ten years since my book, Refactoring to Patterns, was published and twenty years since the gang-of-four released their classic, Design Patterns. I was thrilled when Refactoring to Patterns won a 2004 Jolt Cola award and delighted to see the book translated into seven languages. Since the publication, I’ve co-authored a series of in-depth, […]
Read more

No comments


Fashion-Driven Development

Posted October 14, 2013 by Joshua Kerievsky in Learning, Refactoring, Software Design

In his foreword to the book, The Joy of Clojure, Steve Yegge shared this insight: “The global programming community is fashion-driven to a degree that would embarrass haute couture designers from New York to Paris.”
Read more

14 comments


Muscling It

Posted February 13, 2012 by Joshua Kerievsky in Software Design

There are moments in software development when ordinary or common usage of an API, library, language or tool won't solve a programming problem. At such times, some programmers retreat and consider alternative solutions that rely on simple, ordinary code.
Read more

2 comments


Replace Badass Query With Simple Loop

Posted February 1, 2012 by Joshua Kerievsky in Refactoring, Software Design

× Warning: this blog contains ugly code requiring horizontal scroll bars. Viewer discretion advised. Yesterday, we found the following badass query in our CompletionStatusRepository class:
Read more

No comments


123