با نام و یاد خدا در خدمت شما عزیزان هستم با یک پست تر و تازه و اما بعد

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

ولی برای علمی تر شدن بحث اجازه بدید چند قدم بریم عقب و از دید کلی تری به قضیه نگاه کنیم :

توی نوشتن برنامه چند بخش مهم معمولا درگیر هستند (منظورم از برنامه یک برنامه علمی-تجاری-صنعتی هست نه برنامه حسابداری و اتوماسیون) این بخش‌ها از سطح بالا به پایین عبارتند از :

  • طراحی رابط کاربری و تجربه کاربری
  • مهندسی نرم‌افزار
  • معماری کد
  • کد نویسی بخش بالایی (کد نویسی خالص)
  • کد نویسی علمی (مخلوطی از دانش کد نویسی و دانش حوزه کاری مانند مخابرات یا هوش مصنوعی یا ... )
  • بخش علمی

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

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

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

در مورد معماری کد معمولا یا چیزی نمیدونند و هر جور پا بده کد میزنند طوری که فقط خروجی رو تولید کنند یا فقط یک اصل رو بلدند و سعی میکنند همه معماری رو به اون اصل محدود کنند.

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

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

اما توی بخش علمی واقعا چیزی برای عرضه ندارند چون این بخش دیگه شوخی نداره و باید مورد تایید صاحب نظران اون حوزه قرار بگیره یا اثبات علمی پشت کارش باشه و این چیزیه که اون اصلا دنبالش نیست ترجیه میده خودش کارهای بقیه رو تایید کنه تا دیگران کار خودش رو.

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

دوست دارم نظران دوستان با تجربه رو هم بدونم.

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