## 4 Results: Manual Service Composition
### Manual Composition Problems and Overall Perception
This in turn, may be justified by their unfamiliarity with the syntax and the technical language used. For programmers, condition definitions were challenging, owing to their unfamiliarity with the syntax (e.g., how many parameters are needed) for defining a condition in a workflow-based composition, and to the inability to see the immediate effects of conditional statements once defined. **Conceptual problem one:** Definition of a conditional branch. E.g., \"Parameter is very confusing; I don't understand it and it is too technical; it is beyond me,\" P11, non-programmer. \"I don't know which operator to choose because I don't understand the language,\" P1, non-programmer. \"Setting a condition is like programming; it is too technical and I am not happy about that,\" P6,  
non-programmer. \"I wasn't sure how many parameters I had to select or where it should be placed,\" P11, programmer. \"Do I need to specify the condition for other route?\" P1, programmer. \"I do not see any changes to the main model once I have set the condition,\" P12, programmer. Approximately 32% of non-programmers' comments complained about the programming nature of manual service composition, and about the syntactic language used to refer to service-composition concepts. We believe that low level language aggravates the perceived complexity of manual service composition and self-efficacy of non-programmers. Expectedly, however, this was not reported as a problem by the programmers, who were acquainted with such vocabulary. \begin{table}
\begin{tabular}{c c c} \hline \hline
**Conceptual Problem** & **Non-Programmers** & **Programmers** \\ \hline Definition of the conditional branches & 34\% & 35\% \\ \hline Complexity of manual service composition & & \\ and low-level terminology & 32\% & 6\% \\ \hline Creation of parallel branches & 15\% & 6\% \\ \hline Specification and understanding of data flow & 10\% & 22\% \\ \hline Other disperse issues & 9\% & 31\% \\ \hline \hline \end{tabular}
\end{table} 
Table 5: Conceptual issues (and percentages of occurrence) during manual service composition. **Conceptual problem two:** Technical nature of service composition and terminology. E.g., \"These words like binding sound too technical... The vocabulary needs to be changed a bit; sometimes it is too technical,\" P3, non-programmer. \"All these things on the left hand side seem very complicated and technical; I don't understand what they mean and it is intimidating,\" P11, non-programmer. \"It was a little technical and I would never be able to figure it out without training or assistance,\" P12, non-programmer. \"This is like programming and it is too technical,\" P7, non-programmer. Some non-programmers struggled to create parallel branches to express the simultaneous execution of a new activity/event within the service composition. When adding the parallel branch, participants did not know how to use the relevant (i.e., split and merge) notation and where to place it within the composition process model, probably due to unfamiliarity with this type of task (i.e., parallel events). **Conceptual problem three:** Definition of a parallel branch,  
E.g., \"I am trying to find where to create the parallel step,\" P3, non-programmer. \"So how do I define parallel processes and splits?\" P6, programmer. In respect to dataflow connections, fewer complaints were received from non-programmers than from programmers. The non-programmers failed to understand the meaning of inputs and outputs of services, whilst the programmers failed to match the outputs of one service to the inputs of the next service. This is an unexpected and intriguing effect for programmers, highlighting the mismatch between their mental model of service composition, likely based on control flow as dominant programming paradigm, and the dataflow specification in our tool. **Conceptual problem four:** Specification and understanding of data flow connections. E.g., \"I do not understand the difference between these input types,\" P5, non-programmer.