Developer Experience - 5 Core Principles

3 min read


Improving DevEx means addressing several time sinks in the development process:

  • Time to write the first code: How quickly can a new developer start contributing?
  • Time for running tests: Are your tests efficient and not a roadblock?
  • Time for getting code reviewed: How can you make code reviews quicker and more helpful?
  • Time to make new versions: Can you deploy new versions without a headache?
  • Time for QA: Is your QA process a bottleneck?

Out of all these, optimizing the QA process can often yield the quickest and most impactful returns.

1. A Strong Readme

Your project’s Readme is the first encounter a developer has with your codebase. Make it count. It should guide them through the project and provide a clear starting point. Here’s an example structure:

  • Welcome, New Developer
  • Project Background
  • MVP Specifications
  • Code Style Guidelines
  • Linting Procedures
  • Testing Instructions
  • Development Workflow
  • Running Tests
  • Understanding the Database Model
  • Translation Guidelines
  • Deployment Process
  • Overwriting Staging Environment with Production Data
  • Managing Credentials

But it’s not just about structure; it’s about storytelling. Share the journey of your project—its inception, evolution, and the challenges it has overcome. This approach not only informs but also engages your developers.

2. Continuous Integration (CI)

CI is non-negotiable in modern software development. A CI server automates the build and test process, providing immediate feedback on the health of your codebase. It should:

Check if the code compiles. Run tests automatically. Generate accessible reports for the team.

A properly configured CI pipeline saves time for developers and maintains code quality for the project.

3. Linting

Code style may seem trivial, but it’s about more than just aesthetics. Consistent code style:

Makes code easier to read and understand. Helps prevent certain types of errors. Simplifies code reviews.

Automate this process with tools like RuboCop for Ruby or ESLint for JavaScript.

4. Deployment

A good deployment process enables you to release code to users or testers reliably and frequently. It should:

Help identify bugs early. Keep incremental changes manageable. Improve team collaboration by saving time.

Deployments should come after successful linting and testing and should be notified to the team efficiently.

Linking your code repository to your project management (PM) system ties code changes to the project context, such as user stories or tasks. This linkage is invaluable for QA and ensures that every code change is accounted for and can be traced back to a requirement. Conclusion

These five principles are just the beginning. If you’re keen to dive deeper into creating a more productive developer experience, subscribe to my channel. Over the next few weeks, I’ll share 100 tips that have helped me and my clients build software faster and better.

Have questions or suggestions? Shoot me an email at [email protected].

Available slides

  1. slides

Till Carlos

I'm Till, a senior developer who started a software company. I explain software concepts for people in leading roles.