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?