چگونه برای مصاحبه استخدام توسعهدهنده بکاند آماده شویم؟
ابتدا اجازه دهید نکتهای خطاب به افرادی که قصد دارند برای مصاحبه استخدامی توسعهدهنده بکاند خود را آماده کنند، ارائه کنیم. هنگام آماده شدن برای پاسخگویی به سوالات فنی مصاحبه به این نکته دقت کنید که یکی از مهمترین مواردی که مصاحبهکننده به آن توجه میکند، سبک کاری شما است. آیا شما یک برنامهنویس مستقل هستید، آیا خلاق هستید، آیا در انجام کار تیمی عملکرد خوبی دارید، هدف شما از کار تماموقت چیست؟ آنها ممکن است بهشکل مستقیم پرسشهای فنی را مطرح نکنند، اما در پرسشهای عادی نیز انتظار دارند که پاسخهای شما به مباحث فنی اشاره داشته باشند. به همین دلیل، باید سرنخهایی در اختیار آنها قرار دهید تا بتوانند تشخیص دهند آیا استخدام شما کار درستی است یا خیر.
بنابراین، شما باید نهتنها به پاسخهای خود، بلکه به نحوه ارائه آنها دقت کنید. مصاحبهکنندگان نهتنها به این موضوع علاقه دارند که چگونه میتوانید حافظه پنهان، تحویل و ادغام مستمر، معماری یا مقیاسپذیری نرمافزار را توصیف کنید، بلکه بهدنبال ارزیابی این مسئله هستند که چگونه قادر به ادغام مهارتها و دانش خود برای حل پروژهها هستید. در صورتی که نمونه کار خوب و کاملی دارید، پیشنهاد میکنیم در زمان مصاحبه همراه داشته باشید تا در صورت لزوم بتوانید به آن استناد کنید.
با کدام زبانهای برنامهنویسی آشنایی دارید، اکنون در حال یادگیری کدامیک از آنها هستید؟
چرا این موضوع مهم است؟ توسعهدهنده، بسته به سطح تجربه، تنوع و تعداد زبانهای برنامهنویسی که میداند، نقش مهمی در انجام بهتر وظایف دارد. با توجه به اینکه زبانهای برنامهنویسی در گذر زمان دستخوش تغییراتی میشوند، مهم است که یک توسعهدهنده بکاند حداقل با دو زبان برنامهنویسی مرتبط با حوزه کاری خود آشنا باشد. در حالی که یک کاندیدای ایدهآل لازم نیست در هر زبانی صاحب تخصص کامل باشد، اما باید حداقل با تعدادی از آنها آشنا باشد تا بتواند کارهای روزمره را بهدرستی انجام دهد.
بهدنبال چه پاسخی باید باشیم؟ داوطلبان باید دانش پایه یا تجربه کار عملی با زبانهایی مثل PHP، Python، Ruby، Java، .NETو JavaScript داشته باشند. بهدنبال علامتهایی باشید که نشان میدهند داوطلب مشتاق یادگیری مهارتهای جدید است و فعالانه روی توسعه مهارتهای خود کار میکند.
رویکرد شما برای اشکالزدایی چیست؟
هنگامی که فرصتی برای انجام آزمونهای فنی در اختیار ندارید و قصد دارید سطح دانش داوطلبی را محک بزنید، این بهترین پرسشی است که باید مطرح کنید. با توجه به اینکه هیچ کدنویس کامل و هیچ کد کاملی در جهان وجود ندارد، توسعهدهندگان بکاند مجبور به استفاده از ابزارهای اشکالزدایی هستند. اشکالزدایی روی دیگر کدنویسی است که اشاره به تصحیح اشتباهات دارد. بهطور کلی، یک کدنویس عالی باید یک دیباگر عالی باشد. آنچه باید در پاسخ یک داوطلب به این پرسش دقت کنید، ابزارهای اشکالزدایی است که برای ارزیابی کدها از آنها استفاده میکند، نحوه عیبیابی و اقداماتی است که برای رفع مشکلات انجام میدهد. البته، باید این واقعیت را در نظر گرفت که باگها به روشهای مختلف و متفاوتی مدیریت میشوند. پاسخی که توسعهدهنده به شما میدهد، نشان میدهد تا چه اندازه با کار خود آشنا است.
جاوااسکریپت چیست و چرا استفاده میشود؟
این پرسش فنی، درک داوطلب از یک زبان برنامهنویسی پرکاربرد را محک میزند. این پرسش نشان میدهد که آیا متقاضی شغل قادر است به شما در تعیین معماری و متدولوژیهای موردنیاز برای ساخت یک وبسایت کمک کند و اینکه آیا فرد مناسبی برای شرکت شما است یا خیر.
بهدنبال علامتهایی باشید که نشان میدهند داوطلب درک کاملی از این زبان برنامهنویسی مهم و موارد استفاده آن دارد. داوطلبان حرفهای تا حد امکان از اصطلاحات تخصصی در صحبتهای خود استفاده نمیکنند و سعی میکنند همهچیز را به زبان ساده بیان کنند تا مطمئن شوند که همگان منظورشان را متوجه میشوند. یکی از برنامههای کاربردی را که توسط این زبان در مجموعه نوشتهاید، به آنها نشان دهید و از آنها بخواهید توضیح کوتاهی در مورد ماژولهایی که نوشته شده است، ارائه کنند. بهطور معمول باید منتظر شنیدن مفاهیم خاصی در مورد تجربه کاربری، زمان بارگذاری و ناوبری باشید. این پرسش بیش از آنچه تصور میکنید اهمیت دارد، زیرا به شما کمک میکند تا سطح آگاهی داوطلبان در مورد حوزه کاریشان را بررسی کنید و متوجه شوید دانش فنی آنها در این زمینه چقدر است. جاوااسکریپت یکی از مهارتهای مهمی است که توسعهدهندگان فرانتاند به آن نیاز دارند، حال اگر یک توسعهدهنده بکاند در این زمینه دانش کافی داشته باشد، نشان میدهد به سادهترین شکل قادر به برقراری ارتباط با توسعهدهندگان فرانتاند است.
توضیحی در مورد جذابترین پروژهای که روی آن کار کردهاید ارائه دهید
نحوه پاسخگویی داوطلب، دید کلی در مورد روند توسعه و سبک کاری او ارائه میدهد. توضیحاتی که ارائه میکند، نشان میدهند تا چه اندازه مشتاق به کار روی پروژههای جدی و بزرگ است و اینکه اگر فرصتهای مشابهی در اختیار او قرار دهید، قادر است وظایف را به بهترین شکل انجام دهد یا خیر. علاوه بر این، متوجه خواهید شد بیشتر دوست دارد روی چه بخشهایی کار کند.
در هنگام کار روی یک پروژه بزرگ با چه مشکلی روبهرو شدید و چگونه آن مشکل را برطرف کردید؟
هر توسعهدهنده بکاند در طول دوران کاری خود با چالشهای مختلفی روبهرو میشود. عدم اجرای درست یک ماژول، دریافت کدهایی که توسط توسعهدهندگان دیگر نوشته شدهاند و اکنون با مشکل روبهرو شدهاند یا قابلیتهایی که از یک کتابخانه حذف شدهاند و برنامه باید برای کارکرد درست دومرتبه بازنویسی شود، تنها بخشی از مشکلاتی هستند که یک توسعهدهنده بکاند با آنها روبهرو است. موارد فوق، بخش جداییناپذیری از مسائلی هستند که همه توسعهدهندگان بکاند با آن روبهرو هستند. پاسخ داوطلبان به شما کمک میکند تا بفهمید چگونه مشکلات را حل میکنند. آیا برای حل مشکلات الهام گرفتهاند، از توسعهدهندگان دیگری درخواست کمک کردهاند یا خودشان راهحلی برای مشکل ابداع کردهاند. سعی کنید در صحبتهای آنها، میزان اشتیاق به پذیرش چالشها و مهارتهای حل مسئله، مراحل انجامشده تا رسیدن به پاسخ نهایی، نگرش و واکنشهای مثبتی که نشاندهنده صبر آنها است را پیدا کنید.
به نظر شما چه عاملی باعث موفقیت یک پروژه میشود؟
این پرسش به شما کمک میکند تا ببینید آیا داوطلب ترجیح میدهد بهصورت مستقل کار کند یا بهعنوان بخشی از یک تیم. هر دو مورد، جایگاه خاص خود را دارند، اما باید مطمئن شوید که الگوی کاری آنها با محیط کاری شما مطابقت دارد یا خیر. اگر آنها ترجیح میدهند بهتنهایی کار کنند باید از آنها سوال کنید در مورد کار تیمی چه احساسی دارند. اگر ترجیح میدهند مستقل کار کنند، بپرسید که چگونه روی پروژههای مشترک کار میکنند. بهطور معمول، توسعهدهندگانی که قرار است بهشکل تیمی کار کنند باید در مورد مهارتهای تعامل درون تیمی و متدولوژیهای نرمافزار اطلاعات دقیقی داشته و وقتشناس باشند تا در زمان مقرر وظایف را انجام دهند.
دوست دارید با کدام زبانهای برنامهنویسی کار کنید؟
برنامهنویسان تازهکار مهارتهای سطح بالایی ندارند. بنابراین، دو نکته مهم که هنگام تعامل با این افراد باید به آنها دقت کنید، کنجکاوی و اشتیاق آنها است. این دو عامل نشان میدهند که آنها چگونه در مورد زبان برنامهنویسی مورد علاقه خود صحبت میکنند. نکته مهمی که باید در مورد برنامهنویسی به آن دقت کنید این است که هیچ زبان برنامهنویسیای کامل و مطلق نیست. برخی از زبانها و فریمورکها برای کارهای خاص مناسبتر از بقیه هستند. بنابراین، یک داوطلب باید بتواند علاقهمندیهای خود را توضیح دهد و شرح دهد که چگونه زبان مورد علاقه او برای غلبه بر مشکلات خاص و رسیدن به اهداف تعیینشده مفید است.
تفاوت بین معماری نرمافزار و طراحینرمافزار را توضیح دهید
معماری نرمافزار ساختار یک برنامه را شکل میدهد. به بیان دقیقتر، اسکلتی است که طراحی نرمافزار و کدنویسی بر مبنای آن انجام میشوند. طراحی نرمافزار به جزئیات فرآیند توسعه اشاره دارد و حول محور کدنویسی و استفاده درست از ابزارها است. به بیان دقیقتر، معماری نرمافزار نقشه راهی برای طراحی نرمافزار است. توسعهدهندگان حرفهای، معماری و طراحی را بهعنوان دو فرآیند جداگانه در نظر میگیرند که با یکدیگر یکپارچه میشوند تا یک پروژه بهشکل منسجم به سرانجام برسد.
ادغام مستمر و تحویل مستمر چیست؟
ادغام مستمر و تحویل مستمر دو اصطلاح عجینشده مهندسی نرمافزار هستند که اشاره به چرخه عمر و توسعه یک نرمافزار دارند. یکپارچهسازی مداوم، یک فرآیند خودکارسازی مستمر است که ساخت و آزمایش منظم یک برنامه را تضمین میکند. تحویل مستمر در چرخه عمر اتفاق میافتد و به توسعه مداوم یک برنامه قبل از تولید اشاره دارد. در مجموع، ادغام مستمر و تحویل مستمر یک فرآیند خودکار است که سعی میکند شکافهای بین تیمهای توسعه و عملیات را حذف کند.
چگونه یک برنامه نرمافزاری مقیاسپذیری بنویسیم؟
مقیاسپذیری در توسعه نرمافزار برای پاسخگویی به تقاضاهای روبهرشد کاربران و تطابق عناصر و عملکردها با رشد دادههای کاربران مورد استفاده قرار میگیرد. ارزش یک برنامه و طول عمر آن به مقیاسپذیری آن با شرایط موجود بستگی دارد. اغلب برنامههایی که مقیاسپذیر نیستند، باید بازنویسی شوند و گاهیاوقات باید از یک پشته فناوری متفاوت استفاده شود تا به نیازهای روبهرشد مخاطبان پاسخ داد. ویژگیهایی مانند حافظه پنهان، واسط برنامهنویسی کاربردی، برنامهنویسی غیرهمزمان و غیره، از مولفههای مهم مقیاسپذیری یک برنامه هستند. بهطور معمول، برخی از ملزومات دنیای نرمافزار مثل پایگاه دادهها و چارچوبها به مقیاسپذیری بیشتری نسبت به نمونههای مشابه نیاز دارند.
چرا باید از معماری ریزسرویسها استفاده کنیم؟
معماری ریزسرویسها به ادغام چند سرویس کوچکتر مستقل قابل استقرار در یک برنامه واحد اشاره دارد. رویکرد فوق تطبیقپذیری عملیات را بهبود میبخشد، زیرا سرویسهای منفرد ممکن است به زبانهای برنامهنویسی مختلف نوشته شوند. بنابراین، شما از نقاط قوت هر زبان برای پاسخگویی به الزامات هر سرویس استفاده میکنید. علاوه بر این، سرویسهای منفردی که به یکدیگر مرتبط میشوند، فرآیند تعمیر و نگهداری را سادهتر میکنند. بهطور معمول، تیمهای بزرگ نرمافزاری از معماری ریزسرویسها استفاده میکنند. در چنین شرایطی ممکن است در هنگام اشکالزدایی کدها با مشکلاتی روبهرو شوید. با اینحال، اگر سرپرست تیم بهدرستی نقشها را تعریف کرده باشد، همه توسعهدهندگان میدانند باید چه زمانی از چه نوع معماریای استفاده کنند.
چالشبرانگیزترین پروژه شما بهعنوان یک توسعهدهنده ارشد چیست؟
توسعهدهنده ارشد بودن فقط به سالها تجربه محدود نمیشود، بلکه اشاره به انواع مختلف پروژههایی دارد که مسئولیت به سرانجام رساندن آنها را بر عهده داشته است. یک توسعهدهنده ارشد باید نشان دهد بر مبنای چه مکانیزمی بر سختترین چالشها غلبه کرده است. یک راه برای کشف این موضوع این است که از داوطلبی که توسعهدهنده ارشد است، سوال کنید چالشبرانگیزترین پروژهای که داشته را شرح دهد و بیان کند بر مبنای چه راهکاری بر مشکل غلبه کرده و به نتیجه رسیده است. در اینجا نکته ظریفی وجود دارد. یک توسعهدهنده ارشد برعکس توسعهدهندگان عادی نیازی به الهام گرفتن از نمونههای مشابه ندارد و خودش باید راهکار خلاقانهای ارائه کند. یک توسعهدهنده ارشد مسئولیت پشتیبانی و راهنمایی اعضای تیم را بر عهده دارد و در همان زمان باید وظایف خود را نیز انجام دهد. توسعهدهندگان ارشد اغلب مسئولیت حفظ انسجام تیم را بر عهده دارند. از اینرو به مهارتهای مدیریتی سطح بالایی نیاز دارند تا تیم را بهدرستی سازماندهی کنند تا روی یک هدف تمرکز کند و اعضا تیم بهدرستی وظایف خود را انجام دهند.
نظرتان در مورد سختی کدنویسی چیست؟
همه در مورد سختی نوشتن کدها صحبت میکنند. برای برنامهنویسان تازهکار، این دشواری بیشتر است. آنها باید با اصطلاحات مختلفی آشنا شوند که قبل از ورود به دنیای حرفهای هیچگاه در مورد آنها چیزی نشنیدهاند. هنگامی که از داوطلبان تازهکار سوال کنید که چگونه بر دشواری کدنویسی غلبه میکنند، در مورد میزان انگیزه و انعطافپذیری آنها در انجام وظایف، اطلاعات بیشتری بهدست خواهید آورد.
پنج سال دیگر خود را در چه جایگاهی تصور میکنید؟
برخی از توسعهدهندگان علاقه زیادی به این حرفه دارند و قصد دارند در این حوزه پیشرفت کنند. برخی دیگر، این موقعیت شغلی را شبیه به سکوی پرشی برای دستیابی به موفقیتهای بزرگتر در آینده میدانند. دیدگاه هر دو طرف قابل درک است، اما دیدگاه آنها نشان میدهد که چقدر برای این موقعیت شغلی که رزومه برای آن ارسال کردهاند، جدی هستند. بهدنبال پاسخهایی باشید که همسو با ارزشهای شرکت هستند. نکته بسیار مهمی که باید در مورد پرسش فوق به آن اشاره کنیم این است که هیچ پاسخ اشتباهی وجود ندارد، اما پاسخهای خوب ممکن است به ویژگیهایی مانند مدیریت، اشتیاق یا علاقهمندی به یادگیری مفاهیم جدید اشاره داشته باشند.
چگونه خود را با جدیدترین فناوریها و روندهای حاکم بر توسعه نرمافزار تطبیق میدهید؟
توسعه وب صنعتی است که بهسرعت در حال تغییر است. فناوریای که در یک سال رشد میکند، ممکن است سال بعد منسوخ شود. بهمنظور همگام شدن با تغییرات، توسعهدهندگان بکاند باید متعهد به یادگیری مداوم باشند تا اطمینان حاصل کنند که مهارتهای آنها قدیمی نمیشود. توسعهدهندگان پرشور علاقه خاصی به یادگیری ابزارها و فناوریهای جدید دارند و دائما مطالب منتشرشده در وبلاگها و سایتها را مطالعه میکنند. داوطلبان پراشتیاق به شما خواهند گفت در کلاسهای یادگیری مهارتهای نوین وب ثبتنام کردهاند تا مهارتهای خود را بهروز کنند.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟