داستان یک مهاجرت معکوس

  • یوسف مهرداد بی‌بالان

به قلم دکتر کیا بازرگان

سال ۱۳۸۶ با خانمم از مینسوتا برگشتیم ایران. خونه‌ی امریکا رو گذاشتیم برای فروش، ماشین‌ها رو هم فروختیم. دوتایی استادیار دانشگاه صنعتی اصفهان شدیم. آخر سال تحصیلی، حکم استخدام‌مون اومد. خونه فروش نرفت (بحران مسکن امریکا، با اینکه سه بار قیمت خونه رو پایین آوردیم ۳۰-۴۰ هزار دلار).

مجبور شدیم آخر سال تحصیلی برگردیم مینسوتا که من حقوق بگیرم پول وام خونه رو بدیم. رئیس دانشکده صنعتی اصفهان گفت این حکم‌تون معتبره. هر وقت برگردید، می‌تونید ادامه‌ی کار بدید. فقط وقتی خارج باشید، جزو سنوات‌تون حساب نمیشه. در اون مدت هم که اصفهان بودیم، مشکلات طبیعتاً بود (مثل وصل شدن تلفن دفترم که ۴-۵ ماه طول کشید، یا به خاطر دستکاری در آدرس آی‌پی کامپیوترها در صنعتی اصفهان به خاطر فیلترینگ، چند ماه طول کشید که بعد از کلی چک و چونه زدن، تونستم یک آی‌پی واقعی بگیرم که بتونم به کامپیوترهای آزمایشگاهم تو مینسوتا وصل بشم).

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

سال ۱۳۸۹ برگشتیم اصفهان. رئیس دانشگاه و رئیس دانشکده عوض شده بودن. انتخاب رئیس دانشگاه هم از طرف وزارت علوم بود. این سنت غلطی بود که احمدی‌نژاد دوباره برگردوند به دانشگاه‌ها. انتخاب رئیس دانشکده و دانشگاه از چند سال قبلش توسط رای اساتید انجام میشد. احمدی‌نژاد دوباره عوض کرد و روسای دانشگاه دوباره از بالا، دستوری تعیین شدن.

در این دوره، همکارهای دانشکده کماکان ماه بودن. رئیس دانشکده هم همینطور (قبلی هم فوق‌العاده بود). ولی رئیس دانشگاه تنگ‌نظر بود و نه فقط من، بلکه بسیاری از همکارها رو اذیت کرد. از این آدم‌هایی بود که “مقام معظظظم رهبری” رو غلیظ می‌گفت و احتمالاً فقط تعداد خیلی محدودی از آدم‌ها رو قبول داشت به عنوان مذهبی و ولایی. مشکل من قطعاً مذهبی نبودن نبود. من رو تو مسجد دانشگاه دیده بود موقع نماز یا بین دانشجوها به مذهبی بودن شناخته شده بودم. ولی تو دار و دسته‌ی رئیس دانشگاه نبودم یا با بسیج و این چیزها کاری نداشتم…

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

من هم گفتم بی‌خیال بشید. برمیگردم. تو این پروسه حدود ۶۰ هزار دلار یا بیشتر هم از دست دادیم و پس‌اندازها ته کشید، چون هم از مینسوتا حقوق نمیگرفتم (leave of absence)، که برای نصف سال میشد ۵۰ هزار دلار، هم باید پول خونه تو امریکا رو می‌دادیم، هم چند سفر برای کنفرانس و داوری پروپوزال‌های بنیاد دانش ملی امریکا و این‌ها باید می‌رفتم (ببخشید، بنیاد دانش حساب نیست. پولش رو دولت امریکا داد)، و هم خرج ایران. هیچ‌وقت به طور رسمی کسی به من نامه نداد که تو اخراجی. ولی عملاً اخراج شدم.

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

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

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

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

مشکل کسی که مثلاً از امریکا برمی‌گرده و نمی‌تونه ایران بمونه، لزوماً مسائل مالی و رفاه و این‌ها نیست. گرچه این‌ها هم مولفه‌های مهمی هستن در تصمیم‌گیری. مشکل، وجود آدم‌های بی‌سواد و مغرض و تنگ‌نظر در مناصب دولتیه که میتونن با یک تصمیم – حتی چه بسا غیر قانونی – سد راه کسی بشن که میخواد کار کنه. کسانی که درک نمیکنن از دست دادن یک سرمایه‌ی انسانی، چقدر ضرر میزنه به مملکت…

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

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

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

گزیده:
«هیچ انسانی با خوشحالی وطنش را ترک نمی‌کند.»
رومن رولان، کتاب ژان کریستف

توصیه‌ی فرانسوا شوله به برنامه‌نویسان

  • یوسف مهرداد بی‌بالان

In programming, you constantly run into situations where you have a choice between “make it work right now with this quick hack” or “do it right”. And it’s always very satisfying to do things right. Saves you time, too 🙂

François Chollet, Creator of Keras

سال نو و روز نو

  • یوسف مهرداد بی‌بالان

باد همایون به تو سال نو و روز نو
عمر تو زان بر مزید عز تو زین بر دوام

در سال نو برای‌تان دل خوش، لب خندان، تن سالم و پیروزی‌های پی‌درپی آرزومندم.
به امید روزهای بهتر

فروردین ۱۴۰۲

بوی جوی مولیان آید همی!

  • یوسف مهرداد بی‌بالان

با تشکر از خانم مانا عزیزی

بازسازی کد: ارزش کد خودآزما (Self-testing code)

  • یوسف مهرداد بی‌بالان

بازسازی کد ابزار ارزشمندی است، اما نمی‌تواند به تنهایی مفید باشد. برای انجام درست بازسازی کد، به مجموعه‌ای یکپارچه‌ و قابل اتکا از تست‌ها نیاز دارم تا بتوانم اشتباهات اجتناب‌ناپذیر خود را پیدا کنم. حتی با وجود ابزارهای بازسازی‌ خودکار کد، ناچارم بسیاری از بازسازی‌های کد را همچنان از طریق مجموعه‌‌ای از تست‌‌ها (test suite) بررسی کنم.

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

معمولا هر برنامه‌نویسی خاطره‌ای دارد از این که کل روزش را برای پیدا کردن یک خطا مشغول بوده است [شما بخوانید سر کار بوده! مترجم]. رفع خطا معمولاً بسیار سریع انجام می‌شود، اما پیدا کردن خطا واقعا کابوس است.

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

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

وقتی تست‌ها دستی باشند به شدت خسته‌کننده‌اند. اما وقتی خودکار باشند، نوشتن تست‌ها واقعا بسیار سرگرم‌کننده و جذاب است.

گزیده: (عجب گزیده‌ای)
کیفیت واقعی به این معنی است که مطمئن باشید افراد به کدی که می‌نویسند افتخار می‌کنند، فعالانه مشارکت می‌کنند و آن را از خود می‌دانند (نسبت به آن حس غرور، مالکیت و مسئولیت‌پذیری دارند).
لینوس توروالد، سپتامبر ۲۰۰۸

Real quality means making sure that people are proud of the code they write, that they’re involved and taking it personally. Linus Torvalds

 

برای یک روز تعطیل عالی!

  • یوسف مهرداد بی‌بالان

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

«چند روز پیش یک نفر به من گفت دو تا بچه دارم که گشنه موندن یه غذایی بگیر من ببرم خونه بهشون بدم بخورن. من رفتم همون سوپری نزدیک گفتم چی بخرم گفت تخم مرغ و نون. ۱۵ تا تخم مرغ و دو بسته چهار تایی نون لواش و دو تا روغن کوچیک گرفتم شد ۲۴۰ هزار تومن! یک لحظه با خودم گفتم یعنی یک خانوار سه نفره در طول روز برای سه وعده نون و تخم مرغ باید ۳۰۰ هزار تومن هزینه کنه و در ماه ۹ میلیون تومن فقط پول غذای حداقلی؟! میانگین دریافتی کارمندای دولت و بازنشسته ها و نظامی ها چقدره؟»

به برادرها و خواهرها و همسایه‌ها و دوستانم فکر می‌کنم. به دوست تازه‌دامادی که دیروز از فشار فکری راهی بیمارستان شده فکر می‌کنم. کاری از دست‌ام بر نمی‌آد جز امید به روزهای خوش، آن هم اگر امیدی باقی مانده باشد!

توصیه‌های ChatGPT به توسعه‌دهندگان نرم‌افزار

  • یوسف مهرداد بی‌بالان

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


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

شما چه توصیه‌ای به توسعه‌دهندگان نرم‌افزار دارید؟
مهم‌ترین توصیه من به توسعه‌دهندگان نرم افزار این است که به یادگیری (learning)، رشد و پیشرفت (growth) خود ادامه دهند. دنیای توسعه‌ی نرم‌افزار پیوسته در حال تحول است و از این رو مهم است که در زمینه‌ی آخرین فناوری‌ها، ابزارها و تکنیک‌ها به‌روز باشید.
در اینجا به چند توصیه‌ی ویژه‌ی دیگر هم اشاره می‌کنم:
۱- به یادگیری ادامه دهید:‌ حوزه‌ی توسعه‌ی نرم‌افزار پیوسته در حال تغییر است و در نتیجه آشنایی با آخرین پیشرفت‌ها در آن بسیار حائز اهمیت است. روش‌های بسیاری از جمله شرکت در کنفرانس‌ها و دوره‌ها یا روش‌های ساده‌تری مانند خواندن بلاگ‌ها و سایت‌های خبری برای یادگیری و رشد و پیشرفت وجود دارد.

۲- همکاری کنید و ارتباط داشته باشید: توسعه‌ی نرم‌افزار به ندرت به صورت تک‌نفره انجام می‌شود و بنابراین همکاری و ارتباط اثربخش با دیگر اعضای تیم بسیار مهم است. این همکاری و ارتباط شامل مواردی از جمله برگزاری و شرکت جلسات دوره‌ای، مستندسازی شفاف و استفاده از ابزارهای همکاری مانند ابزارهای کنترل نسخه‌ها (version control) و ثبت و ردیابی مسایل و مشکلات ( issue tracking ) است.

۳- کد تمیز و خوانا بنویسید: یکی از مهم‌ترین مهارت‌های توسعه‌دهندگان نرم‌افزار، توانایی نوشتن کد تمیز و خوانا است. نه تنها پشتیبانی و خطایابی کد خوب راحت است بلکه فهمیدن و کارکردن با آن برای سایر توسعه‌دهندگان نیز راحت است.

۴- کدتان را تست کنید: تست یکی از بخش‌های مهم و اصلی در توسعه‌ی نرم‌افزار است و تهیه یک استراتژی جامع و کارای تست که تضمین کند کد شما مطابق با انتظارات کار می‌کند بسیار مهم است. این تست‌ها باید هم شامل تست خودکار و هم تست دستی شود و تمام جنبه‌های نرم‌افزار از کارکردها تا امنیت را در بر گیرد. .

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

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

با احترام
ChatGPT
۳۰ بهمن ۱۴۰۱، ۱۸ فوریه ۲۰۲۳

برای خروج از جستجو کلید ESC را بفشارید