Random thoughts on software development

A few random thoughts & questions triggered by discussions, vibe-coding sideprojects & this blog by cline regarding how they manage AI memory (links below).

  • Any high level architecture & design documentation should be understood by AI. Mermaid (https://mermaid.js.org/) seems to have become the choice of most AI markdown-driven diagrams for all technical & non-technical documentation. What it means for you & me: move to such diagrams when documenting your designs. What it means for mermaid: \(\)$.

  • Figma has been a leader in UX all these years. We evaluated a tool https://www.builder.io/blog/figma-to-code-ai - to convert a Figma project to code. It did a good job but we ended up dropping the idea because the generated code didn’t understand business entities. There were too few reusable pieces of code. The generated code was also non-compliant with i18n, accessibility & dynamic behaviour. What would have helped is if the figma selections (objects) themselves could have been annotated in some way. Figma will need to reinvent itself to be ‘functional’ in addition to looking good. Imagine a scenario where you can tell Figma about your high level business entities & annotate its files. The code it would now generate would (hopefully) be more business aware.

  • In discussions with peers & mentors, I see the software development lifecycle morphing. Earlier, a software project would follow the process:

Before After
Mermaid diagram (before) ```mermaid graph TD A1[Start] --> A[Solution Design] A --> B[Create a Prototype] B --> C[Iterate] C --> B C --> D[Design] D --> E[Write Code + Tests] E --> F[End] ```
Mermaid diagram (after) ```mermaid graph TD A1[Start] --> A[Solution Design with AI] A --> B[Create Prototype with AI] B --> C[Tweak Prototype with Inputs from UX] C --> D[Generate Design with AI] D --> E[Iterate] E --> D E --> B E --> F[Tests + Code generation with AI] F --> G[Iterate] G --> F G --> D G --> H[End] ```
  • Observations:
    • While the number of steps seem larger, each individual step is actually substantially shorter.
    • The skills necessary during development will no longer be syntactical knowledge of a language but its nuances such as better memory management, security, etc.
    • Iterations will need to flow back as improvements to prompts in any earlier stage
    • Developers will have to be conscious about what to stop the AI from doing (ex: generating code that is already available as a library)