... or, why LLMs have no place in internal communications of high-performing organizations. Organizations depend on their inner relationships. The quality of these relationships often make or break an organization’s mission: Is there enough trust between peers to collaborate? Are leaders able to motivate and inspire? Are we willing to make sacrifices for each other? Relationships are shaped by communication, with all its facets. People read far between the lines, looking for authenticity ...| Morris Brodersen
Some time ago, I helped build a small translation feature. Our users regularly needed to translate some of their assets, and we figured it would be straightforward to integrate translation right into our platform. In the morning, I received a UI design file and got to work. In our backend, translation was already available as a reusable primitive. Based on that, implementing a user-facing endpoint for translating this specific kind of asset took less than an hour. As for the frontend, th...| Morris Brodersen
I often follow the functional core, imperative shell way of constructing software: Isolate business logic into a set of pure functions (the functional core). Implement side-effects and mutable state in a thin layer around the core (the imperative shell). This not only shapes how I write code, but also how I think. When designing a software system, I’ll assume the functional core and the imperative shell are independent. This allows me to ignore servers, storage, networks, and other technica...| Morris Brodersen
I find it useful to treat agile software development as an outcome, rather than something we can adopt. Taking that perspective, we can invert the problem and ask: What is making us less agile, right now? The answer is often surprisingly tangible, and rarely about missing agile methods. It is about the concrete friction we encounter when trying to get work done. For example: Slow builds Deployment dependencies Cumbersome software architecture Recurring manual verification of changes Hand-over...| Morris Brodersen
Recently, a colleague asked me for a code review on some complex UI changes. The idea was to make an error-prone form easier to use by displaying warnings in the right moment, and automating various state changes in the background (think “smart configurator”). The requirements were given upfront, so my colleague was in execution mode, turning these requirements into code. Glancing over the pull request, nothing stood out as problematic, but I didn’t feel ready to approve the changes bef...| Morris Brodersen
Recently, a colleague asked me for a code review on some complex UI changes. The idea was to make an error-prone form easier to use by displaying warn...| morrisbrodersen.de