Course code: BARR-10
  • Years with company: 7
  • Years programming: 26
  • Primary programming language: C
  • Other programming languages: Java, C#, shell
  • Unit test harnesses: junit. https://github.com/keithn/seatest modified to run on-unit for our firmware. I created a number of pseudo unit-tests with it, but the team didn't adopt it. In addition, we ran out of room on our processors to keep the tests around.
  • Something else: I have a 6 year-old daughter, so spend most of my time outside of work with her. My wife runs a photography business, so I get to be involved in her creative process and running of her business.
  • Test practice now: Hand testing, a custom in-unit test framework is sometimes utilized. CLI environment and debugger often used to introduce conditions. Custom code to change paths.
  • Target system: Microprocessors, typically ARM based running FreeRTOS, but a decent number of Microchip PICs. Some Embedded Linux is appearing. Some java for non-embedded.
  • Dev tools: IAR, Jenkins for Continuous build. Segger J-Flash. Tracealyzer
  • Build time: 31-60 seconds
  • Coding standard: It is not formalized. However we do have pretty consistent coding standards. We notice coding standard issues in code reviews (although this is not the focus of the reviews).
  • Function too long: We don't. I'm personally evolving to write shorter functions, however my entire team is not on the same path. Architecture is helping with this a bit as our architecture is well defined.
  • Code reviews: We try to review everything.Reviews are deskchecks for small changes, meetings w/ 2-4 people for bigger changes. Focus on fitting in the code architecture + error paths. Led by the developer.
  • Code time: 20
  • Test time: 20
  • Debug time: 20
  • Favorite thing about dev: Taking on a new challenge and meeting it. Learning new things. Delivering successful product. Enabling others to be more successful via training or tools. Collaborating with others. Solving difficult architecture problems in clean ways.
  • Least favorite thing about dev: Schedules that don't allow for things to be done right! Politics.
  • Tdd knowledge: Create test. Run test. It will fail. Write code. Run test. It should pass.
  • Why are you attending: I have wanted to introduce unit and automated tests for our firmware projects for years. My organization is getting behind the need for unit level tests to supplement the system level testing we already do.