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
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
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