development
-
🔧 Why Go Works Well for Building CLIs
The last post discussed the importance of command line interfaces (CLIs) in the AI agent stack. The next question is — what language works best for building CLIs? Consider the requirements: Often a CLI needs to interact with APIs. Easy to …
-
✅ Each release is 100% done
One common problem in product development is developers not finishing a feature or task. They get it to 70% done and rush off to the next thing. Bugs linger, edge cases go unhandled, testing falls short, and the release process remains inco…
-
❓ What is the difference between "releasing" and "shipping"?
Someone asked: “What is the difference between releasing and shipping?” Are they the same thing? In one sense they are. However, drawing a distinction here—though somewhat arbitrary—is helpful in this context. Release: Make something availa…
-
🚨 Problems with not Releasing First
What is the downside of not Releasing First? Integration problems Manufacturing issues Last minute bugs appearing Lack of product fit (does not solve customer’s problem) The common theme is unforeseen problems that typically surface late …
-
📖 When should you write the user manual?
Most of the time, teams write the user manual at the end of a product development cycle right before the Big 1.0 Release. It is one of those things that is not much fun, and teams subconsciously put it off while fighting bigger fires. But w…
-
🎬 Is a Demo the same as a Release?
Some development teams have a weekly demo where they might show what they are working on to others in the company or the customer, which is a great idea as it encourages hitting milestones and early feedback. However, is the “demo” just ano…
-
🚀 How far do you take releases?
Thus far, we have defined a release as something that is useful and high-quality. Typically, we think of a release as something formal - v1.3.8 that is packaged, built, and announced. But we can push this further. What about pull requests? …
-
🎯 Standards for internal vs external releases
It is natural to think of internal releases as “low stakes” - if it crashes and burns, no big deal. It’s just an experiment, right? Near production release, we’ll toss it over the wall to QA/Manufacturing and find all the issues. This is pa…
-
🚀 Shipping faster leads to predictability
Shipping faster does not only mean getting to v1.0 faster (or even on time), but also many internal releases at a good rate. This is the only way to bring predictability into the development process.
-
📦 CDPD - Container Driven Product Development
When updating the Simple IoT documentation, the question arose - how to install mdbook and a few plugins? Of course pacman has part of what is needed. In the past cargo has been used, but that is slow and not a good fit for shared tools. Th…
-
🥉 Good, fast, cheap - choose three
A familiar phrase states: “Good, fast, cheap. Choose two.” This is similar to the development triangle. Which states that everything is a tradeoff. However, improving all three becomes possible when doing things differently. That is the …
-
📝 DDPD - 🧪 TDPD - 🚀 RDPD
We have been discussing document, test, and release-driven development (doing these things first before implementing features). This ensures the product: Meets the customer’s needs (DDPD). Is quality (TDPD). Can be modified any time and re…
-
📝 DDPD - Document Driven Product Development
Building on TDPD and RDPD, Document-driven product development (DDPD) offers another perspective. Ideas: Document the feature from the user’s perspective before implementing anything. Keep the documentation close to the code (same repo, et…
-
🚀 RDPD - Release Driven Product Development
Yesterday we talked about Test-Driven Product Development. Release-driven product development is another perspective. Build the release/deployment mechanism before implementing the design. Automate as much of the release as possible. This …
-
🧪 TDPD - Test Driven Product Development
We’re familiar with TDD (test-driven development) in the software world. Basically the idea is to create unit tests before implementing a feature. What if we extend this to systems, hardware, and even mechanical? Write end-to-end system te…
-
🔀 The Power of Git* workflows
Git + Git hosting platforms enable both local and cloud-based workflows. Local: Lightning fast access to files - leverage the power of your local computer Use powerful native tools (editor, e-cad, m-cad, AI agents, command-line tools, scri…
-
💻 Local First Dev
In the last couple decades, we’ve observed the success of SaaS web applications (Google Docs, Salesforce, Basecamp, Trello, etc.). These applications have unleashed collaboration using the web platform. Before this, users might have emailed…
-
💬 The importance of effective communication
Recently, effective communication has been discussed. But let’s step back – why is communication so important? As developers, isn’t coding what we do? Think for a minute – how much time gets spent coding/designing vs. everything else? For m…
-
💡 Reflections from AI-coding a 10,000 line app
Lessons from AI-coding a 10,000 line app BRun is getting usable. Claude Code wrote almost all of it using Doc-driven development (manually write/update the docs, and have Claude write the code). Some thoughts: Claude is fast – there is no …
-
🚧 Three things that hinder product development
Not using new tech when applicable. Doing the same work over and over again instead of automating. Lack of collaboration.
-
⚙️ Three aspects of product development
Finding and leveraging existing technology. Developing some of your own technology. Mixing it together. All three are necessary.