تائوی برنامه نویسی‬

نویسنده‪ :‬جفری جیمز‬
مترجم‪ :‬آیدین غریب نواز‬
https://aidinhut.com/fa/

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

کتاب اول - پوچی خاموش

‫استاد برنامه نویس بدین گونه به سخن درآمد‪:‬‬

‫»هنگامی که آموختی چگونه یک کد اشتباه را از دام قالب بیرون کشی‪ ،‬زمان رفتن برای تو فرا خواهد رسید‪«.‬‬

‫‪۱.۱‬‬ ‫چیزی راز آلود شکل گرفته‪ ،‬درون پوچی خاموش به دنیا آمده‪ .‬تنها و بدون حرکت منتظر است‪ ،‬او در حین ساکن بودن‪ ،‬همواره‬ ‫در حرکت است‪ .‬او سرچشمٔه تمام برنامه ها است‪ .‬من نامش را نمیدانم‪ ،‬بنابراین او را تائوی برنامه نویسی خواهم نامید‪.‬‬ ‫اگر تائو کامل باشد‪ ،‬سیستم عامل نیز کامل خواهد بود‪ .‬اگر سیستم عامل کامل باشد‪ ،‬کامپایلر کامل خواهد بود‪ .‬اگر کامپایلر کامل‬ ‫باشد‪ ،‬نرم افزار کامل خواهد بود‪ .‬کاربر خشنود بوده و همآهنگی در جهان حکم فرما خواهد بود‪.‬‬ ‫تائوی برنامه نویسی تا دوردستها روان می شود و با نسیم صبحگاه باز می گردد‪.‬‬

‫‪۱.۲‬‬ ‫تائو به زبان ماشین حیات بخشیده است‪ .‬زبان ماشین به اسمبلر حیات بخشیده است‪.‬‬ ‫اسمبلر به کامپایلر حیات بخشیده است‪ .‬حال ده هزار زبان وجود دارد‪.‬‬ ‫هر زبان‪ ،‬هر چقدر هم که حقیر باشد‪ ،‬هدف خویش را دارد‪ .‬هر زبان ‪ Yin‬و ‪ *Yangنرم‌افزار را توصیف می کند‪ .‬هر زبان در‬ ‫درون تائو مکان خویش را دارا است‪.‬‬ ‫اما تا آنجا که می‌توانید از برنامه نویسی در ‪ COBOL‬اجتناب ورزید‪.‬‬

‫‪۱.۳‬‬ ‫در آغاز تائو بود‪ .‬تائو به زمان و فضا حیات بخشید‪ .‬به همین دلیل فضا و زمان ‪ Yin‬و ‪ Yang‬برنامه نویسی هستند‪.‬‬ ‫برنامه نویسانی که تائو را درک نمی کنند همواره با کمبود زمان و فضا مواجه هستند‪ .‬برنامه نویسانی که تائو را درک می کنند‬ ‫همواره زمان و فضای کافی برای دستیابی به اهداف خویش را دارا هستند‪.‬‬ ‫چگونه به شکل دیگری می‌تواند باشد؟‬

‫‪۱.۴‬‬ ‫با برنامه‌نویس خردمند دربارٔه تائو سخن گفته شد و او آن را دنبال کرد‪ .‬با برنامه‌نویس متوسط دربارٔه تائو سخن گفته شد و او‬ ‫به جستجویش برخواست‪ .‬با برنامه‌نویس نادان دربارٔه تائو سخن گفته شد و او به آن خندید‪.‬‬ ‫اگر مسخره کننده‌ای نبود‪ ،‬تائو نیز وجود نداشت‪.‬‬ ‫صداهای بلند سخت تر به گوش می‌آیند‬ ‫به پیش رفتن روشی برای عقب نشینی است‬ ‫استعداد شگرف خود را دیر نمایان می کند‬ ‫حتی یک برنامٔه کامل نیز هنوز باگ دارد‬ ‫* ‪ Yin‬و ‪ Yang‬دو مفهوم فلسفی در چین باستان هستند‪ .‬چینیان معتقد بودند که همه چیز در جهان از برخورد و تاثیر ‪) Yin‬مؤنث‪ ،‬تاریک‪ ،‬غیرفعال‬ ‫و منفی( و ‪) Yang‬مذکر‪ ،‬روشن‪ ،‬فعال و مثبت( به وجود آمده است‪.‬‬

کتاب دوم – اساتید کهن‬

‫استاد برنامه‌نویس بدین گونه به سخن درآمد‪:‬‬

‫»هنگامی که سه روز بدون برنامه نویسی سپری شود‪ ،‬زندگی معنای خود را از دست خواهد داد‪«.‬‬

‫‪۲.۱‬‬ ‫برنامه‌نویسان گذشته ژرف و اسرار آمیز بودند‪ .‬ما نمی توانیم افکارشان را درک کنیم‪ ،‬بنابراین تمام آنچه انجام می دهیم توصیف‬ ‫ظاهر آنها است‪.‬‬ ‫آگاه‪ ،‬همانند روباهی که از آب عبور می کند‪ .‬هوشیار‪ ،‬همانند ژنرالی در میدان جنگ‪ .‬مهربان‪ ،‬همانند بانوی صاحبخانه که به‬ ‫میهمانان خویش خیر مقدم می گوید‪ .‬ساده‪ ،‬همانند قطعه چوبهای برهنه‪ .‬مبهم‪ ،‬همانند برکه ای در دل غارهای تاریک‪.‬‬ ‫چه کسی می‌تواند رازهای قلب و ذهنشان را بازگو کند؟‬ ‫پاسخ تنها درون تائو نهفته است‪.‬‬

‫‪۲.۲‬‬ ‫روزگاری استاد بزرگ‪ ،‬تورنیگ ‪ ،‬در رویا دید که یک ماشین بوده است‪ .‬هنگامی که از خواب برخواست‪ ،‬گفت‪:‬‬

‫»نمیدانم که آیا این من‪ ،‬تورینگ هستم که در خواب خود را یک ماشین میبینم‪ ،‬یا یک ماشین خواب میبیند که من تورینگ‬ ‫هستم!«‬

‫‪۲.۳‬‬ ‫یک برنامه‌نویس از یک شرکت بزرگ در یک گفتگوی نرم افزاری شرکت جست و سپس بازگشت تا به مدیر خود گزارش دهد‪.‬‬ ‫گفت‪:

» :‬اینان چگونه برنامه‌نویسانی هستند که برای شرکتهای دیگر کار می کنند؟ آنان رفتاری ناشایسته دارند و برای ظاهر‬ ‫خویش اهمیتی قائل نیستند‪ .‬موهایشان بلند و نامرتب و لباسهایشان چروک خورده و کهنه بود‪ .‬آنان اتاق مهمانان ما را درهم‬ ‫شکستند و در طول سخنرانی اصوات غیرمؤدبانه ای از خود خارج می ساختند‪«.‬‬

‫مدیر گفت‪:

«‬من نباید تو را به آن گفتگو می فرستادم‪ .‬آن برنامه‌نویسان در ورای این دنیای فیزیکی زندگی می کنند‪ .‬آنان زندگی‬ ‫را مضحک و اتفاقی می پندارند‪ .‬آنان بدون توجه به محدودیت ها رفت و آمد می کنند‪ .‬بی هیچ غمی‪ ،‬تنها به خاطر برنامه های‬ ‫خود زنده اند‪ .‬چرا آنان باید با رسوم اجتماعی خود را به دردسر بیاندازند؟«‬ «آنان درون تائو زنده اند‪«.‬‬

‫‪۲.۴‬‬ ‫یک نوآموز از استاد پرسید‪» :‬برنامه نویسی وجود دارد که هرگز برنامه‌های خود را طراحی‪ ،‬مستندسازی و آزمایش نمی‌کند‪ .‬با‬ ‫این وجود تمام اشخاصی که او را می‌شناسند به عنوان بهترین برنامه‌نویس جهان ستایش‌اش می کنند‪ .‬چرا این چنین است؟«‬ ‫استاد پاسخ داد‪» :‬آن برنامه‌نویس بر تائو تسلط یافته است‪ .‬او فراتر از نیاز به طراحی رفته است؛ هنگامی که سیستم به مشکل‬ ‫برخورد می کند‪ ،‬خشمگین نمی شود‪ ،‬تنها جهان را بدون توجه می پذیرد‪ .‬او فراتر از نیاز به مستندسازی رفته است؛ دیگر اهمیتی‬ ‫نمی دهد که شخص دیگری کدی را که نوشته ببیند‪ .‬او فراتر از نیاز به آزمایش کردن رفته است؛ تمام برنامه های او در خویشتن‬ ‫خود کامل‪ ،‬متین و زیبا هستند‪ ،‬هدف آنها آشکار است‪ .‬در حقیقت‪ ،‬او به اسرار تائو داخل شده است‪«.‬‬

کتاب سوم – طراحی‬

‫استاد برنامه‌نویس بدین گونه به سخن درآمد‪:‬‬

‫»وقتی آزمایش برنامه ای شروع شد‪ ،‬دیگر برای تغییر طرح دیر خواهد بود‪«.‬‬

‫‪۳.۱‬‬ روزگاری مردی بود که به یک نمایشگاه کامپیوتر رفت‪ .‬هر روز که به آنجا وارد می شد‪ ،‬به نگهبا‫ن در می گفت‪:‬‬ ‫ ‫»من دزدی بزرگ هستم‪ ،‬به خاطر مهارت در بلند کردن جنس مشهور هستم‪ .‬از قبل به تو اخطار می کنم‪ ،‬این نمایشگاه از‬ ‫غارت من در امان نخواهد ماند‪«.‬‬ ‫این سخنان نگهبان را بسیار مضطرب ساخت چرا که آنجا میلیون ها دلار تجهیزات کامپیوتری وجود داشت‪ .‬بنابراین او مرد را به‬ ‫دقت زیر نظر گرفت‪ .‬اما آن مرد تنها از غرفه ای به غرفٔه دیگر می رفت و به آرامی با خود زمزمه می کرد‪.‬‬ ‫هنگامی که مرد می خواست آنجا را ترک کند‪ ،‬نگهبان او را به کناری کشید و تمام لباسهایش را گشت‪ ،‬اما چیزی نیافت‪.‬‬ ‫روز بعد‪ ،‬مرد بازگشت و نگهبان را سرزنش کرد‪» :‬من دیروز با مقدار بسیاری غنیمت فرار کردم‪ ،‬اما امروز حتی از آن هم بهتر‬ ‫خواهد بود‪ «.‬بنابراین نگهبان او را با دقت بیشتری زیر نظر گرفت‪ ،‬اما چیزی به دست نیاورد‪.‬‬ ‫در آخرین روز نمایشگاه‪ ،‬نگهبان نتوانست کنجکاوی خود را بیش از این پنهان کند‪ .‬او گفت‪» :‬جناب دزد‪ ،‬من سردرگم شده ام‪،‬‬ ‫نمی توانم از اینجا بروم‪ .‬لطفا مرا روشن کنید‪ .‬شما چه چیزی می دزدیدید؟«‬ ‫مرد لبخند زد‪» :‬من ایده ها را میدزدم‪«.‬‬

‫‪۳.۲‬‬ ‫زمانی یک استاد برنامه‌نویس وجود داشت که برنامه های بدون ساختار می نوشت‪ .‬یک برنامه‌نویس نوآموز که از او پیروی می‬ ‫کرد‪ ،‬شروع به نوشتن برنامه های بدون ساختار کرد‪ .‬هنگامی که نوآموز از استاد خواست تا برنامه اش را ارزیابی کند‪ ،‬استاد او را‬ ‫به خاطر نوشتن برنامه بدون ساختار سرزنش کرده و گفت‪» :‬آنچه در خور استاد است برای نوآموزان شایسته نیست‪ .‬قبل از‬ ‫آنکه بخواهی از ساختار رهایی یابی‪ ،‬باید تائو را درک کرده باشی‪«.‬‬

‫‪۳.۳‬‬ ‫*‬ ‫روزگاری برنامه نویسی بود که در درگاه فرمانروای ‪ Wu‬خدمت می کرد‪ .‬فرمانروا از برنامه‌نویس پرسید‪» :‬طراحی کدامیک‬ ‫ساده تر است‪ :‬یک نرمافزار حسابداری و یا یک سیستم عامل؟«‬ ‫برنامه‌نویس پاسخ داد‪» :‬سیستم عامل«‬ ‫فرمانروا فریادی از سر ناباوری برآورد‪» :‬به طور یقین در مقابل پیچیدگی سیستم عامل‪ ،نرم‌افزار حسابداری ناچیز است‪«.‬‬ ‫برنامه‌نویس گفت‪» :‬نه آنطور که به نظر می رسد‪ ،‬هنگامی که برنامه‌نویس یک نرم افزار حسابداری را طراحی می کند باید‬ ‫سلیقه متفاوتی را برآورده سازد‪ :نرم‌افزار چگونه باید عمل کند‪ ،‬گزارش هایش چگونه باید باشند‪ ،‬و چگونه باید با قوانین مالیاتی‬ ‫هماهنگ باشد‪ .‬در مقابل‪ ،‬یک سیستم عامل با دنیای بیرون خود محدود نشده است‪ .‬هنگام طراحی یک سیستم عامل برنامه‌نویس‬ ‫به دنبال سادهترین هماهنگی میان ماشین و سیستم عامل می گردد‪ .‬و به این دلیل است که طراحی سیستم عامل ساده تر است‪«.‬‬ ‫فرمانروای ‪ Wu‬لبخندی زد و پرسید »بسیار خوب‪ ،‬اما اشکال زدایی کدام یک ساده تر است؟» ‫برنامه‌نویس پاسخی نداد‪.‬‬

‫‪۳.۴‬‬ ‫یک مدیر به همراه مستندات یک برنامه به نزد استاد برنامه‌نویس رفت‪ .‬مدیر از استاد پرسید‪» :‬اگر من پنج برنامه‌نویس را‬ ‫برای انجام این کار در نظر بگیرم‪ ،‬چه میزان طول خواهد کشید تا کار انجام شود؟» ‫استاد بیدرنگ پاسخ داد‪» :‬یک سال زمان خواهد برد‪«.‬‬ ‫»اما ما این سیستم را فورا ً و یا حتی زودتر از آن میخواهیم! اگر ده برنامه‌نویس برای این کار بگذارم چه مقدار طول خواهد‬ ‫کشید؟«‬ ‫استاد برنامه‌نویس ابروهایش را در هم کشید‪» .‬در این صورت‪ ،‬دوسال زمان خواهد برد‪«.‬‬ ‫»و اگر صد برنامه‌نویس برای آن بگذارم؟«‬ ‫استاد برنامه‌نویس شانه ای بالا انداخت و گفت‪» :‬در آن صورت طراحی آن هرگز به پایان نخواهد رسید‪«.‬‬

کتاب چهارم – کدنویسی‬

‫استاد برنامه‌نویس بدین گونه به سخن درآمد‪:‬‬

«برنامه ای که خوب نوشته شده بهش‬‫ت خودش است‪ ،‬برنامه ای که بد نوشته شده جهنم خودش است‪«.‬‬

‫‪۴.۱‬‬ ‫یک برنامه باید سبک و سریع الانتقال باشد‪ ،‬روالهایش همانند رشته ای از مروارید به یکدیگر متصل باشند‪ .‬روح و نیت برنامه‬ ‫باید همواره حفظ شود‪ .‬نه باید چیزی زیاد باشد و نه چیزی کم‪ ،‬نه چرخه هایی که به آنها نیازی نیست و نه متغیرهای بیفایده‪،‬‬ ‫نه کمبودی در ساختار و نه انعطاف ناپذیری‪.‬‬ ‫یک برنامه باید از »قانون کمترین سرگشتگی « پیروی کند‪ .‬این قانون چیست؟ به این معنی است که برنامه باید همواره به‬ ‫نوعی به کاربر پاسخ دهی کند که کمترین میزان سرگشتگی را به همراه داشته باشد‪.‬‬ ‫یک برنامه‪ ،‬هرچقدر هم که پیچیده باشد‪ ،‬باید همانند یک واحد یکتا عمل نماید‪ .‬یک برنامه باید به وسیلٔه منطق درونی خویش‬ ‫هدایت شود و نه ظواهر بیرونی‪.‬‬ ‫اگر برنامه‌ای این التزامات را برآورده نکند‪ ،‬در حالتی از بینظمی و آشفتگی قرار خواهد گرفت‪ .‬تنها راه تصحیح آن بازنویسی‬ ‫برنامه است‪.‬‬

‫‪۴.۲‬‬ ‫یک نوآموز از استاد پرسید‪» :‬من برنامه‌ای دارم که گاهی اجرا می شود و گاهی عمل نمی کند‪ .‬من از قوانین برنامه نویسی تبعیت‬ ‫کرده ام‪ ،‬با این وجود گیج شده ام‪ .‬دلیل این امر چیست؟«‬ ‫استاد پاسخ داد‪» :‬تو گیج شده ای چرا که تائو را درک نکرده ای‪ .‬تنها یک نادان از انسان ها انتظار رفتاری منطقی را دارد‪ .‬حال تو‬ ‫چگونه چنین انتظاری از ماشینی که به دست انسان ساخته شده داری؟ کامپیوترها جبر گرایی را شبیه سازی می کنند؛ تنها تائو‬ ‫کامل است‪«.‬‬ ‫»قوانین برنامه نویسی ناپایدارند؛ تنها تائو جاودان است‪ .‬بنابراین تو باید قبل از اینکه به درک کامل دستیابی‪ ،‬در تائو اندیشه‬ ‫کنی‪«.‬‬ ‫تازه وارد پرسید‪» :‬اما چگونه بدانم که به درک کامل دست یافته ام؟«‬ ‫استاد پاسخ داد‪» :‬برنامه ات بدون اشکال اجرا خواهد شد‪«.‬‬

‫‪۴.۳‬‬ ‫استادی طبیعت تائو را برای یکی از نوآموزان اش توضیح میداد‪» .‬تائو درون تمام برنامه ها تجلی می یابد – صرف‌نظر از ناچیز‬ ‫بودن آن‪«.‬‬ ‫نوآموز پرسید‪» :‬آیا تائو در یک ماشین حساب دستی وجود دارد؟«‬ ‫استاد پاسخ داد‪» :‬بله‪ ،‬وجود دارد‪«.‬‬ ‫نوآموز ادامه داد‪» :‬آیا تائو در یک بازی کامپیوتری وجود دارد؟«‬ ‫استاد گفت‪» :‬حتی در یک بازی کامپیوتری نیز وجود دارد‪«.‬‬ ‫»و آیا تائو در سیستم‌عامل ‪ DOS‬برای کامپیوترهای شخصی هم وجود دارد؟«‬ ‫استاد سرفه‌ای کرد‪ ،‬کمی جابه‌جا شد و گفت‪» :‬درس برای امروز کافی است‪«.‬‬

‫‪۴.۴‬‬ ‫برنامه نویسی که در خدمت شاهزاده وانگ بود برنامه‌ای می نوشت‪ .‬انگشتانش بر روی صفحه کلید به رقص درآمدند‪ .‬برنامه‬ ‫بی‌هیچ پیغام خطایی کامپایل شد و مانند نسیمی ملیم اجرا شد‪.‬‬ ‫شاهزاده با تعجب فریاد زد‪» :‬عالی بود! شگرد تو بی‌اشکال است!«‬ ‫»شگرد؟« برنامه نویس به آرامی برگشت‪» ،‬چیزی که من دنبال میکنم تائو است – فراتر از تمام شگردها! هنگامی که برای‬ ‫اولین بار شروع به برنامه نویسی کردم تمام برنامه را به تمامی پیش روی خویش همانند توده ای می دیدم‪ .‬بعد از سه سال دیگر‬ ‫توده ای وجود نداشت‪ ،‬از روالها استفاده می کردم‪ .‬اما حال هیچ نمی بینم‪ .‬تمام موجودیت من به صورت خلائی بی شکل وجود‬ ‫دارد‪ .‬حواسم کاری انجام نمی دهند ‪ .‬وجودم آزاد است‪ ،‬بدون هیچ طرحی کار می کند‪ ،‬از غریزه خویش پیروی می کند‪ .‬سخن‬ ‫کوتاه ‪ ،‬برنامه من خودش‪ ،‬خود را می نویسد‪ .‬البته‪ ،‬گاهی مسائل مشکلی وجود دارد‪ .‬آنها را می بینم که به سمت من می آیند‪،‬‬ ‫سرعتم را کم می کنم‪ ،‬در خاموشی به نظاره می نشینم‪ .‬سپس‪ ،‬خطی از کد را تغییر می دهم و مشکلات همانند بخار ناپدید‬ ‫می شوند‪ .‬سپس برنامه را کامپایل می کنم‪ .‬آرام می نشینم و اجازه می دهم که لذت کار وجودم را دربر گیرد‪ .‬چشمانم را برای‬ ‫لحظه ای می بندم و از سیستم خارج می شوم‪«.‬‬ ‫شاهزاده وانگ گفت‪» :‬ای کاش تمام برنامه‌نویسان من چنین خردی داشتند!«‬

کتاب پنجم – نگهداری کد‬

‫استاد برنامه‌نویس بدین گونه به سخن درآمد‪:‬‬

‫»وجود برنامه‌ای را تصور کنید که تنها سه خط طول دارد‪ ،‬روزی باید از آن مراقبت شود‪«.‬‬

‫‪۵.۱‬‬ ‫دری که همواره استفاده شود نیاز به روغنکاری ندارد‪.‬‬ ‫جریانی خروشان ساکن نخواهد ماند‪.‬‬ ‫صدا و فکر نمی توانند از میان خلاء عبور کنند‪.‬‬ ‫اگر از نرم افزار استفاده نشود فاسد خواهد شد‪.‬‬ ‫اینها اسراری بزرگ هستند‪.‬‬

‫‪۵.۲‬‬ ‫یک مدیر از برنامه نویسی پرسید که چه مقدار طول خواهد کشید تا او برنامه‌ای را که هم اکنون بر روی آن کار می کند به اتمام‬ ‫رساند‪ .‬برنامه‌نویس بیدرنگ پاسخ داد‪» :‬فردا آن را تمام خواهم کرد‪«.‬‬ ‫مدیر گفت‪» :‬تصور می‌کنم کمی غیر واقعی سخن می‌گویی‪ .‬صادقانه‪ ،‬چه مقدار طول خواهد کشید؟«‬ ‫برنامه‌نویس برای لحظه‌ای تفکر کرد‪ .‬و بالاخره پاسخ داد‪» :‬دوست دارم تعدادی قابلیت به آن بیافزایم‪ .‬فکر کنم دستکم دو‬ ‫هفته ای طول بکشد‪«.‬‬ ‫مدیر پافشاری کرد‪» :‬حتی این نیز فراتر از انتظار است‪ .‬خوشحال خواهم شد که هنگامی که برنامه به پایان رسید به من اطلاع‬ ‫بدهی‪«.‬‬ ‫برنامه نویس موافقت کرد‪.‬‬ ‫چندین سال بعد‪ ،‬مدیر بازنشست شد‪ .‬هنگامی که از جشن بازنشستگی خویش باز میگشت‪ ،‬برنامه نویس را پشت یکی از‬ ‫ترمینالها خفته یافت‪ .‬او تمام شب را برنامه نوشته بود‪.‬‬

‫‪۵.۳‬‬ ‫زمانی یک برنامه‌نویس تازه کار را به کار نوشتن یک نرم افزار سادٔه اقتصادی گماشتند‪.‬‬ ‫تازهکار چندین روز با جدیت کار کرد‪ ،‬اما هنگامی که استاد برنامٔه او را بازبینی نمود‪ ،‬متوجه شد که برنامه شامل یک ویرایشگر‬ ‫تصویری‪ ،‬مجموعهای از روالهای گرافیکی‪ ،‬و یک واسِط هوش مصنوعی است‪ ،‬اما هیچ نشانی از اقتصاد وجود ندارد‪.‬‬ ‫هنگامی که استاد در این مورد جویا شد‪ ،‬تازه کار خشمگین شد و گفت‪» :‬ناشکیبا نباشید‪ ،‬عاقبت بخش اقتصادی را در آن قرار‬ ‫خواهم داد‪«.‬‬

‫‪۵.۴‬‬ ‫آیا یک باغبان خوب از آنچه کاشته است غافل می شود؟‬ ‫آیا یک آموزگار خوب حتی از پست ترین دانش آموز خود چشم پوشی می کند؟‬ ‫آیا یک پدر خوب اجازه می دهد حتی یکی از فرزندانش گرسنگی بکشد؟‬ ‫آیا یک برنامه‌نویس خوب از نگهداری کد خویش سرباز می زند؟‬

کتاب ششم – مدیریت‬

‫استاد برنامه‌نویس بدین گونه به سخن درآمد‪:‬‬

‫»اجازه دهید برنامه‌نویسان بسیار و مدیران کم باشند – آنگاه همگان فعال خواهند بود‪«.‬‬

‫‪۶.۱‬‬ ‫وقتی مدیران جلسات بی پایان برگزار می کنند‪ ،‬برنامه‌نویسان بازی می نویسند‪ .‬وقتی حسابداران از یک چهارم شدن سود‬ ‫می گویند‪ ،‬بودجٔه توسعه تقریبا قطع می شود‪ .‬وقتی دانشمندان عالی رتبه از آسمان آبی سخن می گویند‪ ،‬ابرها وارد می شوند‪.‬‬ ‫در حقیقت‪ ،‬این تائوی برنامه نویسی نیست‪.‬‬ ‫هنگامی که مدیران متعهد می شوند‪ ،‬برنامه های بازی نادیده انگاشته می شوند‪ .‬هنگامی که حسابداران طرحهای بلند مدت ارائه‬ ‫می دهند‪ ،‬هماهنگی و نظم باز می گردد‪ .‬هنگامی که دانشمندان عالی رتبه به مشکلات موجود اشاره می کنند‪ ،‬مشکلات به زودی‬ ‫حل می شوند‪.‬‬ ‫در حقیقت‪ ،‬این تائوی برنامه نویسی است‪.‬‬

‫‪۶.۲‬‬ ‫چرا برنامه‌نویسان غیر مولد هستند؟‬ ‫چرا که وقتشان در جلسات به هدر می رود‪.‬‬ ‫چرا برنامه‌نویسان سرکش هستند؟‬ ‫چرا که مدیران بیش از حد دخالت می کنند‪.‬‬ ‫چرا برنامه‌نویسان تک تک استعفا می دهند؟‬ ‫چرا که بیش از حد از آنان کار کشیده می شود‬ ‫با کار کردن برای مدیریت ضعیف‪ ،‬دیگر برای شغل خود اهمیتی قائل نمی شوند‪.‬‬

‫‪۶.۳‬‬ ‫مدیری تقریبا اخراج شده بود‪ ،‬اما برنامه نویسی که برایش کار می کرد برنامه‌ای جدید خلق کرد که بسیار محبوب شد و به خوبی‬ ‫به فروش رفت‪ .‬در نتیجه مدیر شغل خود را از دست نداد‪.‬‬ ‫مدیر تلاش کرد تا به برنامه‌نویس پاداشی بدهد‪ ،‬اما برنامه‌نویس آن را رد کرده و گفت‪» :‬من برنامه را نوشتم چرا که فکر‬ ‫می کردم فکر جالبی است‪ ،‬بنابراین انتظار هدیه ندارم‪«.‬‬ ‫مدیر با شنیدن این حرف اظهار کرد‪» :‬این برنامه‌نویس‪ ،‬تصور می کنم پستی کم ارزش را در اختیار دارد‪ ،‬وظیفه شناسی او به‬ ‫عنوان یک کارمند تحسین برانگیز است‪ .‬بگذار مقام او را به معاون مدیر ارتقاع دهم!«‬ ‫هنگامی که این را بر زبان آورد‪ ،‬برنامه‌نویس بیش از قبل امتناع کرده و گفت‪» :‬من به دنیا آمدهام تا برنامه بنویسم‪ .‬اگر ترفیع‬ ‫رتبه بگیرم‪ ،‬تنها وقت دیگران را به هدر خواهم داد‪ .‬حال میتوانم بروم؟ مشغول کار بر روی برنامه‌ای هستم‪«.‬‬

‫‪۶.۴‬‬ ‫یک مدیر به نزد برنامه‌نویسان رفته و به آنان گفت‪» :‬من ساعات کاری شما را تغییر داده ام‪ :‬مجبور خواهید بود که در ساعت‬ ‫نه صبح آمده و در ساعت پنج بعد از ظهر اینجا را ترک گویید‪ «.‬با شنیدن این سخن‪ ،‬تمامی آنان خشمگین شده و تعدادی‬ ‫بیدرنگ استعفای خود را اعلام نمودند‪.‬‬ ‫بنابراین مدیر گفت‪» :‬بسیار خوب‪ ،‬در این صورت خودتان ساعت کاری را تعیین کنید‪ ،‬البته تا زمانی که برنامه ها به موقع‬ ‫تحویل داده شوند‪ «.‬برنامه‌نویسان که حال خشنود شده بودند‪ ،‬شب ها می آمدند و تا نزدیک صبح کار می کردند‪.‬‬

کتاب هفتم – ِخرد جمعی‬

‫استاد برنامه نویس بدین گونه به سخن درآمد‪:‬‬

‫»میتوان برنامه‌ای برای هیئت مدیرٔه شرکت نوشت‪ ،‬اما نمی توان یک کامپیوتر ادیب ساخت‪«.‬‬

‫‪۷.۱‬‬ ‫نوآموزی از استاد پرسید‪» :‬در شرق نوعی ساختار درختی وجود دارد که نام ‘ساختمان مرکزی’ را بر آن نهادهاند‪ .‬شکل آن به‬ ‫دست مشاور هیئت مدیره و حسابداران اش تغییر یافته‪ .‬تعداد بسیاری یادداشت تولید می کند که هرکدام می گویند‪' :‬از اینطرف‬ ‫برو!' یا ‘از آن طرف برو!’ و هیچکس نمی داند که معنی آن چیست‪ .‬هر سال نام های جدیدی درون شاخه ها قرار داده می شود اما‬ ‫هیچکدام در دسترس نیستند‪ .‬چطور چیزی چنین غیر طبیعی می‌تواند وجود داشته باشد؟«‬ ‫استاد پاسخ داد‪» :‬تو این ساختار بیکران را درک کرده ای و از اینکه هدفی ندارد مشوش شده ای‪ .‬چرخه های بی پایانش باعث‬ ‫سرگرمی تو نیست؟ از بی آزاری و سادگی برنامه نویسی اش که در زیر شاخه ها پناه گرفته اند لذت نمیبری؟ چرا بابت‬ ‫بیفایدگی اش خود را ناراحت می کنی؟«‬

‫‪۷.۲‬‬ ‫در شرق کوسه ای وجود داشت که از تمام ماهیان دیگر بزرگتر بود‪ .‬او به پرنده ای تبدیل شد که بالهایش همانند ابرهایی بودند‬ ‫که آسمان را می پوشانند‪ .‬هنگامی که این پرنده بر فراز سرزمینها در پرواز بود‪ ،‬پیغامی از ' ساختمان مرکزی' حمل می کرد‪ .‬این‬ ‫پیغام را در میان برنامه‌نویسان رها کرد‪ ،‬درست همانطور که مرغ دریایی نشان خود را بر فراز ساحل می گذارد‪ .‬سپس پرنده بر‬ ‫بادها سوار شد و با آسمان آبی بر پشتش به خانه بازگشت‪.‬‬ ‫برنامه‌نویس نوآموز با شگفتی به پرنده خیره شد‪ ،‬چرا که آن را درک نمی کرد‪ .‬برنامه‌نویس متوسط از آمدن پرنده وحشت کرد‪،‬‬ ‫چرا که محتوای پیغام او را نگران می کرد‪ .‬استاد برنامه‌نویس پشت ترمینال خویش مشغول کار بود‪ ،‬چراکه نمی دانست پرنده ای‬ ‫آمده و رفته‪.‬‬

‫‪۷.۳‬‬ ‫جادوگر برج عاج‪ ،‬آخرین اختراع خویش را نزد استاد برنامه‌نویس آورده بود تا آن را امتحان کند‪ .‬جادوگر جعبٔه سیاه بزرگی را به‬ ‫درون دفتر استاد غلتاند‪ ،‬در حالی که استاد خاموش و منتظر بود‪.‬‬ ‫جادوگر چنین آغاز کرد‪» :‬این یک کامپیوتر مجتمع‪ ،‬توزیع شده و همه کاره است‪ ،‬کامل ارگونومیک طراحی شده و سیستم عاملی‬ ‫اختصاصی دارد‪ ،‬شامل زبانهای نسل ششم است‪ ،‬و رابط گرافیکی هنرمندانه و با کیفیتی دارد‪ .‬ساخت این دستگاه چند صد‬ ‫نفر سال زمان دستیاران من را گرفته است‪ .‬جالب نیست؟«‬ ‫استاد ابروانش را اندکی بال برده و گفت‪» :‬حقیقتا جالب است‪«.‬‬ ‫جادوگر ادامه داد‪» :‬ساختمان مرکزی دستور داده است که همگان از این کامپیوتر به عنوان سکویی جدید برای برنامه ها‬ ‫استفاده کنند‪ .‬آیا شما موافق هستید؟«‬ ‫استاد پاسخ داد‪» :‬مطمئنا‪ ،‬من فورا این را به مرکز داده ها ارسال خواهم کرد!« و جادوگر راضی و خشنود به برج خویش‬ ‫بازگشت‪.‬‬ ‫چند روز بعد‪ ،‬یک نوآموز به دفتر استاد برنامه‌نویس وارد گردیده و گفت‪» :‬نمیتوانم لیس‫ت برنامٔه جدیدم را بیابم‪ .‬می دانید‬ ‫ممکن است کجا باشد؟«‬ ‫استاد پاسخ داد‪» :‬بله‪ ،‬لیست بر بدنٔه سکوی جدید در مرکز داده ها نصب شده است‪«.‬‬

‫‪۷.۴‬‬ ‫استاد برنامه‌نویس بدون نگرانی از برنامه‌ای به برنامٔه دیگر می رفت‪ .‬هیچ گونه تغییری در مدیریت نمی توانست به او صدمه ای‬ ‫رساند‪ .‬حتی اگر پروژه منحل شود‪ ،‬او را اخراج نمی کنند‪ .‬چرا چنین است؟ او از تائو ُپر شده است‪.‬‬

کتاب هشتم – سخت افزار و نرم افزار‬

‫استاد برنامه‌نویس بدین گونه به سخن درآمد‪:‬‬

بدون نسیم‪ ،‬چمنزار حرکت نمی کند‪ .‬بدون نرم افزار‪ ،‬سخت افزار بدون استفاده است‪«.‬‬

‫‪۸.۱‬‬ ‫تازه کاری از استاد پرسید‪» :‬من متوجه شده ام که یک شرکت کامپیوتری بسیار بزرگتر از دیگر شرکت‌ها است‪ .‬همانند غولی در‬ ‫میان کوتوله ها‪ .‬هر کدام از بخش های آن می توانند یک کسب و کار کامل را راه اندازی کنند‪ .‬چرا چنین است؟«‬ ‫استاد پاسخ داد‪» :‬چرا چنین سوالات احمقانه ای می پرسی؟ آن شرکت بزرگ است چرا که بزرگ است‪ .‬اگر تنها سخت افزار‬ ‫تولید می کرد‪ ،‬هیچ شخصی محصولات اش را نمی خرید‪ .‬اگر تنها نرم افزار تولید می کرد‪ ،‬هیچ شخصی از آنها استفاده نمی کرد‪ .‬اگر‬ ‫تنها از سیستم ها نگهداری می کرد‪ ،‬مردم با او همانند مستخدمین رفتار می کردند‪ .‬اما این شرکت تمام این ها را با هم ترکیب‬ ‫کرده و مردم به او همانند یکی از خدایان می‌نگرند! از آنجایی که به دنبال نزاع نیست‪ ،‬بدون هیچ تلاشی فتح می کند‪«. ‬‬ ‫‪۸.۲‬‬ ‫روزی استاد برنامه‌نویس بر یک نوآموز گذر کرد‪ .‬او دریافت که نوآموز با یک دستگاه بازی دستی مشغول است‪ .‬او گفت‪:‬‬ ‫»ببخشید‪ ،‬ممکن است امتحان‌اش کنم؟«‬ ‫تازه کار از جا جست و دستگاه را به دست استاد سپرد‪ .‬استاد گفت‪» :‬می بینم که دستگاه ادعا می کند که سه سطح مختلف بازی‬ ‫دارد‪ :‬آسان‪ ،‬متوسط و سخت‪ .‬اما هر دستگاهی همانند این یک سطح بازی دیگر نیز دارد که در آن دستگاه به دنبال پیروزی‬ ‫یافتن بر انسان نیست‪ ،‬و انسان نیز به دنبال پیروزی یافتن بر دستگاه نیست‪«.‬‬ ‫نوآموز با تمنا گفت‪» :‬درود بر شما ای استاد بزرگ‪ ،‬چگونه شخص می‌تواند به این قابلیت اسرار آمیز دست یابد؟«‬ ‫استاد دستگاه را به زمین افکند و آن را زیر پا خرد کرد‪ .‬و در آن لحظه نوآموز بیدار شد‪.‬‬

‫‪۸.۳‬‬ ‫روزگاری برنامه نویسی وجود داشت که بر روی ریزپردازنده ها کار می‌کرد‪ .‬او به یک برنامه‌نویس کامپیوتر که برای ملاقات آمده‬ ‫بود گفت‪» :‬نگاه کن که من چه چیزی در اختیار دارم‪ ،‬سیستم عامل و سخت افزار ذخیره سازی داده مختص خودم‪ .‬من مجبور‬ ‫نیستم که ابتکارم را با دیگران شریک شوم‪ .نرم‌افزار کامل با خودش سازگار است و به سهولت قابل استفاده‪ .‬چرا از کار کنونی‬ ‫خود دست نمی کشی و به من نمی پیوندی؟«‬ ‫سپس برنامه‌نویس کامپیوتر شروع به تشریح سیستم خود برای دوستش کرده و گفت‪» :‬کامپیوتر همانند راهبی از روزگار کهن‬ ‫در میان مرکز داده ها به مراقبه مشغول است‪ .‬دیسک های سخت اش همانند اقیانوسی از ماشین آلات در کنار یکدیگر خفته اند‪.‬‬ ‫نرم افزار صورت های بی‌شماری همانند الماس دارد و به پیچیدگی جنگل‌های باستانی است‪ .‬برنامه‌ها‪ ،‬هر کدام منحصر به فرد‪،‬‬ ‫همانند رودخانه‌ای خروشان از میان سیستم حرکت می کنند‪ .‬و به این دلیل است که در جایی که هستم خوشحالم‪«.‬‬ ‫برنامه‌نویس ریزپردازنده با شنیدن این سخنان خاموش ماند‪ .‬اما آن دو برنامه‌نویس تا آخرین روزهای حیات دوست یکدیگر‬ ‫باقی ماندند‪.‬‬

‫‪۸.۴‬‬ ‫نرم‌افزار و سخت‌افزار در جادٔه چانگتهسه به یکدیگر برخوردند‪ .نرم‌افزار گفت‪» :‬تو ‪ Yin‬هستی و من ‪ .Yang‬اگر ما با یکدیگر‬ ‫سفر کنیم مشهور خواهیم شد و ثروت بزرگی به دست خواهیم آورد‪ «.‬و از آن پس آنان با یکدیگر ماندند‪ ،‬در فکر فتح جهان‪.‬‬ ‫به زودی به سفت‌افزار* برخورد کردند که ردایی ژنده به تن و عصایی خاردار به دست داشت‪ .‬سفت‌افزار به آنان گفت‪» :‬تائو‬ ‫جایی فراتر از ‪ Yin‬و ‪ Yang‬است‪ .‬او خاموش و همانند آبگیر است‪ .‬او به دنبال شهرت نیست و بنابراین کسی نمی داند که‬ ‫وجود دارد‪ .‬به دنبال مال اندوزی نیست‪ ،‬چرا که در درون خویش کامل است‪ .‬او فراتر از فضا و زمان است‪«.‬‬ ‫سخت‌افزار و نرم‌افزار شرمسار شدند و به خانه بازگشتند‪.‬‬

کتاب نهم – پایان‬

‫استاد برنامه‌نویس بدین گونه به سخن درآمد‪:‬‬

‫»زمان رفتن برای تو فرا رسیده است‪«.‬‬