در مورد پرسیدن سوالات الگوریتمی (مخصوصا منوط کردن نتیجه به سوالات الگوریتمی) بحث زیاد شده و به عنوان کسی که خیلی در حل مسائل الگوریتمی قوی نیستم مخالف هستم با این موضوع. شاید در بعضی مواقع و برای برخی موقعیت های شغلی پرسیدن سوالات الگوریتمی رویکرد مناسبی باشه، اما در خیلی از موارد اینطور نیست.
عیار یه مهندس نرم افزار خوب صرفا به این نیست که بتونه مسائل الگوریتمی رو حل کنه. مهندسی نرم افزار خیلی چالش های مختلفی داره و خیلی مهارت های دیگه لازمه که شما بتونی مهندس نرم افزار خوبی باشی. خیلی وقت ها پیش میاد که شرکت ها به خاطر مصاحبه های اشتباهی که از افراد میگیرن، استعدادهای خوبی رو از دست میدن.
در لحظه اگه حافظه م یاری کنه فکر میکنم این معیارها برای ارزیابی یه مهندس نرم افزار خوب مهمتر باشن:
اول اینکه قدرت حل مساله داشته باشه، ولی نه به این معنی که یه سری الگوریتم رو بلد هست یا نه، به این معنی که ابزارهای مختلف رو خوب بشناسه و بتونه با ترکیب های مختلف از ابزارها راهکار مناسب ارائه بده. برای هر ابزار هم خوبه بدونه مزیت و عیب ش چیه، حالا اگه دونست که اون ابزار بصورت داخلی از چه الگوریتم هایی استفاده میکنه که چه بهتر، ولی اصل قضیه شناخت خوب از ابزارها و مزایا و معایبش هست.
علت اینکه تاکید میکنم روی شناخت ابزارها به این علته که در دنیای واقعی مهندسی نرم افزار ما در اکثر موارد صرفا قراره با استفاده از ابزارها و خیلی سریع یک محصول رو توسعه بدیم، قرار نیست در لبته تکنولوژی قدم بزنیم و ابزار جدیدی خلق کنیم.
اگه تیم مثلا روی یک دیتابیس جدید کار میکنه، آره موافقم که الگوریتم مهم میشه.
فکر میکنم برای اینکه متوجه بشیم یه مصاحبه شونده چقدر قدرت حل مساله داره بهتره سوالات طراحی سیستم مطرح بشه و بهش اجازه بدیم با ذهن باز هر آنچه که در ذهن داره رو بیان کنه، این برای من به شخص خیلی معیار ارزیابی بهتری هست تا اینکه بخوام ازش بپرسم پیچیدگی زمان فلان الگوریتم چیه یا غیره.
مهندس نرم افزار خوب باید بتونه خیلی خوب با افراد سمت بیزینس تعامل کنه.
مهندس نرم افزار خوب باید بتونه یه پروژه رو به سرانجام برسونه.
مهندس نرم افزار خوب باید بتونه تحلیل درستی از چالش های پیاده سازی از نظر فنی و زمانی داشته باشه.
از معیارهای دیگه مهندس نرم افزار خوب بودن «بازیکن تیم بودنه» اینکه این فرد چقدر میتونه در یک تیم خوب نقش ایفا کنه.
معیار دیگه «آچار فرانسه بودنه» چقدر میشه روش حساب کرد که تو جنبه های مختلف به تیم کمک کنه.
یه معیار ارزیابی مهم دیگه هم بحث معیارهای رفتاری فرد هست که چقدر رفتار مناسبی تو تیم داره مخصوصا وقت هایی که تیم تحت فشار و استرس هست.
خلاصه اینکه کلی معیار وجود داره برای مهندس نرم افزار خوب بودن که واقعا خیلی مهم هستند برای توسعه یک محصول به شکل واقع بینانه
طبیعتا یک سری از این معیارها رو نمیشه صرفا با یک یا دو جلسه مصاحبه فهمید اما در کل معیارهای بهتری هستند تا صرفا اینکه الگوریتم رو خوب بلد هست یا نه.
این ویدیو حسین ناصر هم در این مورد جالبه
https://www.youtube.com/watch?v=bDIB2eIzIC8
@gocasts
Post #338
3.64K