This repository has been archived by the owner on Oct 6, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathrap_managers.html
798 lines (699 loc) · 33 KB
/
rap_managers.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<title>RAP information for managers</title>
<script src="site_libs/jquery-3.6.0/jquery-3.6.0.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="site_libs/bootstrap-3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<script src="site_libs/bootstrap-3.3.5/js/bootstrap.min.js"></script>
<script src="site_libs/bootstrap-3.3.5/shim/html5shiv.min.js"></script>
<script src="site_libs/bootstrap-3.3.5/shim/respond.min.js"></script>
<style>h1 {font-size: 34px;}
h1.title {font-size: 38px;}
h2 {font-size: 30px;}
h3 {font-size: 24px;}
h4 {font-size: 18px;}
h5 {font-size: 16px;}
h6 {font-size: 12px;}
code {color: inherit; background-color: rgba(0, 0, 0, 0.04);}
pre:not([class]) { background-color: white }</style>
<script src="site_libs/jqueryui-1.11.4/jquery-ui.min.js"></script>
<link href="site_libs/tocify-1.9.1/jquery.tocify.css" rel="stylesheet" />
<script src="site_libs/tocify-1.9.1/jquery.tocify.js"></script>
<script src="site_libs/navigation-1.1/tabsets.js"></script>
<link href="site_libs/highlightjs-9.12.0/default.css" rel="stylesheet" />
<script src="site_libs/highlightjs-9.12.0/highlight.js"></script>
<link href="site_libs/font-awesome-5.1.0/css/all.css" rel="stylesheet" />
<link href="site_libs/font-awesome-5.1.0/css/v4-shims.css" rel="stylesheet" />
<link rel="shortcut icon" href="images/duck_guidance.png"/>
<script>
// Define dataLayer and the gtag function.
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Default ad_storage to 'denied' as a placeholder
// Determine actual values based on your own requirements
gtag('consent', 'default', {
'ad_storage': 'denied',
'analytics_storage': 'granted'
});
</script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-KBJCBD114T"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
/*
The tracking number below MUST be replaced with a unique number, contact the statistics development team to set this up.
*/
gtag('config', 'G-KBJCBD114T');
</script>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
</style>
<style type="text/css">code{white-space: pre;}</style>
<script type="text/javascript">
if (window.hljs) {
hljs.configure({languages: []});
hljs.initHighlightingOnLoad();
if (document.readyState && document.readyState === "complete") {
window.setTimeout(function() { hljs.initHighlighting(); }, 0);
}
}
</script>
<link rel="stylesheet" href="images/acalat_theme.css" type="text/css" />
<style type = "text/css">
.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
img {
max-width:100%;
}
.tabbed-pane {
padding-top: 12px;
}
.html-widget {
margin-bottom: 20px;
}
button.code-folding-btn:focus {
outline: none;
}
summary {
display: list-item;
}
details > summary > p:only-child {
display: inline;
}
pre code {
padding: 0;
}
</style>
<style type="text/css">
.dropdown-submenu {
position: relative;
}
.dropdown-submenu>.dropdown-menu {
top: 0;
left: 100%;
margin-top: -6px;
margin-left: -1px;
border-radius: 0 6px 6px 6px;
}
.dropdown-submenu:hover>.dropdown-menu {
display: block;
}
.dropdown-submenu>a:after {
display: block;
content: " ";
float: right;
width: 0;
height: 0;
border-color: transparent;
border-style: solid;
border-width: 5px 0 5px 5px;
border-left-color: #cccccc;
margin-top: 5px;
margin-right: -10px;
}
.dropdown-submenu:hover>a:after {
border-left-color: #adb5bd;
}
.dropdown-submenu.pull-left {
float: none;
}
.dropdown-submenu.pull-left>.dropdown-menu {
left: -100%;
margin-left: 10px;
border-radius: 6px 0 6px 6px;
}
</style>
<script type="text/javascript">
// manage active state of menu based on current page
$(document).ready(function () {
// active menu anchor
href = window.location.pathname
href = href.substr(href.lastIndexOf('/') + 1)
if (href === "")
href = "index.html";
var menuAnchor = $('a[href="' + href + '"]');
// mark the anchor link active (and if it's in a dropdown, also mark that active)
var dropdown = menuAnchor.closest('li.dropdown');
if (window.bootstrap) { // Bootstrap 4+
menuAnchor.addClass('active');
dropdown.find('> .dropdown-toggle').addClass('active');
} else { // Bootstrap 3
menuAnchor.parent().addClass('active');
dropdown.addClass('active');
}
// Navbar adjustments
var navHeight = $(".navbar").first().height() + 15;
var style = document.createElement('style');
var pt = "padding-top: " + navHeight + "px; ";
var mt = "margin-top: -" + navHeight + "px; ";
var css = "";
// offset scroll position for anchor links (for fixed navbar)
for (var i = 1; i <= 6; i++) {
css += ".section h" + i + "{ " + pt + mt + "}\n";
}
style.innerHTML = "body {" + pt + "padding-bottom: 40px; }\n" + css;
document.head.appendChild(style);
});
</script>
<!-- tabsets -->
<style type="text/css">
.tabset-dropdown > .nav-tabs {
display: inline-table;
max-height: 500px;
min-height: 44px;
overflow-y: auto;
border: 1px solid #ddd;
border-radius: 4px;
}
.tabset-dropdown > .nav-tabs > li.active:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li.active:before {
content: "";
border: none;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open:before {
content: "";
font-family: 'Glyphicons Halflings';
display: inline-block;
padding: 10px;
border-right: 1px solid #ddd;
}
.tabset-dropdown > .nav-tabs > li.active {
display: block;
}
.tabset-dropdown > .nav-tabs > li > a,
.tabset-dropdown > .nav-tabs > li > a:focus,
.tabset-dropdown > .nav-tabs > li > a:hover {
border: none;
display: inline-block;
border-radius: 4px;
background-color: transparent;
}
.tabset-dropdown > .nav-tabs.nav-tabs-open > li {
display: block;
float: none;
}
.tabset-dropdown > .nav-tabs > li {
display: none;
}
</style>
<!-- code folding -->
<style type="text/css">
#TOC {
margin: 25px 0px 20px 0px;
}
@media (max-width: 768px) {
#TOC {
position: relative;
width: 100%;
}
}
@media print {
.toc-content {
/* see https://github.com/w3c/csswg-drafts/issues/4434 */
float: right;
}
}
.toc-content {
padding-left: 30px;
padding-right: 40px;
}
div.main-container {
max-width: 1200px;
}
div.tocify {
width: 20%;
max-width: 260px;
max-height: 85%;
}
@media (min-width: 768px) and (max-width: 991px) {
div.tocify {
width: 25%;
}
}
@media (max-width: 767px) {
div.tocify {
width: 100%;
max-width: none;
}
}
.tocify ul, .tocify li {
line-height: 20px;
}
.tocify-subheader .tocify-item {
font-size: 0.90em;
}
.tocify .list-group-item {
border-radius: 0px;
}
</style>
</head>
<body>
<div class="container-fluid main-container">
<!-- setup 3col/9col grid for toc_float and main content -->
<div class="row">
<div class="col-xs-12 col-sm-4 col-md-3">
<div id="TOC" class="tocify">
</div>
</div>
<div class="toc-content col-xs-12 col-sm-8 col-md-9">
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-bs-toggle="collapse" data-target="#navbar" data-bs-target="#navbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html">Statistics Production Guidance</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Learning and development
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="l+d.html">General resources</a>
</li>
<li>
<a href="sql.html">SQL</a>
</li>
<li>
<a href="r.html">R</a>
</li>
<li>
<a href="git.html">Git</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Creating statistics
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="rap.html">Processes and RAP</a>
</li>
<li>
<a href="rap_managers.html">RAP for managers</a>
</li>
<li>
<a href="ud.html">Open data standards</a>
</li>
<li>
<a href="cd.html">Writing and visualising</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Publishing statistics
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="pub.html">How to publish</a>
</li>
<li>
<a href="ees.html">Using EES</a>
</li>
<li>
<a href="examples.html">EES examples</a>
</li>
<li>
<a href="dashboards.html">Dashboards</a>
</li>
<li>
<a href="embedded-charts.html">Embedded R-Shiny charts</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Understanding users
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a href="user_eng.html">User engagement</a>
</li>
<li>
<a href="user_an.html">EES analytics</a>
</li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li>
<a href="mailto:statistics.development@education.gov.uk">
<span class="fa fa-envelope"></span>
</a>
</li>
</ul>
</div><!--/.nav-collapse -->
</div><!--/.container -->
</div><!--/.navbar -->
<div id="header">
<h1 class="title toc-ignore">RAP information for managers</h1>
</div>
<p class="text-muted">
This guidance is to help answer questions about RAP and act as a tool for anyone managing those implementing RAP.
</p>
<hr />
<div id="support-on-offer" class="section level1">
<h1>Support on offer</h1>
<hr />
<p><a href="rap.html">RAP guidance</a></p>
<p>Learning resources and materials for <a href="sql.html">SQL</a>, <a href="r.html">R</a>, and <a href="git.html">Git</a></p>
<p>Email support</p>
<ul>
<li><a href="mailto:statistics.development@education.gov.uk">statistics.development@education.gov.uk</a><br />
</li>
<li>9-5, aim to reply between 1-2 days.</li>
</ul>
<p>Technical workshops</p>
<ul>
<li>In person workshops covering a specific technical skill that can be used to support the production of outputs within stats as a service (mainly statistics releases).</li>
<li>3 hours long, with people working in small groups.</li>
<li>Recently circled the sites running an introduction to Git, have started preparing an introduction to R and RAP techniques next.</li>
<li>Contact <a href="mailto:statistics.development@education.gov.uk" class="email">statistics.development@education.gov.uk</a> to register interest in workshops happening at your site or to request new topics!</li>
</ul>
<p>Partnership programme</p>
<ul>
<li>Dedicated resource to support development work, either building skills or working on statistics outputs.</li>
<li>A short-term project with an agreed set of goals and timescale decided as part of an initiation meeting.</li>
<li>Contact <a href="mailto:statistics.development@education.gov.uk" class="email">statistics.development@education.gov.uk</a> if you’re interested in finding out more about the support we can give.</li>
</ul>
<p>We’re also considering a dedicated G6 / G7 programme to build confidence and set expectations. This may include:</p>
<ul>
<li>A 2-hour workshop explaining what teams are expected to do when creating and publishing statistics. Including tools and skills required, RAP, using EES, content design, release clearance, UE + ongoing publishing and where teams can go for help.</li>
<li>There will be take away materials that cover lines to take and where to get support.</li>
<li>All G6s and G7s are expected to do this, with repeats running to ensure everyone gets a chance to attend.</li>
</ul>
<p>Keep an eye out on teams for this programme being advertised and contact <a href="mailto:statistics.development@education.gov.uk">statistics.development@education.gov.uk</a>.</p>
<hr />
</div>
<div id="rap-expectations" class="section level1">
<h1>RAP Expectations</h1>
<hr />
<p>As government analysts working with statistics, we are required to ensure that our analysis is reproducible, transparent, and robust, using coding and code management best practices (source <a href="https://analysisfunction.civilservice.gov.uk/policy-store/competency-framework-for-the-government-statistician-group-gsg/">GSG competency framework</a>). RAP is a cross-government requirement to help analysts adopt best practices.</p>
<p>We expect any analyst working in statistics production to know and be able to implement RAP principles, using the recommended tools to meet at least good and great practice.</p>
<p>We expect managers of analysts working in statistics production to support and prioritise the development required to build the skills needed to implement RAP using the recommended tools. Managers should ensure that the processes for any publications they own meet at least good and great practice.</p>
<p>More information, including definitions of the different levels of good, great, and best practice is on our <a href="rap.html">RAP guidance page</a>.</p>
<p>The <a href="https://analysisfunction.civilservice.gov.uk/policy-store/reproducible-analytical-pipelines-strategy/">cross-government RAP strategy</a> states a number of explicit expectations for analysts involved in the process, which are detailed in the following sections: <a href="#analyst-leaders">analyst leaders</a>, <a href="#analyst-managers">analyst managers</a> and <a href="#analysts">analysts</a>.</p>
<hr />
<div id="analyst-leaders" class="section level2">
<h2>Analyst leaders</h2>
<hr />
<p>Those giving senior sign off on publications and running analytical functions, usually G6 and SCS, analyst leaders will:</p>
<ul>
<li>ensure their analysts build RAP learning and development time into work plans</li>
<li>help their teams to work with DDaT professionals to share knowledge</li>
<li>promote a “RAP by default” approach for all appropriate analysis</li>
<li>write and implement strategic plans to develop new analyses with RAP principles, and to redevelop existing products with RAP principles</li>
<li>lead their RAP champions to advise analysis teams on how to implement RAP</li>
<li>help teams to incorporate RAP development into workplans</li>
<li>identify the most valuable projects by looking at how much capability the team already has and how risky and time-consuming the existing process is</li>
<li>communicate the benefits of RAP to analysts, managers, and users</li>
</ul>
<hr />
</div>
<div id="analyst-managers" class="section level2">
<h2>Analyst managers</h2>
<hr />
<p>Roughly equivalent to Team Leaders and G7, analyst managers will:</p>
<ul>
<li>work with security and IT teams to give analysts access to the right tools</li>
<li>work with security and IT teams to develop platforms that are easy for analysts to access, flexible and responsive to the needs of analysts</li>
<li>work with security, IT, and data teams to make sure that the tools data analysts need are available in the right place and are easy to access</li>
<li>build extra time into projects to adopt new skills and practices where appropriate</li>
<li>learn the skills they need to manage software</li>
<li>evaluate RAP projects within organisations to understand and demonstrate the benefits of RAP</li>
<li>mandate their teams use RAP principles whenever possible</li>
</ul>
<hr />
</div>
<div id="analysts" class="section level2">
<h2>Analysts</h2>
<hr />
<p>Analysts working on analysis in government will:</p>
<ul>
<li>use open-source tools wherever whenever appropriate</li>
<li>open source their code</li>
<li>work with data engineers and architects to make sure that source data are versioned and stored so that analysis can be reproduced</li>
<li>learn the skills they need to implement RAP principles</li>
<li>engage with users of their analysis to demonstrate the value of RAP principles and build motivation for development</li>
<li>deliver their analysis using RAP</li>
</ul>
<hr />
</div>
</div>
<div id="frequently-asked-questions" class="section level1">
<h1>Frequently asked questions</h1>
<hr />
<p>If you have any questions you’d like answering or adding, let us know by emailing <a href="mailto:statistics.development@education.gov.uk">statistics.development@education.gov.uk</a>.</p>
<hr />
<div id="what-is-rap" class="section level2">
<h2>What is RAP</h2>
<hr />
<p>Questions on what RAP is and why analysts need to care about it.</p>
<hr />
<div id="what-is-rap-is-it-just-using-r" class="section level3">
<h3>What is RAP, is it just using R?</h3>
<hr />
<p>No. Reproducible Analytical Pipelines (RAPs) are automated statistical and analytical processes. They incorporate elements of software engineering best practice to ensure that the pipelines are reproducible, auditable, efficient, and high quality.</p>
<p>Doing RAP is doing analysis using the best methods available to us, which is an expectation of the statistics code of practice.</p>
<p>The tools we recommend for statistics production RAP are SQL, Git and R. Other suitable alternatives that allow you to meet the core principles can also be used, but you should check this with the Statistics Development Team first. Ideally any tools used would be open source, Python is a good example of a tool that would also be well suited, though is less widely used in DfE and has a steeper learning curve than R.</p>
<p>Using R for parts of the process does get you close to a lot of the RAP principles with little effort, which is why we recommend it as one of the tools you should use.</p>
<p>More details and learning resources for the recommended tools can be found in our <a href="rap.html#appropriate-tools">appropriate tools guidance</a>.</p>
<hr />
</div>
<div id="is-this-specific-to-dfe" class="section level3">
<h3>Is this specific to DfE?</h3>
<hr />
<p>No – RAP is a cross government strategy, and all departments are expected to use this way of working. See the <a href="https://analysisfunction.civilservice.gov.uk/support/reproducible-analytical-pipelines/">analytical function page on RAP</a> to see other examples of departments utilising RAP and seeing the benefits.</p>
<p>Here is a great <a href="https://digital.nhs.uk/blog/data-points-blog/2023/why-were-getting-our-data-teams-to-rap">blog post from NHS digital on ‘Why we’re getting our data teams to RAP’</a>.</p>
<p>RAP is also a strategic objective of <a href="https://analysisfunction.civilservice.gov.uk/about-us/analysis-function-strategy/#strategic-objective-2-promoting-impactful-and-efficient-analysis-through-innovative-tools-and-cutting-edge-techniques">Analysis function strategy for 22-25</a>:</p>
<blockquote>
<p>delivering the <a href="https://analysisfunction.civilservice.gov.uk/policy-store/reproducible-analytical-pipelines-strategy/">Reproducible Analytical Pipelines (RAP) Strategy</a> and action plan to embed RAP across government, ensuring our processes are automated, efficient, and high quality which frees up resource to add value and insight in our analysis.</p>
</blockquote>
<hr />
</div>
<div id="im-overwhelmed-by-all-the-steps-is-rap-really-necessary" class="section level3">
<h3>I’m overwhelmed by all the steps, is RAP really necessary?</h3>
<hr />
<p>The levels within RAP good practice are in line with what a lot of teams are doing already, take time to understand what the different steps mean and don’t panic about the quantity of them as they’ve intentionally been broken down into the smallest level that was sensible.</p>
<p>Statistics publications are some of the most important pieces of statistics work that the department does. It’s important we get that data right; RAP can help us automate the production and QA of outputs in a way that gives us the most confidence in the statistics and causes the least burden for you.</p>
<hr />
</div>
<div id="will-implementing-rap-lead-to-a-disconnect-with-the-data-and-black-box-processes" class="section level3">
<h3>Will implementing RAP lead to a disconnect with the data and ‘black box’ processes?</h3>
<hr />
<p>Not at all. When fully implemented and accompanied with the relevant skills, RAP has the opposite effect as each stage of the process is clearly written as code.</p>
<p>We recognise there is a sizeable skill gap, and that until this is addressed there can be a risk of feeling like code is a black box. This isn’t a reason to avoid RAP though, instead it’s a big reason why we need to push ahead with prioritising upskilling ourselves to implement it.</p>
<hr />
</div>
<div id="teams-vary-and-what-my-team-does-is-different-to-others-if-im-happy-with-my-approach-can-i-ignore-some-of-the-rap-steps" class="section level3">
<h3>Teams vary, and what my team does is different to others, if I’m happy with my approach, can I ignore some of the RAP steps?</h3>
<hr />
<p>No, you should not ignore any of the steps. If you think any of the steps aren’t applicable to you, talk to the Statistics Development Team so we can understand more about the processes in your area. It may well be that you’re meeting it without realising, there’s a misunderstanding, or there’s something more we can add to the guidance.</p>
<p>If you have unique or nuanced processes, RAP helps you document these and make your area more resilient to turnover of people. RAP is all about automating the process and documenting it in a standardised way to make it easily reproducible.</p>
<hr />
</div>
</div>
<div id="getting-started" class="section level2">
<h2>Getting started</h2>
<hr />
<p>Questions about how to get started with RAP.</p>
<hr />
<div id="can-i-leave-the-r-stuff-to-others-in-my-team-whilst-i-focus-elsewhere" class="section level3">
<h3>Can I leave the R stuff to others in my team whilst I focus elsewhere?</h3>
<hr />
<p>No. Anyone undertaking any analytical processes should now be using RAP processes, and coding is a critical analytical skill. RAP is a cross-government strategy and there is an expectation in all departments for all analysts to move to this way of working.</p>
<p>We all must ensure that analysis is reproducible, transparent, and robust using coding and code management best practices (GSG competency framework).</p>
<hr />
</div>
<div id="implementing-rap-takes-time-to-setup-initially-how-can-we-prioritise-it" class="section level3">
<h3>Implementing RAP takes time to setup initially, how can we prioritise it?</h3>
<hr />
<p>There is a clear expectation that this is the direction for analysis in government, ultimately, it’s a part of the new digital skills required for the role of analysts. If we’re not prioritising improving our analysis in line with RAP principles, we’re not approaching our work correctly.</p>
<p>We have support from senior leadership, and this is a department priority, so you should be building in time for it. If you are having difficulties prioritising RAP after talking with your line management chain, please get in touch with the Statistics Development Team.</p>
<p>In the long term, implementing RAP will significantly reduce the time it takes to run your pipeline, and so while it requires time upfront, it creates more time in the future to prioritise other things. It also improves the quality and reproducibility of our work, giving numerous business benefits.</p>
<hr />
</div>
</div>
<div id="tools-for-rap" class="section level2">
<h2>Tools for RAP</h2>
<hr />
<p>Questions about what tools and software to use when applying RAP principles.</p>
<hr />
<div id="do-i-need-to-rewrite-existing-sql-code-into-r" class="section level3">
<h3>Do I need to rewrite existing SQL code into R?</h3>
<hr />
<p>No. In fact, we recommend you don’t necessarily do this!</p>
<p>SQL is a useful tool in its own right and some processes are better using SQL code executed on the databases.</p>
<p>What we recommend, is that all of your code is within a single R project, and the SQL scripts are executed via R, this helps with documenting the process, but keeps the SQL code and benefits of doing heavy processes on the database side. See the final question in this ‘Tools for RAP’ section for more information.</p>
<hr />
</div>
<div id="im-sometimes-limited-by-the-access-and-tools-i-have-esfa-servers-edap-databricks-is-there-anything-that-can-be-done-about-this" class="section level3">
<h3>I’m sometimes limited by the access and tools I have (ESFA servers, EDAP, Databricks), is there anything that can be done about this?</h3>
<hr />
<p>The first step is to let us (the Statistics Development Team) know so we can understand the wider landscape and escalate. There isn’t really a quick fix, but the first step is raising awareness.</p>
<hr />
</div>
<div id="what-happens-if-we-cant-reproduce-our-current-processes-using-r" class="section level3">
<h3>What happens if we can’t reproduce our current processes using R?</h3>
<hr />
<p>This is highly unlikely and is more likely to be from a lack of knowledge of what is possible in R – if you’re struggling to reproduce processes, please contact the Statistics Development Team so they’re aware of your processes and can help you implement RAP principles.</p>
<hr />
</div>
<div id="r-isnt-always-the-quickest-tool-for-processing-data-can-we-use-sql-instead" class="section level3">
<h3>R isn’t always the quickest tool for processing data, can we use SQL instead?</h3>
<hr />
<p>Yes. We recommend different tools for different purposes, SQL should be used for querying source data and large data processes, R should be used for more complicated data manipulation, QA, and analysis. There’s a grey area in the middle where you can do some things in either tool, sometimes you’ll need to test for yourself which way is faster (e.g., linking datasets or transforming tables).</p>
<p>SQL scripts should be run in an automated way using R, instead of manually running them and copying the outputs. The difference we’re talking about here is whether you process data on the database server or on the machine you’re running R. A simplistic rule of thumb is do large scale processing on the database side (e.g., filtering and aggregating), and then only bring the data you need for manipulation / complicated processing into R.</p>
<hr />
</div>
</div>
<div id="implementing-rap" class="section level2">
<h2>Implementing RAP</h2>
<hr />
<p>Questions on how to implement RAP.</p>
<hr />
<div id="having-a-single-script-for-code-doesnt-seem-the-best-way-to-do-it-why-are-you-suggesting-this" class="section level3">
<h3>Having a single script for code doesn’t seem the best way to do it, why are you suggesting this?</h3>
<hr />
<p>This is a misconception of our guidance that we will be clarifying and improving the phrasing of. The two steps this refers to are:</p>
<ul>
<li>Can the publication be reproduced using a single code script?</li>
<li>Are data files produced via single code script(s) with integrated QA?’</li>
</ul>
<p>We’re not suggesting all code lives in a single script. These steps in the RAP guidance are to encourage the repository being structured so that one clicks of a button can run the entire process from the source data through to the final output in order.</p>
<p>This means that you should have one ‘centralized’ script that details all of the different scripts in your repository. This single run script then provides a single reference point for where all of your code and scripts live, and in what order they’re executed, which is fantastic piece documentation to have!</p>
<hr />
</div>
<div id="how-do-i-dual-run-for-qa-if-our-process-is-in-code" class="section level3">
<h3>How do I dual run for QA if our process is in code?</h3>
<hr />
<p>You don’t need to be dual running if your process is automated, it’s not the best way to QA. See our guidance on QA for more details on how you can approach it or talk to us if you’re unsure.</p>
<hr />
</div>
<div id="should-i-have-separate-repositories-or-branches-in-git-for-each-release" class="section level3">
<h3>Should I have separate repositories or branches in Git for each release?</h3>
<hr />
<p>More information on recommended ways of working with Git can be found in <a href="rap.html#Open_source_repositories">our guidance on repositories</a>.</p>
<p>In short, a single repository should be used for all releases of your publication, there’s no need to have multiple as all the history is saved within previous commits.</p>
<hr />
</div>
<div id="we-should-have-plain-text-documentation-to-accompany-the-process-code-and-comments-dont-feel-like-enough" class="section level3">
<h3>We should have plain text documentation to accompany the process, code and comments don’t feel like enough?</h3>
<hr />
<p>Yes, you should have some plain text documentation, this is a part of the guidance on RAP and a part of the ‘documentation’ step to ‘good’ practice.</p>
<p>The README in your repository is the place for traditional ‘desk notes’ and text explanations of bits of the process and context required, we have <a href="rap.html#Writing_a_README_file">guidance on writing READMEs on the statistics production website</a>.</p>
<hr />
</div>
</div>
<div id="learning-about-rap" class="section level2">
<h2>Learning about RAP</h2>
<hr />
<p>Questions learning more about RAP and developing skills.</p>
<hr />
<div id="can-i-look-at-what-other-people-are-doing" class="section level3">
<h3>Can I look at what other people are doing?</h3>
<hr />
<p>Absolutely. Currently the best way to do this is to ask other teams to share code directly with you. If we can all make more progress with using Git, then this will make it much easier to share repositories and have code open by default for interested analysts to browse.</p>
<p>We are also starting up a knowledge share series, so keep an eye out for that and make sure to contribute yourselves. We’d also encourage analysts to make more use of teams to post questions and ask about other people in our area doing similar types of analysis, no question is too big or too small!</p>
<hr />
</div>
<div id="i-dont-have-the-skills-to-implement-rap-how-do-i-get-them" class="section level3">
<h3>I don’t have the skills to implement RAP, how do I get them?</h3>
<hr />
<p>See the top section on the <a href="#support-on-offer">support on offer</a>!</p>
<p>Plus, if you’re ever unsure at all, you can always contact <a href="mailto:statisics.development@education.gov.uk">statisics.development@education.gov.uk</a> who will be able to help you find resources that work for you or do bespoke training for your team’s needs.</p>
<hr />
</div>
</div>
</div>
</div>
</div>
</div>
<script>
// add bootstrap table styles to pandoc tables
function bootstrapStylePandocTables() {
$('tr.odd').parent('tbody').parent('table').addClass('table table-condensed');
}
$(document).ready(function () {
bootstrapStylePandocTables();
});
</script>
<!-- tabsets -->
<script>
$(document).ready(function () {
window.buildTabsets("TOC");
});
$(document).ready(function () {
$('.tabset-dropdown > .nav-tabs > li').click(function () {
$(this).parent().toggleClass('nav-tabs-open');
});
});
</script>
<!-- code folding -->
<script>
$(document).ready(function () {
// temporarily add toc-ignore selector to headers for the consistency with Pandoc
$('.unlisted.unnumbered').addClass('toc-ignore')
// move toc-ignore selectors from section div to header
$('div.section.toc-ignore')
.removeClass('toc-ignore')
.children('h1,h2,h3,h4,h5').addClass('toc-ignore');
// establish options
var options = {
selectors: "h1,h2,h3",
theme: "bootstrap3",
context: '.toc-content',
hashGenerator: function (text) {
return text.replace(/[.\\/?&!#<>]/g, '').replace(/\s/g, '_');
},
ignoreSelector: ".toc-ignore",
scrollTo: 0
};
options.showAndHide = true;
options.smoothScroll = true;
// tocify
var toc = $("#TOC").tocify(options).data("toc-tocify");
});
</script>
<!-- dynamically load mathjax for compatibility with self-contained -->
<script>
(function () {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://mathjax.rstudio.com/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML";
document.getElementsByTagName("head")[0].appendChild(script);
})();
</script>
</body>
</html>