3 خطوات لكى تُحسّن من نفسك كمبرمج
حلينا المشكلة! ولكن ما المشكلة التى تم حلها؟
كمبرمجين، نواجه دائماً مشكلات معقدة يومياً. ولكننا بطبيعتنا متخصصين فى حل المشكلات. ولكن ما المشكلة التى نريد حلها فعلاً؟
حل المشكلة الخطأ، حتى لو كان حلاً ذكياً، فهو ليس حل للمشكلة الحقيقية.
إنها مسئوليتنا كتقنيين أن نفهم المشكلة الحقيقية ونعرض حل مناسب لها. حل المشكلات ليس مؤشر هام للنجاح فقط ولكنه جزء أساسى من كوننا مبرمجين. ولكن كيف نتعرف على المشكلة ونحلها؟ إليك 3 طرق ﻹستهداف المشكلة الحقيقية.
اسأل 🔗
بالتأكيد لديك آراء. خبراتك جعلتك فى المكانة التى التى عليها الآن. وهذا أمر قيّم جداً، لابد أن تكون فخور بمعلوماتك وخبراتك!
والآن، عندما يسألك شخص عن التقنيات، كيف تجيب على السؤال؟ هل تخبره برأيك فوراً؟ هل تعرف حقاً ما يسأل عنه؟ هل السؤال به فعلاً ما يريد أن يعرفه السائل؟ هل تعرف لماذا يسأل هذا السؤال بالتحديد؟
ياااااه! هذه أسئلة كثيرة جداً ومُربكة! (نعم، هذه أسئلة كثيرة لتفكر فيها)
تخيل معى أن شخص ما سألك: ما هو إطار العمل للغة جافاسكربت الذى يجب أن استخدمه؟ (What JavaScript framework should I use?) كيف ستجيب على هذا السؤال؟ يُمكننا أن نقول React أو Vue أو Angular ولكن هل هذه الإجابة تُساعد الشخص الئى سأل؟! ربما. لماذا سأل السؤال؟ دعونا نتخيل هذا الحوار إن سألت “لماذا”.
أنت: لماذا تسأل؟ هو: بعد استخدام إطار العمل …..، اختلف فريق العمل على أى إطار عمل سيعمل المشروع الجديد. أنت: لماذا تفكر فى استخدام اطار عمل مختلف عن السابق؟ هو: استخدمنا اطار العمل …. ونعرفه جيداً، ولكن سمعنا أن باقى الأطر البرمجية (frameworks) أفضل. أنت: كيف تحدد إن كان أحدهما أفضل من الآخر؟ ما العيوب فى إطار العمل الذى تستخدمه حالياً؟ هو: الطريقة الحالية لا تستطيع حل مشاكلنا. نحن نحتاج لهذا. أنت: ما هى المشكلة؟ هو: ﻷن التطبيق الحالى بطئ، ونحن نريده أن يحمل فى أقل من ثانيتين. أنت: لماذا تأخذ وقت طويل للتحميل؟
كانت هذه المحادثة مجرد حوار من خيالى. ولكنك بالطبع فهمت الفكرة. السؤال الأصلى هو نتيجة لمجموعة من الخبرات اكتسبها هذا الشخص خلال وقت طويل. أو بمعنى آخر، هو لديه سياق لا تعرف عنه شيئاً!
يُمكنك أن تتعلم أكثر عن هذا التدريب على السؤال من خلال قراءة 5 لماذا على ويكيبديا .
الشئ المفيد هنا هو أنه يُمكنك اكستاب هذا السياق ومعرفة البيئة المحيطة بنظام العمل لدى الشخص السائل عن طريق بعض الأسئلة التى تبدأ بـ “لماذا”. عندما تستوعب هذا السياق، تكون قادر على مساعدة هذا الشخص فعلاً فى حل مشكلته. وأحياناً هم مَن يقوموا بحل المشكلة أثناء الحديث عنها معك.
إجابة سؤال “لماذا” غالباً تقودك إلى اتجاة مختلف عن الإتجاه الذى ذهبت إليه فى بداية تفكيرك فى أول سؤال طرحه السائل عليك.
استمع ولاحظ 🔗
يعتبر الإستماع شئ بسيط، ولكنه فى الحقيقة صعب ﻷنه يتضمن الصبر والتركيز. تخيل معى أنك تحاول حل مشكلة مبرمج وذهبت معه إلى مكتبه وبدأ هو يكتبه فى الكود الذى تحدثتم عنه ولكنه استخدم الـ function قبل أن يكتبها، ثم انتقل إلى كود آخر خاص بإستقبال مُدخلات المستخدم. لماذا لم يكتب الـ function حتى الآن؟؟ والآن هو بدأ يكتب Dockerfile واستخدم متغيرات مثبته داخل الكود (hard coded environment variables). كل هذا الأمور تغضبك وتزعجك. هل توقفه عن العمل فوراً؟ ماذا ستفعل؟؟
ملاحظة كيف يعمل هذا الشخص وكيف يحل المشكلات التى تواجهه هى أهم ميزة تحتاجها لكى تتعلم أنت. هناك الكثير من الأسباب التى تدفعنا إلى التعامل مع الأشياء بطريقة معينة. إن كان هدفنا هو مساعدة هذا الشخص فى حل مشاكله، لابد أن نعرف كيف يُفكر هذا الشخص. فكّر فيما يجول فى عقله.
يُمكننا معرفة ما يجرى فى عقله عن طريق المشاهدة، والإستماع، والأسئلة المفتوحة مثل:
- أين تريد أن يعمل الـ docker container ؟
- كيف ستختبر الـ function ؟
- كيف يعرف المُستخدم الذى يحتاج أن يفعله عندما يحدث هذا الشئ فى التطبيق؟
هذه الأسئلة لا تطلب إجابة بنعم أو لا. ولكن هذه الأسئلة تم صياغتها بهذا الشكل لكى تحفز الشخص الآخر على شرح أفكاره عن لماذا وكيف يفكر. بهذه المعلومات التى نحصل عليها من الإجابات سنفهم طرق العمل وحل المشكلات لدى هذا الشخص.
إن ضرب شخص ما رأسه فى الحائط. هذه ليست مشكلة الحائط. نحن لا نحرك الحائط. ولكننا نحل المشكلة التى تسببت فى ضرب هذا الشخص لرأسه فى الحائط.
أفضل طريقة لمعرفة لماذا وكيف يحل الناس مشاكلهم هى الإستماع.
اسعى للمساعدة بنشاط 🔗
نحن فى مجال عمل رائع. التقنيين دائماً يواجهون المشكلات يومياً، بعد ذلك نتشارك الصعوبات وحلول المشاكل فيما بيننا. هذا هو مجتمع المبرمجين. مجتمع مساعد!
لا تصنع حلاً لمشكلة غير موجودة! ابحث عن المشكلات الموجوده واصنع لها حلاً!
عندما تحل المشكلة، شارك الحل. تعرف على الطريقة التى تحبها للتواصل وابدأ فى استخدامها. تحب الكتابة، أم تسجيل فيديو، أو إنساء أدوات وبرامج مثل امتدادات VS Code Extensions، إنشاء برامج مفتوحة المصدر، التحدث عنها فى استضافات صوتية (Podcast).. اختر الطريقة المناسبة لك لتشارك بها خبراتك فى حل المشكلات.