Top 12 Ruby Developer Skills to Put on Your Resume
In the competitive field of software development, having a standout resume can make a huge difference, especially for Ruby developers. Highlighting the top skills essential for Ruby development not only showcases your expertise but also positions you as a highly desirable candidate for potential employers.
Ruby Developer Skills
1. Ruby on Rails
Ruby on Rails is a server-side web application framework written in Ruby under the MIT License. It follows the model-view-controller (MVC) architecture pattern, providing default structures for a database, a web service, and web pages. It encourages rapid development by favoring convention over configuration.
Why It's Important
Ruby on Rails is important for a Ruby Developer because it provides a comprehensive framework that streamlines web application development through convention over configuration, DRY (Don't Repeat Yourself) principles, and a vast ecosystem of libraries (gems), enabling efficient coding and rapid deployment.
How to Improve Ruby on Rails Skills
Improving your Ruby on Rails skills involves a combination of expanding your knowledge base, practicing coding, and engaging with the community. Here are concise tips with resources:
Master Ruby: Deepen your understanding of Ruby to write better Rails applications. Learn Ruby.
Follow Rails Guides: The Rails Guides provide official documentation and tutorials that are essential for mastering Rails.
Practice TDD: Embrace Test-Driven Development to ensure reliability and maintainability. Start with RSpec Rails for testing.
Contribute to Open Source: Engage with the community and contribute to Rails or other Ruby projects on GitHub to gain practical experience.
Learn Design Patterns: Understanding design patterns in Ruby can help you write more efficient and clean code.
Stay Updated: Rails is constantly evolving. Follow updates and discussions on sites like Ruby Weekly and GoRails.
Optimize Performance: Learn to analyze and improve performance. Tools like New Relic and Skylight can help.
Master Database Design: Understanding relational database design and SQL can greatly improve the efficiency of your Rails applications. SQL Tutorial.
Explore Advanced Features: Dive into advanced Rails features, such as Action Cable for real-time features or Active Storage for file uploads.
Networking: Join Ruby and Rails communities on platforms like Ruby on Rails Link and participate in meetups or conferences to stay connected and learn from others.
By focusing on these areas and utilizing the provided resources, you can significantly improve your Ruby on Rails development skills.
How to Display Ruby on Rails Skills on Your Resume
2. RSpec
RSpec is a testing framework for Ruby, designed to create readable and expressive specifications for application behavior and verify them through examples.
Why It's Important
RSpec is important for a Ruby developer because it provides a comprehensive testing framework to ensure code quality, enabling behavior-driven development (BDD) for precise and human-readable specifications, thus facilitating efficient and reliable software development.
How to Improve RSpec Skills
To improve your RSpec skills and write better tests in Ruby, consider the following concise tips:
Learn the Basics: Ensure you have a strong foundation in RSpec by reviewing the official documentation.
DRY Your Tests: Use
before
blocks,let
statements, and shared examples to avoid repetition. The Better Specs guidelines provide best practices.Use Factories: Incorporate FactoryBot to create test objects efficiently, making your tests more maintainable and faster.
Test Behavior, Not Implementation: Focus on what your code does, not how it does it. This approach makes your tests more robust and less prone to breaking with implementation changes.
Keep Tests Fast: Mock external services and APIs to speed up tests. The VCR gem can record HTTP interactions, reducing test suite run time.
Refactor Tests: Just like code, regularly refactor your tests for clarity and efficiency. Keep them readable and well-organized.
Continuous Learning: Stay updated with the latest RSpec features and testing best practices by following resources like RSpec's GitHub repository and Ruby Testing Podcast.
Through consistent practice, leveraging the right tools, and staying informed on best practices, you can significantly improve your RSpec tests, making them more effective, maintainable, and efficient.
How to Display RSpec Skills on Your Resume
3. PostgreSQL
PostgreSQL is an open-source, object-relational database system that provides robust features to store and scale complicated data workloads. For a Ruby developer, it's a powerful choice for backend storage, easily integrated with Ruby on Rails through the ActiveRecord ORM, supporting complex queries and transactions with strong consistency and reliability.
Why It's Important
PostgreSQL is important for a Ruby developer because it provides a robust, open-source database system that supports complex queries and data integrity, seamlessly integrating with Ruby on Rails for dynamic web application development.
How to Improve PostgreSQL Skills
Improving PostgreSQL performance involves several key strategies tailored to your application's unique requirements. As a Ruby developer, focusing on efficient database interaction can lead to significant performance gains.
Indexing: Create indexes on columns often used in WHERE clauses, JOIN conditions, or as part of an ORDER BY to speed up query execution. PostgreSQL Indexes
Query Optimization: Use
EXPLAIN
to analyze and optimize your SQL queries for better execution plans. Using EXPLAINConnection Pooling: Implement connection pooling with gems like
pgbouncer
to reduce connection overhead and manage database connections efficiently. PgBouncerPartitioning: For large tables, consider partitioning them to improve query performance and management. Table Partitioning
Proper Data Types: Use the most appropriate data types for your data. Smaller data types consume less space and can be processed faster. Data Types
Vacuum and Analyze: Regularly vacuum your database to reclaim storage and analyze it to update statistics for the query planner. Routine Vacuuming
Concurrent Index Creation: When adding new indexes to large tables, use the
CONCURRENTLY
option to avoid locking. Index CreationUse
ActiveRecord
Efficiently: Optimize your use of ActiveRecord queries in Rails to reduce unnecessary database calls and data processing. Leveragepluck
,select
, and batch processing methods. ActiveRecord Query Interface
Incorporating these practices into your development workflow can significantly enhance PostgreSQL performance for Ruby applications.
How to Display PostgreSQL Skills on Your Resume
4. JavaScript
JavaScript is a high-level, dynamic, interpreted scripting language primarily used for creating interactive and dynamic content on the web, employing a syntax and programming model that may feel familiar to Ruby developers in its flexibility and object-oriented capabilities. Unlike Ruby, which is often used for server-side development, JavaScript is executed client-side in the user's web browser, though it can also run on the server-side with environments like Node.js.
Why It's Important
JavaScript is important for a Ruby developer because it enables client-side scripting to create interactive and dynamic web pages, enhancing user experience and complementing server-side Ruby applications.
How to Improve JavaScript Skills
Improving your JavaScript skills as a Ruby developer involves understanding the syntactical and paradigm differences between the two languages while leveraging your existing programming knowledge. Here are concise steps with resources to guide you:
Grasp the Basics: Start with a strong understanding of JavaScript basics. Mozilla Developer Network (MDN) is an excellent resource for solid foundational knowledge.
Understand Asynchronous Programming: JavaScript heavily relies on asynchronous programming. Learn about callbacks, promises, and async/await. JavaScript.info offers clear explanations and examples.
Explore ES6 and Beyond: Modern JavaScript (ES6+) introduces features that make JavaScript more powerful and easier to work with. ES6 for Everyone by Wes Bos is a great course to understand these features.
Dive into Frameworks: JavaScript frameworks can help you build complex applications. Depending on your project needs, consider learning React (React Official Documentation), Vue (Vue.js Guide), or Angular (Angular Getting Started).
Practice: Leverage platforms like Codewars and Exercism to practice JavaScript through coding challenges. These platforms offer an excellent way to hone your skills through practice and exposure to different problem-solving techniques.
Read Code: Reading well-written JavaScript code can help you understand best practices and advanced concepts. GitHub is a treasure trove of projects. Look for repositories with high stars in the technology you're interested in.
Contribute to Open Source: Contributing to open-source projects can accelerate your learning. It provides a real-world environment to apply your skills, receive feedback, and collaborate with others. First Timers Only is a good place to start looking for projects that welcome contributions from beginners.
By following these tips and utilizing the resources provided, you can effectively improve your JavaScript skills and adapt your Ruby knowledge to a new programming environment.
How to Display JavaScript Skills on Your Resume
5. HTML5
HTML5 is the latest version of the Hypertext Markup Language, providing the structure and content presentation for websites. It introduces new elements and APIs, offering enhanced multimedia support and improved semantic clarity for web development, which can be beneficial for integrating front-end features in Ruby-based applications.
Why It's Important
HTML5 is crucial for a Ruby developer as it enables the creation of modern, interactive web applications with enhanced functionality, supports multimedia elements without additional plugins, and ensures cross-platform compatibility, significantly improving user experience and accessibility.
How to Improve HTML5 Skills
To improve your HTML5 skills as a Ruby Developer, focus on understanding the core HTML5 structure and integrating it seamlessly with Ruby frameworks like Rails. Here are concise steps and resources:
Master Semantic HTML5 Elements: Learn to use new semantic elements (
<article>
,<section>
,<nav>
,<header>
,<footer>
) for better structure and SEO. HTML5 Semantic Elements.Responsive Design with HTML5: Embrace responsive web design principles to ensure your applications work on all devices. Use
<meta name="viewport" content="width=device-width, initial-scale=1.0">
and CSS media queries. Responsive Web Design Basics.Utilize HTML5 Form Enhancements: Leverage HTML5 form elements and attributes (like
placeholder
,required
,type="email"
) for better user input without needing additional JavaScript. HTML5 Forms.Incorporate Multimedia: Integrate audio and video in your web applications with
<audio>
and<video>
tags without relying on third-party plugins. Using HTML5 audio and video.Leverage Canvas and SVG for Graphics: Use Canvas for dynamic, scriptable rendering of 2D shapes and bitmap images, and SVG for scalable vector graphics. Both enhance the visual aspects of web applications. HTML5 Canvas Tutorial, SVG Tutorial.
Understand Offline Capabilities: Dive into HTML5's offline features like service workers and the Cache API to create robust web applications that work offline. Introduction to Service Worker.
Learn About Web Components: Explore web components (custom elements, shadow DOM, templates) to create reusable HTML tags for your components. Web Components.
Integrate with Ruby on Rails: Finally, integrate your advanced HTML5 knowledge with Ruby on Rails. Understand how to use Rails view helpers, Turbolinks, and Stimulus.js to enhance your HTML5 application. Rails Guides.
By focusing on these areas, you’ll significantly improve your HTML5 skills in the context of Ruby development, creating more responsive, efficient, and modern web applications.
How to Display HTML5 Skills on Your Resume
6. CSS3
CSS3 is the third version of the Cascading Style Sheets language, used for styling and designing the visual presentation of web pages. For a Ruby developer, it's essential for customizing the appearance of web applications built with frameworks like Ruby on Rails, enabling responsive, visually appealing interfaces.
Why It's Important
CSS3 is important for a Ruby developer as it enhances the visual presentation and interactivity of web applications built with Ruby frameworks (like Rails), improving user experience and engagement without extensive backend modifications.
How to Improve CSS3 Skills
Improving your CSS3 skills as a Ruby Developer involves understanding the core principles of CSS3 and applying best practices for efficient, maintainable, and responsive design. Here are concise tips with resources:
Learn the Fundamentals: Ensure you have a strong grasp of CSS3 basics, such as selectors, properties, and values. Mozilla Developer Network (MDN) is an excellent resource for learning and reference.
Responsive Design: Understand and apply responsive web design principles using media queries, flexible grid layouts, and responsive images. A List Apart offers a foundational article on responsive web design.
CSS Preprocessors: Learn to use CSS preprocessors like Sass or Less to write more maintainable and concise CSS. They add features like variables, mixins, and nested syntax. The Sass Guide is a good starting point.
CSS Frameworks: Familiarize yourself with CSS frameworks such as Bootstrap or Tailwind CSS. They provide ready-to-use components and utilities that can speed up development. Check out the Bootstrap Documentation and the Tailwind CSS Documentation.
CSS Grid and Flexbox: Master modern layout techniques with CSS Grid and Flexbox for more complex and flexible layouts. CSS Tricks has excellent guides for both Flexbox and Grid.
Performance Optimization: Learn techniques to optimize CSS for faster loading times, such as minimizing CSS, using shorthand properties, and eliminating unused CSS. Google Developers Web Fundamentals has a section on optimizing content efficiency.
Stay Updated: CSS and web standards evolve. Follow blogs, forums, and news sites to stay updated with new features and best practices. CSS-Tricks, Smashing Magazine, and Web.dev are great for staying informed.
Practice: Apply what you learn in projects. Experiment with new properties and techniques. Use sites like CodePen or JSFiddle to test and share your CSS experiments.
By integrating these resources and tips into your development practice, you’ll enhance your CSS3 proficiency, leading to more robust, responsive, and maintainable web designs.
How to Display CSS3 Skills on Your Resume
7. Git
Git is a distributed version control system that allows Ruby developers to track and manage changes to their codebase efficiently, enabling collaboration and version tracking.
Why It's Important
Git is crucial for a Ruby Developer for version control, enabling efficient collaboration, code management, and tracking changes across various features and projects, ensuring streamlined development and easy rollback if needed.
How to Improve Git Skills
Improving your Git skills as a Ruby developer involves understanding Git's core concepts, mastering its commands, and adopting best practices for efficient version control. Here are concise ways to enhance your Git proficiency:
Master Git Basics: Ensure you're comfortable with basic commands like
git commit
,git push
,git pull
, andgit branch
. Atlassian’s Git Tutorials offer a good starting point.Understand Branching Strategies: Learn about branching strategies such as Git Flow and GitHub Flow to manage your codebase effectively. Comparing Workflows provides insights into different strategies.
Leverage Git Hooks: Automate your workflow with Git hooks. For Ruby developers, pre-commit hooks can run tests or linters before commits. Pro Git Book on Git Hooks explains their usage.
Use Interactive Rebase:
git rebase -i
allows you to modify commits in a powerful way, such as squashing commits or reordering them. Git Rebase details its application.Adopt a Versioning Convention: Semantic Versioning (SemVer) helps in managing version numbers based on the changes in your code. Semantic Versioning explains the conventions to follow.
Enhance Your Commit Messages: Write meaningful commit messages that clearly explain the "why" behind a commit. How to Write a Git Commit Message offers guidelines for crafting useful messages.
Utilize Git Aliases: Speed up your Git workflow by creating aliases for frequently used commands. Pro Git Book on Aliases shows how to set them up.
Learn Git Internals: Understanding how Git works under the hood can significantly improve your problem-solving skills. Git Internals - Plumbing and Porcelain provides a deep dive.
Practice with Real Projects: Contribute to open-source Ruby projects to apply your skills in real-world scenarios. GitHub Explore (GitHub Explore for Ruby) is a great place to find projects that interest you.
Stay Updated and Collaborate: Git and collaboration tools are constantly evolving. Stay informed about the latest features and best practices by following Git’s official blog and participating in Ruby development communities.
Remember, consistent practice and exploring advanced features are key to mastering Git.
How to Display Git Skills on Your Resume
8. RESTful APIs
RESTful APIs are a set of principles and constraints for building web services that allow clients to access and manipulate textual representations of web resources using a uniform and predefined set of stateless operations, primarily via HTTP methods such as GET, POST, PUT, and DELETE. For a Ruby developer, this means designing and implementing APIs in Ruby applications (e.g., using frameworks like Rails) that adhere to these REST principles, facilitating the interaction between clients and server-side resources in a scalable, performant, and predictable manner.
Why It's Important
RESTful APIs are important for Ruby developers because they provide a standardized, flexible, and efficient way to create, read, update, and delete resources over the web, enabling seamless integration and communication between different software applications.
How to Improve RESTful APIs Skills
Improving RESTful APIs, especially for a Ruby developer, involves focusing on best practices for clarity, efficiency, and maintainability. Here are concise tips with resources for deep dives:
Use Consistent Naming Conventions: Ensure your API endpoints and parameters follow a consistent naming scheme. Ruby on Rails Guides offer conventions that can help maintain consistency.
Version Your API: Manage changes and ensure backward compatibility by versioning your API from the start. Semantic Versioning is a good strategy.
Leverage HTTP Status Codes: Use appropriate HTTP status codes to convey the outcome of API requests clearly. REST API Tutorial provides a comprehensive list.
Implement Caching: Improve response times and reduce server load by caching responses when possible. Rails Guides on Caching details strategies applicable to APIs.
Secure Your API: Implement authentication, authorization, and encryption to protect your API and its users. OWASP REST Security Cheat Sheet offers security best practices.
Document Your API: Ensure your API is easy to use and integrate with by providing comprehensive documentation. Swagger and API Blueprint are tools that can help generate and maintain API docs.
Utilize Rate Limiting: Protect your API from abuse and overuse by implementing rate limiting. Rack::Attack is a middleware for Ruby that can help manage request frequency.
Optimize Data Handling: Use techniques like pagination, filtering, and sorting to manage large datasets efficiently. The Kaminari gem can help with pagination in Ruby.
Adopt Test-Driven Development (TDD): Ensure reliability and facilitate maintenance by using TDD for your API. The RSpec Rails gem is widely used for testing in Ruby on Rails projects.
Embrace RESTful Best Practices: Follow RESTful principles closely to make your API intuitive and robust. RESTful Web Services (PDF) is a comprehensive guide.
By adhering to these strategies, you can significantly improve the quality, reliability, and usability of your RESTful APIs as a Ruby developer.
How to Display RESTful APIs Skills on Your Resume
9. Heroku
Heroku is a cloud platform as a service (PaaS) that enables Ruby developers to build, deploy, and manage applications entirely in the cloud, without worrying about infrastructure.
Why It's Important
Heroku is important for a Ruby developer because it offers a simple, fast, and efficient platform to deploy, manage, and scale Ruby applications, providing built-in support for Ruby on Rails and seamless integration with popular development tools and workflows.
How to Improve Heroku Skills
Improving your experience with Heroku as a Ruby developer involves optimizing your app's performance, ensuring security, and managing resources efficiently. Here are concise tips:
Use Puma as Your Web Server: Puma is a concurrent web server that can significantly increase the throughput of your Ruby app on Heroku. Heroku's official guidance provides details on setting it up.
Optimize Dyno Usage: Understand and choose the right dyno type for your application's needs to ensure efficient resource use and cost management.
Database Performance: Monitor and optimize your database performance using Heroku Postgres addons. Utilize PG Extras for performance insights.
Use CDN for Static Assets: Serve static assets through a Content Delivery Network (CDN) to reduce load times. Services like Cloudflare offer easy integration with Heroku.
Implement Caching: Implement caching strategies for frequently accessed data using Redis, reducing database load and speeding up response times.
Background Jobs: Utilize background job frameworks like Sidekiq for offloading tasks and improving app responsiveness.
Regularly Update Dependencies: Keep your Ruby, Rails, and other gem dependencies up-to-date for performance improvements and security patches. Use Bundler for easy gem management.
Security Best Practices: Follow Heroku's security best practices to protect your application, including setting up SSL, regularly reviewing permissions, and using environment variables for sensitive information.
Monitoring and Logging: Leverage Heroku's logging and monitoring tools to keep track of your app's health and performance. Consider third-party services like New Relic for deeper insights.
Review App Performance Regularly: Use Heroku's Performance Dynos and Application Metrics to monitor and analyze your app's performance, making adjustments as necessary.
By implementing these practices, you can enhance your Ruby app's performance, security, and efficiency on Heroku.
How to Display Heroku Skills on Your Resume
10. Sidekiq
Sidekiq is a background job processing library for Ruby, enabling efficient background execution of tasks outside the main request-response cycle.
Why It's Important
Sidekiq is important for Ruby developers because it efficiently handles background processing, allowing for scalable, high-performance applications by offloading tasks (like sending emails or processing files) that would otherwise slow down user interactions.
How to Improve Sidekiq Skills
Improving Sidekiq performance and reliability involves several strategies, including optimizing job design, managing resources wisely, and monitoring performance. Here are concise tips and resources for a Ruby Developer:
Batch Processing: Group similar jobs to reduce overhead. Use Sidekiq Batches for efficient handling (Batches).
Job Size Optimization: Keep jobs small and idempotent to improve retry logic and reduce processing time. (Best Practices).
Concurrency Tuning: Adjust the concurrency settings based on your workload and available resources. Avoid database connection pool exhaustion (Concurrency).
Reliable Fetch: Use reliable fetch to ensure jobs are not lost during network issues or worker crashes (Reliable Fetch).
Monitoring and Logging: Implement Sidekiq Pro's enhanced features for better monitoring and logging (Monitoring).
Rate Limiting: Throttle jobs to avoid overloading services or databases (Rate Limiting).
Memory Management: Use jemalloc or similar to manage memory more efficiently in production (Memory Management).
Database Connections: Ensure your database connection pool size is larger than Sidekiq's concurrency level to prevent jobs from waiting for a database connection (Database Connections).
Prioritization: Utilize queues to prioritize urgent jobs and ensure they are processed timely (Queues).
Regular Maintenance: Schedule regular maintenance jobs to clean up stale data or perform necessary updates (Periodic Jobs).
By following these guidelines and leveraging Sidekiq's advanced features, you can ensure that your background processing is efficient, reliable, and scalable.
How to Display Sidekiq Skills on Your Resume
11. Redis
Redis is an in-memory, key-value database store used for caching and as a message broker, offering high performance for Ruby applications by enabling quick data retrieval, storage, and manipulation.
Why It's Important
Redis is important for a Ruby developer because it provides a high-performance, in-memory data store, used for caching, session management, and real-time analytics, significantly improving the responsiveness and scalability of Ruby applications.
How to Improve Redis Skills
Improving Redis performance involves optimizing both your Redis configuration and how you interact with Redis from Ruby. Here are concise tips along with resources for further exploration:
Use Connection Pooling: Avoid the overhead of establishing a new connection for every operation. Utilize connection pooling to manage multiple Redis connections efficiently. Connection Pool is a generic pooling library for Ruby.
Optimize Data Types: Choose the most efficient Redis data type for your use case. Hashes, Lists, Sets, and Sorted Sets each have their use cases and limitations. Redis Data Types
Pipeline Commands: When performing multiple operations, use pipelining to send commands to Redis in batches, reducing round-trip time. Redis Pipelining
Monitor and Scale: Use
redis-cli --latency
to monitor latency. Consider scaling your Redis instance vertically (more powerful machine) or horizontally (adding more nodes) based on the workload. Redis MonitoringLua Scripting for Complex Operations: Use Lua scripting to perform complex operations on the server side, reducing the number of round trips. Lua Scripting
Use Appropriate Expiration Policies: Set expiration times on keys to ensure old or irrelevant data doesn't consume memory indefinitely. Expiration Policies
Stay Updated: Ensure you are using a recent version of both Redis and the Redis Ruby client (redis-rb) to benefit from performance improvements and new features.
Indexing with RediSearch: For complex queries, consider using RediSearch, a Redis module that provides secondary indexing, full-text search, and more. RediSearch
Profiling and Optimization: Use the
MONITOR
command and Redis slow log to identify slow queries and optimize them.Read from Replicas: If you're using Redis in a master-replica setup for read-heavy applications, configure your Ruby client to read from replicas to distribute the load. Redis Replication
Each of these tips can contribute to a more efficient and scalable Redis usage in your Ruby applications.
How to Display Redis Skills on Your Resume
12. Docker
Docker is a platform for developing, shipping, and running applications inside lightweight, portable containers, enabling a Ruby developer to package an application with all of its dependencies into a standardized unit for software development, ensuring consistency across environments.
Why It's Important
Docker simplifies the setup of development environments and ensures consistency across different stages of the development pipeline, allowing Ruby developers to focus on writing code without worrying about differences in OS or dependencies.
How to Improve Docker Skills
Improving Docker usage for a Ruby Developer involves optimizing Dockerfile configurations, managing dependencies efficiently, and ensuring your development environment closely mirrors your production setup. Here are key points:
Optimize Dockerfile: Use a multi-stage build process to minimize the image size. Start with a base image like
ruby:alpine
for a lightweight environment. Dockerfile Best Practices.Bundle Install Efficiently: Copy your
Gemfile
andGemfile.lock
into the image and runbundle install
before copying the rest of your app. This leverages Docker's cache to skip bundle installation when your dependencies haven't changed. Efficiently Managing Gems.Use .dockerignore: Include
.dockerignore
to exclude unnecessary files (like local logs, test/cache data) from your Docker context, improving build times and reducing image size. Dockerfile reference.Environment Parity: Ensure your Docker environment matches production as closely as possible. Use environment variables and Docker Compose to manage different configurations for development, testing, and production. Docker Compose.
Keep Your Images Up to Date: Regularly update your Ruby base images and dependencies to incorporate security patches and performance improvements. Best practices for writing Dockerfiles.
Security Scanning: Use tools like Clair or Trivy to scan your Docker images for known vulnerabilities. Clair, Trivy.
CI/CD Integration: Automate your Docker image builds and deployments using CI/CD tools like Jenkins, GitLab CI/CD, or GitHub Actions. This ensures your Docker images are built, tested, and deployed consistently. GitHub Actions for CI/CD.
Networking and Storage: Understand Docker's networking and storage options. Use volumes for persistent or shared data and Docker networks for container communication. Manage data in Docker, Networking overview.
By focusing on these areas, you can significantly improve your Docker setup for Ruby development, leading to faster build times, improved security, and a more consistent environment across development and production.