TLDR: Treat Devin like a junior engineer. Assign Devin tasks a junior engineer or intern could figure out if provided with sufficient, clear instructions. Remember to instruct Devin with the level of detail that you would give to a human coworker.

Best Practices

 Start your day by putting multiple Devins to work in parallel:

  • Think through your TODOs, and carve out small tasks that a team of interns (Devins) can help with.
  • Return to draft PRs waiting for review around lunch.

 Tag Devin on Slack threads for quick fixes:

  • Devin is great for tasks that take 30 minutes but often end up in large backlogs for weeks.

 Use the VSCode Extension for small refactors:

  • The Devin VSCode Extension makes it easy to hand off work while you focus on your primary task.
  • Use Cmd+G to quickly share code snippets with Devin.

 Focus on easily verifiable tasks:

  • Ideally, it’s as easy as checking that CI passes or testing an automatic deployment. Avoid ambiguous tasks where it can seem like the task was completed properly but something else is happening.

 Start small:

  • As you’re getting started, start many small runs to find the best use cases for Devin.
  • Try not to spend too many (>10) ACUs on one run. Devin’s performance degrades in long sessions.

Evaluating Tasks for Devin

When deciding if a task suits Devin, the first question to ask yourself is: Could a junior engineer figure this out given enough time and context?

Pre-Task Checklist

Task Complexity

  • Consider what judgment calls and hard decisions are needed
  • Identify potential failure routes an intern might run into
  • For tasks requiring advanced domain knowledge, break them down further or provide relevant context

Task Definition and Scope

  • Good tasks have a clear start and end, plus success criteria (e.g., passing tests, matching an existing pattern)

Available References

  • Are there examples or patterns for Devin to follow?
  • Can you provide prototypes, partial code, or existing patterns from the codebase or docs?
  • It’s really helpful to provide links or filenames for Devin to look at.

Success Validation

  • Tasks with test suites, lint checks, or compilation steps yield better results
  • Tasks with subjective standards can be trickier

Review Effort

  • Ideally, you just need to see that CI passes, or you can quickly test an automatic deployment

Task Size

  • For large tasks, consider breaking them down into sub-tasks or multiple sessions
  • Splitting large requests into smaller, manageable chunks helps Devin stay on track

Post-Task Review

Monitor Session Time

  • If Devin repeatedly encounters session usage limits, the task might be too complex
  • You might need to provide more detailed instructions and guardrails
  • Consider investigating where Devin is spending its time
  • If Devin is struggling with its dev environment, revisit the Workspace setup
  • Finishing the task yourself can be faster than trying to get Devin back on track

Learning from Devin’s Mistakes

  • In your future sessions, provide more context or instructions to help Devin get past previous obstacles
  • Consider adding or approving Knowledge so Devin remembers things it learned from previous sessions