-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.html
1062 lines (998 loc) · 74.3 KB
/
index.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
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
<!DOCTYPE html>
<html dir="rtl">
<head>
<meta charset=UTF-8>
<link rel="stylesheet" type="text/css" href="styles.css" />
<script src="functions.js" type="text/javascript"></script>
</head>
<body>
<div class="main">
<div class="nav">
<a href="index.html">
<span class="item selected">TECHNICAL</span>
</a>
<a href="communication.html">
<span class="item">COMMUNICATION, FEEDBACK, COLLABORATION & COMMUNITY</span>
</a>
<a href="leadership.html">
<span class="item">
LEADERSHIP
</span>
</a>
<a href="delivery.html">
<span class="item">
DELIVERY & EFFECTIVENESS
</span>
</a>
<a href="strategy.html">
<span class="item">STRATEGY</span>
</a>
</div>
<!--header-->
<div class="header">
<div class="skill-header">
<h1>مسائل فنی</h1>
<a href="#reliable" onclick="changeSkill('reliable')">
<div class="competencies selected" id="reliable-header">
<div class="headerbox">
<div class=header1>سیستمهای قدرتمند (Robust) و قابل اعتماد (Reliable)</div>
</div>
<div class=summary>ساخت و نگهداریِ سیستمهای قدرتمند (robust)، قابل اعتماد (reliable) و پایدار (stable)
</div>
<div class=sub-skills>
<span class="text">◖ امنیت (security)</span>
<span class="text">◖ سیستمهای توزیعشده (distributed systems)</span>
<span class="text">◖ مشاهدهپذیری (observability) و قابل اطمینانسازی (Reliability)</span>
</div>
</div>
</a>
<a href="#troubleshooting" onclick="changeSkill('troubleshooting')">
<div class="competencies" id="troubleshooting-header">
<div class="headerbox">
<span class=header1>عیب یابی (Troubleshooting)
</span>
<br />
<br />
</div>
<div class=summary>تواناییِ عیبیابی سیستمها و تشخیص مسائل (issues)<br /></div>
<div class="sub-skills">
<span class="text">◖ اشکالزدایی (debugging)</span>
<span class="text">◖ واکنش به حادثه (incident)</span>
<br />
<br />
</div>
</div>
</a>
<a href="#architecture" onclick="changeSkill('architecture')">
<div class="competencies" id="architecture-header">
<div class="headerbox">
<span class=header1>معماری (Architecture) و طراحی (Design) فنی</span>
</div>
<div class=summary>طراحی، ساخت و تحلیل (analyse) معماری فنیِ همراستا با نیازهای شرکت و بِهروشها (best
practices)</div>
<div class="sub-skills">
<span class="text">◖ درک کردن کُد (code)</span>
<span class="text">◖ طراحی API</span>
<span class="text">◖ طراحی الگوها</span>
<span class="text">◖ معماری نرمافزار</span>
<br />
<br />
</div>
</div>
</a>
<a href="#quality" onclick="changeSkill('quality')">
<div class="competencies" id="quality-header">
<div class="headerbox">
<span class=header1>کیفیت (Quality)</span>
<br />
<br />
</div>
<div class=summary>
انجام و ترویج روشهایی که کیفیت کار ما را تضمین میکند؛ چه بصورت شخصی، چه تیمی
</div>
<div class="sub-skills">
<span class="text">◖ بازنگری (review) کُد</span>
<span class="text">◖ کاربر محور</span>
<span class="text">◖ تست (test) کردن</span>
<span class="text">◖ بِهروشها (best practices)</span>
<br />
<br />
</div>
</div>
</a>
<a href="#craft" onclick="changeSkill('craft')">
<div class="competencies" id="craft-header">
<div class="headerbox">
<span class=header1>مهارت (Craft)</span>
<br />
<br />
</div>
<div class=summary>
توسعهی تخصصها در موضوعات پایهای فنی و تخصصهای فنیِ خاصِ انتخاب شده
</div>
<div class="sub-skills">
<span class="text">◖ ساختمان داده (data structure) و الگوریتم</span>
<span class="text">◖ نوشتن کُد</span>
<span class="text">◖ تخصصهای فنی</span>
<br />
<br />
</div>
</div>
</a>
</div>
<div class="roadmaps">
Roadmaps: <a href="frontend-roadmap.pdf" target="_blank" class="link underline">Frontend Roadmap</a> | <a
href="backend-roadmap.pdf" class="link underline" target="_blank">Backend Roadmap</a>
| Source: <a href="https://tinyurl.com/e360-competencies" class="link underline">Competencies Matrix</a>
| Feedback: <a href="https://forms.gle/9mSZsdaCTgw4NFJX8" class="link underline">Feedback Form</a>
</div>
</div>
<div class="main">
<!--Junior-->
<div class="row">
<div class="left col">
<span class=title>E1: مهندس سطح 1</span>
<p><span class=focus>تمرکز: <br />درون Task</span></p>
<a href="https://tinyurl.com/e360-engineer-i" target="_blank" class="link underline">انتظارات از این نقش</a>
</div>
<div class="middle" id="junior-skills">
<div class="reliable">
<span class="pill">سیستمهای قدرتمند (Robust) و قابل اعتماد (Reliable)</span>
<ul>
<li>
<span class="highlight underline"> امنیت (security)</span><br /> کسبِ درکی از اهمیتِ «امنیت» و ملاحظات
امنیتی.
</li>
<li>
<span class="highlight underline"> سیستمهای توزیعشده (distributed systems)</span><br /> کسبِ درکی از
اپلیکیشنهایی که در حوزه تکنولوژی کار میکنند.
</li>
<li>
<span class="highlight underline"> مشاهدهپذیری (observability) و قابل اطمینانسازی (Reliability)
</span>
<br /> N/A (در این سطح قابل اطلاق نیست)
</li>
</ul>
</div>
<div class="troubleshooting">
<span class="pill"> عیب یابی (Troubleshooting)</span>
<ul>
<li>
<span class="highlight underline"> اشکالزدایی (debugging)</span><br />درک اصول اولیهی اشکالزدایی و
ابزارهایی که به این منظور استفاده میشود.
</li>
<li>
<span class="highlight underline"> واکنش به حادثه (incident)</span><br />یادگیری تشخیص آنکه چه زمانی یک
حادثه رخ داده است یا یک باگ با اولویت پایین است.
</li>
</ul>
</div>
<div class="architecture">
<span class="pill">معماری (Architecture) و طراحی (Design) فنی</span>
<ul>
<li>
<span class="highlight underline"> درک کردن کُد (code)</span><br />
زمینه لازم در مورد دامنه کاری تیم رو با کمک مهندسان خِبرهتر به دست میآورد.
</li>
<li>
<span class="highlight underline">طراحی API</span><br />
درکِ واسطهای API برای GraphQL و REST APIها. درکِ فرمتهای متفاوتی که در API استفاده میشود. توانایی
بازیابی و بروزرسانی اطلاعات بواسطه API.
</li>
<li><span class="highlight underline">الگوهای طراحی (design patterns)</span><br />کسبِ درکِ الگوهای
متفاوتی که در پایگاهِ کُد (codebase) استفاده شده است.</li>
<li><span class="highlight underline"> معماری نرمافزار (software architecture)</span>
<br />از معماریِ دامنه آگاه است و توابع را به گونهای طراحی میکند که از تکرار کد (code duplication) و
تغییرات interface-breaking اجتناب شود.
</li>
</ul>
</div>
<div class="quality">
<span class="pill"> کیفیت (Quality)</span>
<ul>
<li>
<span class="highlight underline">بازنگری کُد (code review)</span><br />
یاد میگیرد که PRهایی (pull request) با اندازهی معقول ایجاد کند که شاملِ شرح توضیحات و تستهای انجام
شده است. میتواند PRها را کامل بخواند و روی آنها پِینوشتهای (comments) محترمانه میگذارد. ممکن است
برای خُرد کردن PRها و پیشنهاد PR مجدد نیاز به کمک داشته باشد.
</li>
<li>
<span class="highlight underline">کاربر محور (user centric)</span><br />
تلاش میکند کار را با درنظر گرفتن دغدغههای کاربرانِ نهایی انجام بدهد و تلاش میکند ارزش یک کار (task)
را درک کند.
</li>
<li>
<span class="highlight underline">تست کردن (testing)</span><br />هرم تست (test pyramid) را درک میکند، و
Unit Testها را مطابق آن مینویسد (گاهی اوقات با کمک دیگران). همواره حالتهای پیشبینی شده، خطاها و همچنین
حالتهای معمولی را تست میکند.
</li>
<li><span class="highlight underline"> بِهروش (best practice)</span><br />به وظایف با نگاهِ پیروی از
بِهروشها برخورد میکند. ممکن است برای فهمیدن آنکه کدام استاندارد را دنبال کند، از دیگران کمک بگیرد.
</li>
</ul>
</div>
<div class="craft">
<span class="pill"> مهارت (Craft)</span>
<ul>
<li>
<span class="highlight underline"> ساختمان دادهها (data structures) و الگوریتمها
(algorithms)</span><br />کسبِ درکِ ساختمان دادههای مختلف و اینکه چه زمانی از از کدام باید استفاده
کرد. کسبِ درکِ پایهای از برخی الگوریتمها و پیچیدگیاشان (به عنوان مثال پیچدگی زمانیِ پیمایش در حلقه
O(n) است).
</li>
<li><span class="highlight underline">کُد زدن</span><br />کُدی با قابلیت تست (testability)، خوانا
(readability) و با درنظر گرفتن خطاها و موارد خاص (edge cases) مینویسند.</li>
<li><span class="highlight underline">خبرگیِ فنی</span><br />شروع یادگیری مفاهیم اساسی تکنولوژیهایی که
درون یک کار (task) نیاز است.</li>
</ul>
</div>
<a class="link" id="show-junior-all" onclick="showAll('junior')">+ نمایش تمام شایستگیها</a>
<a class="link hide" id="hide-junior-all" onclick="hideAll('junior')">+ پنهان کردن شایستگیهای دیگر</a>
</div>
<div class="right col">
<div class=title>مثالها</div>
<a class="show link" id="junior-show" onclick="showExamples('junior')">+ نمایش مثالها</a>
<a class="hide link" id="junior-hide" onclick="hideExamples('junior')">- پنهان کردن مثالها</a>
<ul class="hide" id="junior-examples">
<li>اضافه کردن unit testهایی به کار. استفاده از mock در ازای پاسخ APIها</li>
<li>پیادهسازی کامپوننت sticky footer</li>
<li>افزودن فیلدها و جداول جدید به دیتابیس</li>
<li>بروز کردن کُد برای بازیابی داده از GraphQL</li>
<li>سنجیدن فیلدهای ورودی (input fields) برای محتوای مخرب.</li>
</ul>
</div>
</div>
<!--Mid Level-->
<div class="row even">
<div class="left col">
<span class=title>E2: مهندس سطح 2</span>
<p><span class=focus>تمرکز: <br />درون Epic</span></p>
<a href="https://tinyurl.com/e360-engineer-ii" target="_blank" class="link underline">انتظارات از این نقش</a>
</div>
<div class="middle" id="mid-skills">
<div class="reliable">
<span class="pill">سیستمهای قدرتمند (Robust) و قابل اعتماد (Reliable)</span>
<ul>
<li>
<span class="highlight underline"> امنیت (security)</span><br />
اهمیتِ امنیت را درک میکند. <span class="highlight">
از این دانش برای درخواستِ کمک در تصمیمگیریهایی که ممکن است پیامدهای امنیتی داشته باشد، استفاده
میکند. </span>
</li>
<li>
<span class="highlight underline"> سیستمهای توزیعشده (distributed systems)</span><br />
<span>
میفهمد که اپلیکیشنها در زمینهی خودشان چگونه با یکدیگر ادغام (integrate) میشوند. درکِ عمیقتری از
بخشهای تکنولوژیهای استفادهشده کسب میکند.
کسبِ درکِ تکنولوژیهای متفاوتِ موردنیاز در بخشهایی از tech stack. به عنوان مثال ثبات داده (data
consistency)، async task و دسترسپذیری (availability) اپلیکیشنها.
</li>
<li>
<span class="highlight underline"> مشاهدهپذیری (observability) و قابل اطمینانسازی (Reliability)
</span>
<br />
از فلسفهی مانیتورینگ سازمان، توسعهی مهارتِ استفاده از ابزارهای مانیتورینگ و متریکهای (metrics) مربوط
به حوزهی تیم خود آگاه است.
</li>
</ul>
</div>
<div class="troubleshooting">
<span class="pill"> عیب یابی (Troubleshooting)</span>
<ul>
<li>
<span class="highlight underline"> اشکالزدایی (debugging)</span><br />
از یک رویکرد سیستماتیک برای اشکالیابیِ مسائل موجود در یک سرویسِ واحد استفاده میکند.
</li>
<li>
<span class="highlight underline"> واکنش به حادثه (incident)</span><br />
<span>از طیف وسیعی از ابزارها برای تشخیصِ زمان وقوع حادثه استفاده میکند و حادثه را به
موقع به ذینفعان (stakeholders) اطلاع میدهد. مالکیتِ حوادثی که در حوزه خودشان قرار میگیرد را
میپذیرد. ممکن است در حل یک حادثه نقش داشته باشد.</span>
</li>
</ul>
</div>
<div class="architecture">
<span class="pill">معماری (Architecture) و طراحی (Design) فنی</span>
<ul>
<li>
<span class="highlight underline"> درک کردن کُد (code)</span><br />
درکِ بخشی از فعالیتهای جاری تیم که منجر به کار مولد در آن بخش میشود.
</li>
<li>
<span class="highlight underline">طراحی API</span><br />
درکِ واسطهای مختلف API و فرمتهای آنها و همچنین ساخت APIها بمنظور استفادهی دیگران.
</li>
<li>
<span class="highlight">درکِ بهروشها برای طراحیِ APIها و همچنین تلاش برای عمیقتر کردن این
دانش.</span> این
دانش شامل مواردی همچون اندازهی پاسخها (response size)، امنیت، مدیریت خطا (error handling)، محدود
کردن نرخ استفاده (rate limiting)، عملکرد (performance) و بِهروشهای REST و GraphQL (مثلا صفحهبندی یا
pagination، cache کردن و batch کردن، احرازهویت، فیلترها و طراحی رابط). این مسئله میتواند با کمک
دیگران باشد.<br /></span>
</li>
<li>
<span class="highlight underline">الگوهای طراحی (design patterns)</span><br />
<span>به چگونگیِ اعمال الگوهای مناسب در کُدهای موجود توجه میکند و آنها را درک
میکند. به عنوان مثال، الگوی pub-sub یا الگوی circuit breaker را میشناسد و برای انجام وظایف خود،
میتواند از آنها برای سناریوهای مختلف استفاده کند. ممکن است از دیگران کمک بخواهد که کدام الگو را باید
اعمال کند.
</li>
<li>
<span class="highlight underline"> معماری نرمافزار (software architecture)</span><br />
توابع (functions) را بهگونهای طراحی میکند که متناسب با معماریِ کلی است.</span>
</li>
</ul>
</div>
<div class="quality">
<span class="pill"> کیفیت (Quality)</span>
<ul>
<li>
<span class="highlight underline">بازنگری کُد (code review)</span><br />
<span class="highlight">PRهایی (pull request) با اندازهی معقول ایجاد میکند که شاملِ شرح توضیحات،
تستهای انجام شده و تاثیرات دیپلوی است.</span>
<br />
PRها را با ذرهبینِ کیفیت و ارزش بازنگری میکند، یعنی کیفیت کد (code quality)، معیارهای پذیرش
(acceptance
criteria)، منطقِ کسبوکار (business logic)، پوشش تست (test coverage) و همراستا با معماری.
<br />
<span class="highlight">همواره نظراتی سازنده و محترمانه در PRها ارائه میدهد. در حلوفصل مسائل مربوط به
PRهای خودش فعال است و PRهای دیگران را هم بازنگری میکند.
</li>
<li>
<span class="highlight underline">کاربر محور (user centric)</span><br />
تلاش میکند که ویژگیها (features) را با دغدغهی کاربرانِ نهایی (end-users) ارائه دهد (deliver)، با این
دیدگاه که یک epic قرار است چه ارزشی برای کاربرانِ نهایی به ارمغان بیاورد. برای سهولتِ استفادهی کاربران
نهایی از سیستم تلاش میکند (چه داخلی، چه خارجی و حتا خود توسعهدهندگان).
</li>
<li>
<span class="highlight underline">تست کردن (testing)</span><br />
هرم تست کردن (testing pyramid) را درک میکند و در کنار نوشتن unit test تستهای سطح بالاتر هم مینویسد.
همیشه تستهایی برای مدیریت edge caseها مینویسد و خطاها (errors) را همچون رخدادهای مرسوم (happy paths)،
باظرافت (gracefully) مدیریت میکند.
</li>
<li>
<span class="highlight underline"> بِهروش (best practice)</span><br />
<span>کسبِ درکی از استانداردهایی که باید رعایت شود، و غالب اوقات از بِهروشها در کار
استفاده میکند. بدنبال راهنماهای مرجع (references guides) و استانداردهای شناخته شده و همچنین کمکِ
دیگران است.
</li>
</ul>
</div>
<div class="craft">
<span class="pill"> مهارت (Craft)</span>
<ul>
<li>
<span class="highlight underline"> ساختمان دادهها (data structures) و الگوریتمها
(algorithms)</span><br />
<span>ساختمان دادههای مختلف را میشناسد و میداند که چه زمانی از کدام یک از آنها
استفاده کند. درکی کلی از برخی از الگوریتمهای استفاده شده و همچنین پیچیدگی زمانی مربوط به آنها دارد.
</li>
<li>
<span class="highlight underline">کُد زدن</span><br />
<span>همواره توابعی (functions) را مینویسد که قابل تست (testable) هستند، توسط
توسعهدهندگان (developers) دیگر براحتی قابل درک است و همچنین خطاها و موارد خاص (edge cases) را درنظر
میگیرد.
</li>
<li>
<span class="highlight underline">خبرگیِ فنی</span><br />
<span>مفاهیمِ اصلی تکنولوژیهای استفاده شده را میداند و دانشاش را در سایر زمینههای
یک تخصصِ انتخاب شده گسترش میدهد. قادر است که تغییرات را برمبنای پیکربندی ارائه دهد و درکاش را در
یکسری فریمورک منتخب (chosen frameworks) عمیق میکند.</span>
</li>
</ul>
</div>
<a class="link" id="show-mid-all" onclick="showAll('mid')">+ نمایش تمام شایستگیها</a>
<a class="link hide" id="hide-mid-all" onclick="hideAll('mid')">+ پنهان کردن شایستگیهای دیگر</a>
</div>
<div class="right col">
<div class=title>مثالها</div>
<a class="show link" id="mid-show" onclick="showExamples('mid')">+ نمایش مثالها</a>
<a class="hide link" id="mid-hide" onclick="hideExamples('mid')">- پنهان کردن مثالها</a>
<ul class="hide" id="mid-examples">
<li>نمونهی اولیه (prototyped) یک ویژگیِ ساده را به سرعت میسازد.</li>
<li>در صورت امکان کد را ریفکتور میکند. یعنی در جایی که تستی جا افتاده است و نوشته نشده است را مینویسد، کد
را قابل تستتر میکند و اساسا کُدِ بهتری نسبت به اول بجا میگذارد.</li>
<li>برای PRهایی که قرار است به عنوان بازنگر (reviewer) باشد، درخواست تست میکند (درصورتیکه تست نوشته نشده
باشد).</li>
<li>برای اشکالزدایی از تکنیکهای متفاوتی استفاده میکند، نظیر: نگاه کردن به لاگها، تجسس در پادهای
کوبرنتیز، صفهای RabbitMQ و... .</li>
<li>دستورالعملهایی را در README درصورتِ نیاز قرار میدهد.</li>
</ul>
</div>
</div>
<!--Senior-->
<div class="row">
<div class="left col">
<span class=title>E3: مهندس خبره</span>
<p><span class=focus>تمرکز: <br />درون تیم</span></p>
<a href="https://tinyurl.com/e360-engineer-iii" target="_blank" class="link underline">انتظارات از این نقش</a>
</div>
<div class="middle" id="senior-skills">
<div class="reliable">
<span class="pill">سیستمهای قدرتمند (Robust) و قابل اعتماد (Reliable)</span>
<ul>
<li>
<span class="highlight underline"> امنیت (security)</span><br />
کار مهندسی را با ذرهبین امنیت پیش میبرد. بطور فعال دنبال آسیبپذیریهای امنیتی هم در کُد و هم در ارائه
نظراتِ متخصصانِ دیگر است.
</li>
<li>
<span class="highlight underline"> سیستمهای توزیعشده (distributed systems)</span><br />
دیدگاهِ جامعی در خصوص چگونگیِ ادغامِ اپلیکیشنها در بیش از یک context دارد. جنبههای مختلفِ
تکنولوژیهای استفاده شده را میداند و بخشی از آنها را عمیقا میشناسد.
<br />
معمولا برای تولید ویژگیها (features) به یکپارچگیِ داده (data consistency)، دردسترس بودن (availability)
و عملکرد (performance) توجه میکند و تکنیکِ مناسب را بکار میگیرد.
</li>
<li>
<span class="highlight underline"> مشاهدهپذیری (observability) و قابل اطمینانسازی (Reliability)
</span>
<br />
از فلسفهی مانیتورینگِ سازمان آگاه است و در استفاده از ابزارهای مانیتورینگ حرفهای است. مطابق نیازِ تیم،
به تغییر و بهبود مانیتورینگ کمک میکند. از دادههای عملیاتیِ (operational data) حوزهی تیم خود آگاه است
و از این دانش به عنوان مبنایی برای ارائهی بهبودهای عملکردی و پایداری (stability) استفاده میکند.
</li>
</ul>
</div>
<div class="troubleshooting">
<span class="pill"> عیب یابی (Troubleshooting)</span>
<ul>
<li>
<span class="highlight underline"> اشکالزدایی (debugging)</span><br />
<span>در انجام اشکالیابیِ (debugging) سیستماتیک بنظور تشخیصِ همهی مشکلات موجود در
«یک» سرویس مسلط (proficient) است. از این اشکالیابی سیستماتیک بمنظور تشخیصِ مشکلاتِ سرویسهای تو در تو
هم استفاده میکند، البته ممکن است از دیگران برای این امر کمک بگیرد.
</li>
<li>
<span class="highlight underline"> واکنش به حادثه (incident)</span><br />
<span>در استفاده از طیفِ وسیعی از ابزارها بجهت تشخیصِ زمان وقوع حادثه (incident) مهارت
دارد و این موضوع را به موقع به ذینفعان اطلاع میدهد. مسئولیت و رهبریِ حوادثی را که در حوزهی خودش رخ
میدهد را به عهده میگیرد. ممکن است در حلِ یک حادثه نقش داشته باشد یا به دیگران در حلوفصل حوادث کمک
کند. مسائل (issues) موجود در حوزهی خود و دیگران را میشناسد.</span>
</li>
</ul>
</div>
<div class="architecture">
<span class="pill">معماری (Architecture) و طراحی (Design) فنی</span>
<ul>
<li>
<span class="highlight underline"> درک کردن کُد (code)</span><br />
دامنه و حوزهی تیمِ خود را درک میکند و میتواند زمینهی کافی برای کارِ مولد (productively) در آن حوزه
را جمعآوری کند. در بخشی از حوزهی تیمِ خود تخصص دارد.
</li>
<li>
<span class="highlight underline">طراحی API</span><br />
<span>در زمانِ طراحی APIها «همواره» بِهروشها را درنظر میگیرد.
</li>
<li>
<span class="highlight underline">الگوهای طراحی (design patterns)</span><br />
<span>«همواره» الگوهای قابلِ اجرا در چندین زمینه یا پایگاهِ کُد (codebase) را، مطابق
با استانداردها و بِهروشهای توافق شده، درنظر میگیرد و اعمال میکند.
</li>
<li>
<span class="highlight underline"> معماری نرمافزار (software architecture)</span><br />
«همواره» کُدی را طراحی میکند که با معماریِ کلی مطابقت دارد. از انتزاعات (abstractions) و ایزولهسازیِ
کُد بطور موثر استفاده میکند.</span>
</li>
</ul>
</div>
<div class="quality">
<span class="pill"> کیفیت (Quality)</span>
<ul>
<li>
<span class="highlight underline">بازنگری کُد (code review)</span><br />
<span>همواره PRهایی (pull request) با اندازهی معقول ایجاد میکند که شاملِ شرح توضیحات
و تستهای انجام شده است. همواره در PRها نظراتی سازنده ارائه میکند و به نظرات دیگران محترمانه پاسخ
میدهد. اغلب پیشنهاداتی معنادار در PRها ارائه میکند.</span>
</li>
<li>
<span class="highlight underline">کاربر محور (user centric)</span><br />
PRهای دیگران را با ذرهبینِ کیفیت و ارزش بازنگری میکند، یعنی کیفیت کُد (code quality)، معیارهای پذیرش
(acceptance criteria)، منطقِ کسبوکار (business logic)، پوشش تست (test coverage) و همراستا با معماری.
هرگونه مشکل در PR که ممکن است در انتشار (release) یا ادغام (merge) تبعاتی داشته باشد را برجسته میکند.
در بررسیِ PRهای تیم و حلوفصلِ PRهای باز در مدت زمانِ کوتاه، فعال است.</span>
</li>
<li>
<span class="highlight underline">تست کردن (testing)</span><br />
قابلیتها (features) را با درنظر گرفتنِ دغدغهی کاربران نهایی ارائه میدهد. ارزشی که epicها به کاربران
نهایی ارائه میدهند را درک میکند. برای سهولتِ استفادهی کاربران نهایی از سیستم تلاش میکند (چه داخلی،
چه خارجی و حتا خود توسعهدهندگان).
<br />
روشِ تستنویسی معاونتِ فنی را میداند و از متریکهای کیفی برای شناسایی گپها استفاده میکند. به تیم خود
راهِحلهایی را توصیه میکند که مطابق با چهارچوبهای تستکردن پذیرفتهشده و هرم تستکردن است.
</li>
<li>
<span class="highlight underline"> بِهروش (best practice)</span><br />
میداند که از کدام استانداردها باید پیروی کند و هدفاش اعمالِ بِهروشها در کار است. پیگیرِ راهنماها و
استانداردهای شناختهشده هست و به آنها رجوع میکند. همچنین به دیگران در یادگیری بِهروشها کمک
میکند.
</li>
</ul>
</div>
<div class="craft">
<span class="pill"> مهارت (Craft)</span>
<ul>
<li>
<span class="highlight underline"> ساختمان دادهها (data structures) و الگوریتمها
(algorithms)</span><br />
ساختمان دادههای مختلف را میشناسد و میداند که چه زمانی از کدامِ آنها باید استفاده کند. الگوریتمهایی
که پیادهسازی شدهاند و پیچیدگیِ مرتبط با آنها را میدانند. به دیگران برای درکِ الگوریتمهایی که پیاده
کردهاند و پیچیدگیهایی که اضافه کردهاند کمک میکند و بهبودهایی را به آنها پیشنهاد میکند.</span>
</li>
<li>
<span class="highlight underline">کُد زدن</span><br />
<span>«همواره» کُدهایی عملیاتی (production-ready code) مینویسد که به سادگی قابل تست،
قابل فهم برای دیگر توسعهدهندگان و همچنین با درنظر گرفتن خطاها و مواردِ خاص (edge cases) مینویسد.
</li>
<li>
<span class="highlight underline">خبرگیِ فنی</span><br />
<span class="highlight">درکِ خوبی از تکنولوژیهای استفاده شده در تیم دارد و همچنان به گسترش دانش در
حوزههای پیچیدهترِ یکسری تخصص منتخب ادامه میدهد. به دیگران در یادگیری کمک میکند.</span>
</li>
</ul>
</div>
<a class="link" id="show-senior-all" onclick="showAll('senior')">+ نمایش تمام شایستگیها</a>
<a class="link hide" id="hide-senior-all" onclick="hideAll('senior')">+ پنهان کردن شایستگیهای دیگر</a>
</div>
<div class="right col">
<div class=title>مثالها</div>
<a class="show link" id="senior-show" onclick="showExamples('senior')">+ نمایش مثالها</a>
<a class="hide link" id="senior-hide" onclick="hideExamples('senior')">- پنهان کردن مثالها</a>
<ul class="hide" id="senior-examples">
<li>باگهای پیچیدهی خارج از حوزهی معمولاش را حل میکند.</li>
<li>با شناسایی و اشکالزداییِ مشکل عملکردی به یک نفرِ دیگر کمک میکند و همچنین به سرعت آن را در محیط عملیاتی
مرتفع میکند.</li>
<li>ویژگیهای پیچیده را پیادهسازی میکند.</li>
<li>کُدها و نیازمندیهای مربوط به جمع آوری متریکهای عملکردی را اضافه میکند.</li>
<li>یکپارچی با یک ابزار ثالث را درنظر گرفتن بار، امنیت، مدیریت خطا و بهروشها طراحی و پیادهسازی میکند.
</li>
<li>برای استفاده از یک ویژگیِ جدید دفترچهی راهنما ایجاد میکند./li>
<li>تضمین میکند که استفاده از GraphQL منجر به لو رفتن اطلاعات حساس نمیشود.</li>
</ul>
</div>
</div>
<!--Team Lead-->
<div class="row even">
<div class="left col">
<span class=title>E4: رهبر توسعه</span>
<p><span class=focus>تمرکز: <br />درون تیم و ذینفعان</span></p>
<a href="https://tinyurl.com/e360-devlead" target="_blank" class="link underline">انتظارات از این نقش</a>
</div>
<div class="middle" id="teamlead-skills">
<div class="reliable">
<span class="pill">سیستمهای قدرتمند (Robust) و قابل اعتماد (Reliable)</span>
<ul>
<li>
<span class="highlight underline"> امنیت (security)</span><br />
<span>بصورت فعالانه با تیم و متخصصان امنیتیِ حاضر در تیم در تعامل است تا رویکردِ تیم
از منظر مسئلهی امنیت با استراتژی سازمان همراستا باشد. ذهنیتِ «اول امنیت (security first)» را تیم
پرورش میدهد.</span>
</li>
<li>
<span class="highlight underline"> سیستمهای توزیعشده (distributed systems)</span><br />
نگاهِ جامعی از چگونگی تعامل اپلیکیشنها در چندین زمینهی (context) مختلف دارد. بخشهای متفاوتی از
تکنولوژیهای استفاده شده را میشناسد و برخی از آنها را عمیقا میداند.
<br /><span>تیم را ترغیب میکند که ویژگیهای (features) عملیاتی، فاکتورهایی مثل یکدستی
داده (data consistency)، دردسترس بودن (availability) و عملکرد (performance) را داشته باشند.
</li>
<li>
<span class="highlight underline"> مشاهدهپذیری (observability) و قابل اطمینانسازی (Reliability)
</span>
<br />
<span class=>کار مانیتورینگ (نظارت) را مطابق با فلسفهی مانیتورینگِ سازمان پیش میبرد. از دادههای
عملیاتی حوزهی تیم با خبر است و از این دانش در راستای بهبود عملکرد و ثباتِ سرویسهای تیم استفاده
میکند.</span>
</li>
</ul>
</div>
<div class="troubleshooting">
<span class="pill"> عیب یابی (Troubleshooting)</span>
<ul>
<li>
<span class="highlight underline"> اشکالزدایی (debugging)</span><br />
در استفاده از اشکالیابیِ سیستماتیک بمنظور تشخیصِ تمام مسائل محدود در حوزهی خود مهارت دارد.</span>
</li>
<li>
<span class="highlight underline"> واکنش به حادثه (incident)</span><br />
در استفاده از طیفِ وسیعی از ابزارها بجهت تشخیصِ زمان وقوع حادثه (incident) مهارت دارد و این موضوع را به
موقع به ذینفعان اطلاع میدهد. مسئولیت و رهبریِ حوادثی را که در حوزهی خودش و تیم رخ میدهد را به عهده
میگیرد. حلِ یک حادثه را رهبری میکند و به دیگران در حلوفصلِ حوادثاشان کمک میکند. توانایی درکِ مسائل
در حوزهی خود و مسائل پخش شده در چند حوزه را دارد.</span>
</li>
</ul>
</div>
<div class="architecture">
<span class="pill">معماری (Architecture) و طراحی (Design) فنی</span>
<ul>
<li>
<span class="highlight underline"> درک کردن کُد (code)</span><br />
<span>در حوزهی تیمِ خود تخصصهای متنوعی دارد، شامل شناخت سرویسها، اینکه آنها
چطور باهم تعامل میکنند و داده به چه شکل بین سیستمها جریان دارد. حوزههای مجاور و تاثیراتِ آنها در
حوزههای خودشان را میشناسد. </span>
</li>
<li>
<span class="highlight underline">طراحی API</span><br />
هنگامِ طراحی APIها، همواره بِهروشها را در نظر میگیرد و اطمینان حاصل میکند که کار در تیم مطابق با
بِهروشها پیش میرود.
</li>
<li>
<span class="highlight underline">الگوهای طراحی (design patterns)</span><br />
تیم را در بکارگیری الگوهای طراحیِ کاربردی و مرتبط در کار و زمینههای تیم، مطابق با بِهروشها و
استانداردهای توافق شده با عملگرایی رهبری میکند.
</li>
<li>
<span class="highlight underline"> معماری نرمافزار (software architecture)</span><br />
با تیم کار میکند تا این اطمینان حاصل شود که معماری و رویکردهای فنیِ تیم با اهدافِ مهندسی بزرگتر نظیر
مقیاسپذیری (scaling)، حالت اعتبارسنجی (validation mode)، دیپلوی مداوم (continuous deployment) و همچنین
نقشهی راهِ معماری، مطابق و همسو هستند.
</li>
</ul>
</div>
<div class="quality">
<span class="pill"> کیفیت (Quality)</span>
<ul>
<li>
<span class="highlight underline">بازنگری کُد (code review)</span><br />
<span>فرهنگِ بازنگریِ باکیفیتِ کُد را در تیم تقویت میکند. راهنمایی به جهتِ نحوهی بازنگری PRها به
دیگران ارائه میدهد.
</span>
<br />
هرگونه مشکل در PR که ممکن است در انتشار (release) یا ادغام (merge) تبعاتی داشته باشد را برجسته میکند.
<br />
از وابستگیهای تیم کاملا آگاه است و برایش مهم است که PRهای تیم در زمان معقولی بازنگری شود.
</li>
<li>
<span class="highlight underline">کاربر محور (user centric)</span><br />
تیم را راهنمایی میکند تا ویژگیها (features) را با دغدغهی کاربرانِ نهایی (end-users) ارائه دهد
(deliver)، با این دیدگاه که تیم چگونه قرار است برای کاربرانِ نهایی ارزش تولید کنند. برای سهولتِ
استفادهی کاربران نهایی از سیستم تلاش میکند (چه داخلی، چه خارجی و حتا خود توسعهدهندگان).
</li>
<li>
<span class="highlight underline">تست کردن (testing)</span><br />
<span class="highlight">روشِ تستنویسیِ تیم را مطابق با استراتژی تستنویسی معاونت تهیه میکند. همیشه
حالتهای معمول، واریانس در داده، خطاها، حالتهای خاص را پوشش میدهد و از متریکهای کیفی برای شناسایی
گپها استفاده میکند. به تیم خود راهِحلهایی را توصیه میکند که مطابق با چهارچوبهای تستکردن
پذیرفتهشده و هرم تستکردن است.
</li>
<li>
<span class="highlight underline"> بِهروش (best practice)</span><br />
تیم را برای پیروی از استانداردها و اعمالِ بِهروشها در کار هدایت میکند. پیگیرِ راهنماها و استانداردهای
شناختهشده هست و به آنها رجوع میکند و دیگران را در بکارگیری بِهروشها راهنمایی میکند.
</li>
</ul>
</div>
<div class="craft">
<span class="pill"> مهارت (Craft)</span>
<ul>
<li>
<span class="highlight underline"> ساختمان دادهها (data structures) و الگوریتمها
(algorithms)</span><br />
ساختمان دادههای مختلف را میشناسد و میداند که چه زمانی از کدامِ آنها باید استفاده کند. الگوریتمهایی
که پیادهسازی شدهاند و پیچیدگیِ مرتبط با آنها را میدانند.
</li>
<li>
<span class="highlight underline">کُد زدن</span><br />
«همواره» توابعی مینویسد که به سادگی قابل تست، قابل فهم برای دیگر توسعهدهندگان و همچنین با درنظر گرفتن
خطاها و مواردِ خاص (edge cases) باشند.
</li>
<li>
<span class="highlight underline">خبرگیِ فنی</span><br />
مفاهیمِ اصلی تکنولوژیهای استفاده شده را میداند و دانشاش را در سایر زمینههای یک تخصصِ انتخاب شده
گسترش میدهد. قادر است که تغییرات را برمبنای پیکربندی ارائه دهد و درکاش را در یکسری فریمورک منتخب
(chosen frameworks) عمیق میکند.
</li>
</ul>
</div>
<a class="link" id="show-teamlead-all" onclick="showAll('teamlead')">+ نمایش تمام شایستگیها</a>
<a class="link hide" id="hide-teamlead-all" onclick="hideAll('teamlead')">+ پنهان کردن شایستگیهای دیگر</a>
</div>
<div class="right col">
<div class=title>مثالها</div>
<a class="show link" id="teamlead-show" onclick="showExamples('teamlead')">+ نمایش مثالها</a>
<a class="hide link" id="teamlead-hide" onclick="hideExamples('teamlead')">- پنهان کردن مثالها</a>
<ul class="hide" id="teamlead-examples">
<li>با کمکِ یکسری یادآوریهای منظم، تیم را روی کیفیت متمرکز میکند.</li>
<li>تصمیماتِ مربوط به معماری را مطابق چشم اندازِ استراتژیک میگیرد.</li>
<li>منظور پایداری و نگهداریِ ویژگیهای عملیاتی، سیستم مانیتورینگ برپا میکند که متریکها را ضبط کند.</li>
<li>یک استراتژیِ فنی برای مهاجرتِ دادههای قدیمی با درنظرگرفتنِ پیامدهای این عمل در سطح تمام سیستم، طراحی
میکند.</li>
<li>پروژهی پیچیدهای را طراحی میکند که راهحل جامعی را پوشش میدهد که در آن از سیستمها و فناوریهای
متعددی استفاده شده است.</li>
<li>برای نشان داده نحوه استفاده از یک ابزار جدید کارگاه برگزار میکند.</li>
</ul>
</div>
</div>
<!--Engineering Manager-->
<div class="row">
<div class="left col">
<span class=title>E5: مدیر مهندسی</span>
<p><span class=focus>تمرکز: <br />در سطح چندین تیم</span></p>
<a href="https://tinyurl.com/e360-eng-mgr" target="_blank" class="link underline">انتظارات از این نقش</a>
</div>
<div class="middle" id="em-skills">
<div class="reliable">
<span class="pill">سیستمهای قدرتمند (Robust) و قابل اعتماد (Reliable)</span>
<ul>
<li>
<span class="highlight underline"> امنیت (security)</span><br />
بصورت فعالانه با مدیر امنیت و تیم امنیت در تعامل است و همچین در چندین تیم برای اعمالِ استراتژیِ امنیتیِ
سازمان کار میکند. ذهنیتِ اول امنیت (security first) را با کار عملی در این تیمها تقویت میکند.
</li>
<li>
<span class="highlight underline"> سیستمهای توزیعشده (distributed systems)</span><br />
نگاهِ جامعی از چگونگی تعامل اپلیکیشنها در چندین زمینهی (context) مختلف دارد. بخشهای متفاوتی از
تکنولوژیهای استفاده شده را میشناسد و برخی از آنها را عمیقا میداند.
<br />
<span class="highlight">تیم را هدایت میکند که ویژگیهای (features) عملیاتی مثل فاکتورهایی مثل یکدستی
داده (data consistency)، دردسترس بودن (availability) و عملکرد (performance) را داشته باشند.
</li>
<li>
<span class="highlight underline"> مشاهدهپذیری (observability) و قابل اطمینانسازی (Reliability)
</span>
<br />
<span class="highlight">فرهنگِ observability را در سطحِ چندین تیم تقویت میکند و به این تیمها کمک
میکند تا بتوانند از دادههای عملیاتیاشان به جهت ثبات و بهبودِ سرویسهای حوزهی خودشان استفاده
کنند.</span>
</li>
</ul>
</div>
<div class="troubleshooting">
<span class="pill"> عیب یابی (Troubleshooting)</span>
<ul>
<li>
<span class="highlight underline"> اشکالزدایی (debugging)</span><br />
در استفاده از اشکالیابیِ سیستماتیک بمنظور تشخیصِ تمام مسائلِ مجموعهای از حوزههای بهم مرتبط مهارت
دارد.</span>
</li>
<li>
<span class="highlight underline"> واکنش به حادثه (incident)</span><br />
در استفاده از طیفِ وسیعی از ابزارها بجهت تشخیصِ زمان وقوع حادثه (incident) مهارت دارد و این موضوع را به
موقع به ذینفعان اطلاع میدهد.
<br />مسئولیت و رهبریِ حوادثی را که در تیمهایش رخ میدهد را به عهده میگیرد.</span>
<br />حلِ یک حادثه را رهبری میکند و به دیگران در حلوفصلِ حوادثاشان کمک میکند.
<br />مسائل (issues) موجود در حوزهی خود و دیگران را میشناسد.
</li>
</ul>
</div>
<div class="architecture">
<span class="pill">معماری (Architecture) و طراحی (Design) فنی</span>
<ul>
<li>
<span class="highlight underline"> درک کردن کُد (code)</span><br />
در مجموعهای از حوزههای مرتبط به تیم تخصصهای متنوعی دارد، شامل شناخت سرویسها، اینکه آنها چطور باهم
تعامل میکنند و داده به چه شکل بین سیستمها جریان دارد.
</li>
<li>
<span class="highlight underline">طراحی API</span><br />هنگامِ طراحی APIها، همواره بِهروشها را در نظر
میگیرد و اطمینان حاصل میکند که کار در بین تیمها مطابق با بِهروشها پیش میرود.
</li>
<li>
<span class="highlight underline">الگوهای طراحی (design patterns)</span><br />
در بین تیمها فرهنگِ استفاده از الگوهای طراحیِ پرکاربرد و مرتبط را مطابق با نیازهای شرکت تقویت میکند
و چندین تیم را برای نیازهای آینده راهنمایی میکند.
</li>
<li>
<span class="highlight underline"> معماری نرمافزار (software architecture)</span><br />
با تیمها کار میکند تا این اطمینان حاصل شود که معماری و رویکردهای فنیِ تیم با اهدافِ مهندسی بزرگتر
نظیر مقیاسپذیری (scaling)، حالت اعتبارسنجی (validation mode)، دیپلوی مداوم (continuous deployment) و
همچنین نقشهی راهِ معماری، مطابق و همسو هستند.
<br /><span class="highlight">در تهیهی نقشهی راه (roadmap) مشارکت میکند و آن را هدایت میکند.</span>
<br /><span class="highlight">تیم را در دانستن زمان وقتگذاشتن یا سرمایهگذاری روی تکنولوژی و همچنین
تمرکز روی تحویل (delivery) محصول راهنمایی میکند (ROI مناسب در افقهای استراتژیک)</span>
</li>
</ul>
</div>
<div class="quality">
<span class="pill"> کیفیت (Quality)</span>
<ul>
<li>
<span class="highlight underline">بازنگری کُد (code review)</span><br />
فرهنگِ بازنگریِ باکیفیتِ کُد و بازنگریِ بهموقع را در بینِ تیمهای سازمان تقویت میکند. همچنین تیمها را
تشویق میکند تا تبعات انتشار (release) و ادغام (merge) را در نظر بگیرند. راهنمایی به جهتِ نحوهی بازنگری
PRها به دیگران ارائه میدهد.
</li>
<li>
<span class="highlight underline">کاربر محور (user centric)</span><br />
<span class="highlight">تیمهای سازمان را راهنمایی میکند تا ویژگیها (features) را با دغدغهی کاربرانِ
نهایی (end-users) ارائه دهد (deliver)، با این دیدگاه که تیمها چگونه قرار است برای کاربرانِ نهایی ارزش
تولید کنند. برای سهولتِ استفادهی کاربران نهایی (چه داخلی، چه خارجی و حتا خود توسعهدهندگان) از سیستم
استاد است، به عنوانِ مثال از طریق اسناد (documentation)، MVPها، قابلیت نگهداری، اشتراک گذاری، یا
اشتراک دانش.
</li>
<li>
<span class="highlight underline">تست کردن (testing)</span><br />
روشِ تستنویسیِ را درک میکند و تببین میکند و از متریکهای کیفی برای شناسایی گپها استفاده میکند. به
تیمهایی که با آنها کار میکند راهِحلهایی را توصیه میکند که مطابق با چهارچوبهای تستکردن
پذیرفتهشده و هرم تستکردن است. روی استراتژیِ تستکردن در سطح سازمان تاثیرگذار است.</span>
</li>
<li>
<span class="highlight underline"> بِهروش (best practice)</span><br />
تیمها را برای پیروی از استانداردها و اعمالِ بِهروشها در کار هدایت میکند. پیگیرِ راهنماها و
استانداردهای شناختهشده هست و به آنها رجوع میکند، استانداردها و دستورالعملهایی را تنظیم میکند و
دیگران را در بکارگیری بِهروشها راهنمایی میکند.
<br /><span class="highlight">مسئولیتپذیری در قبال معیارهای اطمینانبخش مثل code coverage و نرخِ نقض
(defect) ایجاد میکند.</span>
</li>
</ul>
</div>
<div class="craft">
<span class="pill"> مهارت (Craft)</span>
<ul>
<li>
<span class="highlight underline"> ساختمان دادهها (data structures) و الگوریتمها
(algorithms)</span><br />
ساختمان دادههای مختلف را میشناسد و میداند که چه زمانی از کدامِ آنها باید استفاده کند. الگوریتمهایی
که پیادهسازی شدهاند و پیچیدگیِ مرتبط با آنها را میدانند. به دیگران برای درکِ الگوریتمهایی که پیاده
کردهاند و پیچیدگیهایی که اضافه کردهاند کمک میکند و بهبودهایی را به آنها پیشنهاد میکند.
</li>
<li>
<span class="highlight underline">کُد زدن</span><br />
<span>تیمها را راهنمایی میکند تا «همواره» کُدهایی عملیاتی (production-ready code)
بنویسند که به سادگی قابل تست، قابل فهم برای دیگر توسعهدهندگان و همچنین با درنظر گرفتن خطاها و مواردِ
خاص (edge cases) باشند.
</li>
<li>
<span class="highlight underline">خبرگیِ فنی</span><br />
<span class="highlight">تیمها را رهبری میکند تا بتوانند دانشاشان را در زمینههای پیچیدهتر بیشتر کنند
.</span>
</li>
</ul>
</div>
<a class="link" id="show-em-all" onclick="showAll('em')">+ نمایش تمام شایستگیها</a>
<a class="link hide" id="hide-em-all" onclick="hideAll('em')">+ پنهان کردن شایستگیهای دیگر</a>
</div>
<div class="right col">
<div class=title>مثالها</div>
<a class="show link" id="em-show" onclick="showExamples('em')">+ نمایش مثالها</a>
<a class="hide link" id="em-hide" onclick="hideExamples('em')">- پنهان کردن مثالها</a>
<ul class="hide" id="em-examples">
<li>با تیم به جهت تعیین استراتژی برای کیفیت و بِهروشها کار میکند.</li>
<li>تیم را راهنمایی میکند که وابستگیهای دوطرفه را در پروژهها درنظر بگیرند.</li>
<li>تیمها را در طراحیِ فنی تسهیل یا راهنمایی میکند.</li>
<li>مسئولیت سیستمهایی را کسی آنها را گردن نمیگیرد را میپذیرد.</li>
</ul>
</div>
</div>
<!--VP Eng-->
<div class="row even">
<div class="left col">
<span class=title>E6: معاونت فنی</span>
<p><span class=focus>تمرکز: <br />درسطح سازمان</span></p>
</div>
<div class="middle" id="vp-skills">
<div class="reliable">
<span class="pill">سیستمهای قدرتمند (Robust) و قابل اعتماد (Reliable)</span>
<ul>
<li>
<span class="highlight underline"> امنیت (security)</span><br />
بصورت فعالانه با مدیر امنیت و تیم امنیت بمنظور تبیین و اصلاح استراتژی امنیتی در سطح سازمان در تعامل است.
ذهنیتِ اول امنیت (security first) را در سطحِ سازمان تقویت میکند.
<span class="highlight">آگاهی و فرهنگِ امنیتی را در سراسر سازمان هدایت میکند.</span>
</li>
<li>
<span class="highlight underline"> سیستمهای توزیعشده (distributed systems)</span><br />
نگاهِ جامعی از چگونگی تعامل اپلیکیشنها در سطح سازمان دارد. بخشهای متفاوتی از تکنولوژیهای استفاده شده
را میشناسد و برخی از آنها را عمیقا میداند.
معاونتِ فنی را هدایت میکند که ویژگیهای (features) عملیاتی مثل فاکتورهایی همچون یکدستی داده (data
consistency)، دردسترس بودن (availability) و عملکرد (performance) را داشته باشند.
</li>
<li>
<span class="highlight underline"> مشاهدهپذیری (observability) و قابل اطمینانسازی (Reliability)
</span>
<br />
فرهنگِ observability را در سطحِ معاونتِ فنیِ سازمان تقویت میکند و به همهی تیمهای فنی سازمان کمک
میکند تا بتوانند از دادههای عملیاتیاشان به جهت ثبات و بهبودِ سرویسهای حوزهی خودشان استفاده کنند.
</li>
</ul>
</div>
<div class="troubleshooting">
<span class="pill"> عیب یابی (Troubleshooting)</span>
<ul>
<li>
<span class="highlight underline"> اشکالزدایی (debugging)</span><br />
<span class="highlight">ذهنیتِ اشکالیابی را در سطح معاونتِ سازمان هدایت میکند، با این نگاه که از ابزار
مناسب برای هر نیاز استفاده شود.</span>
</li>
<li>
<span class="highlight underline"> واکنش به حادثه (incident)</span><br />
در صورتِ نیاز پاسخِ به حوادث را در سطح معاونتِ فنیِ سازمان مدیریت میکند. از اشکالیابیِ سیستماتیک برای
تشخیصِ مسائل در سطح سازمان استفاده میکند.
<br /><span class="highlight">بمنظور حمایت از تیم در جهتِ اشکالزداییِ موثر، ابزارهایی را انتخاب و تهیه
میکند و همچنین فرایندهایی را ایجاد میکند.</span>
</li>
</ul>
</div>
<div class="architecture">
<span class="pill">معماری (Architecture) و طراحی (Design) فنی</span>
<ul>
<li>
<span class="highlight underline"> درک کردن کُد (code)</span><br />
راهنمای معماریِ سطح بالا را ارائه میدهد و به تیمها در همسوسازی معماری با نیازمندیهای کسبوکار میکند.
</span>
</li>
<li>
<span class="highlight underline">طراحی API</span><br />
مشابه با همان چیزی که در بخش مدیر مهندسی آمده.
</li>
<li>
<span class="highlight underline">الگوهای طراحی (design patterns)</span><br />
در طول سازمان فرهنگِ استفاده از الگوهای طراحیِ پرکاربرد و مرتبط را با مطابق با نیازهای شرکت تقویت میکند
و تیمها را برای نیازهای آیندهی سازمان راهنمایی میکند.
</li>
<li>
<span class="highlight underline"> معماری نرمافزار (software architecture)</span><br />
تلاش میکند در سطح سازمان، فرهنگِ معماریای را ترویج دهد که امکان iteration دارد، توسعهی مستقل دارد و
در آینده قابلیت گسترش دارد و مقیاسپذیر است.
تیمهای سازمان را برای نیازهای آیندهی سازمان راهنمایی میکند و به آنها کمک میکند که تصمیماتی در طراحی
بگیرند که هزینهی تغییراتِ آینده به حداقل برسد. سمتوسوی نقشهی راه را مشخص میکند.
<br />مشخص میکند که روی کدام یک از نوآوریهای دنیای فناوری سرمایهگذاری شود تا بازدهی مناسب داشته باشد
و همچنین سطوح سرمایهگذاری مناسب را هم برای افقهای استراتژیکی تعیین میکند.
<br /><span class="highlight">اهداف استراتژیک مهندسی را ایجاد میکند که معماری و رویکردِ فنی را هدایت
میکند.</span>
</li>
</ul>
</div>
<div class="quality">
<span class="pill"> کیفیت (Quality)</span>
<ul>
<li>
<span class="highlight underline">بازنگری کُد (code review)</span><br />
فرهنگِ بازنگریِ باکیفیتِ کُد و بازنگریِ بهموقع کُد را در بینِ در کل سازمان
تنظیم و هدایت میکند. همچنین تیمها را تشویق میکند تا تبعات انتشار (release) و ادغام (merge) را در
نظر بگیرند. راهنمایی به جهتِ نحوهی بازنگری PRها به دیگران ارائه میدهد.