بحث اینکه آیندهی کاری ما چطوری میشه و برنامه نویسی منسوخ شده در همه سطوح به اشکال مختلف دیده میشه.
یکی از تحلیلهایی که دوست داشتم این بود که تکامل شغلی مهندسی نرم افزار به سمت مهندسی محصول میره.
در نظر بگیرید قبل از هوش مصنوعی، چه چیزهایی باید یاد میگرفتیم تا برای کار qualified باشیم؟
چندسال قبل فقط دونستن api و database و یه سری نکات "کلی" برای ورود به بازار کار کافی بود. یکم جلوتر اومدیم و بحث میکروسرویس خیلی داغ شد. جدا از هایپی که بود، باید یکم دیدمون رو باز تر کنیم. اون مواقع زمانی بود که هزینه زیرساخت ارزونتر بود. چیزهایی مثل storage و processing power به راحتی قابل ارتقا شدن، docker تکامل پیدا کرد و k8s خیلی تو بازار داغ شد، و همین مسیر منجر به این شد که:
"ما که میتونیم چندتا سرور داشته باشیم، بیایم کد رو در لایهی سرور بشکنیم!"
و این هایپ توی بازار افتاد. جونیورها حالا باید خیلی سریع وارد مباحث گستردهتر میشدن. اون خط حداقلی جابجا شد. باید جدا از یه api و database وارد مباحث معماری و مهندسی میشدن. در نظر داشته باشین که دارم میگم جونیور.
حالا که ai اومده هم همین مسیر ادامه پیدا کرده. دوست خوبمون uncle bob تو مصاحبه اخیرش میگفت که کد دیگه یه مبحث حل شدست. باید بزرگتر بهش نگاه کرد. پس همین خط رو بریم، میبینیم که برای اینکه یه جونیور توی بازار دوام بیاره، باید بتونه دیدش رو باز تر کنه.
باید فرای معماری و طراحی سیستم، به محصول هم فکر بکنه. احتمالا همینجاها مبحث product engineering مطرح میشه.
اما سوال اصلی اینجاست، اگه کد "حل" شده، آیا هنوز نیازه مباحث سطح پایین رو یاد بگیریم؟
بیاین نقل قولی از Sir Jackie Stewart که ۳ بار world champion مسابقات فرمول ۱ بوده رو ببینیم:
You don't have to be an engineer to be a racing driver, but you have to have mechanical sympathy.
نویسندهی کتاب Writing an interpreter in Go اول کتاب میخواد به سوال اینکه "چرا با Go بیایم یه مفصر بنویسیم؟ چه نیازی به این دانش هست اصلا؟" به این نقل قول اشاره میکنه و براساس اون اصطلاح Machine Sympathy رو بیان میکنه. ما برای رانندگی فرمول یک نیاز نیست مکانیک باشیم، ولی باید با مکانیک اون ماشین بتونیم "همدردی" کنیم. تو کامپیوتر هم بنظر من همینه. شاید برای "کار راه انداختن" نیاز نباشه تو دوران هوش مصنوعی دانش سطح پایین داشته باشیم. ولی ۱۰۰ درصد برای مهندس خوبی بودن، به قول خارجیا برای "10x Engineer" بودن، نیاز داریم بتونیم با کامپیوتر همدردی کنیم. ما سیستم عامل، شبکه، کامپایلر، حتی اسمبلی یاد نمیگیریم که خودمون بتونیم بنویسیمشون یا مستقیم باهاشون کار کنیم. یاد میگیریم که بتونیم یه درک "احساسی" درستی از نحوه رفتار کامپیوتر داشته باشیم.
خلاصه که شاید امروزه همه Generalist بخوان، ولی اون Specialist ها هستن که به اون اهداف خاص میرسن.
بنظر من البته😁✋
@ever_code