*** مهارتهای پایه
- مهارت پایه در حداقل یک زبان برنامهنویسی در سطح سیستم، ترجیحاً C یا C++.
- آشنایی با templateها و smart pointerها.
- تجربهٔ برنامهنویسی همروند و استفاده از multithreading.
- درک کافی از memory management، عملیات با pointer، و تعاملات سطح پایین سخت افزار.
- آشنایی با پیچیدگی محاسباتی و درک مفهوم بهینگی.
- آشنایی و توانایی استفاده از ساختارهای دادهٔ متداول و کتابخانههای سیستم.
- توانایی خواندن و تحلیل کد.
- توانایی طرّاحی و درک اصول تست.
- راحتی با کار در تیم و انطباق با چارچوبهای کدنویسی تیم.
*** مهارتهای پیشرفته
- تجربهٔ کار با سرویسهای بزرگ و درک نیازهای مربوط به مدیریت درخواستهای کاربران.
- تجربهٔ کار DevOps.
- آشنایی با مفاهیم پایهای سیستم، مانند ماژولهای کرنل و syscallها.
- آشنایی با ساختار GPUهای Nvidia و برنامهنویسی CUDA.
- آشنایی با مدل thread/block/grid.
- آشنایی با سلسله مراتب حافظه.
- آشنایی با روشهای برنامهنویسی بهینهٔ CUDA مانند رعایت coalesced memory access.
- آشنایی با کد سطح پایین GPU مانند PTX/SASS.
- تجربهٔ کار با کتابخانههای محاسبات GPU، به خصوص کتابخانههای با کاربرد در یادگیری ماشین، مانند CUTLASS.
- تجربهٔ کار با زبانهای مختص دامنهٔ GPU مانند Triton و CuteDSL
- تجربهٔ کار با Inference Engineهای رایج، مانند vLLM.
- آشنایی با ابزارهای profiling.
- تجربهٔ کار و توانایی تحلیل خروجی ابزارهای مجموعهٔ Nsight.
- تجربهٔ کار با ابزارهای سنجش کارایی سیستم مانند Linux perf.
*** مهارتهای عمومی
- مهارت پیدا کردن منابع یادگیری و خودآموزی سریع در موضوعات جدید.
- توانایی کار بر روی مسائل فنّی سخت و پیگیری آنها بدون تسلیم سریع.
- توانایی نوشتن مستندات شفّاف و دقیق و ارائهٔ نتایج فنّی.
- توانایی خواندن مقالات تخصّصی به زبان انگلیسی.
*** دانش Linux
- تجربهٔ کار با محیطهای command-line، شامل توانایی ابتدایی کار با فایلسیستم، پروسهها و ابزارهای متداول سیستمعامل.
- آشنایی با یک زبان اسکریپتنویسی (bash، پایتون،…).
*** آشنایی با Git و Version Control
- آشنایی با سازوکار پایهای Git، شامل stage، commit، pull و push و راحتی کار با برنچها، شامل کار با merge و rebase.
- تجربهٔ کار با استراتژیهای branching مختلف و workflowهای رایج Git، مانند GitFlow یا GitHub Flow.