Skip to content

James Grenning’s Blog
Syndicate content
Blogging about Agile Development, especially embedded. Follow me on twitter: jwgrenning
Updated: 2 hours 54 sec ago

Report from the field on TDD in embedded development

Mon, 11/24/2014 - 23:11

Thanks James.

Upper management actually asked me to share my TDD experience as well & so I just published an article internally to our Embedded Software newsletter describing how TDD helped my project. Here’s the summary from that article (I think the dates really say it all):

My doubts that TDD could be used for an embedded application with an emphasis on external peripherals have been eliminated, and I have found the time invested in writing tests and mocks to be well worth it.

I find it compelling that

  1. I required only 4 days of actual hardware testing before achieving my integration goal and that goal came essentially 2 months ahead of schedule.
  2. For the past 5 months, since May, I have not used the in-system Debugger at all and instead rely on TDD to minimize the introduction of bugs in the first place.

Based on my experience, I found TDD to be a positive feedback exercise – passing my first tests & catching bugs immediately, encouraged me to write more tests, which lead to more successful results until I now have a high level of code coverage and a handy set of regression tests. (And since I wasn’t frantically debugging in the lab, I had enough time to write this article!)

Thanks, Name Withheld

Categories: Blogs

Inspiration from Leonardo da Vinci

Sun, 11/16/2014 - 09:12

While in Singapore, we visited the Leonardo da Vinci exhibit at the Marina Bay ArtScience Museum. We took the guided tour with expert from Milan. We think he was a Catholic priest by the roman collar. We were both amazed at the great influence and knowledge da Vinci had in math, science, art, music, technology, weapons, architecture…

He started with a disadvantage; he spoke no Latin, the language of the educated. His accomplishments would have been amazing if it were 10 people rather than just one. You better go read more here about him.

Leonardo da Vinci believed in experience and observation over dogma. In this we may be able to call him one of the great-great*-grandparents of Agile, Extreme Programming, and Deming’s PDCA.

Leonardo was a religious man, and he believed that God speaks to man through math. He saw the Golden Ratio as the mark of God. Many of you know the golden ratio through the Fibonacci sequence used in Planning Poker. I don’t think that God’s hand is part of software estimation in any form. That’s all on us. It is fascinating how it appears throughout nature and that the polymath Leonardo saw it so well. For you math types, here is an interesting description of the relationship between Fibonacci numbers and the golden ration.

Another cool fact about da Vinci, his written works are all in mirror writing. You have to look in a mirror to read them, or turn your brain inside out. There are two main reasons the scholars surmise. The popular reason is that he was trying to hide his work. Our guide’s more informed reason is that he was left handed. In those days, writing was done with a quill and ink. A left handed person would make a pretty big mess of that. There is no mess, just precision. These drawings are quite small with very fine detail. Mirror writing is a rare skill it seems.

He actually did not reveal all his work, but not necessarily out of secrecy; he just kept all his notes and did not try to publish them. It sounded like he was somewhat of an introvert.

Leonardo taught drawing. He had his students use a silver point, and duplicate his drawings. The silver point could not be erased. I guess that would have led to the artists being very careful. Copying Leonardo’s work meant they had to learn to draw as he did. Not until they mastered drawing with the silver point were they allowed to use paint. He focused on craftsmanship and growing knowledge and skill.

Here are a few more photos

This is a picture of some of Leonardo’s geometry, witnessing the symmetry and attempting to find a way to square a circle.

That is a picture of the enlarged image that covered a wall. We also could see the original in a dark and frigid room. The room conditions were to protect the 500 year old documents. The original was about 6″ wide. His writing and drawing was precise and tiny in all these works.

da Vinci had drawings for the construction of a water lift. Here is the model build from it. His drawings had detailed measurements on dimension and construction.

It kind of looks like a modern day grain elevator.

We also saw the original of this drawing. Right click this one and open it on another page to see the detail.

Again, the precision and measurements allow physical models to be built.

The guide told us that if Leonardo had titanium, he could have built these so they could fly. Leonardo knew that men did not have the strength to actually fly with these wings. It is important to know limits, but he did not seem to be constrained by any conventional wisdom that went against what he could witness.

da Vinci used his knowledge and skill from one field and applied them to others. We can all learn and be inspired from him.

Seeing what da Vinci accomplished and hearing his approach, reinforces that we need more of this in software development. Learning from observation, mastering your craft, preferring observation over dogma, experimenting, and learning from failure should be valued more and sought after. Let’s take the lesson to Scrum users. The cycle of Scrum is essentially an observe and improve cycle. Are you cycling, but not bothering to observe and approve, concerning yourself only with the dogma of Scrum? What would Leonardo’s approach software be?

You can find some more of my photos here.

Categories: Blogs