Course code: BARR-13
  • Years with company: 3
  • Years programming: 6
  • Primary programming language: C
  • Other programming languages: Python
  • Unit test harnesses: JUnit, Behave
  • Something else: I'm an Embedded Software Engineer developing firmware for Bluetooth Low Energy chips.
  • Test practice now: We usually test the firmware on the device, either using the debugger, oscilloscopes, DIOs or checking the final behavior of the device using manual tests. We are starting to deploy automated tests with Python + JLink, using SEGGER RTT to output traces and parsing the log on the host PC.
  • Target system: Cortex-M
  • Dev tools: JLink, Eclipse, GCC, Keil, IAR, Python
  • Build time: 1-5 minutes
  • Coding standard: We code in C and use the most of the basic rules. We have our own internal company standard which specify some extra rules.
  • Function too long: I use a few subjective ways: 1. when the function does more than it names says it does; 2. when there is repeating code inside that could be abstracted in another function; 3. when you have to scroll multiple times
  • Code reviews: We do code reviews in Crucible, linked to Jira for every code change. They are usually very useful.
  • Code time: 50
  • Test time: 20
  • Debug time: 30
  • Favorite thing about dev: It's fun! I like how you can resolve the same problem in different ways. In other words, I like to spend time designing generic solutions for problems that arise in different areas/devices, etc.
  • Least favorite thing about dev: Maintaining legacy/badly designed code.
  • Tdd knowledge: It seems to focus on writing tests first and then writing firmware to pass the tests, instead of the other way around. I hope it can be be helpful to improve code quality and testability.
  • Why are you attending: I want to learn more about TDD. As the teach lead of my team, I would love to bring in a new way of developing software and hopefully improve the quality, maintainability and testability of what we deliver.