-
Notifications
You must be signed in to change notification settings - Fork 18
/
competencies.yml
1203 lines (1087 loc) · 42.5 KB
/
competencies.yml
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
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# Junior Engineer, Technical
- id: 7ed8deae-2dbb-4830-bca0-9e6cee038bff
summary: Is responsible for and maintains their computer and local development environment
examples:
- Keeps their local tools up to date
- Follows instructions to get software projects running locally
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: 1ab2d281-1a60-4a49-a1d3-87f03bcf510e
summary: Uses version control to manage routine development workflow, and can work with support on uncommon workflows
examples:
- "Git example: is able to clone a repo, check out a branch, add, commit, push"
- "Git example: asks for help with more complex tasks like rebase and resolving conflicts"
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: 43cd4e9d-6462-4d4b-94e2-69dfeff246f6
summary: Uses code to make something reasonably straightforward, mostly independently
examples:
- Works on a feature or improves an existing one
- Adds a use case to an existing automation script
- Adds a CloudFormation template
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: 655e2933-b58e-488b-9683-a0b191a37788
summary: Implements automated unit or end to end tests with help from a more senior engineer
examples: []
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: cb1a4c9c-28dd-4d1d-938e-1f689fb91393
summary: Fixes or updates tests when implementing changes to a preexisting feature
examples: []
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: 43f6e213-b51e-45bd-bb37-a23a3e7d5457
summary: Checks whether code from well-known sources can be reused before writing new code, and generally identifies that kind of reuse when there is the opportunity
examples:
- Checks to use a Python/Node/etc package in project
- Checks for the chance to integrate with proprietary software packages
- Checks Origami capabilities
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: cad93c51-dee9-4b10-8ccb-d2936dd95380
summary: Works to timeboxes when debugging
examples:
- Ensures they have a timebox when debugging
- Communicates their progress through a timebox
- Seeks help from other engineers before time runs out
- Does not overshoot a timebox without flagging it
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: 0137fb68-807a-4971-8431-1b8bfd9a4bae
summary: Shadows during live incidents or joins debugging mob sessions
examples: []
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: 9098cc7f-a50a-48df-b84f-c4ee9fa47dbe
summary: Is able to explain why using CI/CD pipelines for automation is beneficial, and uses them for basic functions
examples:
- Restarts a broken build
- Is able to interpret CI output and articulate what is failing
- Can fix simple problems or asks for help
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: ae32dc05-3e53-47d2-a027-345eb42dffa3
summary: Occasionally uses monitoring tools to explain technical behaviour
examples:
- Occasionally uses Pingdom or Grafana to explain unusual behaviour
- Occasionally uses Pingdom or Grafana to understand the consequences of a change
supportingUrls: []
description: null
level: junior
area: technical
domain: null
- id: 70ae7051-3aed-42a0-be39-6c8a381eeaaf
summary: Writes pull requests that are helpful both to the reviewer and those debugging the the code later
examples:
- Writes PR descriptions that explain why the PR is needed
- Links to relevant Jira tickets in PRs
- Adds screenshots to show changes if applicable
- Provides context that they learned when researching a PR
supportingUrls: []
description: null
level: junior
area: communication
domain: null
- id: 57c50830-f2ef-4c61-97fa-ec80b0624473
summary: Regularly reads peers' PRs and asks questions in order to learn
examples: []
supportingUrls: []
description: null
level: junior
area: communication
domain: null
- id: 5d637365-7e38-432d-bcec-8652f06d8109
summary: Remembers to write more straightforward tickets and bug reports to track the work expected of them, perhaps with prompting and guidance
examples:
- Checks there is a corresponding ticket or bug report before starting any work, and flags it if not
- Writes reasonable "steps to reproduce" in a reasonably straightforward bug report when prompted
- Adds relevant links and screenshots to pages affected by a bug when prompted
supportingUrls: []
description: null
level: junior
area: communication
domain: null
- id: dcfbf24d-04e2-4029-88a0-93479e4d04a8
summary: Receives feedback and acts upon it
examples:
- Implements requested changes on a pull request
- Responds to comments on a Google document
- If they receive feedback from the team that sometimes they don't seem well-prepared for morning stand-ups, takes 5 minutes before stand-ups to gather thoughts about what the status of their work is
supportingUrls: []
description: null
level: junior
area: communication
domain: null
- id: c8d62965-dd71-4a90-83df-a4c924a40fd8
summary: Is able to recognise when they are having difficulties, and provides information so that other people can help
examples:
- Raises a concern to their line manager if they feel they are falling behind
- Asks a mentor for help if they feel overwhelmed or not feeling confident
- Asks a tech lead for help if they are struggling with a piece of work
supportingUrls: []
description: null
level: junior
area: communication
domain: null
- id: da526878-694a-4a73-b678-f3e46301e1b6
summary: Presents their own work clearly to a product owner or tech lead
examples:
- Talks about their progress in standup without going into deep technical detail
- Explains their approach to a technical problem to their tech lead
- Gives a live demo of a feature that they worked on to their team
supportingUrls: []
description: null
level: junior
area: communication
domain: null
- id: b8bd799d-6712-4882-b1a7-4f66166c3315
summary: Effectively communicates when they are unable to attend expected events
examples:
- Informs meeting organisers of meetings they cannot attend
- Puts out-of-office messages on emails when going on holiday
- Puts appropriate emoji on Slack when sick or on holiday
- If they've got a meeting clash they explain to the organiser of the meeting they have to miss
- When they're in a meeting that's overrunning into another they communicate with both meetings' organisers to set expectations
- If they have a meeting that reguarly overruns into another they ask for help from their line manager
supportingUrls: []
description: null
level: junior
area: communication
domain: null
# Junior Engineer, Delivery
- id: 05402e55-07c6-4755-9e93-240dfc656255
summary: Recognises and communicates conflicting priorities and delivery expectations
examples:
- Recognises when meetings clash with other responsibilities, and communicates to affected parties with the aim of resolving the conflict
- Communicates the difficulties they encounter with delivering a ticket rather than struggling on their own
supportingUrls: []
description: null
level: junior
area: delivery
domain: null
- id: ed6d6a37-08f3-403c-a350-fef1652d7903
summary: Attends their team's meetings, and shares their views and opinions
examples: []
supportingUrls: []
description: null
level: junior
area: delivery
domain: null
- id: 1f5273b2-d9e1-459b-b0aa-6e9379b49bbc
summary: Regularly communicates the status of their work
examples: []
supportingUrls: []
description: null
level: junior
area: delivery
domain: null
- id: 12125116-15de-47c6-81f5-449c3b07a304
summary: Participates in the delivery process
examples:
- Moves tickets to done column when they are complete
- Goes to stand-ups and communicates progress
supportingUrls: []
description: null
level: junior
area: delivery
domain: null
- id: 70f624cf-d634-45f5-ac81-2b73768cd792
summary: Knows who their project's stakeholders are and references them where appropriate
examples:
- Explains a ticket in reference to a named stakeholder
- Explains a ticket in reference to a specific kind of stakeholder
- References named stakeholders in retrospectives
supportingUrls: []
description: null
level: junior
area: delivery
domain: null
# Junior Engineer, Leadership
- id: 6e9e0e5d-bff1-45d9-aafb-6b7c4ed41448
summary: Acts with integrity, honesty and accountability
examples: []
supportingUrls: []
description: null
level: junior
area: leadership
domain: null
- id: ad03e3e5-b9df-43c4-9b9d-84de651c04cf
summary: Is respectful to and inclusive of others
examples:
- Listens to others regardless of role, social group, etc
- Treats remote and in-person meeting participants with equal respect
- Escalates to their line manager occasions when a colleague seems to be excluding or alienating others
supportingUrls: []
description: null
level: junior
area: leadership
domain: null
- id: 08e07d7d-37bf-44e0-8ac8-9535579e986b
summary: Is engaged with their own personal development and follows through on agreed actions for this
examples:
- Sees some code that they don't understand, and researches how it works
- Learns how to use a new tool/language feature
- Reads blog posts about technology
- Studies for and attains a technical certification
- Finds a training course and takes it
- Attends meet-ups or conferences
supportingUrls: []
description: null
level: junior
area: leadership
domain: null
# Engineer, Technical
- id: 297576d0-c20c-4498-8d53-b00ef9bbe48b
summary: Uses version control to manage development workflow
examples:
- "Git specific example: clone, branch, add, commit, push, rebase"
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
- id: 574c234d-b52e-4765-b160-bac958e2d207
summary: Uses code to make something with some degree of complexity
examples:
- Takes a feature from their team backlog and writes the code for that feature
- Automates a regular task using Python
- Writes a CloudFormation template
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
- id: 4db41452-c2c7-40bf-87b1-a2d8ed6f902a
summary: Writes automated unit and end to end tests for features
examples: []
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
- id: 2385d7ee-64c1-45de-b1d9-18050fba9d44
summary: Fixes or updates tests when changing existing code
examples: []
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
- id: f66d122f-bd81-4b57-8b4a-78f00a11934c
summary: Reuses existing code
examples:
- Uses a python package in project
- Uses a node package in project
- Integrates with proprietary software packages
- Uses Origami
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
- id: b0e285f2-08a3-47c2-a810-30d5258e1863
summary: Maintains the security of the systems they work on
examples:
- Fixes vulnerabilities in dependencies raised by Snyk
- Fixes vulnerabilities raised by the cyber security team
- Doesn't introduce vulnerabilities outlined in the Open Web Application Security Project (OWASP) top 10
supportingUrls:
- label: Open Web Application Security Project
url: https://www.owasp.org/
description: null
level: engineer
area: technical
domain: null
- id: e566bfce-9390-47ea-9e46-f1db25ae9cc0
summary: Regularly and independently debugs and fixes bugs in their own code
examples:
- Fixes broken tests caused by changes in their code
- Uses logging or a debugger to find the root cause when a new feature is not working as expected
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
- id: 9b30c5f3-7925-4514-9f31-251b32daf1d3
summary: Gets involved in fixing live incidents in production
examples:
- Notices that an AWS region is down so fails over to another region
- Responds to alerts for services in production by investigating errors and beginning remedial action
- Works as home teams' "ops cop", liaising with Operations and Reliability to restore a service
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
- id: e4cd2032-2974-42ba-ac74-565809069447
summary: Uses continuous delivery or build pipelines for automation
examples:
- Sees their build is failing and finds out why using the CircleCI or Jenkins interface
- Restarts broken builds
- Makes config changes in CircleCI
- Adds a build status badge to their project
- Promotes an app from staging to production in Heroku
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
- id: b24b7fe3-3c4f-4fb0-b2b4-ba8c43806701
summary: Uses monitoring (but doesn't necessarily implement monitoring)
examples:
- Pingdom, grafana
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
- id: 09066401-3dab-499f-a91f-dbbf5e19bdd8
summary: Makes pragmatic decisions about technical trade-offs within their own code
examples:
- Weighs up the benefits of making code more abstract vs specific
- Reasons about making an API call from the client or from the server - it's easier from the client but core experience will be worse
supportingUrls: []
description: null
level: engineer
area: technical
domain: null
# Engineer, Communication
- id: 6a019e95-20ab-4af5-a42a-727274eec0d8
summary: Maintains documentation on the systems they work on, making it easy for future engineers to interact with systems and code
examples:
- Writes READMEs with the appropriate level of detail for getting the project set up
- Documents common issues with the codebase in a troubleshooting section in the README
- Finds some documentation they are reading is out of date so opens a Pull Request to improve it
- Writes good commit messages that explain why a change was made
- Puts line comments around any 'magic' bits of code
- Writes and updates runbooks for services they work on
supportingUrls: []
description: null
level: engineer
area: communication
domain: null
- id: a0429b57-40dd-4f65-87d5-924c8a2a1226
summary: Provides feedback on peer’s work
examples:
- Reviews pull requests and gives actionable empathetic feedback
- Recognises when a more senior colleague has not given enough detail in an explanation, and asks for clarification
- Gives realtime feedback in mob programming sessions
supportingUrls: []
description: null
level: engineer
area: communication
domain: null
- id: 458cfd7f-b621-462e-ad7f-90870e1d5cfc
summary: Writes clear tickets, issues and bug reports that contain the necessary amount of detail to be picked up by other engineers
examples:
- Adds links to the pages that are affected by a bug
- Writes steps to reproduce an issue that they've found
- Adds screenshots to a ticket to help explain a display bug
supportingUrls: []
description: null
level: engineer
area: communication
domain: null
- id: 79c4ecfd-7085-49c2-8a21-429b4a269c96
summary: Regularly gives timely actionable feedback to colleagues
examples:
- Emails positive feedback to a colleague's line manager, after the colleague was especially helpful.
- Notices that someone in the team has invited everyone to a meeting without an agenda. Asks them to add one so people know what the meeting is for and can prepare properly.
supportingUrls: []
description: null
level: engineer
area: communication
domain: null
# Engineer, Delivery
- id: 6dd9f702-6ee8-46d1-9c4c-9c370d971cb1
summary: Works on the most important task
examples:
- Picks the story from the top of a prioritised backlog rather than picking the one that most interests them
- Creates tickets to capture non-trivial tech debt, rather than getting side-tracked by things not needed to complete the current task
supportingUrls: []
description: null
level: engineer
area: delivery
domain: null
- id: e7f347c1-b478-4289-aa1a-c05da3f972ec
summary: Uses user research or data to inform decisions
examples:
- Attends customer based user research for a feature being worked on
- Sets up a testing session with peers for a new bit of tooling
- Finds a common pain point among teammates and proposes/builds a solution for it
supportingUrls: []
description: null
level: engineer
area: delivery
domain: null
- id: a4832222-6d61-4cab-ba45-85eb61c20187
summary: Leads on getting well defined tasks from backlog to production
examples:
- Turns a user story into a technical implementation in production
- Raises blockers in timely way
supportingUrls: []
description: null
level: engineer
area: delivery
domain: null
- id: 0ff46645-7966-42f8-9144-23b6a88743cc
summary: Regularly collaborates with team members from other disciplines to deliver features
examples:
- Pairs with the designer who worked on visuals or wire-frames for a feature
- Sits with their product owner to discuss some edge-cases in a feature
- Helps to debug a cross-browser issue with a tester
supportingUrls: []
description: null
level: engineer
area: delivery
domain: null
- id: 385be187-5aaa-493b-a663-3b8ec7a04d7f
summary: Regularly contributes openly to team meetings and encourages others to do so
examples: []
supportingUrls: []
description: null
level: engineer
area: delivery
domain: null
- id: a0c27510-41d9-4a34-98d9-3b49b0ef8056
summary: Regularly communicates the status of work
examples: []
supportingUrls: []
description: null
level: engineer
area: delivery
domain: null
- id: 168c5839-8070-4bb1-a0fa-b26d1267e791
summary: Asks for help or clarification on tasks when required
examples: []
supportingUrls: []
description: null
level: engineer
area: delivery
domain: null
- id: 76ec9be3-e63f-4374-9742-cbbc1728549a
summary: Participates in delivery process
examples:
- Moves tickets to done column when they are complete
- Goes to stand-ups and communicates progress
supportingUrls: []
description: null
level: engineer
area: delivery
domain: null
- id: 3992123b-ca9b-4d27-a48f-37334567c451
summary: Can articulate the business goal of a set of features
examples:
- In conversation, distinguishes between what a feature does and the benefit it should provide
- Proposes priority or feature changes to deliver business benefits sooner
- Explains the business benefits of work when demoing it
supportingUrls: []
description: null
level: engineer
area: delivery
domain: null
# Engineer, Leadership
- id: 4dc43122-71f1-4fb1-99c8-73aa3a666332
summary: Positively contributes to an inclusive team culture
examples:
- Reminds others that team members may have child care duties
- Draws people working remotely into planning conversations
- Tactfully calls out exclusive or alienating behaviours from others
- Organises a leaving collection for a colleague
- Documents team norms to help new starters
- Checks in with team members who appear stressed
supportingUrls: []
description: null
level: engineer
area: leadership
domain: null
- id: 3d8a92de-b293-4300-b12f-a1902f0a22f0
summary: Shares knowledge with peers informally
examples:
- Pairs on a feature with a more junior colleague
- Helps onboard a new hire, acting as their go-to person for questions
- Comes back from a conference and shares their learnings with others
supportingUrls: []
description: null
level: engineer
area: leadership
domain: null
- id: 82a8460f-8554-4837-9799-01174ea5be6f
summary: Has worked with teams outside of their home group (where home group will be one of Customer Products, FT Core, Community, Cyber Security, Internal Products, Engineering Enablement, Staff Experience and FT Specialist)
examples:
- Based in Customer Products but collaborated with developers from FT Core to build a new API endpoint for content
- Has done a bootcamp with another group
- Had done a secondment to Operations and Reliability
- Works in the Interactive Graphics team and collaborates with someone from Editorial on a project
- Works in Internal Products and collaborates with the Origami team on a new feature in a component
supportingUrls: []
description: null
level: engineer
area: leadership
domain: null
- id: 22c2a49e-4e2e-4a63-a09e-57a0efce7e38
summary: Takes ownership of their personal development
examples:
- Sees some code that they don't understand, and researches how it works
- Proactively learns how to use a new tool/language feature
- Reads blog posts about technology
- Studies for and attains a technical certification
- Finds a training course and takes it
- Attends meet-ups or conferences
supportingUrls: []
description: null
level: engineer
area: leadership
domain: null
# Senior Engineer 1, Technical
- id: 272be0d0-6b55-11e9-ae4e-0583f673f115
summary: Builds products ensuring they take adequate steps to protect sensitive data
examples:
- Databases have encryption at rest
- Sensitive data is masked or in restricted indexes in Splunk
- Data is retained only for as long as it is needed
- Dummy/fictional data is used in staging environments and in tests
- Suppliers don't get access to data unless they have gone through the Procurement Management Application process
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 2c1289fe-3bf9-476b-981b-8af2d345d76a
summary: Implements appropriate observability and monitoring when building a solution
examples:
- When adding a new dependency to a system, adds a healthcheck to monitor the dependency's state
- Adds logging that is well-structured and captures useful information about the state of a system
- Builds a Grafana dashboard that visualises normal and abnormal operation of a system
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 1391dba0-974b-4035-85fb-be3096658b59
summary: Evaluates third-party software to use in projects
examples:
- Can choose between similar Node libraries evaluating code quality, ease of integration, future maintenance, and security concerns
- May be involved in evaluating paid-for third party supplier code
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 07715459-0423-4507-bdf1-fc397507eec7
summary: Leads on fixing live incidents in production
examples:
- Takes proactive action when an incident is reported on a system they support and resolves it satisfactorily
- "Responds to critical issues raised in #ft-tech-incidents taking the initiative to fix them and reports back"
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 1d096180-c331-459e-9dbf-4d8db12ac885
summary: Understands the security attack vectors for their area of technology and mitigates against them
examples:
- Uses Snyk.io on projects
- Sanitises user input to mitigate against XSS attacks
- Applies security patches to an operating system
- Protecting public API endpoints
- Articulates security risks/benefits when evaluating third party software
- Uses Fastly WAF to protect from malicious requests
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 0d01eb2a-eed0-499b-8510-a72fd656ada4
summary: Makes pragmatic decisions about technical trade-offs within their project
examples:
- Knows when to stop work on a feature that has fulfilled the requirements vs. spending an extra week on making it perfect but delivering little additional value
- When pressed for time, focuses on ensuring test coverage of the most critical system functionality
- Manages technical debt, understands consequences of technical debt vs the cost of fixing it and acts accordingly
- Can explain when something is worth refactoring even when it will impact the speed of delivery
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 5e9295a7-753a-4530-9d25-8deac9118cbe
summary: Delivers high quality code and solutions
examples:
- Refactors solutions to improve clarity and maintainability
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 5e9295a7-753a-4530-9d25-8deac9118cbf
summary: Encourages others to deliver high quality code and solutions
examples:
- Implements tooling to enforce high standards
- Reviews pull requests fairly & critically in such away that team members produce better code
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: a021bb76-9190-4059-b4c5-285f4f240169
summary: Regularly and independently debugs and fixes bugs regardless of origin
examples:
- Picks up and debugs an urgent issue that comes in to the team, despite having not written the code originally
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 3a87302b-c85f-49f6-9e7a-a4989e717fba
summary: Builds software or services considering resilience, performance and failure modes
examples:
- Combines multiple data sources in a feature, caching, polling etc as appropriate to cope with problems in downstream services
- Adds healthchecks to a system that detect different ways in which it can fail
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 152af675-554a-4d0d-afb1-190fca3867b2
summary: Chooses the appropriate tool, technology or software for a task
examples:
- If starting a new project, uses tools already understood by the team unless there is an agreed good reason to change
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: fd3e5d38-add3-4394-bd53-666482e422f2
summary: Builds and works with systems involving multiple, independent technical parts
examples:
- Adds data sources to or optimises performance of a data pipeline
- Publishes a new origami component that uses other components
- Implements a CDN / gateway that routes to a suite of underlying microservices
- Designs and implements a build pipeline
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
- id: 46c795d8-b684-4401-bf1e-45a31dd689cb
summary: Considers the technical direction of their group or the wider department when coming up with technical solutions
examples:
- Understands how their work feeds into their group's tech strategy
- Can articulate and justify the total cost of ownership of their technical solutions
- Follows their group's Engineering Principles when building technical solutions
supportingUrls: []
description: null
level: senior1
area: technical
domain: null
# Senior Engineer 1, Communication
- id: efc4ba84-9188-40cf-97c8-b61da4b163e3
summary: Communicates technical concepts clearly and adapts that communication to the audience
examples:
- Explains their work in standups knowing which technical details to leave out to make the message meaningful to everyone in the room
- Teaches more junior engineers
- Creates diagrams to document how the different parts of systems interact
- Presents their own work clearly to stakeholders
supportingUrls: []
description: null
level: senior1
area: communication
domain: null
- id: ef527eef-b3ed-4e54-9f7c-36b27c81f7f8
summary: Facilitates productive discussions with clear outcomes
examples:
- Runs meetings with clear agendas and outcomes
- Obtains wide feedback on technical proposals and takes ownership of seeing it through
supportingUrls: []
description: null
level: senior1
area: communication
domain: null
- id: 7cf4de83-f8e0-4311-ba1b-a9233c659520
summary: Contributes to hiring process
examples:
- Participates in hiring panels or technical interviews
- Attends recruitment events
- Publicly shares links to open roles
- Goes for coffee with potential hires to talk about what working at the Financial Times is like
- Shares our work publicly, (through blogging, speaking, etc) to show the kinds of work we do here
- Reviews CVs
- Reviews tech tests
supportingUrls: []
description: null
level: senior1
area: communication
domain: null
# Senior Engineer 1, Delivery
- id: c6bcfbd3-550f-4902-8c9a-bd6e9c77d67b
summary: Prioritises technical work for the team (usually with others)
examples: []
supportingUrls: []
description: null
level: senior1
area: delivery
domain: null
- id: 0cba7c1c-23c8-4618-b286-d98125cd7f5c
summary: Breaks down large complex technical proposals into discrete tasks
examples:
- Creates the user stories for the ticket with a delivery lead
supportingUrls: []
description: null
level: senior1
area: delivery
domain: null
- id: 850dda3f-df42-4187-a72b-aed1023b7abd
summary: Communicates team/work's status upwards to a Principal or Technical Director
examples: []
supportingUrls: []
description: null
level: senior1
area: delivery
domain: null
- id: 9e1a0313-f602-4786-97c6-d4d49506f0bb
summary: Where appropriate, builds on other teams' work to solve problems
examples:
- Uses origami components to style a web page
- Uses Biz Ops as a source of system data rather than creating a new system registry
supportingUrls: []
description: null
level: senior1
area: delivery
domain: null
- id: 7aeb8fec-9bd0-4929-981d-584654bc954f
summary: Moves blockers to enable more junior engineers to work
examples:
- Reviews pull requests
- Suggests someone to talk to eg “[X] knows the most about [technology Y], you could ask them”
supportingUrls: []
description: null
level: senior1
area: delivery
domain: null
- id: c0d81832-8fe9-485c-8847-25763255a1b3
summary: Tackles simple cross team technical issues
examples:
- Notices a tool used by lots of teams has broken, identifies the problem and fixes (or reports it to the owner of the tool)
supportingUrls: []
description: null
level: senior1
area: delivery
domain: null
- id: d8651fc0-059b-4c11-929f-e07803f9f8bf
summary: Actively seeks the views of other teams to help guide work
examples:
- Attends cross team meetings
- Asks other teams for input and opinions on decisions that affect them
supportingUrls: []
description: null
level: senior1
area: delivery
domain: null
- id: 787be828-9a7f-4998-9bc6-a8b06f2d77de
summary: Improves delivery process and encourages others to do the same
examples:
- Updates the scrum process to fit the changing needs of the team
- Champions technical issues that affect delivery such as release cycles, dealing with tech debt and bug fixes
- Encourages other engineers to participate in agile team rituals
supportingUrls: []
description: null
level: senior1
area: delivery
domain: null
- id: 7ccc5fac-5da2-451e-8043-af2fd880fcf9
summary: Manages, prioritises and communicates own workload
examples: []
supportingUrls: []
description: null
level: senior1
area: delivery
domain: null
# Senior Engineer 1, Leadership
- id: f34273e2-3d81-4bde-8c23-0217e71b3536
summary: Influences a community of practice
examples:
- Is an active member of a Guild
- "Answers questions in the #engineering Slack channel"
- Gives a tech talk (internally or externally)
- Writes a blog post
- Shares industry relevant content/links with team members that may be interested
supportingUrls: []
description: null
level: senior1
area: leadership
domain: null
- id: 0777c050-8008-4e17-a437-f8de0be3bd55
summary: Is an ambassador for their team across FT technology
examples:
- Positively represents their team in interactions with other people by seeking to understand their perspectives, values and needs
- Consistently contributes to their team being positively perceived by stakeholders (or by other engineering teams to which they provide support)
supportingUrls: []
description: null
level: senior1
area: leadership
domain: null
- id: 5e7b6a79-c553-4852-a5eb-97a6550f59da
summary: Contributes to the personal development of more junior people
examples:
- Is a line manager or mentor
- Is a designated buddy to a new starter
- Regularly meets up with more junior peers to provide guidance
- Pairs with more junior team members
- Writes blog posts to share knowledge
- Gives talks at meet-ups or conferences to share knowledge
supportingUrls: []
description: null
level: senior1
area: leadership
domain: null
- id: 2c9171a0-8935-41fa-809e-08c311538eac
summary: Shows technical leadership
examples:
- Is a tech lead
- Runs, or is on the organising team for a Guild
- Leads on large features, stories or projects
supportingUrls: []
description: null
level: senior1
area: leadership
domain: null
- id: 37fa54f8-b81e-40d9-b35e-a3e139b872a3
summary: Shares knowledge with others internally
examples:
- Gives a workshop on Git
- Runs a regular 101 session for the rest of the business
- More informal knowledge sharing through mentorship
supportingUrls: []
description: null
level: senior1
area: leadership
domain: null
- id: de580f8a-633d-43bb-b970-9b2987e07b86
summary: Actively fosters an inclusive team culture
examples:
- Celebrates good work publicly and encourages the team to do the same
- Spots problems between team members and helps to resolve them or escalate them as appropriate
- Models inclusive behaviour to the rest of the team
supportingUrls: []
description: null
level: senior1
area: leadership
domain: null
# Senior Engineer 2, Technical
- id: 97ac147f-1b61-43c4-b677-dbb837ba092b
summary: Makes pragmatic decisions about technical trade-offs beyond their project
examples:
- Can articulate why the overhead of using a third party system is worth it for their project
- Decides to invest time in building a dashboard for stakeholders to reduce the number of queries they make to the team
- Gathers relevant data to inform buy vs. build vs. blend discussions impacting their project