The second step is to design and conduct experiments and benchmarks to measure the metrics you have chosen. Experiments and benchmarks are controlled tests that compare the performance or behavior of different language features under specific conditions. To do this, you can implement the same functionality using different language features and compare the results. You can also run your software using different language features to measure the execution time, memory consumption, or error rate. Furthermore, you can analyze your code using different language features and evaluate the code quality, readability, or compatibility. Additionally, you can survey your users or developers using different language features and collect their feedback and satisfaction. There are many tools and frameworks that can help you perform experiments and benchmarks, such as testing libraries like JUnit for Java, pytest for Python, or RSpec for Ruby; profiling tools like gprof for C/C++, cProfile for Python, or Visual Studio Profiler for C#; code analysis tools like Checkstyle for Java, pylint for Python, or Rubocop for Ruby; and survey tools like Google Forms , SurveyMonkey , or Typeform .