Results

This page shows the results of the survey. There were 3785 people who completed the survey. These charts show the proportion who gave the different possible responses for each question.

1a. How long have you done open-source development?


0. None
1. 1-3 yrs
2. 4-8 yrs
3. 9-12 yrs
4. 13-15 yrs
5. 16-20 yrs
6. 20+ yrs

1b. How long have you done closed-source development?


0. None
1. 1-3 yrs
2. 4-8 yrs
3. 9-12 yrs
4. 13-15 yrs
5. 16-20 yrs
6. 20+ yrs

2. What Object-Oriented languages are you comfortable doing professional development in? (Select all that apply)


0. C++
1. C#
2. Java
3. Smalltalk
4. Python
5. Delphi
6. Ruby
7. Other

3. What Operating Systems are you comfortable doing professional development in? (Select all that apply)


0. Windows (any versions)
1. MacOS (any versions)
2. Unix (any variants - Linux, xBSD, Solaris)
3. Other

4. What type of development are you currently working with? (Select all that apply)


0. Leased Consultancy (e.g. you sit at your company's Customer site doing development for the customer)
1. Bespoke Development (Customer-Developer relationship, e.g. where you develop product that are ordered/commissioned by the customer but primarily sit at your company's site)
2. Off-the-shelf Products/Components Development (e.g. mass-market products, for example games, end-user software)
3. Embedded/Bundles Software Development (e.g. your software is a part of a larger product offering, for example a robot, a car etc.)
4. Other

5. What company/organization do you work for? (will only be used by us to identify domain)

Free text responses

6. What roles do you generally have in your work? (Select all that apply)


0. Requirements Engineering
1. Design
2. Testing
3. Architect
4. Programmer
5. Project Management
6. Quality Assurance
7. Other

7. What is your highest level of qualification?


0. Professional development courses
1. Trade Certificate
2. Bachelors
3. Masters
4. PhD
5. None

8. Which of the following best describes your thinking when adding a field to a class?


0. I always make it private (inaccessible outside the class)
1. I usually make it private
2. I never make it private.
3. I don't think about it, I pick whatever is convenient
4. I don't know what you mean/None of the options describe my thinking

9. Which of the following best describes your thinking when providing access to fields?


0. I always provide "getters" and "setters"
1. I avoid "getters" and "setters" wherever possible
2. I prefer to avoid "getters" and "setters" but will provide them rather than make large changes to avoid them
3. I don't think about it
4. I don't know what you mean

10. Which of the following best describes your thinking when adding code to a class?


0. I always try to avoid adding references to classes that are not already being used by the class
1. I make some attempt to avoid adding references to classes that are not already being used by the class
2. I don't think about it
3. I don't know what you mean

11. Which of the following best describes your thinking when adding code to a class?


0. I only consider adding code that is clearly related to the services the class already provides
1. I prefer to add code that is clearly related to the services the class already provides but will add less related code if it is more convenient
2. I don't think about it
3. I don't know what you mean

12. Rank the following statements according to how well they apply to the theme of the questions in this part.

For each statement, for each rank, what proportion (out of 2788 to completed the question) gave that rank for that statement.
  1 2 3 4 5 6
1. Making design decisions to make it easier to understand the code 68.3% 17.2% 6.7% 2.6% 1.8% 3.5%
2. Making design decisions to make the code faster 9.9% 23.2% 26.1% 22.2% 12.3% 6.1%
3. Making design decisions to make it harder to hack into systems (external intrusion) 5.5% 10.8% 24.8% 31.2% 18.2% 9.6%
4. Making design decisions to make it harder to change code 3.7% 3.8% 7.4% 14.3% 34.8% 36.0%
5. Making design decisions to make it easier to test code 8.4% 40.9% 24.2% 17.0% 7.7% 1.8%
6. Doing what the professor/school/class told me to do 4.3% 4.1% 10.8% 12.7% 25.2% 43.0%

13. When working on a class, how aware are you of the number of methods it has?


0. I always try to determine how many methods a class has
1. I will note classes that seem to have a lot of methods
2. The number of methods is usually not relevant for me
3. I don't think about it
4. I don't know what you mean

14. What do you think is the largest number of methods a class should have? (Choose one of the alternatives, and add a number in the textbox that replaces "N" in the text of the alternative you chose)


0. There should be never more than about N methods.
1. I try to avoid having more than about N methods in a class, but will allow exceptions in extreme circumstances.
2. I prefer to avoid having more than N methods in a class but I am not fanatical about it.
3. I don't really think about how many methods there are in a class but prefer to avoid having classes with more than N methods.
4. I don't think there should be any limit on the number of methods in a class.
Choices for 'N' for those who answered 'There should be never more than about N methods'
Number in category 38
Median 10
Smallest (non-zero) 1
Largest 400
Most common 14 (for N=10)
Average 23.3
Choices for 'N' for those who did NOT answer 'I don't think there should be any limit on the number of methods in a class'
Number in category 2281
Median 15
Smallest (non-zero) 2
Largest 1000
Most common 608 (for N=10)
Average 18.2

15. What is the motivation for your answer in Question 14 above?

Free text responses

16. What is the likelihood that you will refactor a class (to create classes with fewer methods) if it has more methods than the limit you chose in the question above?


0. Always
1. Most of the time
2. Only if it is obvious how to refactor the class
3. Only if I have nothing else to do
4. Only if someone forces me to
5. Hardly ever

17. When working on a class, is its depth in the inheritance hierarchy important to you?


0. I always try to determine how deep a class is
1. I usually have a rough idea of the depth of a class
2. It is not relevant for me
3. I don't know what you mean

18. What do you think the maximum depth of a class should be in the inheritance hierarchy? (Choose one of the alternatives, and add a number in the textbox that replaces "N" in the text of the alternative you chose)


0. No class should be deeper than N
1. I try to avoid having classes deeper than N but will allow it in extreme circumstances.
2. I prefer not to have classes deeper than N but I am not fanatical about it.
3. I don't really think about how deep classes are but probably would avoid having them deeper than N
4. I do not think there should be a limit to the depth of a class.
Choices for 'N' for those who answered 'No class should be deeper than N'
Number in category 211
Median 3
Smallest (non-zero) 2
Largest 10
Most common 78 (for N=3)
Average 3.4
Choices for 'N' for those who did NOT answer 'I do not think there should be a limit to the depth of a class.'
Number in category 2527
Median 4
Smallest (non-zero) 2
Largest 999
Most common 846 (for N=3)
Average 4.9

19. What is the motivation for your answer in Question 18 above?

Free text responses

20. What is the likelihood that you will refactor the class hierarchy (to reduce the maximum depth of classes) if there are classes deeper than the limit you chose in the question above?


0. Always
1. Most of the time
2. Only if it is reasonably clear how to do the refactoring
3. Only if I don't have anything else to do
4. Only if someone forces me to
5. Hardly ever

21. How does the depth of a class in the inheritance hierarchy affect how easy to it is for you to use it?


0. I find classes that are very deep to be always noticeably more difficult to use than those near the top of the hierarchy
1. I find classes that are very deep to usually be more difficult to use than those near the top but sometimes deep classes are no harder to use than shallow ones.
2. I sometimes find classes that are very deep to be more difficult that those near the top but usually there is not much difference
3. I almost never notice the depth of a class as having any impact on how difficult it is to use.

22. When you write code, to what degree do you use design models (e.g. UML diagrams) to guide you?


0. Never (0%)
1. Rarely (<10%)
2. Sometimes (<25%)
3. Less than half the time (<50%)
4. More than half the time (>=50%)
5. Much of the time (>75%)
6. Almost all of the time (>90%)
7. All the time (100%)


Created 2009-08-04 23:21Z