Skip to content
Snippets Groups Projects
Commit a06bb55e authored by Huste, Tobias's avatar Huste, Tobias :rabbit:
Browse files

Merge branch '138-tech-analysis-tool-mix-and-summary' into 'master'

Resolve "Analysis | Software | Technology: Section with plots regarding Q019 - Usage of various tools - and summary section"

Closes #138

See merge request !123
parents 23062298 9607adde
No related branches found
No related tags found
1 merge request!123Resolve "Analysis | Software | Technology: Section with plots regarding Q019 - Usage of various tools - and summary section"
Pipeline #112714 passed
......@@ -384,3 +384,59 @@ ways by all team members whilst offering more degrees of freedom.
\caption{Usage of Virtualisation tools by individual and team developers}
\label{fig:q018-virt-team}
\end{figure}
\paragraph{Various Tools} \label{para:technology-mix}
Finally, we were particularly interested in the usage of the following tools
and services:
\textit{OpenStack}, \textit{JupyterHub}, \textit{Rocket.Chat},
\textit{Mattermost}, \textit{Nextcloud}, \textit{LimeSurvey},
\textit{ShareLaTex}, \textit{Jira}.
The most popular tools and services (in descending order) are
\textit{Nextcloud} (59 \%), \textit{Mattermost} (42 \%), and
\textit{JupyterHub} (20 \%) (see figure \ref{fig:q019-mix1-per-options} and
\ref{fig:q019-mix2-per-options}).
Except for \textit{Nextcloud} and \textit{Mattermost} a large amount of
participants said that those mentioned tools are unknown to them.
\begin{figure}
\centering
\includegraphics[width=.96\textheight,angle=90]{fig/Q019-mix1-per-options}
\caption{Usage various tools}
\label{fig:q019-mix1-per-options}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=.96\textheight,angle=90]{fig/Q019-mix2-per-options}
\caption{Usage various tools}
\label{fig:q019-mix2-per-options}
\end{figure}
\paragraph{Summary} \label{para:technology-summary}
In order to conclude this \textit{Technology} section we would like to
summarize our observations so far.
Our analysis of the survey data underpinned our assumption that for people
with a software development background it makes a significant difference
whether they collaborate within a team or act as a single contributor
on software they develop.
In all cases, from \textit{Version Control Systems},
\textit{Software Project Management Platforms},
\textit{Continuous Integration Tools} to \textit{Virtualisation Tools},
we were able to show the necessity for more advanced tools and services
in case of collaborative development within teams.
While the first two categories of tools and services are already widely
accepted as standard tools and best-practises, the latter two categories
of tools and services are rather under-represented and need significantly more
attention.
The \textit{HIFIS} platform and the \textit{Technology Services} working group
in particular already promote these tools and services in the research
communities.
We make them available to researchers and also offer support for becoming
familiar with these technologies.
We would like to actively contribute making the usage of these tools more
accessible and prominent, because it is our conviction, that they are mandatory
for more sustainable software development practises within the
\textit{Helmholtz} communities.
# hifis-surveyval
# Framework to help developing analysis scripts for the HIFIS Software survey.
#
# SPDX-FileCopyrightText: 2021 HIFIS Software <support@hifis.net>
#
# SPDX-License-Identifier: GPL-3.0-or-later
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Analyse technology questions about various tools."""
from pathlib import Path
from typing import Dict, List
from hifis_surveyval.core import util
from pandas import DataFrame
from hifis_surveyval.data_container import DataContainer
from hifis_surveyval.hifis_surveyval import HIFISSurveyval
from hifis_surveyval.models.question import Question
from hifis_surveyval.models.question_collection import QuestionCollection
def run(hifis_surveyval: HIFISSurveyval, data: DataContainer):
"""Analyses technology question about various tools."""
print("======== Beginning of Script: " + Path(__file__).stem + " ========")
# Get QuestionCollections and Questions analysed in this script.
mix: QuestionCollection = data.collection_for_id("Q019")
# Get data as DataFrames and Series for these Collections and Questions
data_mix_raw: DataFrame = mix.as_data_frame()
# Define an ordering of the AnswerOptions.
options_order_list: List[str] = ["Yes",
"Don't know it",
"Not relevant",
"Don't know how",
"Doesn't fit my needs",
"Not available"]
# Define a mapping to replace the full ID by the label.
questions_mapping_dict: Dict[str, str] = {question.full_id: question.label
for question in mix.questions}
title: str = mix.text("en-GB")
print(title)
questions: List[str] = [question.text("en-GB")
for question in mix.questions]
print(questions)
# Create a DataFrame in which only data of participants is contained
# who answered the question and does not contain only None values.
data_mix_answered_only: DataFrame = data_mix_raw.dropna(axis=0, how="all")
# Rename columns in DataFrame from the full ID to the label.
data_mix_renamed: DataFrame = data_mix_answered_only.rename(
mapper=questions_mapping_dict, axis='columns')
###########################################################################
# Frequencies of answers given regarding usage of various tools
###########################################################################
data_mix_freq_abs: DataFrame = util.dataframe_value_counts(
data_mix_renamed, relative_values=False)
data_mix_freq_abs = data_mix_freq_abs.reindex(options_order_list)
# Divide all absolute values by the number of answers given to get relative
# values of multiple choice question.
data_mix_freq_rel: DataFrame = \
data_mix_freq_abs.div(len(data_mix_answered_only))
list_tools_1 = ["OpenStack", "JupyterHub", "Rocket.Chat", "Mattermost"]
list_tools_2 = ["Nextcloud", "LimeSurvey", "ShareLaTex", "Jira"]
hifis_surveyval.plotter.plot_bar_chart(
data_frame=data_mix_freq_rel[list_tools_1],
plot_file_name="Q019-mix1-per-options",
plot_title=title,
plot_title_fontsize=16,
x_axis_label="Answer options",
y_axis_label="Usage various tools (relative counts)",
x_label_rotation=0,
round_value_labels_to_decimals=2,
figure_size=(13, 5))
hifis_surveyval.plotter.plot_bar_chart(
data_frame=data_mix_freq_rel[list_tools_2],
plot_file_name="Q019-mix2-per-options",
plot_title=title,
plot_title_fontsize=16,
x_axis_label="Answer options",
y_axis_label="Usage various tools (relative counts)",
x_label_rotation=0,
round_value_labels_to_decimals=2,
figure_size=(13, 5))
###########################################################################
print("=========== End of Script: " + Path(__file__).stem + " ===========")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment