حداقل برنامه نویس قابل قبول
اگر می خواهید برای استارتاپ یا شرکت خود با حداقل بودجه یک برنامهنویس استخدام کنید، یا اگر می خواهید کار برنامهنویسی را شروع کنید، باید با تعریف برنامهنویس حداقلی آشنا باشید و بدانید که یک برنامهنویس، حداقل باید دارای چه مهارتهایی باشد تا بتواند کارش را شروع کند و با گذشت زمان به برنامهنویس قابلی تبدیل گردد.
این مطلب میتواند برای علاقهمندان برنامهنویسی، برنامهنویسان و همچنین کارفرمایان و صاحبان استارتاپها مفید باشد. حتی اگر هنوز تصمیم نگرفته اید که آیا برنامهنویسی برای شما شغل مناسبی هست یا نه، این مطلب می تواند به شما با توجه به شناختی که از توانایی های خود دارید کمک کند تصمیم بگیرید که آیا می توانید در این راه موفق شوید یا نه.
من مدت نزدیک به بیست سال است که در زمینه برنامهنویسی و مدیریت تیمهای برنامهنویسی و آموزش برنامهنویسی مشغول هستم و همیشه یکی از مهمترین سوالاتی که برنامهنویسان، کارفرماها و علاقهمند به برنامهنویسی از من میپرسند این بوده که یک برنامهنویس خوب حداقل باید چه ویژگیهایی داشته باشد تا بتواند به عنوان برنامهنویس استخدام شود و مراحل حرفه ای شدن را طی کند.
در تعاریف استارتاپی ما چیزی به نام «محصول حداقلی» یا «حداقل محصول قابل قبول» داریم که احتمالا با آن آشنا هستید، Minimum Viable Product یا MVP. در سادهترین تعریف یعنی محصولی که در سریعترین زمان ممکن با حداقل امکانات ایجاد شود که ویژگیهای مورد نظر ما را بتواند به مشتری انتقال دهد و قابلیت توسعه نیز داشته باشد.
حالا در اینجا می خواهیم در مورد «برنامهنویس حداقلی» یا «حداقل برنامهنویس قابل قبول» صحبت کنیم که شاید بتوان آنرا Minimum Viable Programmer یا باز هم همان MVP نامید.
اگر سازمان و یا شرکتی بخواهد برنامهنویسان باسابقه و توانا را استخدام کند و یا یک استارتاپ در ابتدای شروع کارش به دنبال بهترین های برنامهنویسی باشد، خوب می تواند اینکار را انجام دهد و البته به شرط اینکه توانایی تشخیص آنرا داشته باشد و قطعا تصمیمگیری راحتتری خواهد داشت. اما مشکل آنجایی آغاز می شود که بودجه لازم برای استخدام برنامهنویس حرفهای وجود ندارد و باید با حداقل برنامهنویس ممکن کار را شروع کرد. حال باید در آزمون و یا مصاحبه استخدامی خود چه مواردی را مد نظر داشته باشد؟
انواع مهارتهای یک برنامه نویس:
مهارتهای لازم برای یک برنامهنویس حداقلی به دو بخش عمده تقسیم میگردد: اول مهارتهای فنی مورد نیاز و بعد مهارتهای فردی و شخصیتی.
اگر یک جستجو ساده در اینترنت انجام بدهید با حداقل مهارتهای فنی لازم برای برنامهنویسی آشنا خواهید شد و شاید پرداختن مجدد به آنها در اینجا زیاد مفید نباشد. (مهارتهایی مانند توانایی کار با سورس کنترلها، آشنایی با دستوارت و نحوه صحیح کد نویسی در زبان برنامهنویسی، توانایی تشخیص خطا و دیباگ کردن و …) که البته این مهارتهای فنی با توجه به زبان برنامهنویسی و نوع آن متفاوت است.
نکته ای که در مورد اینگونه مهارتهای فنی وجود دارد اینست که آنها با مطالعه و تمرین، خیلی سریع قابل دستیابی هستند. اما مهارتهایی وجود دارد که برنامهنویس اگر آنها را نداشته باشد نمی تواند کار خودش را شروع کند و داشتن آنها در کنار مهارتهای فنی می تواند یک برنامهنویس حداقلی را بسازد و آینده درخشان آنرا تضمین کند.
مهارتهای شخصیتی و فردی یک برنامه نویس:
بنا به تجربه خودم در زیر به برخی از مهارتهایی اشاره می کنم که در تمام این سالها بارها نتایج مثبت آنها را در افراد مختلفی که شروع بکار کرده اند و یا مشغول بکار بوده اند دیده ام:
1- توانایی درک مسئله و تفکر در مورد راه حل آن: که لازمه آن بالا بردن توانایی پرسیدن و درست پرسیدن است. یک برنامهنویس باید بتواند با پرسش سئوالات درست، درک و دید مناسبی از مشکلی که باید حل کند بدست آورد. علاوه بر پرسش از کارفرما یا مشتری، پرسش از خود هم برای رسیدن به یک درک صحیح لازم است.
2- توانایی برقراری ارتباط با دیگران: برای اینکه بتوان پرسشهای درست پرسید باید با اصول برقراری ارتباط آشنا بود و همینطور در کار گروهی و همکاری با یک تیم باید بتوان ارتباط خوب و موثر برقرار کرد.
3- تشنه یادگیری و کسب مهارت در تمامی مراحل و زمانها: شاید داشتن همین یک مورد بتواند برای موفقیت یک برنامهنویس کافی باشد. اینکه همیشه باید به دنبال یادگیری و آموختن بود، حتی در ساعات غیر کاری. این مهم می تواند از هر نیروی تازه کاری در طول مدت زمانی محدود، یک برنامهنویس قابل بسازد.
4- علاقه مند به ارتقا سطح و به روزرسانی مستمر خود: بعد از یادگیری، یک برنامهنویس باید تا پایان عمر برنامهنویسی خود همیشه آخرین دستارودها و متدهای برنامهنویسی و زبانهای جدید و اتفاقات آن را دنبال کند و در لیستهای ایمیلی و کانالها و صفحات مختلف مشترک باشد. و اصلا به دانشی که فرا گرفته و آموخته هایی که کسب کرده اکتفا نکند.
5- مطالعه غیر تخصصی: بله منظور خواندن رمان، داستان و یا کتابهای غیر درسی دیگر است که به برنامهنویس کمک خواهد کرد مهارتهای دیگر خود را به شدت افزایش دهد. در اینجا فکر نمیکنم بیش از این نیاز باشد از فواید مطالعه صحبت کنم!
6- علاقه مند به به اشتراک گذاری دانش و تجربه: یک برنامهنویس باید در اشتراک گذاری دانش و تجربیات خود هیچ خساستی نداشته باشد و همیشه در اشتراک گذاری هر آنچه میداند پیش قدم باشد و همینطور همواره در دریافت اطلاعات و تجربه از دیگران نیز بکوشد، حتی اگر در سطح پایینتر از خودش باشند.
7- آشنا با اصول خلاقیت: برنامهنویس باید توانایی نگاه از زاویه دیگر به موضوع را داشته باشد، شاید حتی زاویه ای که دیگران هیچگاه از آن نگاه نکرده اند. گاهی اوقات توانایی خیال پردازی و تصویر سازی هم میتواند در یافتن و یا ایجاد راههای خلاق برای حل یک مسئله بسیار مفید باشد.
8- توانایی و علاقه مندی به نوشتن و مستند سازی: یکی از مهمترین و شاید سختترین کارها در برنامهنویسی نامگذاری و کامنتگذاری کدهای برنامه است. شاید این نکته عجیب باشد ولی یک برنامهنویس باید توانایی نوشتن خوبی داشته باشد تا بتواند کدهایی خواناتر تولید کند. و علاوه بر آن باید به نوشتن علاقهمند باشد و باید نویسنده خوبی باشد.
9- توانایی کار به مدت طولانی و بیشتر از ساعت کاری: گاهی اوقات برای رساندن یک کار و انجام پروژه نیاز هست که بیشتر از ساعت کاری مرسوم یا توافق شده کار کرد و یک برنامه نویس نیز باید این توانایی را داشته باشد که چندین ساعت بیشتر از حد معمول کار کند. البته قطعا این مورد نمی تواند برای همیشه ادامه داشته باشد ولی به نظرم در کار برنامهنویسی که اتفاقات غیر مترقبه زیادی ممکن است رخ دهد و تمام محاسبات زمانی را به هم بزند، یک برنامه نویس باید بتواند آنرا جبران کند.
10- تسلط به زبان انگلیسی: این مورد هم از الزاماتی است که برنامه نویس اگر بخواهد از منابع موجود و به روز استفاده کند باید به زبان انگلیسی تسلط داشته، مهارت بالا در درک مطلب و مهارت متوسط در نوشتن مطلب چرا که گاهی اوقات باید با دیگر برنامه نویسان غیر ایرانی ارتباط برقرار کرد و یا در سایتهایی مثل StackOverflow
سئوالی را مطرح کرد.
البته تقریبا تمامی موارد بالا شاید منحصر به یک برنامهنویس نباشد و برای بسیاری از کارها و مشاغل دیگر هم از مهارتهای پایهای به حساب آید ولی به نظر من اگر فردی این مهارتها را داشته باشد می تواند در کمترین زمان ممکن و در حین کار به یک برنامهنویس خوب و کم کم به یک برنامهنویس عالی تبدیل شود. اما اگر این مهارتها کم و یا اصلا در فرد (یا شما بعنوان علاقهمند به برنامهنویسی) نباشد بعد از مدتی (معمولا چند ماه) به این نتیجه خواهیم رسید که وقت خودمان را هدر دادهایم!
یک نکتهای که همیشه به اشتباه در مورد برنامهنویسی و برنامهنویس در ذهن افراد وجود داشته اینست که تصور میشود برای برنامهنویس شدن نیاز به هوش بالا و استعداد خاصی است! من هم در لیست خودم اصلا به این مورد اشاره نکردم و به نظر من اصلا این درست نیست و شاید در یک مقاله دیگر در این مورد بصورت کامل صحبت کنم.
برای برنامهنویس شدن نیاز به هوش بالا و استثنایی نیست و یا بعبارت دیگر برنامهنویسان الزاما آدمهای باهوش یا نابغهای نیستند!
این مطلب در بلاگ شخصی من منتشر شده است.
مطلبی دیگر از این انتشارات
20 سؤال مهم که در مصاحبهی استخدامی PHP میپرسند!
مطلبی دیگر از این انتشارات
ویژوال استودیو چیست و چه کاربردی دارد
مطلبی دیگر از این انتشارات
آیا من مسئولم؟(اخلاق برنامه نویسی)