Skip to content

Commit 6361ee7

Browse files
committed
Study
1 parent ca9d52f commit 6361ee7

File tree

4 files changed

+213
-36
lines changed

4 files changed

+213
-36
lines changed

figures/hammer-screw.jpeg

2.9 MB
Loading

figures/problem1-code.png

150 KB
Loading

figures/problem1-ui.png

103 KB
Loading

slides.tex

Lines changed: 213 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
\usepackage[T1]{fontenc}
44
\usepackage{tikz}
55
\usepackage{hyperref}
6-
6+
\usepackage{pgfplots}
77
\usepackage{pgfpages}
8+
9+
\pgfplotsset{compat=1.17}
810
\setbeameroption{show notes on second screen}
911
% \pgfpagesuselayout{2 on 1}[a4paper,border shrink=10mm]
1012

@@ -19,7 +21,7 @@
1921
\renewcommand{\appendixname}{\texorpdfstring{\translate{appendix}}{appendix}}
2022

2123
\title[Debugging of RxJS-based Applications]{Getting rid of the \texttt{console.log}:\\Debugging of RxJS-based Applications}
22-
\author{Manuel Alabor, Markus Stolze}
24+
\author{Manuel Alabor and Markus Stolze}
2325
\institute{OST in Rapperswil, Switzerland}
2426
\date{\today}
2527

@@ -39,6 +41,8 @@
3941

4042
\section{Introduction}
4143

44+
\subsection{Why?}
45+
4246
\begin{frame}[fragile]{Reactive Programming for the Web}
4347
\centering
4448
\begin{figure}
@@ -112,6 +116,8 @@ \section{Introduction}
112116
\item -> Research Questions
113117
}
114118

119+
120+
\subsection{Research Questions}
115121
\begin{frame}[fragile]{Research Questions}
116122
\begin{enumerate}
117123
\vfill\item[RQ1] \textbf{What challenges} do software engineers face when debugging RxJS-based applications?
@@ -122,8 +128,7 @@ \section{Introduction}
122128

123129
\note[itemize] {
124130
\item First: Collect and Validate information
125-
\item How do engineers debug RxJS?
126-
\item What do they like? Dislike?
131+
\item Interviews and War Story Reports
127132
\item Validate this data in an observational study
128133
\item Second: Propose a solution to improve
129134
\item Third: Implement and validate solution
@@ -134,8 +139,45 @@ \section{Introduction}
134139

135140
\section{Interviews and War Stories}
136141

142+
\subsection{Interviews}
137143

144+
\begin{frame}[fragile]{One-to-One Interviews}
145+
\begin{vfilleditems}
146+
\item Interviewed five \textbf{Engineers}
147+
\item How do they \textbf{use} Reactive Programming?
148+
\item What do they \textbf{like},
149+
\item ... and what \textbf{dislike} about it?
150+
\end{vfilleditems}
151+
\end{frame}
138152

153+
\note[itemize] {
154+
\item We were interested in the overall, ...
155+
\item the good ...
156+
\item and bad experiences
157+
\item Not yet debugging specific
158+
\item Recruited through personal network
159+
\item Talked to five engineers
160+
\item 4 RxJS, 1 Scala Akka Streams
161+
\item Most knew RxJS through Angular
162+
}
163+
164+
\begin{frame}{Quotes}
165+
\begin{vfilleditems}
166+
\item \textit{``[Reactive Programming is] a good way for \textbf{composing} multiple data sources.''}
167+
\item \textit{``In \textbf{99\%} of all cases, I add \textbf{console.log} statements [\dots] trying to understand what's happening.''}
168+
\end{vfilleditems}
169+
\end{frame}
170+
171+
\note[itemize] {
172+
\item All interviewees were overall positive to RP
173+
\item All value RP for complex data \textbf{dependencies}
174+
\item and \textbf{transformations}
175+
\item Concrete Quote about console log
176+
\item Off the record: ``Debugging RP?''
177+
\item ... well, then you are f***
178+
}
179+
180+
\subsection{War Stories}
139181
\begin{frame}[fragile]{Call for ``War Stories''}
140182
\begin{figure}[H]
141183
\centering
@@ -145,65 +187,200 @@ \section{Interviews and War Stories}
145187
\end{frame}
146188

147189
\note[itemize] {
148-
\item First: Collect and Validate information
149-
\item How do engineers debug RxJS?
150-
\item What do they like? Dislike?
151-
\item Validate this data in an observational study
152-
\item Second: Propose a solution to improve
153-
\item Third: Implement and validate solution
154-
\item Not part of this work
155-
\item Already started with in current iteration
190+
\item After first "overall" data collection
191+
\item Interested in specific data about RxJS Debugging
192+
\item Twitter and direct-email
193+
\item 5 replies
194+
\item RxJS core team member
195+
\item Google developer experts
196+
\item Fin Tech Engineers
156197
}
157198

158-
\begin{frame}[fragile]{Getting Started with RQ1}
199+
\begin{frame}[fragile]{Report Extracts}
159200
\begin{vfilleditems}
160-
\item Talk to practitioners
161-
\item 1:1 Interviews
162-
\item Written ``War Story'' Reports
201+
\item Traditional debugging utilities are \textbf{seldom sufficient}
202+
\item Tendency to \textbf{manual} code \textbf{modifications}:
203+
\begin{vfilleditems}
204+
\item Add \textbf{trace logs} with \texttt{console.log}
205+
\item \textbf{Extract} code parts to \textbf{sand boxed} environments
206+
\end{vfilleditems}
163207
\end{vfilleditems}
164208
\end{frame}
165209

210+
\note[itemize] {
211+
\item Foo
212+
}
166213

167-
\begin{frame}{Interviews}
168-
\begin{vfilleditems}
169-
\item Informal interviews with five participants
170-
\end{vfilleditems}
214+
\subsection{Insights}
215+
216+
\begin{frame}[fragile]{Key Take Aways}
217+
\begin{columns}[T]
218+
\begin{column}{.6\linewidth}
219+
\vspace{3em}
220+
\begin{itemize}
221+
\item The ``\textbf{to hammer a screw}''-problem\bigskip
222+
\item Tendency to \textbf{manual} code \textbf{modifications}\bigskip
223+
\item \textbf{Pessimistic} opinions on debugging of RxJS-based applications
224+
\end{itemize}
225+
\end{column}
226+
\begin{column}{.4\linewidth}
227+
\begin{figure}
228+
\centering
229+
\includegraphics[width=.7\linewidth]{figures/hammer-screw.jpeg}
230+
\caption{\tiny{Source: Manuel Alabor}}
231+
\end{figure}
232+
\end{column}
233+
\end{columns}
171234
\end{frame}
172235

173-
\begin{frame}{War Stories}
174-
\begin{vfilleditems}
175-
\item Request via Twitter and direct emails
176-
\item Responses from five engineers, including one RxJS core team member
177-
\end{vfilleditems}
236+
\note[itemize] {
237+
\item ... todo
238+
\item Based on this
239+
\item Observational study to validate data
240+
\item Using the following hypothesis:
241+
}
242+
243+
244+
\section{Observational Study}
245+
\subsection{Study Design}
246+
247+
\begin{frame}[fragile]{Hypothesis}
248+
\begin{quote}
249+
If software engineers must solve an RxJS-based problem, then they \textbf{will instrument the code manually} in order to understand its behavior.
250+
\end{quote}
178251
\end{frame}
179252

180-
\begin{frame}{Results}
253+
\note[itemize] {
254+
\item Foo
255+
}
181256

257+
\begin{frame}{Study Design}
258+
\begin{vfilleditems}
259+
\item \textbf{Observational Study}
260+
\item \textbf{Briefing} upfront for every subject
261+
\item \textbf{Uncontrolled} Environment
262+
\item \textbf{Remote} moderation and execution
263+
\item ``After Action'' \textbf{Survey}
264+
\end{vfilleditems}
182265
\end{frame}
183266

267+
\note[itemize] {
268+
\item Remotely conducted observational study
269+
\item Execution on subjects computer
270+
\item Individual dev environment
271+
\item Mimic "Daily dev routine"
272+
\item Interested in "How would you tackle RxJS debugging"
273+
\item Two problems, 25 minutes each
274+
\item ~1h total
275+
\item Unattended survey afterwards -> RxJS experience data
276+
}
184277

185-
\section{Observational Study}
186-
\begin{frame}{Hypothesis}
187-
If software engineers must solve an RxJS-based problem, then they \textbf{will instrument the code manually} in order to understand its behavior.
278+
\begin{frame}{Problem 1: Example}
279+
\begin{columns}[b]
280+
\begin{column}{.5\linewidth}
281+
\begin{figure}
282+
\centering
283+
\includegraphics[width=.9\linewidth]{figures/problem1-code.png}
284+
\caption{RxJS Observable}
285+
\end{figure}
286+
\end{column}
287+
\begin{column}{.5\linewidth}
288+
\begin{figure}
289+
\centering
290+
\includegraphics[width=.9\linewidth]{figures/problem1-ui.png}
291+
\caption{User Interface}
292+
\end{figure}
293+
\end{column}
294+
\end{columns}
188295
\end{frame}
189296

190-
\begin{frame}{Study Design}
297+
\note[itemize] {
298+
\item A problem consisted of:
299+
\item Provided: \textbf{Code}, \textbf{Unit Tests}, \textbf{UI}
300+
\item Task: Identify and Resolve Bugs
301+
\item Task: "Speak out loud"
302+
\item Of course: we did not care IF they actually resolve a problem
303+
\item Collect as much data how subjects debug
304+
}
305+
306+
\subsection{Study Execution}
307+
\begin{frame}{Subject Population}
191308
\begin{vfilleditems}
192-
\item Observational Study
193-
\item Two Problems
194-
\item 25 Minutes per Problem
195-
\item
309+
\item \textbf{Four} professional software engineers
310+
\item Two currently \textbf{work} with RxJS
311+
\item Three have \textbf{two or more years} of \textbf{experience} with RxJS
312+
\item One of them uses RxJS to develop \textbf{backend applications}
196313
\end{vfilleditems}
197314
\end{frame}
198315

199-
\begin{frame}{Problem Example}
316+
\note[itemize] {
317+
\item Four engineers recruited from personal network
318+
\item All use RxJS for frontend development
319+
\item Only one for backend
320+
\item Experienced population; most >2y
321+
\item All: Trace logs
322+
\item Two: Specialized loggers
323+
\item Three: Debugger
324+
}
200325

326+
\subsection{Study Results}
327+
328+
\begin{frame}[fragile]{Observed Debugging Techniques}
329+
\begin{figure}
330+
\centering
331+
\begin{tikzpicture}
332+
\begin{axis}[
333+
height=0.6\textheight,
334+
width=0.8\linewidth,
335+
xbar,
336+
xtick={0,1,2,3,4},
337+
xlabel={\# of Subjects},
338+
symbolic y coords={Add. Tools,Debugger,Trace Logs},
339+
ytick=data,
340+
enlarge y limits=0.5,
341+
enlargelimits=0.15,
342+
nodes near coords, nodes near coords align={horizontal}
343+
]
344+
\addplot[
345+
fill=pureminimalistic@text@red,
346+
draw=pureminimalistic@text@red
347+
]
348+
coordinates {
349+
(0,Add. Tools) (4,Trace Logs) (2,Debugger)
350+
};
351+
\end{axis}
352+
\end{tikzpicture}
353+
\end{figure}
201354
\end{frame}
202355

203-
\begin{frame}{Results}
356+
\note[itemize] {
357+
\item All modified/augmented source code manually
358+
\item -> Trace logs
359+
\item Two tried traditional debugging
360+
\item No one extracted code
361+
\item No one used additional libraries
362+
\item On told afterwards: Would have been their next step
363+
\item Based on this evidence: Hypothesis is correct
364+
}
204365

366+
\begin{frame}[fragile]{Interpretation}
367+
\begin{vfilleditems}
368+
\item \textbf{Four} professional software engineers
369+
\item Two currently \textbf{work} with RxJS
370+
\item Three have \textbf{two or more years} of \textbf{experience} with RxJS
371+
\item One of them uses RxJS to develop \textbf{backend applications}
372+
\end{vfilleditems}
205373
\end{frame}
206374

375+
\note[itemize] {
376+
\item All used manual trace logs
377+
\item Two tried traditional debugging
378+
\item No one extracted code
379+
\item No one used additional libraries
380+
\item On told afterwards: Would have been their next step
381+
}
382+
383+
207384
\section{Conclusion}
208385
\begin{frame}{}
209386

0 commit comments

Comments
 (0)