Wingman Software - Self-Paced Learning
Our Acclaimed Training -- Delivered at Your Pace
If you are interested in our training, we are no longer hosting on teachable.com
visit wingman-sw.com
Our Mission
To help you learn iterative and incremental engineering techniques so you can deliver working products with long useful lives. We accomplish this by offering training, coaching, and workshops delivered to thousands since 2008.
This site is dedicated to self-paced learning, focusing on these critical technical skills:
- Test-Driven Development
- Refactoring
- SOLID Design
- Evolutionary Design
- Adding Tests to Legacy Code
- Evolving Legacy Code
Wingman Software can help you grow your development skills. Our main focus is embedded systems development written in C and C++. While our examples are geared toward embedded systems, the techniques can be used by any developers working in C and C++. You'll be able to apply the knowledge and skill gained from our courses in whatever language and environment you find yourself in.
Do you answer "yes" to any of these questions?
Are Scrum and Agile painful for you?+ YesScrum and agile have quickly become the status quo in many companies. Agile’s short delivery cycles can seem disruptive and chaotic, particularly for those of us who grew up on waterfall. Many companies ramped up by training a few scrum masters, leaving the developers to just "figure it out" on their own.
Adopting iterative management, planning, and delivery -- and not investing in iterative engineering -- is a recipe for pain.
What is your pain level?

Can you spot these common symptoms of agile-done-poorly?
- Iteration / sprint deliveries are more often missed than completed.
- Developers feel rushed and micromanaged.
- Developers feel pressured to deliver a poorly engineered product.
- Code quality suffers.
- Morale is low.
- Releases are missing key features.
Want to stop the pain? The road to recovery can begin by attending our training. As you grow your iterative engineering skills you'll move the pain needle toward the green end of the spectrum. Adding iterative development to your skills can do more than just relieve pain, you'll enjoy developing even more.
With Wingman Software, you’ll learn the engineering techniques needed to deliver working products with long useful lives. You’ll start on a path to a more enjoyable career doing the things you like most: solving problems, programming, and delivering useful products. You’ll also avoid the pain of delivering defects, debugging, and low morale.
Are you tired of chasing bugs? + Yes
Test-Driven Development (TDD) helps you prevent defects by putting mistakes in your face as you work. It's humbling and worth it. TDD will save you hours and days of aggravation. With TDD you work in a tight feedback loop, adding a failing test, then writing just enough code to pass the test. This cycle continues as you exercise and confirm each path through the code.
This probably sounds backwards or crazy. You will find it is an effective and natural way to work. As a bonus it's rewarding and fun too!

With TDD, development and test automation are part of every day. Each iteration you add new features and capabilities. The tests form a safety net that notifies you when your code no longer meets the specification designed into each test.
For more information about how TDD can save you from the defect chase, read The Physics of TDD.
Are you frustrated with deteriorating code? + Yes
Code change is inevitable. But how do you make changes to code that ensure the design stays clean? The test safety net, woven with TDD, allows you to safely refactor your code and keep your system from deteriorating. You will learn to identify code and design problems, envision better solutions, and keep your code working during the transformation.

Did you know it is easier to keep a system working, than to fix it after your break it!
Our courses will help you learn the critical skills needed confidently evolve existing code without introducing new problems. Read more about these critical skills here.
Is your schedule tight and you don't have hardware to test your code? + Yes
It is so natural for embedded developers to live with this pain. When hardware and software are concurrently developed, too often hardware is delivered late in the development cycle. A miracle is expected when the two come together. But there are no miracles in this line of work. If you rely on your target as the sole vehicle to test your code, get ready for pain and delays.

James first saw Test-Driven Development in 1999 and saw that TDD could help relieve the target-hardware bottleneck by first getting his code to behave in an off-target test environment. James lived with the pain for the first twenty years of his career. No more though, and you don,t have to either.
Our courses will help you learn to design for test (and consequently a long and useful life). You'll see how TDD and off-target test can help you break the target hardware bottleneck.
Read more about progress before hardware here.
Did you answer yes one or more times?
Many developers before you have had those pains releived by learning and practicing TDD.
Featured Course
We learn new skills by doing, not just reading, listening, and thinking great thoughts. We learn new skills when we are motivated to fix real problems. In this course, you will practice the skills needed for successful iterative development. We’ve found this learning cycle to be invaluable to attendees of our courses.
Our time-tested learning cycle:
- Identify a problem. Problems motivate change.
- Offer a potential solution. Explain the idea that may help.
- Demonstrate part of the solution. Instructor removes exercise ambiguity.
- Complete the solution as an exercise. Participants learn by doing.
- Review the experience. Discuss both positive and negative reactions.
- Review the solution. Provide a step-by-step explanation of the thought process as James completes the exercise.
We’ve helped thousands of developers ingrain their TDD skills with this learning cycle. In this course, we repeat this learning cycle, growing skills with each iteration. Our goal is to help you build new skills on top of your existing skills.
- Programming experience in C or C++
- Desire to improve
Programming exercises are run in our custom cyber-dojo server. No tools need to be set up. All you need is a modern browser.
These reviews are from our >Live Remote Delivered TDD Training. You get the same content and more in this self-paced course.
-
Read What I Learned from James Grenning’s Remote TDD Course
-- by Phillip Johnston -- embeddedartistry.com -
Read Review: Web-Based Course Test-Driven Development For Embedded C/C++, James W. Grenning
-- by Steve Branam -- flinkandblink.blogspot.com
Thousands of embedded engineers have taken our courses
See what they have >to say.
Here are a couple samples of attendee feedback
James was there when the Big Bang of TDD, XP, and Scrum happened. He has an incredibly deep and broad insight into TDD and loves to pass on this knowledge. I especially enjoyed his reviews of my exercise solutions. James let me participate in his thinking. He has a good reason and explanation for very small step and decision. Even when James was not there, the exercises felt like pair programming with him.
Later he added
With TDD, James taught me a super power. TDD lets me cut through complex problems much faster than debug-later programming. And bonus: I get high-quality unit tests for free to maintain a steady development pace. I have reaped the investment for James’ courses many, many times.
Burkhard Stubert
Live-via-web attendee, 2019
>embeddeduse.com
Outstanding instructor! This guy really knows his stuff not just from theory but also from years and years of real-life experience! Very impressive also how well the instructor managed a huge class online. I had all kinds of problems the first couple of days (including microphone problems) to wrap my head around the concepts and the instructor worked through all of this remotely with me, which was awesome. After the second day and watching the supporting videos, I finally got the concepts. Very patient, knowledgeable, and professional instructor, probably one of THE BEST instructors I've ever had!
Thanks, Name Withheld
About James Grenning and Wingman Software
James Grenning trains, coaches, and consults worldwide. James’ mission is to bring modern technical and management practices to product development teams, especially embedded systems development.
James got involved in applying Extreme Programming to embedded software in 1999, twenty years into his career. Immediately, he saw the potential that the practices and principles could really help with embedded software development. He put the techniques into action with his client in 1999, confirming the applicability of Extreme Programming practices for embedded software development. That also makes him one of the first XP coaches, before there was Agile.
James was fortunate to have been invited to the meeting where the Manifesto for Agile Software Development was written. He was part of the XP contingent. He invented Planning Poker, an Agile estimating technique used around the world.
![]() |
James' experience led him to write Test-Driven Development for Embedded C (http://wingman-sw.com/tddec). Over 17,000 copies sold! He is a co-author of CppUTest, a popular unit test harness for embedded C and C++. |
Live instructor-led training and coaching since 2008.
- TDD team training
- SOLID Design and Refactoring team training
- Mob programming
- Individual coaching
- Legacy code workshop
- Design workshop
- Agile startup workshop
Are you training a large organization?
Let's make a plan for you to make iterative engineering skills accessible to your organization. We should start with your leaders so they can see the possibilities and help deploy to their teams.
James has been around the world fulfilling Wingman's mission
James has trained thousands of embedded and non-embedded developers in TDD, refactoring, and SOLID design.
+ See some of our clients