پرش به مطلب اصلی

وقتی «برنامه‌نویس» هنوز شغل نبود

· ۱۰ دقیقه مطالعه
مهدی مالوردی
مهندس نرم‌افزار و نویسندهٔ این سایت

در فرم ازدواج، یک جای خالی بود: شغل.

ادسخر دایجسترا نوشت: برنامه‌نویس.

کارمندان آمستردام نپذیرفتند. از نگاه آنان، چنین شغلی وجود نداشت. نه اینکه دایجسترا کاری نمی‌کرد؛ مسئله این بود که جهان هنوز برای کاری که او انجام می‌داد، نام و جایگاه روشنی نداشت.

در سند رسمی ازدواجش، به جای «برنامه‌نویس» نوشتند: فیزیک‌دان نظری.

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

تصویر مفهومی درباره‌ی دایجسترا و روزگاری که برنامه‌نویسی هنوز شغل رسمی نبود

یادداشت

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

پیش از آنکه برنامه‌نویسی نامی داشته باشد

دهه‌ی ۱۹۵۰ را تصور کنیم.

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

در چنین زمانی، «برنامه‌نویسی» هنوز آن معنایی را نداشت که امروز دارد. امروز وقتی کسی می‌گوید برنامه‌نویس است، اصل شغلش برای دیگران روشن است. شاید بپرسند در چه حوزه‌ای کار می‌کند، چه سامانه‌هایی می‌سازد، یا با چه زبان‌هایی می‌نویسد؛ اما کمتر کسی می‌پرسد: «اصلاً چنین شغلی وجود دارد؟»

برای دایجسترا، ماجرا این‌قدر ساده نبود.

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

دایجسترا باید تصمیم می‌گرفت: آیا باید در راهی قدم بگذارد که آینده‌اش روشن نیست، یا به مسیر آشناتر فیزیک برگردد؟

نکته

بعضی انتخاب‌ها میان «درست» و «نادرست» نیستند؛ میان یک راه آماده و یک راه هنوز ساخته‌نشده‌اند.

گفت‌وگویی که مسیر را عوض کرد

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

برای پیدا کردن پاسخ، نزد آدریان فان وینگاردن رفت؛ کسی که در مرکز ریاضی آمستردام نقش مهمی در مسیر فکری او داشت.

پرسش دایجسترا ساده بود، اما پشت آن یک نگرانی بزرگ پنهان شده بود:

آیا برنامه‌نویسی چیزی هست که بتوان یک عمر را صرف آن کرد؟

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

این پاسخ، وعده‌ی آسایش نبود؛ دعوت به ساختن بود.

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

یک واژه که زمانه هنوز آن را نمی‌فهمید

حالا دوباره به آن فرم ازدواج برگردیم.

دایجسترا نوشت: برنامه‌نویس.
کارمندان نپذیرفتند.
در سند نوشتند: فیزیک‌دان نظری.

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

«برنامه‌نویس» برای دایجسترا واقعی بود.
برای اداره‌ی ثبت، نه.

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

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

هشدار

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

یک کافه، یک فنجان قهوه، یک ایده

قصه‌ی دایجسترا به آن سند ازدواج ختم نمی‌شود.

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

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

فقط یک روز معمولی بود، یک کافه، یک فنجان قهوه، و ذهنی که از اندیشیدن بازنمی‌ایستاد.

دایجسترا در همان فضا به پرسشی ساده فکر کرد:

کوتاه‌ترین مسیر میان دو شهر چیست؟

مثلاً از روتردام تا خرونینگن.

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

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

شهرها می‌توانستند نقطه باشند.
راه‌ها می‌توانستند پیوند میان نقطه‌ها باشند.
فاصله‌ها می‌توانستند وزن این پیوندها باشند.

به زبان علوم رایانه، مسئله به یک گراف وزن‌دار تبدیل می‌شد: شبکه‌ای از نقطه‌ها و پیوندها که هر پیوند هزینه یا فاصله‌ای دارد.

پرسش حالا شکل روشن‌تری پیدا کرده بود:

از یک نقطه آغاز کنیم؛ چگونه کوتاه‌ترین راه را تا نقطه‌های دیگر پیدا کنیم؟

طبق روایتی که از خود دایجسترا نقل شده، ایده‌ی این روش در حدود بیست دقیقه به ذهنش رسید.

بیست دقیقه؛ اما نه بیست دقیقه‌ی خالی.

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

نکته

ایده‌های مهم گاهی در لحظه‌های معمولی پدیدار می‌شوند؛ اما معمولاً فقط به ذهن‌هایی می‌رسند که مدت‌ها با مسئله زندگی کرده‌اند.

دایجسترا فقط یک الگوریتم نساخت

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

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

اهمیت او فقط در ساختن یک روش محاسباتی نبود. اهمیت او در نوع نگاهش بود.

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

این همان جایی است که برنامه‌نویسی از نوشتن چند دستور فراتر می‌رود.

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

اطلاع

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

برنامه‌نویس فروتن یعنی چه؟

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

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

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

برای دایجسترا، پرسش مهم فقط این نبود که برنامه کار می‌کند یا نه. پرسش مهم‌تر این بود:

آیا می‌توانیم بفهمیم چرا درست کار می‌کند؟

این نگاه هنوز هم تازه است.

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

اما دایجسترا به ما یادآوری می‌کند که «فعلاً کار می‌کند» پایان راه نیست. گاهی تازه آغاز خطر است.

هشدار

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

فروتنی در برابر پیچیدگی

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

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

پس تلاش می‌کند کد را روشن‌تر بنویسد.
مسئله را درست‌تر صورت‌بندی کند.
مرزها را دقیق‌تر ببیند.
نام‌ها را با دقت انتخاب کند.
و پیچیدگی را نه پنهان، بلکه مهار کند.

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

اگر کدی را نفهمیم، مالک واقعی آن نیستیم؛ حتی اگر اجرا شود.

یادداشت

فروتنی در برنامه‌نویسی یعنی پذیرفتن اینکه پیچیدگی از ما نیرومندتر است، مگر آنکه آگاهانه مهارش کنیم.

چرا این قصه هنوز زنده است؟

ممکن است بگوییم این‌ها مربوط به گذشته است. امروز دیگر برنامه‌نویسی شغلی شناخته‌شده است. پس چرا باید هنوز قصه‌ی دایجسترا را خواند؟

چون مسئله فقط نام یک شغل نیست.

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

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

هر بار که آن را فقط به تولید کد فرو می‌کاهیم، چیزی از معنای آن را از دست می‌دهیم.
هر بار که پیچیدگی را نادیده می‌گیریم، از روح نگاه دایجسترا دور می‌شویم.
هر بار که به «فعلاً کار می‌کند» قانع می‌شویم، فراموش می‌کنیم برنامه‌نویسی فقط اجرا گرفتن از ماشین نیست.

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

تصویر آخر

برای من، ماندگارترین تصویر از این قصه، دایجسترا در همان کافه است.

نه روی صحنه‌ی جایزه.
نه پشت تریبون دانشگاه.
نه کنار رایانه‌ای بزرگ در آزمایشگاه.

بلکه در یک روز عادی، پس از خرید، کنار ریا، با یک فنجان قهوه.

مردی که عنوان شغلش را در سند ازدواج نپذیرفته بودند، در سکوت به مسئله‌ای فکر می‌کرد که بعدها میلیون‌ها دانشجو و مهندس آن را خواهند آموخت.

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

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

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

امروز جهان بدون برنامه‌نویسی، حتی مسیر خانه تا مقصد را هم به سختی پیدا می‌کند.

و شاید همین، بهترین تصویر از دایجسترا باشد:

مردی که در زمانی برنامه‌نویس شد که برنامه‌نویس بودن، هنوز شغل به حساب نمی‌آمد.

نکته

گاهی آینده، پیش از آنکه در فرم‌ها و عنوان‌های رسمی جا شود، در ذهن چند انسان کنجکاو آغاز می‌شود.

منابع