META POST about SPITE
I get into spurts of writing. Not sure what/why gets me rolling... Muse, a fickle thing. Not really. My muses are spite and hate. I hate not knowing, and I'll do things out of spite 'cause I hate the (lack of an) example.
Which is what the next series is gonna be. It's double spite.
I really didn't like the TDD book I read and reviewed. When I went through Kent Beck's TDD By Example... I don't like his example. Great book overall... just... feels hollow.
I've found that a lot of the old-cis-white-dude books (which I'll eventually be... old, not a book.) that are purported to be great are either superficial and actually crappy books (see Clean Code Review. (I re-read that review... fucking hell I hate that book now.)
Even the books I recommend, like Prefactoring - Have assumptions. It's like you know how to do good code, or good testing, but just need a push to get great.
They have a superficial, HELL YEAH! but... substance wise, they aren't holistic; and I'm not sure any single book could be. Clean Code isn't even useful; it's so superficial and so many assumptions that it CAN'T help you become a great developer.
OK, moving past Clean Code - Thought it does drive a lot of the hate sided muse.
TDD By Example and Learning TDD use a Money example for thier TDD. Technically t's stock currency exchange... but never gets to stocks... Either of them. They do money conversion and ... the fact it's something to do with stock... NEVER ENTERS INTO IT!!! WHAT THE HELL!?!?!?!?
OK, it does in Learning TDD for the naming and placement of behavior (which I completely disagree with) because "oh yeah, it's stocks, so... uhhh... portfolios do exchanges" ... No! Money has nothing to do with a portfolio! There's NO STOCKS INVOLVED!!! GAHHHHH!!!
It's really frustrating to see a concept so absolutely fail to be included. Both books do it, TDD By Example sticks with just money. I didn't notice any arbitrary inclusion of stock concepts... but it sticks with just money. SO STICK WITH JUST MONEY!
Right - So... clearly pissed off. Hating this crap. Crap books on topics I love kinda ... get me riled up - So; for spiteful purposes. 'Cause if I'm gonna knock it, I'm gonna do it.
If it was JUST in Learning TDD... I'd probably let it slide. But since I am knocking a bit of a big name for something in a book I still recommend... I gotta show what I do. I gotta put my ideas out there to be knocked.
TDD By Example has a lot of other great content. And the TDD is good - just... to many gaps in the process to be able to get someone far enough along to start to see the strength when ACTUALLY using it.
So... yeah... I'm saying Kent Beck wrote some great stuff; but the TDD in the book is... not so great.
I TDD'd Money. My way. That'll be coming up as a blog series. Yes... series. It's about 50K words (including code and checklists, blah blah blah).
Trust me, no one wants to read that many of my words all at once.
It's written... but I gotta get commit links in place. It's also very micro commits.
My commit logs and frequency is for Nichole. She'd probably try to murder me if I didn't do it the way I advocate.
While going through the Money TDD exercise, I have a lot of points where I go off for a paragraph or three about an idea, or a reason, or a heuristic... Things I'm thinking while I'm using TDD and refactoring.
I realized that... hey... I should have something EXPLICIT about how I look at code while doing TDD. So... to preface my Money TDD Example; I'm doing !!!!!FizzBuzz!!!!! TDD, my way. Which will result in a microobject'd FizzBuzz, which is similar to the one I did while at Deliver Agile.
This is what I got up coming.
The FizzBuzz TDD is going to develop a flow chart of how I go about TDD. At the Practice Level. When I say practice level, I don't mean simple. No no no.... Practice level is where we apply the strictest standards. The most rigorous review. It's hard to do every piece of every step to all of the code every time. But... That's what we do when we practice. We focus on doing it perfectly so we can do it better when we're actually doing the work.
I'm following the flow chart as it's being developed. If I do something new for any reason, I'm adding the branch and new condition into it.
I'm still working through it. I've got nearly a week of nights into it... and have completed the first requirement...
public string Transform(int source){
return source.ToString();
}
Lots of effort to get that code written.
So... hopefully when I'm done I'll have some content for you all to enjoy... and I'll be able to stop writing meta posts because I feel bad I haven't written anything.