نیاز به توضیح نیست که همواره این احتمال وجود دارد که حتی با در نظر گرفتن فرایند استخدامی پیچیده و دشوار، باز هم در جذب نیروی فنی خود دچار اشتباه شویم اما در عین حال برخی سؤالات هستند که چنانچه به درستی به طرف مقابل منتقل شوند، میتوان از آن طریق اصطلاحاً Hard Skills و همچنین Soft Skills کاندیداهای شغل توسعهٔ نرمافزار را مورد سنجش قرار داده و ریسک جذب نیروهای نامناسب را به حداقل رساند که در ادامه قصد داریم برخی از مهمترین آنها را مورد بررسی قرار دهیم (یکی از زیرشاخههای مهارتهای نرم هوش هیجانی است که در این ارتباط توصیه میکنیم به مقالهٔ توصیههایی برای استخدام افرادی با هوش هیجانی بالا مراجعه نمایید.)
تجربیات کاری در حوزهٔ نرمافزار
در این بخش از فرآیند جذب نیرو، فرد مصاحبهکننده در صدد خواهد بود تا با پیشینهٔ کاری فرد متقاضی بیشتر آشنا شده و به طور کلی نگاه وی به این صنعت را مورد سنجش و بررسی قرار دهد که از جمله سؤالات مرتبط با این بخش میتوان به موارد زیر اشاره کرد:
- یکی از پروژههای نرمافزاری که در آن مشارکت داشتهاید را نام ببرید و نقش خود را در آن پروژه توصیف نمایید.
- اگر از شما بخواهیم که سرویسی همچون Airbnb را از پایه درست کنید، در این مسیر از چه معماری، زبان، فریمورک و ابزارهایی استفاده خواهید کرد و چرا؟
- میتوانید برخی نقاط قوت و ضعف زبانها، لایبرریها و فریمورکهایی که تا به حال از آنها استفاده نمودهاید را برشمرید؟
- آیا تاکنون روی پروژههایی که در هر لحظه هزاران هزار ریکوئست را هندل میکنند کار کردهاید؟ اگر پاسخ آری است، چه تجربه/تجربیاتی کسب نمودهاید؟
- پروژههای نرمافزاری که تاکنون در توسعهٔ آنها مشارکت داشتهاید را چگونه از حیث پرفورمنس و امنیت تست کردهاید؟
- چگونه زمان لازم برای تکمیل یک پروژهٔ نرمافزاری را تخمین میزنید و برای انجام درست این کار به چه دادههایی نیاز دارید؟ همچنین چهطور اطمینان حاصل میکنید که ارزیابیهای شما دقیق هستند؟
مهارتهای مرتبط با معماری نرمافزار
توسعهدهندگانی که بخواهند روی پروژههای عظیم کار کنند موظف به آشنایی با مقولهٔ معماری نرمافزار هستند (در همین راستا میتوانید به آموزش معرفی الگوهای متداول معماری نرمافزار مراجعه نمایید.) که در این ارتباط برخی از سؤالات رایج عبارتند از:
- سرواژهٔ SOLID مخفف چه واژگانی است؟
- سازوکار معماری MVC به چه شکلی است و اساساً استفاده از این رویکرد توسعهٔ نرمافزار چه مزایا و معایبی دارا است؟
- به طور کلی با کدام الگوهای معماری آشنا هستید و هر کدام در چه موقعیتهایی کاربرد دارند؟
- در پروژههایی که تاکنون توسعه دادهاید از چه معماری/معماریهایی استفاده نمودهاید و چرا؟
- وظایف یک معمار نرمافزار چیست؟
- تفاوتهای برنامهنویس، مهندس نرمافزار یا معمار نرمافزار چیست؟
مدیریت فرآیند توسعهٔ نرمافزار
در این بخش از مصاحبه میتوان با پرسیدن برخی از سؤالاتی که در ادامه آمدهاند نگاه کاندیدا را نسبت به نحوهٔ مدیریت توسعهٔ یک پروژهٔ نرمافزاری را جویا شد به طوری که این پرسشها عبارتند از:
- از چه Software Development LifeCycle یا به اختصار SDLC استفاده میکنید؟
- چهطور یک پروژهٔ نرمافزاری بزرگ را به کامپوننتهای کوچکتر تقسیمبندی میکنید؟
- ویژگیهای یک مدیر پروژهٔ خوب کدامند و شما به عنوان چنین شخصی چگونه از اول تا آخر یک پروژه را برنامهریزی میکنید؟
- برای عرضهٔ بهموقع نرمافزار یا اپلیکیشن از چه ابزارهایی استفاده میکنید؟
- آیا تاکنون در تیمی کار کردهاید که فرآیندهای کاری در آن از طریق اسکرام صورت پذیرفته باشد؟
- آیا اسکرام در هر موقعیتی اثربخش خواهد بود یا خیر و چرا؟
- دیدگاه شما نسبت به تایم کاری شناور چیست؟
- اصطلاح Self-driven در یک تیم نرمافزاری برای شما به چه معنا است؟
کیفیت نرمافزار
نیاز به توضیح نیست که یکی از بخشهای غیرقابلحذف از فرآیند توسعهٔ نرمافزار کیفیت است و در مصاحبههای استخدامی میباید از نگاه کیفیتگرای کاندیداها اطمینان حاصل کرد که در همین راستا میتوان از برخی سؤالات زیر کمک گرفت:
- از دید شما تفاوتهای «کد خوب» با «کد بد» چیست؟
- از چه روشها و ابزارهایی به منظور حصول اطمینان از کیفیت سورسکد استفاده میکنید؟
- تستهای نرمافزاری چگونه میتوانند منجر به ارتقاء کیفیت سورسکد شوند؟
- مهمترین وظایف یک متخصص کنترل کیفیت (QA) چیست؟
- در یک تیم مهندسی چه افرادی مسئول کیفیت خروجیِ کار هستند؟
روشهای حل مسئله و کار گروهی
در این بخش میتوان با طرح سؤالات درست به میزان تفکر انتقادی دولوپر و همچنین مهارتهای حل مسئلهٔ وی پی برد و دید که ایشان در موقعیتهای حساس چه عکسالعملی از خود نشان خواهد داد. برخی شرکتهای نرمافزاری مطرح همچون اپل، فیسبوک و ... با پرسیدن سؤالات بسیار دشوار در مصاحبههای استخدامی در تلاش برای درک میزان تحلیلی بودن ذهن مخاطبین دارند که در این ارتباط توصیه میکنیم به مقالات زیر مراجعه نمایید:
- آشنایی با سؤالات دشواری که در مصاحبههای شغلی اپل پرسیده میشوند
- سؤالات دشواری که در مصاحبههای فیسبوک ممکن است از متقاضیان بپرسند
- ۲۷ سؤال مشکل برای ۲۷ مصاحبهٔ شغلی مهم
در همین راستا میتوان از سؤالات زیر و یا سؤالات مشابهی دیگری استفاده نمود:
- بزرگترین چالش کاری که تاکنون با آن دستوپنجه نرم کردهاید چیست و در نهایت چگونه توانستید آن را مدیریت کنید؟
- چنانچه اپلیکیشنی که در حال کار کردن روی آن هستید به صورت خیلی اتفاقی روی سرور اصلی از کار بیفتد چه کار خواهید کرد؟
- اگر بخشی از نرمافزار که در حال کار روی آن هستید منوط به توسعهٔ بخش دیگری باشد که همکارتان مسئول آن است اما وی از این کار سر باز بزند چه کار خواهید کرد؟
- اگر یکی از همکارانتان از حضور در جلسات روزانه اجتناب کند چه فیدبکی از خود نشان خواهید داد؟
- آیا تاکنون با یکی از همکاران خود در ارتباط با کاری که انجام میدادید به مشاجره پرداختهاید؟ اگر پاسخ آری است، چگونه از عهدهٔ این موقعیت برآمدید؟
- چنانچه مشتری (صاحب پروژه) دائماً فیچر ریکوئست داده و نظر خود را عوض کند شاهد چه عکسالعملی از سوی شما خواهد بود؟
توسعهٔ فردی
در این بخش هم میتوان با استفاده از یکسری تکنیکها به اهداف، بلندپروازیها و نگاه دولوپر به توسعهٔ فردیاش دست یافت به طوری که با بهکارگیریِ سؤالات زیر میتوان با علائق و اولویتهای کاندیدا آگاه شد و دید که آیا اساساً با ارزشهای شرکت شما همراستا هستند یا خیر که این سؤالات عبارتند از:
- با استفاده از چه تکنیکهایی مهارتهای نرمافزاری خود را دائماً ارتقاء میبخشید؟
- آیا در حال حاضر اقدام به فراگیری زبان، تکنولوژی یا ابزار جدید نمودهاید؟ اگر پاسخ آری است، معیارهای شما برای انتخاب چه بودهاند؟
- برنامهٔ شما برای آیندهٔ شغلیتان چیست؟
جمعبندی
مسلماً سؤالات بسیار زیاد دیگری نیز وجود دارند که در این مقاله مطرح نشدند اما در عین حال پرسشهای فوقالذکر تا حد قابلتوجهی میتوانند دید جامعی نسبت به عضو جدیدی که قرار است به تیم شما اضافه شود به دست دهند. علاوه بر این دست سؤالات، با آشنایی با مقولهٔ رفتار سازمانی میتوان بیش از پیش با مهارتهای میانفردی کاندیداها آشنا شده و دید که آیا ایشان با فرهنگ درونسازمانی شما همخوانی دارند یا خیر.
گرچه مخاطب اصلی آنچه در این مقاله گفته شد مدیران منابع انسانی شرکتهای نرمافزاری است، اما یکسری نکات هستند که چنانچه روی سخنمان با توسعهدهندگان باشد نیاز است تا مد نظر قرار داده شوند که از آن جمله میتوان به موارد زیر اشاره کرد:
- اشتباهاتی که دولوپرها باید در مصاحبههای استخدامی از آنها پرهیز کنند
- دولوپرهای تازهکار چگونه باید در مورد حقوق درخواستی خود مذاکره کنند؟
- چگونه بفهمیم شرکت نرمافزاری که در آن مشغول به کار هستیم منجر به ترقی ما خواهد شد؟
در واقع، درست است که شرکتهای نرمافزاری در تلاش هستند تا همواره بهترین دولوپرها را به خود جذب کنند اما در عین حال این قشر از نیروی کار هم با تکنیکهایی که در مقالات فوق بدانها اشاره شده میتوانند دست به انتخاب بهترین محل کار بزنند!