Course code: WEB-35
  • Years with company: 1
  • Years programming: 40
  • Primary programming language: f#
  • Other programming languages: c#; rust;
  • Unit test harnesses: fsunit; sunit; nunit; xunit; junit; cucumber jvm; cucumber ruby; cucumber rust; fitnesse with smalltalk fixtures
  • Something else: got into tdd (desktop, smalltalk) 20003 and it breathed new life into my career; ten years ago worked on an eXtreme programming team on smalltalk and c++ embedded linux, first exposure to TDD embedded linux. We used fitnesses. This is my first TDD bare metal time. Enjoying rust. Left C/C++ in the rear view mirror a decade ago, hoping I can pivot back to them in class, or pair in or use rust.
  • Test practice now: ideally most of my day -- above 80% -- spent in the happy place of the red-green-refactor micro loop. 3 months into job here, about 5% in that place, 95% in what Geepaw calls GAK activity, others, yak shaving.
  • Target system: bare metal rust some kind of STM processor (new to this space I am)
  • Dev tools: rust; c++ for the legacy bits; applying strangler pattern to eliminate that, in hopes of 100% rust 0% C++
  • Build time: Under 10 seconds
  • Coding standard: I apply Beck's 4 definition of done (passes test? reveals intent? no duplication? fewest elements?)
  • Function too long: I come from cultures (Smalltal, F#, Lisp) where a ten liner is a long one.
  • Code reviews: we mob - reiews are real time; asynchronous review (I'm looking at you, Git PR) are for those sad souls who default to solo.
  • Code time: 10
  • Test time: 45
  • Debug time: 45
  • Favorite thing about dev: getting paid to think; and pairing in to think together? joy squared.
  • Least favorite thing about dev: bugs - best tester in world taught me to call them mistakes
  • Tdd knowledge: I've been coaching whatever team I'm on in it the past decade, but I am still learning. Recently F# way -- and to an extent Rust -- lean on compiler: can my compiler be my unit test? Can I write code in such a way if it compiles it probably works?
  • Why are you attending: I want to learn TDD in embedded rust; I've a hunch the principles are the same (decouple I/O from branching logic) but, looking at our code base, shake my head: why are we so dependent on hardware for every little thing? What am I missing?