Difference between revisions of "Questionnaire Programming"

Jump to: navigation, search
 
(23 intermediate revisions by 6 users not shown)
Line 1: Line 1:
This topic relates to the process of developing a CAPI version of a questionnaire. We strongly recommend that you first develop the content for your questionnaire according to the [[Questionnaire Design]] topic. When you have a paper based survey then you should follow the steps in this article.
<onlyinclude>This topic relates to the process of developing a [[Computer-Assisted Personal Interviews (CAPI)]] version of a questionnaire. We strongly recommend that you first develop the content for your questionnaire according to the [[Questionnaire Design]] topic. When you have a paper based survey then you should follow the steps in this article.</onlyinclude>


The main challenge when digitizing large household surveys common in the field of impact evaluation is to keep an overview over the content and functionality of a questionnaire when it is written in code. There are many tools online where surveys can be developed in a click-and-drag fashion. While they do a great job displaying a questionnaire written in code in a human readable form, they only do so while looking at a single question or a small section of a questionnaire. Learning to write and understand questionnaire programming languages is imperative for anyone who wants to code a large and complex high quality CAPI questionnaire.
The main challenge when digitizing large household surveys common in the field of impact evaluation is to keep an overview over the content and functionality of a questionnaire when it is written in code. There are many tools online where surveys can be developed in a click-and-drag fashion. While they do a great job displaying a questionnaire written in code in a human readable form, they only do so while looking at a single question or a small section of a questionnaire. Learning to write and understand questionnaire programming languages is imperative for anyone who wants to code a large and complex high quality CAPI questionnaire.


This topic on Questionnaire Programming links to but does not focus on the syntax of any questionnaire programming language. The focus is on how to plan your work when going from a blank paper to final code, and how to maintain a protocol for high quality throughout that process. This topic also lists a lot of tools that will be helpful along the way. If you want to browse SurveyCTO coding best practices, then go to the stand alone chapter called [[SCTO_Coding_Practices|SurveyCTO coding practices]].
This topic on Questionnaire Programming links to but does not focus on the syntax of any questionnaire programming language. The focus is on how to plan your work when going from a blank paper to final code, and how to maintain a protocol for high quality throughout that process. This topic also lists a lot of tools that will be helpful along the way.  


== Read First ==
== Read First ==
Line 10: Line 10:


===Important articles often forgotten about===
===Important articles often forgotten about===
*[[SCTO_Form_Settings#Encryption|Questionnaire Encryption]] - read before creating your questionnaire
*[[SurveyCTO Form Settings#Encryption|Questionnaire Encryption]] - read before creating your questionnaire
*[[Monitoring Data Quality|Survey Data Quality Checks]] - read while you are programming your questionnaire. Best practice (and easiest) is to develop data quality checks in parallel to coding your the questionnaire.
*[[Monitoring Data Quality|Survey Data Quality Checks]] - read while you are programming your questionnaire. Best practice (and easiest) is to develop data quality checks in parallel to coding your the questionnaire.
*[[SCTO_Form_Settings#Version control of questionnaires already used in the field|Version control of questionnaires already used in the field]] - Important best practice when you realize that you need to make changes to a survey you have already started using in the field.
*[[SurveyCTO Form Settings#Version control of questionnaires already used in the field|Version control of questionnaires already used in the field]] - Important best practice when you realize that you need to make changes to a survey you have already started using in the field.


== General Guidelines on Questionnaire Programming ==
== General Guidelines on Questionnaire Programming ==


The following articles are listed in a typical chronological order, but it is probably worthwhile for a beginner to questionnaire programming to read up on the whole process before getting started.
The following articles are listed in a typical chronological order, but it is probably worthwhile for a beginner to questionnaire programming to read up on the whole process before getting started.
==== Choosing Hardware ====
CAPI data collection is most commonly done using an Android tablet. For simple survey instruments, an Android phone may be sufficient. Very few CAPI software are designed for use with Apple or Window systems. For guidance on which tablets to select, see [[Computer-Assisted_Personal_Interviews_(CAPI)#CAPI_Hardware|CAPI Hardware Specifications]]


==== Choosing Software ====
==== Choosing Software ====
There are [[Computer-Assisted_Personal_Interviews_(CAPI)#CAPI_Software|several software]] on the market for CAPI data collection. The rest of this chapter will provide advice assuming that your project will be done using [[SCTO_Coding_Practices|SurveyCTO]]. Many of the practices are valid in other software too, but SurveyCTO is assumed.
There are [[Computer-Assisted_Personal_Interviews_(CAPI)#CAPI_Software|several software]] on the market for CAPI data collection. The rest of this chapter will provide advice assuming that your project will be done using [[SurveyCTO Coding Practices|SurveyCTO]]. Many of the practices are valid in other software too, but SurveyCTO is assumed.


==== Setting up a Server ====
==== Setting up a Server ====


You can either [[SCTO_Server_Management|set up your own server]], but if your project is a DIME project you can use DIME's SCTO [[DIME_Development_server|development server]] until your project requires its own server.
Information on setting up your own server on the [[SurveyCTO_Server_Management | SurveyCTO Server Management]] page.


=== Create a questionnaire ===
=== Create a questionnaire ===
The easiest way to start is with one of SurveyCTO's [[SCTO_Programming_Work_Flow#Template_Forms|template forms]]. You can either program your questionnaire in the form builder online or in an Excel sheet on your computer. We recommend that your default approach is [[SCTO_Programming|programming in an Excel sheet]]. Regardless of what method you use to program your questionnaire, and if you start with an empty instrument or use a survey that have been used before, it is important that you [[SCTO_Form_Settings#Encryption|encrypt]] your questionnaires.
The easiest way to start is with one of SurveyCTO's [[SurveyCTO_Programming_Work_Flow#Template_Forms|template forms]]. You can either program your questionnaire in the [[SurveyCTO Programming#Form Builder|form builder]] online or in an Excel sheet on your computer. We recommend that your default approach is [[SurveyCTO_Programming#Programming in Excel|programming in an Excel sheet]]. Regardless of what method you use to program your questionnaire, and if you start with an empty instrument or use a survey that have been used before, it is important that you [[SurveyCTO Form Settings#Encryption|encrypt]] your questionnaires.


=== How to organize the programming of a questionnaire ===
=== How to organize the programming of a questionnaire ===


Before starting the programming, read this article on [[SCTO_Form_Settings|form settings]] first.
Before starting the programming, read this article on [[SurveyCTO Form Settings|form settings]] first.


The organization of how to approach coding a questionnaire (or perhaps the lack therefore) is in our experience the most common reason for serious bugs that should have been avoidable. [[SCTO_Programming_Work_Flow|questionnaire organization programming]] will provide you with a general overview, [[SCTO_Programming_Work_Flow#Pseudo Code|pseudo code]] is a practical approach how to get started with your code. After you have planned the programming of your questionnaire, but before you start the programming, go through this list of [[SCTO_Coding_Practices|SurveyCTO best practices]] and make sure that your planning is in-line with all recommended best practices.
The organization of how to approach coding a questionnaire (or perhaps the lack therefore) is in our experience the most common reason for serious bugs that are easily avoidable. [[SurveyCTO_Programming_Work_Flow|Questionnaire organization programming]] will provide you with a general overview, [[SurveyCTO_Programming_Work_Flow#Pseudo Code|pseudo code]] is a practical approach how to get started with your code. After you have planned the programming of your questionnaire, but before you start the programming, go through this list of [[SurveyCTO Coding Practices|SurveyCTO best practices]] and make sure that your planning is in-line with all recommended best practices.


=== Updating a questionnaire already used in the field ===
=== Updating a questionnaire already used in the field ===


While SurveyCTO have fucntionality to allow edits to questionniares already in use, this is not advisable, instead [[SCTO_Form_Settings#Version control of questionnaires already used in the field|create a new separate version of your questionnaire]].
While SurveyCTO have functionality to allow edits to questionnaires already in use, this is not advisable, instead [[SurveyCTO Form Settings#Version control of questionnaires already used in the field|create a new separate version of your questionnaire]].


== Additional Resources ==
== Additional Resources ==
*DIME Analytics’ guidelines on [https://github.com/worldbank/DIME-Resources/blob/master/survey-instruments.pdf survey design and pilot]
If you want to browse SurveyCTO coding best practices, then go to the stand alone chapter called [[SurveyCTO Coding Practices|SurveyCTO coding practices]].


[[Category: Questionnaire Programming]]
[[Category: Primary Data Collection]] [[Category: Questionnaire Design]]

Latest revision as of 18:32, 29 April 2021

This topic relates to the process of developing a Computer-Assisted Personal Interviews (CAPI) version of a questionnaire. We strongly recommend that you first develop the content for your questionnaire according to the Questionnaire Design topic. When you have a paper based survey then you should follow the steps in this article.

The main challenge when digitizing large household surveys common in the field of impact evaluation is to keep an overview over the content and functionality of a questionnaire when it is written in code. There are many tools online where surveys can be developed in a click-and-drag fashion. While they do a great job displaying a questionnaire written in code in a human readable form, they only do so while looking at a single question or a small section of a questionnaire. Learning to write and understand questionnaire programming languages is imperative for anyone who wants to code a large and complex high quality CAPI questionnaire.

This topic on Questionnaire Programming links to but does not focus on the syntax of any questionnaire programming language. The focus is on how to plan your work when going from a blank paper to final code, and how to maintain a protocol for high quality throughout that process. This topic also lists a lot of tools that will be helpful along the way.

Read First

We strongly recommend that you never start coding your survey before you and your research team has more or less finalized the content of your survey. The reason for this is that even minor content changes could require that you have to re-do something in your programming that you have already spent a long time on. Questionnaire design (content development) and questionnaire programming (functionality development) should be seen as two strictly separate tasks which requires the research team's full attention separately. Starting with functionality or late major changes to questionnaire content, are sometimes inevitable, but they are by far the most common reason for quality issues in CAPI survey data.

Important articles often forgotten about

General Guidelines on Questionnaire Programming

The following articles are listed in a typical chronological order, but it is probably worthwhile for a beginner to questionnaire programming to read up on the whole process before getting started.

Choosing Hardware

CAPI data collection is most commonly done using an Android tablet. For simple survey instruments, an Android phone may be sufficient. Very few CAPI software are designed for use with Apple or Window systems. For guidance on which tablets to select, see CAPI Hardware Specifications

Choosing Software

There are several software on the market for CAPI data collection. The rest of this chapter will provide advice assuming that your project will be done using SurveyCTO. Many of the practices are valid in other software too, but SurveyCTO is assumed.

Setting up a Server

Information on setting up your own server on the SurveyCTO Server Management page.

Create a questionnaire

The easiest way to start is with one of SurveyCTO's template forms. You can either program your questionnaire in the form builder online or in an Excel sheet on your computer. We recommend that your default approach is programming in an Excel sheet. Regardless of what method you use to program your questionnaire, and if you start with an empty instrument or use a survey that have been used before, it is important that you encrypt your questionnaires.

How to organize the programming of a questionnaire

Before starting the programming, read this article on form settings first.

The organization of how to approach coding a questionnaire (or perhaps the lack therefore) is in our experience the most common reason for serious bugs that are easily avoidable. Questionnaire organization programming will provide you with a general overview, pseudo code is a practical approach how to get started with your code. After you have planned the programming of your questionnaire, but before you start the programming, go through this list of SurveyCTO best practices and make sure that your planning is in-line with all recommended best practices.

Updating a questionnaire already used in the field

While SurveyCTO have functionality to allow edits to questionnaires already in use, this is not advisable, instead create a new separate version of your questionnaire.

Additional Resources

If you want to browse SurveyCTO coding best practices, then go to the stand alone chapter called SurveyCTO coding practices.