الشهر الأول في شركة ناشئة يترك أثراً عميقاً. لا يوجد تدرج بطيء في التعلم، ولا أسبوع تقضيه في مشاهدة الفيديوهات التعريفية بينما تنتظر قسم تقنية المعلومات لتجهيز جهاز الكمبيوتر المحمول الخاص بك. في اليوم الأول، يُتوقع منك أن تبني، وتكسر، وتصلح أشياءً سيستخدمها أشخاص حقيقيون بالفعل. تعلمت هذا سريعاً بعد انضمامي إلى Treevah، وهي شركة تبني أدوات لمساعدة الباحثين عن عمل في تنظيم طلباتهم. ثلاثون يوماً في بيئة عمل في مراحلها الأولى علمتني عن تطوير البرمجيات أكثر مما قد تفعله أي قاعة دراسية أو مسابقة على الإطلاق.
الإيقاع لا يهدأ
في Treevah، لا ينتظر العمل استقرارك في مكانك. يعمل الفريق بقوة لنقل المنتج من مرحلة "ألفا" (alpha) إلى "بيتا" (beta) وصولاً إلى مرحلة الإنتاج (production)، مما يعني أن كل مهمة لها ثقلها. لا يوجد مجال للأعمال الصورية أو التكليفات التي تُحفظ في صندوق بريد الأستاذ. عندما تطلق ميزة جديدة، فإنها تذهب مباشرة إلى المستخدمين الذين يحاولون تتبع المواعيد النهائية، والمقابلات، والمتابعات أثناء بحثهم عن وظيفتهم التالية.
الوتيرة مرهقة. أنت تتحرك بسرعة كل يوم، وتتراكم أعباء العمل أسرع مما تتوقع. المواعيد النهائية ليست مجرد أرقام مجردة؛ بل هي مرتبطة بمحطات رئيسية تحدد ما إذا كانت الشركة قادرة على خدمة المزيد من الباحثين عن عمل أو إصلاح الثغرات في التجربة الحالية. هذا الثقل ينهكك، لكنه يخلق أيضاً وضوحاً يصعب العثور عليه في المؤسسات الكبيرة. عندما أنهي مهمة ما، يمكنني رسم خط مباشر بين ما بنيته وبين شخص أصبح الآن يجد وقتاً أسهل لإدارة رحلة بحثه عن عمل. هذا الشعور بالمسؤولية نادر، وهو ما يجعل التعب يستحق العناء.
المهارات تتطور بشكل أسرع في بيئة الإنتاج
قبل هذا الصيف، كان معظم طاقتي يذهب نحو التحدث أمام الجمهور والهاكاثونات (hackathons). علمتني كلتا التجربتين كيفية التفكير بسرعة وتقديم الأفكار تحت الضغط. الهاكاثونات تحديداً تدربك على تجميع نماذج تجريبية (demos) تعمل في غضون ساعات. ولكن هناك فرق بين مشروع عطلة نهاية الأسبوع الذي يبهر الحكام، وبين كود الإنتاج (production code) الذي يجب أن يصمد أمام مئات المستخدمين الحقيقيين.
قضاء شهر من التركيز على تطوير الويب في Treevah سد تلك الفجوة. في المدرسة، تأتي المشاريع مع ضوابط محددة؛ النطاق ثابت، والمتطلبات تُقدم لك جاهزة، وإذا انهار مخطط قاعدة البيانات (database schema) الخاص بك، يمكنك تبرير ذلك في شريحة عرض تقديمي. أما داخل شركة ناشئة، فيجب أن يصمد المخطط الخاص بك لأن باحثين حقيقيين عن عمل يخزنون فيه بيانات طلبات حقيقية. حلقة التغذية الراجعة فورية ولا ترحم. عندما يتم تحميل صفحة ببطء أو يفشل نموذج في الحفظ، لا أحد يهتم بدرجتك؛ بل يهتمون بما إذا كانوا قد فقدوا فرصة عمل للتو.
هذا الضغط يفرض النمو. تتعلم كتابة كود أكثر نظافة ليس لأن معايير التقييم تطلب ذلك، بل لأنك ستكون الشخص الذي يقوم بتصحيح الأخطاء (debugging) في منتصف الليل. تتعلم طرح أسئلة أكثر دقة أثناء مراجعة الكود (code review) لأن نشر نسخة معطلة يعني أن المستخدمين الحقيقيين سيصطدمون بحائط مسدود. الفرص هنا ببساطة تترك أثراً أقوى من المشاريع المدرسية؛ فالأخطاء تكلفتها أكبر، ولذلك تترسخ الدروس بشكل أفضل.
الواقع المتواضع للأخطاء البرمجية
إذا كان هناك أسطورة واحدة أود تحطيمها، فهي فكرة أن كل خطأ برمجي (bug) هو فشل منطقي درامي. بعضها كذلك بالطبع، لكن الكثير من الأخطاء التي واجهتها في Treevah كانت صغيرة بشكل مثير للإحباط. كانت تختبئ في وضح النهار وتضيع ساعات من حياتي.
ظهر نمطان بشكل متكرر. الأول كان قواعد CSS مكررة. عندما يلمس مطورون متعددون نفس المكون (component) عبر عدة دورات عمل (sprints)، تتضخم ملفات التنسيق. يضيف شخص ما فئة مساعدة للهوامش (margin utility class) بينما يقوم آخر بكتابة قيمة ثابتة (hardcodes) في ملف المكون. لا يوجد خطأ في أي منهما بمفرده، لكنهما معاً يتسببان في إزاحات في التنسيق (layout shifts) أو صراعات في الأولوية (specificity wars) تجعل الزر يبدو جيداً على Chrome ومعطلاً على Safari. تتبع ذلك يعني فتح أدوات مطوري المتصفح (browser dev tools) والتنقيب في الأنماط المحسوبة (computed styles) سطراً بسطر بدلاً من قراءة منطق خوارزمي أنيق.
النمط الثاني كان تعريف العناصر خارج عناصر الـ div الأب الخاصة بها. قد يتم إلحاق مشغل نافذة منبثقة (modal trigger) أو قائمة منسدلة (dropdown) بالعقدة الخاطئة في الـ DOM. تبدو الشاشة صحيحة تقريباً، فتفترض أن الهيكل سليم. ثم يظهر تعارض في الـ z-index أو ينتشر حدث النقر (click event bubbles) إلى معالج خاطئ، وفجأة لا يستطيع المستخدم إغلاق نافذة منبثقة تغطي نموذج طلبه. هذه ليست ألغازاً في علوم الحاسوب، بل هي هفوات مكانية وهيكلية تتراكم عندما تتحرك بسرعة.
استغرق العثور على بعض هذه الأخطاء أسابيع. كنت أحدق في الكود، وأقنع نفسي بأن المنطق سليم، وأسلك طرقاً مسدودة لا تؤدي إلى أي مكان. الإحباط حقيقي. تشعر وكأنك تغفل عن شيء بديهي، وأنت كذلك بالفعل. لكن الشعور بالرضا عند اكتشاف قاعدة مكررة أو وسم إغلاق في غير مكانه أخيراً هو أمر مدهش...
