Understand Principles behind Practices

From WikiContent

(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
-
Development methods and techniques have principles and practices. The principles describe the underlying ideas and values of the method. The practices are what you do to realize them.
+
Development methods and techniques have principles and practices. Principles describe the underlying ideas and values of the method. Practices are what you do to realize them.
-
Following practices (without deep understanding) allows you to quickly try something new, and by simply working differently you can improve what you are doing, and being disciplined about changing how you work is essential to overcome the inertia of your old ways. Practices can come first.
+
Following practices without deep understanding allows you to quickly try something new. By forcing yourself to work differently you can change your practices more quickly; being disciplined about changing how you work is essential to overcoming the inertia of your old ways. Practices often come first.
-
Over time you will discover situations where the a practice seems to be getting in your way. Understanding the underlying principles allows you to make decisions about how to apply a practice: for example, you may approach Pair Programming differently if you thought that the reason for Pair Programming was to save money on computers, as opposed to having the benefit of real time code reviews. (There is more to pair programming than just sitting down together.)
+
Over time you will discover situations where the a practice seems to be getting in your way. Understanding the underlying principles allows you to make decisions about how to apply a practice: for example, you may approach Pair Programming differently if you thought that the reason for Pair Programming was to save money on computers, as opposed to having the benefit of real time code reviews. You need to be careful to distinguish between cases where the practice is truly not working in your situation, and case where it feels awkward because it is just different. Don't optimize before you understand why the current way is not working for you.
-
Following a practice without understanding can can lead to trouble too: Test Driven Development can simplify code and make development less expensive. But writing overly complicated, or inappropriate tests can increase the complexity of the code, and increase the cost of the or writing the wrong test because you want to code "test first." Writing detailed tests early about an aspect of the application that you know will change frequently can increase the costs to make a simple change.
+
Following a practice without understanding can can lead to trouble too: Test Driven Development can simplify code and make development less expensive. But writing overly complicated, or inappropriate tests can increase the complexity of the code, and increase the cost of application development.
-
Being excessively dogmatic about how things are done can also erode innovation. In addition to understanding the principles behind a practice, question whether the principles and practices make sense. On the other-hand, trying to customize a process with without understanding the principles it, and how its practices relate can set you up for failure. The cliche example is "doing XP" by skipping documentation and doing none of the other practices.
+
Being excessively dogmatic about how things are done can also erode innovation. In addition to understanding the principles behind a practice, question whether the principles and practices make sense in your context, but be careful: trying to customize a process without understanding the principles and practices relate can set you up for failure. The cliche example is "doing XP" by skipping documentation and doing none of the other practices.
When trying something new:
When trying something new:
-
* Start by following best practices as close to the "book" as possible. Resist the temptation to customize; you risk losing the benefits of a new way of working, and of reverting to your old ways under a new name.
+
* Start by following best practices as close to the "book" as possible. Resist the temptation to customize early; you risk losing the benefits of a new way of working, and of reverting to your old ways under a new name.
-
* Once you have had some experience evaluate whether your execution of a practice is in line with its principles, and then adopt the practices to work better in your environment.
+
* Once you have had some experience evaluate whether your execution of a practice is in line with its principles, and then adapt the practices to work better in your environment.

Revision as of 19:13, 3 January 2009

Development methods and techniques have principles and practices. Principles describe the underlying ideas and values of the method. Practices are what you do to realize them.

Following practices without deep understanding allows you to quickly try something new. By forcing yourself to work differently you can change your practices more quickly; being disciplined about changing how you work is essential to overcoming the inertia of your old ways. Practices often come first.

Over time you will discover situations where the a practice seems to be getting in your way. Understanding the underlying principles allows you to make decisions about how to apply a practice: for example, you may approach Pair Programming differently if you thought that the reason for Pair Programming was to save money on computers, as opposed to having the benefit of real time code reviews. You need to be careful to distinguish between cases where the practice is truly not working in your situation, and case where it feels awkward because it is just different. Don't optimize before you understand why the current way is not working for you.

Following a practice without understanding can can lead to trouble too: Test Driven Development can simplify code and make development less expensive. But writing overly complicated, or inappropriate tests can increase the complexity of the code, and increase the cost of application development.

Being excessively dogmatic about how things are done can also erode innovation. In addition to understanding the principles behind a practice, question whether the principles and practices make sense in your context, but be careful: trying to customize a process without understanding the principles and practices relate can set you up for failure. The cliche example is "doing XP" by skipping documentation and doing none of the other practices.

When trying something new:

  • Start by following best practices as close to the "book" as possible. Resist the temptation to customize early; you risk losing the benefits of a new way of working, and of reverting to your old ways under a new name.
  • Once you have had some experience evaluate whether your execution of a practice is in line with its principles, and then adapt the practices to work better in your environment.



By Steve Berczuk

This work is licensed under a Creative Commons Attribution 3


Back to 97 Things Every Programmer Should Know home page

Personal tools