I have just attended a Code Retreat event in Valladolid, facilitated by Enrique Comba Riepenhausen. This was an excellent opportunity to meet fellow geeks interested in continuous learning, that were willing to spend a whole Saturday doing pair programming, exchanging ideas about processes and agile practices, and above all, having fun!
Learning is about getting out of your comfort zone, which was definitely my case, as I had to follow practices like TDD or pair programming, and I even paired with guys writing groovy, although the most popular languages were java and python.
Thanks a lot to Enrique, the sponsors and the organizers!
I can only encourage you to look for Code Retreats in your area, or why not organize one yourself? Really worth it!
Lately I keep hearing a lot about software companies moving into agile development processes. Irrespectively of the hype surrounding these news, I think some agile practices are really worth implementing in an embedded software environment: I have had great success e.g. with fast development cycles and continuous integration.
However, we need to be cautious with specific issues surrounding embedded systems, which I think make some of the agile practices less suitable for embedded software development:
- Pair programming is quite difficult to implement as embedded software is complex, with issues involving hardware interfaces, real-time behavior and multitasking; this complexity means it is not easy to achieve a uniform level of knowledge across different areas for different engineers to contribute effectively through this practice.
- Continuous customer communication may not be effective as most of the embedded systems software remains hidden from the customer, who usually is not able to grasp the inner workings of complex software.
This is what embedded guru Jack Ganssle thinks about the topic. What do you think? Are agile practices definitely worth using in embedded systems development?