ماژولاریتی در مقابل برنامه نویسی!

رفقا بنظرتون شخصی که از ی فریم ورک برای ایجاد اپلیکیشن استفاده میکنه برنامه نویسی میکنه یا ماژولاریتی؟و یا بهتر بگم شخصی که تو حوزه وب نتونه سیستم کپچا یا یه سیستم روتینگ بنویسه میتونه اسمش بذاره برنامه نویس؟!

اولین باره که کلمه‌ی ماژولاریتی رو با این تعریف میشنوم. مطمئنید این معنی رو میده؟

قبلا هم یک (یا ۲) بار گفتم. از نظر من برنامه نویسها به ۳ دسته تقسیم میشن:

  1. Computer Scientist
  2. Programmer
  3. Developer

این دیدگاه شخصی منه و هرکسی رو توی یکی از این ۳تا دسته قرار میدم. یه نفر ممکنه توی دوتا از این گروهها قرار بگیره ولی سه تاش با توجه به محدودیتهای انسانی، غیر ممکنه.

Computer Scientist

این شخص بیشتر کارش با ریاضیاته و ساخت الگوریتم و تئوریها. یه جورایی مثل فیزیکدان نظری. برنامه نویسی زیادی نمیکنه بجز وقتی که بخواد یکی از نظریاتش رو اثبات کنه و یه proof of concept ارائه بده.
همچین فردی مثلا میاد RSA رو میسازه.

Programmer

این شخص بیشتر کارش برنامه نویسیه و هدفش بهینه سازیه نه ظاهر. یه جورایی مثل فیزیکدان عملی.
با استفاده از تئوریها میاد یه سیستمی (لایبرری یا همچین چیزی) میسازه.
همچین فردی مثلا میاد لایبرری GPGme رو میسازه.

Developer

این شخص با کاربر نهایی سروکار داره. برنامه ای مینویسه که مستقیما توسط کاربر استفاده میشه. یه جورایی مثل خودروسازی.
با استفاده از لایبرریهایی که برنامه نویسها ساختن، یه ابزاری درست میکنه برای کاربر.
مثلا wordpress رو میسازه.


حالا ما به هر سه تای اینا میگیم برنامه نویس و واقعا هم اشکالی نداره.
هیچکدوم هم برتری نسبت به دیگری ندارن. حالا چون من ریاضیم خوب نیست ولی طراحیم خوبه شدم developer یا مثلا ریاضیم خوب نیست طراحیمم خوب نیست ولی شناخت خوبی از سیستم دارم، programmer یا تئوری و ریاضیم خوبه و شدم computer scientist.

لینوس توروالدز (که به عنوان یه programmer میشناسمش) بارها گفته که حتی برای نجات زندگیش هم نمیتونه یه صفحه‌ی وب طراحی کنه! و اصلا توی سخت‌افزار هم خوب نیست (گفته «فکر خیلی بدیه که بخواید هویه دست من بدید») و حتی توی فیکس کردن لینوکسی که خودش ساخته هم خیلی خوب عمل نمیکنه! (مثلا یه کامپیوتری که یه مشکلی پیدا کرده و یه جاییش درست کار نمیکنه رو نمیتونه خیلی راحت فیکس کنه) ولی برنامه نویس فوق‌العاده‌ایه. لینوکس رو ساخته. گیت رو ساخته!

یه نفر که توی یه گروه هست، میتونه مهارت گروههای دیگه رو یاد بگیره. مثلا شما developer هستید و با python+flask+mariadb وبسایت درست میکنید.
بعد از یه مدت میتونید سورسهای flask رو مطالعه کنید و باگهایی که توی ریپازیتوری گیتهابش هست رو فیکس کنید. یا مثلا از نسخه‌ی nightly استفاده کنید و باگهایی که وجود داره رو زودتر از بقیه پیدا کنید و issue بسازید و فیکسشون کنید.
به همین راحتی شما وارد قلمرو programmerها شدید :grinning: (اگه همچین مرزی اصلا وجود داشته باشه!)

برعکسش هم مصداق داره،‌ دیگه توضیح نمیدم.
فقط computer scientist شدن یه کم سخته (حداقل برای من) و نیاز به مطالعه و یادگیری خیلی زیادی داره.
حدود یک ماه پیش کتاب Purely Functional Data Structures نوشته‌ی Okasaki رو خوندم و راستشو بخواید نتونستم درست درکش کنم :sweat_smile:


درمورد ساختن captcha و اینطور چیزها باید بگم که اختراع دوباره‌ی همچین چرخ‌هایی زیاد منطقی نیست. هم تایم زیادی از آدم میگیره (و نمیتونیم پروژه رو تموم کنیم)‌ هم نگهداری و ارتقاعش بعدا گریبان‌گیرمون میشه. اینطور نیست که یه بار بسازیم بعد تمام! (وقتی من از flask استفاده کنم، سازنده‌های فلسک کار آپگرید و ارتقاع سرعت و فیکس باگهای امنیتی رو انجام میدن. لازم نیست من درگیرش باشم)
پس اگه یه لایبرری برای انجام یه کاری هست، باید ازش استفاده کنیم، نه اینکه خودمون دوباره بسازیمش.
اگه فکر میکنیم یه چیزی رو میتونیم بهتر از دیگران بسازیم، خب انجام میدیم ولی به عنوان یه پروژه‌ی جداگانه برای خودمون. نه اینکه من هر وبسایتی میخوام درست کنم بشینم همه چیزشو خودم بسازم.

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

4 پسندیده