- مهارت پایه در حداقل یک زبان برنامهنویسی در سطح سیستم، ترجیحاً 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.