Pragmatic Software Development Solutions

Software development is a team competition. Good teams trust each other, collaborate effectively, and continually improve: They accept the mistakes they've made and find better ways to deliver quality software. The best teams recognize that introspection alone isn't enough--they know that a coach is essential to getting impartial insights about areas for improvement, and to helping guide them to increased success.

I've been building software for a third of a century. I've also worked with numerous development teams over the past 15 years to help them understand how to deliver better. I'm not a permanent coach/consultant, however--I've repeatedly returned to full-time development in those 15 years, to ensure my saw stays sharpened and my skills relevant, and to ensure I stay "in touch" with what real software developers go through. I am a developer.

Processes such as Scrum, XP, or other flavors of agile software development can help, but only if your teams truly buy into changing how they build software... and if they learn to change as a habit. It's easy to adopt the trappings of Scrum, but then realize a year-to-18 months later that things aren't much better (and now you have all these stupid meetings). Agile isn't about adopting a "one-size-fits-all" framework to a bunch of teams, it's about building an adaptable process--which means every team will look a little different.

I've been there and seen just about everything. I can help. I can point out the common pitfalls of software development. I can help transform your teams to employ processes that work well for them. My focus is on getting the real "unit of work"--the team--clicking. I can provide the coaching your teams need.

To help teams get on the same page with respect to concepts and techniques, I offer training courses in TDD (test-driven development), design, programming, and of course agile concepts and implementations. I can deliver training remotely or on site. My goal is to ensure students leave the classroom jazzed and ready to apply what they learned. Some of them tell me this is the best training they've ever attended.

Interested in hearing more? Want to talk about pricing, ask questions, or just want some general advice? Give me a call at 719-287-GEEK, or email me at This e-mail address is being protected from spambots. You need JavaScript enabled to view it .


Jeff Langr





New blog entry, "Surviving Chaos with Pairing"

30 March 2015

While I've been swamped for the past 18 months, I did find some time to write a bit here and there (but then got too lazy to do anything with it). Here's a blog post about my experiences at the end of 2013 with a few months of hyper-productive distributed development at a startup.


Pragmatic Unit Testing in Java 8 with JUnit published!

30 March 2015

Pragmatic Unit Testing in Java with JUnit

I'm excited to announce that my fifth book, Pragmatic Unit Testing in Java 8 with JUnit, is available for purchase from the Pragmatic Bookshelf, Amazon, and other retail outlets such as B&N. It's a near-complete rewrite of the Andy Hunt/Dave Thomas classic from 2003. My goal in rewriting the book was to update it based on what I've seen work in 15+ years of unit testing, and to pack a bit more "meat" into it (even though it's still designed as an introductory treatment of unit testing). If you enjoy the book, please drop a few kind words in an Amazon review--I'd greatly appreciate it!


News: Publication of Modern C++ Programming with TDD

30 October 2013

Modern C++ Programming with Test-Driven Development Jeff Langr's fourth book, Modern C++ Programming with Test-Driven Development: Code Better, Sleep Better, is now available for purchase from the Pragmatic Bookshelf, in both print and eReader formats, as well as retail outlets such as Barnes & Noble and Amazon!


New blog entry, "Running Google Maps in an AVD"

05 July 2013

In "Running Google Maps in an AVD," Jeff provides detailed steps for getting a map-based application to run in an Android Virtual Device (AVD). The steps are for the ADT, but should be adaptable to Android Studio.

Image: By Tom Murphy (Own work) [CC-BY-SA-3.0 (], via Wikimedia Commons

New blog post, "A Story Isn't a Feature"

20 March 2013

User stories are an essential part of agile software development. But are you simply trying to shoehorn your old requirements process into a new terminology? Find out why it's important to understand the definition of the word story in Jeff Langr's new blog post, "A Story Isn't a Feature."

Image source: AJC1, Flickr

New blog post, "C++11: Using Lambdas to Support a Times-Repeat Loop"

06 March 2013

Tired of writing that classic for-loop for (int i = 0; i < total; i++) simply to execute a chunk of code n times? Tired of reading it, and occasionally missing an important detail (such as for (int i = 0; i < total; i++))? In " C++11: Using Lambdas to Support a Times-Repeat Loop," Jeff blogs about how you can use the new C++11 lambda construct to support a simplified and less error prone times-repeat loop.