Weekly review cw 21
From a small, inconspicuous comment like FIXME
to a two-week feature implementation, any sprint planning can be successfully ruined.

Tip of the Iceberg
While rounding up the backend for digital patient documentation this week, I worked on an inconspicuous FIXME
in the code. This comment contains an assertion about changing the prescription status with the description assertPatientAlive
. The idea is to ensure that prescriptions can only be activated for patients not marked as deceased in the system. So far, so logical and straightforward.
The first step was to define how the marking is done in the data model. Since patients are usually alive, it makes sense to mark death. This raised the question of when and how this marking is done. Previously, the concept of prescription cancellation existed. A reason is given, e.g., if the patient has moved, if a participation goal has been achieved, etc. Another reason is "patient deceased." The logical consequence of a prescription cancellation is not only to cancel the prescription, but also to mark the patient as deceased.
This patient's marking raises several questions:
- How do I mark whether a patient has died in the patient list or the detailed view?
- How can I undo it if someone has made a mistake and marked the wrong patient?
- If I mark the patient accordingly, or indirectly by cancelling the prescription, wouldn't it make sense also to cancel any prescriptions running in parallel?
- If I cancel the prescription, the customer wants the doctor's report to be created automatically. So, how do I trigger this process?
What started with an innocuous code comment kept me busy all week, leading to many exciting architectural questions. Among other things, I had to solve the problem of restarting such a complex process, which can abort or crash in the middle for various reasons, without executing previous steps twice (keyword: idempotence).
Ultimately, the comment revealed that a comprehensive feature was not specified or overlooked. Fortunately, the test-driven implementation was a lot of fun, despite the headaches it caused.
Table Tennis Annual General Meeting
In my article about my training, I gave a brief insight into how I was able to use the knowledge I gained to hold a successful annual general meeting. I enjoyed the evening and fell asleep feeling good. The first year of getting to grips with things is over. I have an overview. Now it's time to move the department forward and set goals. Thanks to the newly filled positions (e.g., equipment manager) and the continued leadership of reliable veterans, I have a top team around me with whom working together is fruitful and pleasant.
New Footwear
I've been reporting over the past few weeks that I can run long distances (for my standards), but not fast. The uneven running can only be remedied by new insoles or new shoes (or both). My shoes are already old, so I decided to try new footwear. Sturdier hiking boots were a practical option since I mostly run on the forest floor. Running has already improved significantly after just a few runs. I haven't pushed my limits on a short run because my focus is on long Zone 2 runs. I hope I find a good opportunity next week.
- Monday 11 km run
- Tuesday 11 km run
- Wednesday rest day
- Thursday rest day
- Friday 15 km run
- Saturday rest day
- Sunday cure cough
If you'd like, follow me on Strava