Developer Experience and AI
Artificial intelligence and generative AI are transforming how software developers build applications and products. As AI capabilities in code completion, bug finding, testing, and documentation improve, developer workflows are enhanced and accelerated. However, thoughtfully incorporating AI into the developer experience remains critical.
When designing AI-enabled developer tools, aspects like trust, familiarity, and control shape how developers perceive and adopt new functionality. Developers want AI to act as a collaborator (think a pair-programmer) not just an auto-complete bot. The concepts that underpin human collaboration and teamwork should guide AI assistant design.
Trust as the Foundation
Trust is essential for developers to rely on AI suggestions and automations. Trust is earned over multiple successful interactions.
If AI-generated code behaves unpredictably or suggests inappropriate solutions too frequently, developers will dismiss or disable the functionality.
For AI to seem trustworthy:
- Suggestions must be contextually relevant to the code being written. Generic or overly complex recommendations erode trust quickly.
- The system should avoid unprompted major changes like rewriting code. Incremental assists feel more trustworthy than sudden shifts.
- Explain relevance and provide rationale when appropriate. Transparency into the AI's reasoning helps calibrate appropriate trust.
- Reliability and predictable behavior matter. Flaky or buggy features break trust.
- Start with high precision, modest recall. As developers gain familiarity, expand capabilities.
Source
The Path to Familiarity
Developers build mental models of how systems function through experience. Familiarity with an AI assistant's strengths and weaknesses takes time. With sustained use, developers learn to effectively leverage AI functionality.
Strategies for enabling familiarity include:
- Onboarding guidance and documentation on how best to collaborate with AI. Explain what it can and cannot do.
- Allow users to configure the AI to adapt it to personal preferences and workflows. Customization builds familiarity.
- Provide transparency into the AI's training data and highlight how user feedback improves suggestions over time.
- Plan for co-learning between the user and AI. They will mutually influence each other.
- Design interactions that leverage existing mental models of team collaboration in software development.
Control and the AI Partnership
Developers value flexibility and control over their tools. AI should enhance developer autonomy, not restrict it.
- Allow developers to easily accept, ignore, modify or revert AI suggestions. Mandating acceptance undermines control.
- Make AI functionality configurable and customizable. Users can tune behavior to their needs.
- Consider automated triggers for surfacing AI recommendations, but keep developers able to manually invoke suggestions.
- Provide opt-in/opt-out control for AI capabilities on a per-feature basis. Don't force adoption.
- Design interactions as collaboration between equals. Avoid framing the AI as superior.
By honoring trust, familiarity and control, AI can transform from uncanny automation to trusted partner. Developer-centered AI creates superhuman coder symbiosis.
Key Takeaways
- Build trust through reliable, contextually relevant suggestions. Avoid unpredictability.
- Enable familiarity by supporting co-learning and customization between user and AI.
- Preserve user control through optionality and configurability of AI functions.
- Design interactions that leverage mental models of collaboration and teamwork.
- Focus on assisting humans, not replacing them. Augment developers, don't automate them.