كيف تستلهم الإبداع عندما تصل برمجتك إلى طريق مسدود؟
مواجهة الجمود البرمجي: تحدٍ شائع وحلول مبتكرة
يُعد الوصول إلى طريق مسدود أمرًا شائعًا في عالم البرمجة، بل وفي أي مسعى يتطلب حل المشكلات. غالبًا ما نجد أنفسنا عالقين في طريقة تفكير معينة حول المشكلة، مما يجعل من الصعب اكتساب منظور جديد. هذه الظاهرة ليست غريبة على المبرمجين، فهي جزء لا يتجزأ من العملية الإبداعية والتحليلية.
في سياق البحث عن حلول، صادفت مؤخرًا أداة مستوحاة من الفنون الإبداعية وأدركت إمكانية تكييفها لتناسب مجال البرمجة. الأداة التي ألهمتني هي Oblique Strategy Cards (بطاقات الاستراتيجية المائلة). هذه البطاقات عبارة عن محفزات مصممة لكسر دورة التفكير المعتادة وتشجيعنا على التفكير بطرق مختلفة. تتضمن البطاقات عبارات مثل: «أزل التفاصيل وحوّلها إلى عموميات» و«استخدم فكرة قديمة». أحد أشهر استخداماتها كان في ألبوم Heroes للموسيقي David Bowie. ففي مقطوعة Sense of Doubt، على سبيل المثال، تناوب Bowie و Brian Eno على إضافة طبقات صوتية استنادًا إلى بطاقات Oblique Strategy Cards دون الكشف للآخر عن محتوى بطاقته.
ومع ذلك، أعتقد أن مآزق البرمجة تحتاج إلى شيء أكثر مباشرة. ففي لحظات التعثر أمام مشكلة ما، نحتاج إلى الإلهام والطمأنينة معًا.
الحل: آلة إلهام المبرمجين (The Coding Inspiration Machine)
لذا، قمت بجمع اقتباسات حول عملية البرمجة من خبراء حقيقيين – أشخاص قاموا بإنشاء لغات برمجة وأنظمة تشغيل. ووضعت هذه الكلمات الحكيمة في تصميم من إبداع Gordana Minovska يضع الاقتباسات في صدارة المشهد.
يمكنك الوصول إلى الأداة عبر الرابط التالي: https://ryandawsonuk.github.io/CodingInspirationMachine/
الهدف من هذه الأداة هو مساعدتك على الانتقال من حالة «لا أرى أي حل» إلى «ربما هذا النهج سيؤدي إلى شيء» وصولاً إلى «آها!». غالبًا ما نقع في منظور لا يسمح لنا برؤية الحلول المحتملة. في تلك اللحظات، يمكننا الاستفادة من بعض الكلمات الحكيمة من أساتذة حل المشكلات لتمنحنا دفعة قوية.
على سبيل المثال، هذه الكلمات من Robert C. Martin:
«عندما تعمل على مشكلة، قد تقترب منها أحيانًا لدرجة أنك لا تستطيع رؤية جميع الخيارات. تفوتك الحلول الأنيقة لأن الجزء الإبداعي من عقلك يتم قمعه بسبب شدة تركيزك.»
كيفية استخدام آلة إلهام المبرمجين؟
الفكرة هي إما حفظ رابط URL الأداة في المفضلة أو عمل fork للمستودع (repo) وتكوين GitHub Pages لاستضافة نسختك الخاصة. من خلال عمل fork، يمكنك تغيير الاقتباسات إلى ما تجده أكثر فائدة لك. ثم يمكنك العودة إلى Coding Inspiration Machine عندما تتعثر.
بالطبع، هذه مجرد أداة إلهام واحدة. لن تحل محل أدوات أخرى مثل العصف الذهني (brainstorming) والخرائط الذهنية (mind-maps). David Bowie استخدم العديد من الأدوات للإلهام، وربما تدين موسيقاه بالإلهام لمقتطفات الصحف أكثر من بطاقات Oblique Strategy Cards. لكن النقطة الأساسية في Coding Inspiration Machine هي أن تكون أداة سهلة وسريعة اللجوء إليها لتذكيرنا بأنه لا بأس من التعثر، وأن الأمر من المفترض أن يكون صعبًا، وأن هناك دائمًا طرقًا للمضي قدمًا.
تطبيقات واقعية لآلة إلهام المبرمجين
فيما يلي بعض المواقف التي واجهتها مؤخرًا والتي دفعتني إلى التفكير في هذه التقنية:
1. الإبداع في حل مشكلة المصادقة
كانت هناك مشكلة في المصادقة (authorization) في نظام أعمل عليه. لم يعمل كود المصادقة الذي كان يعمل مع العديد من مزودي المصادقة مع إعداد معين لـ Active Directory. لم نكن نعرف في البداية ما إذا كانت المشكلة تتعلق بالتكوين (config) من جانب المزود، أو التكوين من جانب التطبيق، أو مشكلة اتصال، أو مشكلة في الكود الخاص بنا. حتى أننا قمنا ببناء أداة اختبار مخصصة لتضييق نطاق المشكلة. اتضح في النهاية أننا كنا بحاجة إلى تضمين معامل إضافي هو resource_uri في إحدى مكالمات http الخاصة بنا.
2. إيجاد حلول لاستعراض المقاييس
بالنسبة لنفس النظام، أردنا عرض المقاييس على فترات زمنية طويلة. أدى ذلك إلى محاولة إجراء استعلامات Prometheus على نطاقات بيانات كبيرة جدًا بالنسبة لاستعلامات Prometheus التقليدية. هناك مجموعة من الطرق للتعامل مع هذا، بدءًا من تغيير ما نستعلم عنه، إلى استخدام أدوات مختلفة/أكثر، وصولاً إلى إعادة هيكلة البيانات. اخترنا ما يعادل إعادة هيكلة البيانات.
3. رؤية الإجابة الأقل وضوحًا
أخبرني والدي زوجتي أن تلفازه الذكي لا يعمل مع Netflix. بعد التنقل في عدة قوائم مربكة وتجربة شبكات لاسلكية مختلفة، وجدنا أن المشكلة كانت في قوة الإشارة للشبكة التي كان التلفاز يفضلها (لقد عمل بشكل جيد مع شبكة اعتقد التلفاز أنها أقل قوة).
الخلاصة التقنية
تختلف هذه المشكلات جميعها، لكنها تشترك في سمات مشتركة. كل منها تطلب بحثًا وتجربة واستبعادًا للإمكانيات. كل منها كان مفاجئًا في البداية، واستغرق الأمر وقتًا لتعديل التوقعات وإدراك سبب وجود المشكلة. كان من الضروري استكشاف مسارات متعددة، وفي كل مرة كان المسار غير ناجح، كان الأمر محبطًا. من السهل أن نتعثر في هذه المواقف ونجد أننا لم نعد نرى أي مسارات. هنا تبرز قيمة Coding Inspiration Machine، حيث يمكن أن تساعدنا كلمات الآخرين الذين مروا بهذه التجربة من قبل على رؤية هذه المواقف بعيون جديدة، وتذكيرنا بأن الصعوبات جزء طبيعي من عملية الإبداع والتطوير، وأن الحلول غالبًا ما تكمن في تغيير المنظور أو الحصول على دفعة إلهامية بسيطة.
ألقِ نظرة على Coding Inspiration Machine ولا تتردد في تقديم اقتراحات إلى مستودع GitHub أو التواصل معي على Twitter.