گفتوگویی با Ryan Potts که در آن او و Jeremy Walker دربارهی Delphi، آنچه از مشارکتکننده بودن در Exercism آموخته، و تجربههایش از برنامهنویسی در صنایعی که هنوز «آفلاین» هستند صحبت میکنند.
سلام Ryan. ممنون که وقت گذاشتید و با من گفتوگو کردید. شما نگهدارندهی مسیر Delphi در Exercism هستید. چطور کار با Delphi را شروع کردید؟
من در شرکتی کار میکنم که پدرم آن را بنیان گذاشت و از دههی ۸۰ مشغول توسعهی نرمافزار است؛ ابتدا با Microsoft Pascal و بعدها با Turbo Pascal از Borland. سال ۹۶ به این شرکت آمدم. حدود همان زمان، شرکت درخواستهایی برای تولید نرمافزاری میگرفت که بهجای DOS روی Windows اجرا شود. خوشبختانه Borland بهتازگی Delphi 1 را منتشر کرده بود. این دقیقاً به کار ما میآمد، چون بیشتر واحدهایی که در طول سالها توسعه یافته بودند همچنان قابل استفاده بودند. دیگر لازم نبود برای پشتیبانی از Windows همه چیز را از صفر در VB یا VC بازنویسی کنیم.
و هنوز هم هر روز از Delphi استفاده میکنید؟
بله. محل کار من ماشینهایی برای آزمون تحقیق و توسعه و آزمون دستههای کوچک در صنعت خودرو تولید میکند؛ آزمون تایر، صندلی خودرو، بادکنندهی کیسهی هوا و همچنین آزمون تصادف. همهی سیستمهای تولیدشده توسط چند خودروساز در سراسر جهان و همچنین تأمینکنندگانشان استفاده میشوند.
نرمافزاری که روی آن کار میکنم برای کنترل این انواع مختلف ماشینها به کار میرود. رابط کاربری را توسعه میدهم، توالی آزمونها را برای بخشهای خودکارِ آزمون مشخص میکنم و نقاط مختلف ورودی و خروجی، هم آنالوگ و هم دیجیتال، را یکپارچه میکنم. باید تا حد امکان کاربرپسند باشد تا فردی با کمترین آموزش بتواند با راحتی از آن استفاده کند.
کاری که میکنم اصلاً برنامهنویسی وب نمیخواهد. همهی کارم با Delphi روی Windows است. هر از گاهی باید یک «دستور سفارشی» کوچک در C++ بنویسم و بعد آن را روی برد پردازندهی جمعآوری داده بارگذاری کنم؛ این برد کامپیوتری موازی است که در یک اسلات PCI داخل کامپیوتر جای میگیرد و CPU، حافظه و سیستمعامل خودش را دارد.
گفتوگو با کسی که اصلاً برنامهنویسی وب نمیکند، جذاب است. این روزها کمی غیرعادی به نظر میرسد، اما نمیدانم آیا این فقط همان نسبت سیگنال به نویزی است که هر روز میشنوم، نه بازتابی از کل صنعت.
بله، درگیر بودن با Exercism به من امکان داده کمی ببینم که «نیمهی دیگر» در صنعت کامپیوتر چطور زندگی میکند. مطالب زیادی دربارهی توسعهی آزمونمحور (TDD)، کار کردن با GitHub و کار روی یک پروژهی متنباز یاد گرفتهام. بسیاری از آنچه یاد گرفتهام، کیفیت کارم در محل کارم را بهتر کرده است.
شنیدن این واقعاً عالی است. یکی از مواردی که بیش از همه در Exercism دوست دارم، همان حالوهوای «نیمهی دیگر چطور زندگی میکند» است: اینکه به همهی نقاط کور خودتان پی ببرید و از مواردی باخبر شوید که حتی نمیدانستید وجود دارند. گمان میکنم نگهدارندهی یک مسیر بودن، این یادگیری را بیش از پیش تقویت کرده است؟
بله، همینطور است. الان بیشتر از قبل تست مینویسم. همیشه دقیقاً TDD نیست؛ گاهی تستها دوم نوشته میشوند، نه اول. با این حال، روی نحوهی ساختاردهی کدم تأثیر گذاشته است؛ وابستگیهای غیرضروری را حذف میکنم تا تست کردن آسانتر شود.
وقت زیادی صرف بررسی موضوعها و درخواستهای ادغام در مخزن problem-specifications میکنم؛ جایی که تمرینهای Exercism را به شکلی مستقل از زبان تعریف میکنیم. از بحثها مطالب زیادی یاد گرفتهام. گاهی یک تغییر پیشنهادی در ظاهر ساده به نظر میرسد، اما گفتوگویی که در پی میآید مسائلی را آشکار میکند. صبورتر شدهام. این تجربه به من یاد داده که در محل کار، زوایای بالقوهی دیگری را هم در مشکلات فنی جستوجو کنم.
دربارهی منتورینگ هم بیشتر یاد گرفتهام، بهویژه اینکه چقدر مهم است پشت هر کار را بدانی، نه فقط اینکه چطور انجام میشود. من با چند برنامهنویس دیگر کار میکنم. هرچند از بیشتر آنها جوانترم، بیشتر از آنها در شرکت بودهام و اغلب میتوانم روش کارآمدتری برای تعیین ترتیب عملیات یک ماشین پیشنهاد کنم یا توضیح دهم چرا کاری باید به شکل خاصی انجام شود.
جدا از Exercism، شما یک MVP در Delphi هم هستید که واقعاً عالی است! چطور به اینجا رسیدید؟ آیا جامعهی قدرتمندی از Delphi هست که شما بخشی از آن باشید؟
در مراحل اولیهی راهاندازی مسیر Delphi، با آقای Jim McKeeth در Embarcadero تماس گرفتم تا ببینیم میتوانیم مجوز متنباز برای Delphi بگیریم. این کار به ما اجازه میداد از Delphi برای توسعهی تمرینهای جدید استفاده کنیم و به مردم امکان میداد از طریق درخواستهای ادغام مشارکت کنند. Jim در جریان مکاتباتمان از من دعوت کرد به برنامهی MVP شرکت Embarcadero بپیوندم.
Delphi Praxis یک جامعهی آنلاین است که با آن آشنایم. ترافیک زیادی روی Google+ هست، اما دارد از رونق میافتد، پس باید جای دیگری برویم.
آیا برنامههای متنبازی با Delphi ساختهاید که دیگران بتوانند نگاهی به آنها بیندازند؟
بله! نصبکنندهی CLI ویندوز Exercism متنباز است و کاملاً با Delphi نوشته شده. بهطور خودکار نسخهی درست (۳۲/۶۴ بیتی) CLI مورد نیاز دانشجو را تشخیص میدهد، بعد CLI را دانلود میکند، از حالت فشرده خارجش میکند و در جای درست قرار میدهد. این نصبکننده ۱۵٬۰۰۰ بار دانلود شده که به آن افتخار میکنم!
این دستاورد فوقالعادهای است! بهعنوان کسی که برنامهنویسی اینترنتی زیاد انجام نمیدهد (اگر اصلاً انجام دهد)، هنگام ساختن این نصبکننده با Delphi با چه چالشهایی روبهرو شدید؟
نصبکننده در ابتدا با C# نوشته شده بود. قدیمی بود و تصمیم گرفتم ببینم میتوانم آن را بهتر کنم. پیشتر هرگز کاری شبیه به این را امتحان نکرده بودم، اما میدانستم Delphi ابزارهای لازم را برای انجامش دارد. اول کد اصلی C# را بررسی کردم تا بفهمم در پشت صحنه چه ترتیبی از اتفاقها در جریان است، و بعد همان کارها را در Delphi انجام دهم. کد نمونهای در سایت مستندات Embarcadero پیدا کردم که توضیح میداد چطور میتوان اجزای موجود را برای ساختن یک کلاینت REST بهدرستی به هم وصل کرد. همچنین ابزار مفیدی که همراه Delphi عرضه میشود و REST Debugger نام دارد کشف کردم. این ابزار به من اجازه داد فراخوانیهای مختلف HTTP را که برای موفقیت نصبکننده لازماند وارد و در نتیجه آزمایش کنم. وقتی این فراخوانیها کار کنند، REST Debugger نسخههایی از اجزای لازم را میسازد تا بتوانم آنها را در کد جایگذاری کنم.
برای کسی که میخواهد بیشتر در Exercism عمیق شود، شاید کسی که امیدوار است نگهدارنده شود، میتوانید از تجربهی خودتان برایمان بگویید؟
من عضو یک گروه MeetUp محلی به نام Akron Code Club هستم. تقریباً ماهی یک بار دور هم جمع میشویم و معمولاً دو نفری روی یک کاتای کد کار میکنیم که به گروه پیشنهاد شده است. در نشست اوت ۲۰۱۶، شروع کردیم به کار روی تمرینهایی که Exercism ارائه میداد. وقتی از Exercism و برخی دیگر از سایتهای آموزشی استفاده میکردم، فکر کردم خوب میشد اگر سایتهای برنامهنویسی آنلاین بیشتری Delphi یا Pascal را بهعنوان یک گزینه ارائه میدادند. بعد از گشتن در سایت Exercism و مخزنهای GitHub آن، متوجه شدم Exercism همیشه به افزودن مسیرهای زبانی جدید علاقه دارد. مطمئن نبودم بهترین راه تماس با Katrina چیست. فکر میکنم در اوت ۹۶ از Gitter برای تماس با او استفاده کردم و پیشنهاد افزودن Delphi را دادم. حدود دو ماه بعد پاسخی عذرخواهانه دریافت کردم و آنجا بود که فهمیدم او از Gitter استفاده نمیکند. بههرحال، پرسید که آیا هنوز علاقه دارم روی افزودن یک مسیر Delphi Pascal کار کنم و اگر چنین است، کار را راه بیندازیم.
حالا مخزنی وجود دارد که میتوانید از آن برای درخواست یک مسیر زبانی جدید استفاده کنید، و همیشه میتوانید در مخزن exercism/exercism موضوع باز کنید تا با نگهدارندگان پروژه در تماس باشید.
عالی. از اینکه با من گفتوگو کردید و برای همهی کارهایتان در Exercism سپاسگزارم!
خواهش میکنم! خوش گذشت. از مشارکت و انجام هر کاری که از دستم برمیآید برای Exercism لذت میبرم. یادگیری از راه عمل!