برنامه‌نویس‌ها

این پست بر اساس برداشت‌هایی کاملا شخصی‌ست. بر تحقیق و آماری متکی نیست. صرفا نگاهی شخصی‌ست. پس به عنوان زنگ تفریح بخونید و جدی نگیرید.

از نگاه من برنامه‌نویس‌ها رو می‌شه با کمی اغماض در دسته‌هایی قرار داد. این دسته‌ها رو جلوتر توصیف می‌کنم. ممکنه یک برنامه‌نویس در طول زمان با افزایش و کاهش انگیزه‌ و تجربه اندوزی و شرایط اقتصادی و عوامل بسیار دیگر از یکی از طبقه‌بندی‌ها به طبقات دیگر مهاجرت کنه. فکر می‌کنم هر کدام از ما احتمالا بعد از ۲۰ سال کسب تجربه احتمالا مدتی را در کسوت اعضای هر یک از این گروه‌ها زندگی می‌کنیم.

۱. ارزشی

این ارزشی با اون ارزشی یک دنیا فاصله داره. اینجا منظور از ارزش، چیز‌هایی‌ست که برای کسب‌و‌کار ارزشمنده. این برنامه‌نویس‌ها بر حل مسئله تمرکز دارن. به گذروندن خر از پل تمرکز دارن. به چارچوب‌ها و دیسیپلین‌ها پای‌بند نیستن. براشون مهم نیست چطور بنویسن. بلکه براشون مهمه که چی بنویسن. اینا معمولا می‌تونن پروژه رو تحویل بدن و رزومه‌ای پر از مشتری‌های خوشحال دارن. درامدشون هم پایدار و خوبه.

بیش از گروه‌های دیگر می‌تونیم خروجی‌کارشون رو ببینیم در اطرافمون. سریعتر از بقیه MVP رو تحویل می‌دن. خیلی سریع فیدبک می‌گیرن و کار رو به سرعت به جایی می‌رسونن که کارفرما "بله" رو بگه.

معمولا کارهاشون برای گذر به مقیاس‌های بزرگتر نیازمند بازنویسی‌های سنگین و پر هزینه است.

از مهمترین نشونه‌هاشون اینه که عاشق جلسه و مستندات و گزارش‌ها هستن.

۲. تکنیکی

اینا به تکنیک اهمیت می‌دن. آخرین فیچر‌های زبان‌ها رو می‌شناسن و سعی می‌کنن پروژه رو به شکلی پیش ببرن که آخرین آموخته‌هاشون رو تقویت کنه و آمادشون کنه برای تجربه‌های جدید بعدی. برای اینا زیاد مهم نیست چی می‌نویسن. بلکه مهمه که چطور می‌نویسن. فرقی نمی‌کنه پروژه یک سیستم پیچیده‌ مالی‌ست یا یک دفتر تلفن شخصی. از تمام یافته‌هاشون استفاده می‌کنن. زیبانویسی، مختصر نویسی، قابل تست بودن، استفاده از چارچوب‌های مدرن، توجه به مقیاس‌پذیری و ... از مشخصه‌های ایناست. به دیسیپلین‌ها و اصول پای‌بند هستن. مطالعه می‌کنن. همیشه یاد می‌گیرن. وقتی می‌گی فِ می‌رن فرحزاد.

معمولا روی فناوری‌ها، چارچوب‌ها و تکنیک‌ها تعصب دارن. حاضرن ساعت‌ها درباره سبک‌ها بحث کنن. دوست داشتنی هستن و بسیار می‌شه ازشون یادگرفت.

با این همه ویژگی‌های خوب متاسفانه کمتر خروجی کارشون رو در بازار می‌بینیم. چرا که پروژه‌هایی که این گروه توسعه می‌دن هزینه اولیه بیشتری داره. هر چند بعد‌ها هزینه توسعه و نگهداری پروژه‌هاشون بسیار کمتر می‌شه ولی در ابتدا هزینه و زمان بیشتری نیاز دارن.

فرض کنید پرنده‌ای روی چند تخم خوابیده. اون جوجه‌ای که زودتر بیرون بیاد حتی اگر ضعیف باشه شانس بیشتری برای موندن داره تا جوجه‌ای که ۳ روز دیرتر ولی سالم و کامل به دنیا میاد. اونی که زودتر میاد تمام منابع رو به خودش تخصیص می‌ده. وجود خودش رو ثابت می‌کنه و به پدر مادر (کارفرما) یادآوری می‌کنه که من هستم و دیگه نیازی نیست روی تخم‌های دیگر بخوابی.

این که چرا دیرتر به جوجه تبدیل می‌شه پروژه‌های این بچه‌ها، شاید ناشی از وسواس‌های خودشون هم باشه. دائم در کار ریفکتور هستن. پرفکشنیسم اجازه نمی‌ده جلو برن. ۵ قدم جلو می‌رن بعد ۴ قدم برمی‌گردن به عقب و دوباره ۵ قدم جلو می‌رن. اصولا در قید زمان و هزینه نیستن. بنده‌ی فناوری هستن. تکنولوژی تمام حواسشون رو به خودش مشغول می‌کنه و کمتر خروجی‌ کارشون در صنعت دیده می‌شه.

۳. تکنیک برای ارزش

گروه سوم برنامه‌نویس‌هایی هستن که می‌دونن بازار منتظر دیدن جوجه است. از طرفی با مشکلات مقیاس‌پذیری و پیچدگی‌ها و مشکلات فناوری‌های جدید هم آشنا هستن. می‌دونن هر چیز جدیدی خوب نیست. از طرفی می‌دونن برخی از راه‌حل‌های جدید مشکلات قدیمی رو از پیش رو برمی‌داره. می‌دونن سادگی بر همه چیز اولویت داره. اینا مثل برنامه‌نویس‌های تکنیکی، با فناوری آشنا هستن ولی در مورد بکارگیری فناوری‌های نو در پروژه‌ها کمی محتاط هستن. ترجیح می‌دن توی خط مقدم آزمایش پروژه‌های جدید نباشن. از طرفی بیمی ندارن از فراگیری ابزارها و تکنیک‌هایی که فراگیری‌شون برای پیشرفت یا بقای پروژه به یک الزام بدل شده.

خروجی کارهای اینا کمتر از ارزشی‌ها و بیشتر از تکنیکی‌ها دیده می‌شه توی بازار. تفاوت اینا با ارزشی‌ها اینه که پروژه‌هاشون به راحتی اسکیل می‌شه یا با نیاز‌های جدید سازگار می‌شه و کم تر به بن‌بست می‌رسن.

اینا تعصبی در بکارگیری فناوری ندارن. سعی می‌کنن کمترین اتلاف انرژی رو داشته باشن. پس کمی تنبل هستن. کمتر از هر دو گروه ارزشی و تکنیکی کار می‌کنن. ولی در نهایت کارایی‌شون کمتر از اونا نیست.

شعار یکیشون این بود: "تنبلی فضیلت است."

فکر می‌کنم نهایت مسیر تکامل برنامه‌نویس‌ها به این گروه ختم می‌شه. در ابتدا برای اینکه خودشون رو ثابت کنن بر تولید ارزش تمرکز دارن. بعد‌ها احتمالا درگیر زیبایی کدنویسی و ابزارهای می‌شن. غرق می‌شن توی تکنیک. در نهایت پس از اینکه جوجه‌های زیادی مرده از تخم بیرون اومد به گروه "تکنیک برای ارزش"، یا "فقط برای مشتی دلار" ملحق می‌شن.

۴. فقط برای مشتی دلار

اینا خیلی ساده و بی‌ریا، برای پول کار می‌کنن. به راحتی از یک فناوری به فناوری دیگه می‌رن. تعصب ندارن. درامد یک پروژه تعیین می‌کنه اهل کار هستن یا نه. معمولا خر رو از پل ‌می‌گذرونن. اینا می‌تونن بسته به میزان منافعی که کسب می‌کنن در بین سه گروه قبل کم و بیش حرکت کنن. واقعا می‌تونن.

منافع تعیین می‌کنه توی کدوم پروژه کد بزنن و با کدام تکنیک‌ها آشنا باشن. اگر منافعشون تضمین شه باشه، براشون فرقی نمی‌کنه پروژه به نتیجه برسه یا شکست بخوره. براحتی از پروژه‌ای به پروژه دیگری مهاجرت می‌کنن. در بسیاری موارد واقعا راه‌گشا هستن. تجربه‌شون رو ریختن توی کوله‌باری و از پروژه‌ای به پروژه دیگر می‌رن و به اندازه‌ای که پول دریافت می‌کنن، برای تیم از تجربه و خلاقیت‌شون خرج می‌کنن.

با تمام انگیزه‌ای که برای ساختن پول دارن، بعد از حدود ۱۰ یا ۱۵ سال کم کم بازار خودشون رو از دست می‌دن. رزومه‌شون پر می‌شه از کارهای ناتمام. از اونجایی که کمتر بر اساس تمایل شخصی حرکت می‌کنن، معمولا حوصله فرو رفتن در عمق مفاهیم و تکنیک‌ها رو ندارن. برای همین به اندازه عشاق تکنیک یا گروه سوم پر نیستن. در پیدا کردن باگ و حل مسئله به سریعترین روش‌ها ید طولایی دارن.

۵. ثبت و احوال

می‌دونیم تعدادشون کم نیست. اینا همون برنامه‌نویس‌هایی هستن که از برنامه‌نویسی لذت نمی‌برن. می‌ذاریمشون توی این دسته.


حتما انواع دیگری از ما برنامه‌نویس‌ها در این سیاره زندگی می‌کنه که من هنوز باهاشون آشنا نیستم. شاید روزی از اونا هم بنویسم.