Knock, knock, Embedded Developer...
Wake up

... and follow the Red, Green, Refactor Test-Driven Development cycle

Agile Embedded Software Development

Agile Technical Practices Applied to Embedded

Can you evolve your firmware at a sustainable pace?

Introduction to 'Unembedding' embedded systems with TDD

Multi-platform Embedded Software Portability


We should be able to port our embedded solutions with minimal to none effort

Profitable and long run embedded solutions must be decoupled to specific short term dependencies, like:

  • The PCB and its internal and external components
  • The running processor or microcontroller
  • Any third party or vendor library, framework or tool
ADC reading Processor Abstraction Layer

Reading an analog variable using a Processor Abstraction Layer (PAL) static Template Method

Learn how

Debug-on-Hardware almost removed from software development process


Underlying hardware should be barely needed to develop our embedded software application

  • From Business Entities to the Special Function Registers (SFRs) related tasks
  • Ability to develop from anywhere in the world
  • Expensive hardware development tools (oscilloscopes, signal generators, power supplies, etc) no longer needed during 99% of development
  • Greater competitiveness throughout portable solutions
  • Escape from the Plug & Pray development approach
  • Embrace a real Plug & Play approach!
Hardware and microcontroller
Learn more

Dual-target Embedded Test Driven Development

Everything changes when we assure new code works on purpose while old code keeps working as it did just one minute ago


  • Embedded Software incrementally developed under less than a minute feedback loop
  • 100% tested at least under two different processor architectures
  • Comprehensive suite of automated specifications
  • Better sleep patterns and less burn out across the whole team
  • Out of the Box tools: mutation testing, static and dynamic analyzers
Host Firmware Development
Learn more

Can I Help You?

Proven Experience


Surviving between the hardware and its running software since 2005. 

I really know how difficult it is.

I learnt it by the hardest possible way: suffering

Let behind your survival mode and learn how to rule your embedded systems (again)!





Engineered Embedded Craft

Are you developing under less than a minute feedback loop?

If not, your best engineered solutions are still waiting to be unleashed.  

Let's put advanced engineering practices to work  (SOLID, TDD, Design Patterns, Mutation testing...) even under tiny bare-metal microcontrollers




C/C++ Articulated Courses


Create more long run portable embedded software and less hardware specific firmware

Modern software development techniques which lead to a decoupled, evolutive and portable architecture.

Guidance through practical examples running under real embedded devices.




  • SOLID Principles and Design Patterns
  • Architecture, Test-Driven Development, test doubles and managed coupling and cohesion
  • Unit, Integration and System testing, performed both in development host (Linux PC) and in target microcontroller
  • Practical development example (KATA) from scratch
  • Refactor your embedded code following the Boy Scout rule

What are they saying?


Amazing training about how to develop firmware following TDD methodology, sharing experiences, improvements and the benefits it gives in the long term. Thanks for the passion and motivation you transmit, and for sharing with us your knowledge!

David Ferruz Garcia

Senior Software Manager at MaxLinear

Our Firmware development team has quickly internalized a faster and better approach to create higher quality long run products. Excellent course, professional and trainer. Strongly recommended

Elías García García

R&D Director at Fermax Technologies

This course has certainly saved us months of headaches in the development of our projects. A great course from an excellent communicator and a mentor in the Embedded Software Craftmanship world.

Pablo Martinez Crespo

CTO Firmware at Cecotec Innovaciones S.L.

A much better approach to develop fully tested, highly reusable, greater quality embedded software while being decoupled from Hardware

David Sanz Vidal

Principal Embedded SW at Power Electronics

Are you interested in applying state-of-the-art Software Engineering practices to embedded development? This course is what you have been looking for!

Mario Cervera

Software Craftsman at LIFULL Connect

Enlightening course! Thanks to him, I learned the basics of TDD and embedded system programming good practices

Javier Barahona

Embedded SW Engineer at Witrac

Revealing course! From a passionate teacher, learning by test-driven coding in order to achieve clean working code that produces higher quality applications and avoids debugging time

Pablo Soriano

Embeded Systems & Hardware Engineer at Abervian | Energy Solutions

Clarifying, relevant and necessary! Essential to avoid continuing to survive in the world of development. I am looking forward to applying everything I have learned to my projects and continuing to improve

Claudia G.

Firmware Engineer at Cecotec Innovaciones S.L.

A very interesting, enjoyable, useful and easy to follow course for any software developer, coming from the embedded context or not. Great course and experience!

José María Martínez Martínez

CTO of Artificial Intelligence at Cecotec Innovaciones S.L.

Excellent course! His point of view regarding good practices in development in general and with embedded in particular is certainly interesting and relevant. Course attendees finished it with a high level of motivation, a good collection of practical recommendations, and generally very satisfied. I recommend it without a doubt!

Iván Gómez Rodríguez

Lead Software Developer at ThoughtWorks