وب‌اپلیکیشن

سرویس‌ورکر
سرویس‌ورکر

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

برازر هنوز امتحان خودش رو برای چنین اپلیکیشنی پس نداده. مطمئنم به مشکل می‌خوریم. سرویس‌ورکر هنوز ساپورت خوبی نداره توی همه برازرها و ما نمی‌تونیم مجبورشون کنیم آخرین نسخه رو نصب کنن...

قبل از اینکه سالار حرفش رو تموم کنه، مدیر شهرداری و احتمالا کارفرمای جدید ما وسط حرفش پرید و گفت:

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

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

بخش دوم

روز دوم، ساعت 10 صبح، پارک روبه‌روی شهرداری

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


سالار: بههه سلاممم. چطورید رفقا؟

من: سلام سالار. قربونت، تو خوبی؟

سالار: خوبم. سیامک جون تو چطوری؟ خوبی؟

سیامک: نوکرم داداش، چه خبر؟ ردیفی؟

سالار: قربونت منم خوبم. همه‌چی ردیفه؟

سیامک: آره همه‌چی عالی شده و استایل‌ها...

من: ولی یه مشکلی داریم.


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


من: به یه مشکلی خوردم توی کدها.

سیامک: تو که گفتی همه‌چیز کار می‌کنه! چه مشکلی؟

من: انتظار این مشکل رو نداشتم.

سالار: کدوم مشکل؟


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

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

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

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

بخش سوم

روز دوم، ساعت 11 صبح، اتاق جلسه

سالار روی صندلی چرم اتاق شهرداری نشسته بود داشت تصویر لپتاپش رو روی پروژکتور می‌انداخت. بخار داشت از لیوان‌های چای روی میزها بلند می‌شد. من و سیامک هم دو طرف اون نشسته بودیم و داشتیم به مدیر شهرداری و سه مسئول دیگر لبخند تحویل می‌دادیم. سعی می‌کردیم چهره خود را شبیه به کسانی که موفق به انجام کار شده‌اند نشان دهیم. هرچه بیشتر طول می‌کشید، تواناییمان در حفظ این حالت کمتر می‌شد. کشتی‌گرفتن سالار با کابل پروژکتور همچنان ادامه داشت. مدیر شهرداری داشت با لپ‌تاپ قدیمی‌ای که روبه‌رویش بود ور می‌رفت. کم‌کم لپم داشت از این لبخند مصنوعی طولانی درد می‌گرفت که ناگهان تصویر صفحه لپ‌تاپ سالار روی پروژکتور افتاد و با لبخند رو به بقیه گفت "بالاخره درست شد. اگه موافق باشید شروع کنیم؟". بقیه هم به نشانه تأیید سر تکان دادند. مدیر شهرداری سرش را از روی لپ‌تاپ بلند کرد و مشتاقانه گفت «شروع کنیم». سالار بعد از سر کشیدن لیوان چای‌ش که یخ کرده بود، توضیحات خود را شروع کرد.

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

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

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