Niko Heikkilä

July 19, 2021

Craftsman's Log - 2021.07.19

It seems that the summer heatwaves have paused so I can once again focus on writing. So here are a couple of good picks I've read and watched while lying in a hammock drinking mineral water. 😎

The fabulous Mob Mentality Show ran a short episode about using mob programming in interviews. It turns out this approach has been familiar to me, and it has upsides to regular interviews interrogations. The key takeout is: what if your candidates could see the natural way your teams work, even for a brief time?

There's no end to the debate of writing good code comments. Moreover, these best practices will be topped by someone else's better practices in a short time. Let's not worry about that, though. I found rules 6 and 7 to be quite insightful. Editors can highlight and open URLs mixed in with the code, so consider following good scientific practices and disclose your references where helpful.

There's a grain of truth in this statement that you should be writing realistic code examples. My frustration raises its ugly head every time someone uses foo, bar, or baz in a code snippet to teach a particular topic. We are all professionals, and we can teach others using natural language — what is your excuse?

Even if you are not a test-driven development supporter (you probably should be 😉), this manifesto is valuable. When I was learning how to write tests, the Arrange-Act-Assert (AAA) pattern helped me wire my brain into a correct mindset. From there on, it was easy to grasp the Given-When-Then style of thinking used when writing specifications in behaviour-driven development.

"Writing tests is a part of our craftmanship. We can only have clean code if we have clean tests."

Starting a new project is a daunting task, especially with Python. People tend to throw in regular pip package management with loose unlocked dependencies and mess with virtual environments only to throw the project away and declare out loud that Python sucks. I hope in the future, Python could ship with more standardised tooling for setting up new projects. Meanwhile, here's a good starter guide.

If you're only giving a status report as part of your daily standups, you are likely doing it wrong. Fortunately, it's an easy part of the process to fix following this guide. For example, if anyone is blocked, how do we unblock their work? If a task is in progress, how do we help complete it so that WIP doesn't accumulate? If a prioritised job is not getting any attention, how do we solve that?