For 15 years I've practiced Behavior Driven Development, focusing on what to build rather than how to build it. It made me a better developer but it also made me indifferent to most new technologies. Then AI coding agents came along and everything changed.
Last week a colleague asked me what the purpose of the async keyword was in JavaScript. Not because he didn't know how to use async/await. He was wondering why the async keyword was needed to use await. This set me off on a quest to find the answer. To avoid beating around the bush: its purpose is backwards compatibility.
Git makes branching easy. Coming from other version control systems the work flow isn't always as easy to understand though. Here's what I've found works well when using Tortoise Git.
The Don't Repeat Yourself principle is important. But it's not the only important principle or consideration for software design. Like all good things it should be used with caution and afterthought.