Intro
I've decided to follow those principles/rulesets/methodologies/whatsoevers:
- BDD: Behaviour Design Development
- BSSN (as explained in the last post ) Best Simple System for Now
And for my documentation, and any other aspects of my life, if my brain allows me to do the changes
- JBGE: Just Barely Good Enough
Let me explain what are those letters, because if it was me reading this thing some time ago, I'd have to google them:
BDD
It's more or less like TDD (Test-Driven Development), but you work around "functional" behaviour and not code accuracy. The process is (summarizing) like establish samples for all functional requirements. The same you'd do for TDD, but more like a check list and not necessarily pieces of code.
My approach was (more about the past used later) to convert those examples into tests, because in my naivety I thought it was always possible (it's not, therefore that past used before).
So, I must build tests, but not for every action/decision, but for each sample provided by the product owner or whoever gives me the requirements. It seems a slight change, but my feeling is that it will save a lot of time overthinking, in the line of
BSSN
It's easy, and I explained it in the last blog entry, what I will not link again. The main goal is to build NOW, the best system for the current requirements, ignoring (or trying to ignore) future not defined "what if"'s.
What's the point of build an entire set of classes to determine if a product's code begin with "E" if you will only use this condition in a small program? None but overzealous-ness.
So, what should we do? We put a single IF for the material code, and (this is important) we note somewhere "business rule: if material code begins with "E" used in report ZSOMETHING.
If in the future, in another code object we need to check that "E" thing, we will check the document for that business rule, we'll find it's used in the ZSOMETHING program, and THEN (and not before), we will extract a method for it (your criteria about how complicated you'll make it).
Got it? I wish, so I'll keep rambling.
JBGE
This is something I've read while I was discovering (for me, it seems it existed from long time ago, like America before Columbos tumbled over it) Agile. Not sure where.
It was about documentation, the clever guy who wrote the book I was reading was ranting about complex and idiotic documentation, while trying to keep on me the idea that some documentation is useful/required. But he was trying me to preserve my sanity by explaining that I had not to create a dozen PDFs for each step of the development process if they were not required by someone who had to justify their salary.
The point is that documentation must be "just barely good enough" to complete those things that the code could not show "per se".
I loved it, and lately I'm trying to exchange perfection or "the best possible" by JBGE in most parts of my life. I need the energy I'm spending trying to do "best" or wasting trying to reach perfection.
The point is "barely good enough" does not mean "it works", it means "it works, it's easy to maintain, it's easy to upgrade, will last". Clean, if you want.
Plot twist
I spent today a lot of time trying to convert very complex requirements (we have in some areas more exceptions than cases) into examples for BDD. I even had to use some AI trying to find a way, but even the AI was unable to provide me some useful tests.
Until we noticed I was prioritizing the wrong way. It's not the method over the phylosophy (how I hate this word, for Crom). I was trying to put BDD before BSSN, and it's plainly wrong.
If I must overthink my sample tests, it's probably because they are not example-able. By trying to do it, I would break the "simple" of BSSN, and, even worse, waste more time creating the tests than the whole set of objects I must create. By far.
What now?
Now I will re-think the process, and put philosofy (ARGHHH) before methodology. So, I will forget those tests and just create a simple testing document asking the users to verify there are not missing data and things like that. Simple and will work... for now.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.