لماذا تعلم البرمجة صعب للغاية؟! وكيف تجتاز المراحل الأربعة لتعلم البرمجة

لماذا تعلم البرمجة صعب للغاية؟
29

مصطفى كان للتو قد أنهى مرحلة الثانوية العامة، وبمجموع ليس يبشر بخير. لكنه قرر أنّه لن يعتمد على مهارة واحدة لكي ينجو في حياة مليئة بالتنافسية والمصاعب وغير المتوقع، قرر أن يتعلم البرمجة وليس لديه خلفية عن الأمر … ومثله مثل أي مبتدأ بدأ ينثر أسئلته هنا وهناك، بدأ يتعلم القليل من لغة روبي، انتقل لـ scala ومن بعدها go، تعلم بعض أوامر اللينكس وبعض الأمور الممتعة به، قام بعمل بعض البرامج بلغة بايثون، وظل على هذا النحو لما يقارب العام.

كورقة شجر في خضم إعصار، النصيحة التي تلقاها مصطفى بخصوص البرمجة أودت به لطريق، ثم لآخر، وآخر حتى أنّه قرر أنّه سيقوم بدراسة كل مساق تعليمي موجود أونلاين، وبعض فترة ما حصل على وظيفة مبرمج في إحدى الشركات الناشئة.

من الصعب أن تلوم أي أحد يريد دخول مجال صناعة البرمجيات بتوقعات صادمة، من ناحية فقد سمعت عن صعوبة تعلم البرمجة، ومن ناحية أخرى فقد قامت حملة “learn to code” الأمريكية بعمل رائع لجلب الكثير من المواهب للصناعة، مواقع كـ codeAcademy ،treehouse ،code school، قد ساعدت الكثير ليبدأ بتذوق البرمجة وعائد عمل شيء مفيد بيديك.

لكن المشكلة لم تكن أبدًا الخوف بل الكم الرهيب من الآمال والتوقعات.

مرحلة "خذ بيدي"

في معظم الحالات فإنّ الدورات التقديمية للبرمجة تقوم بعمل عظيم، فهي تقودك كالطفل من أنواع المتغيرات إلى حالات if، ثم إلى المراحل الأولية لكتابة المصدر البرمجي، ومع تقدمك في حل التمارين الموجودة بهذه الدورات والمصممة بطريقة الألعاب gamification فإن ثقتك بنفسك تزيد، فربما بإمكانك أن تكون مبرمجًا عظيمًا. ما مدى صعوبة الأمر، فمنذ طباعة Hello world قد أصبحت مطورًا.

وهنا تكمن المشكلة إذ أنّك في مرحلة “خذ بيدي”، ومع ذلك فقد شعرت أنّ النهاية قريبةٌ جدًا وأنّ الفارق بسيطٌ لكي تحترف الأمر وتصبح مطورًا جاهزًا للعمل. لكن الحقيقة أنّ هذه فقط البداية.

الصورة المجملة

قبل أن نذهب للمرحلة التالية في رحلتك في تعلم البرمجة دعنا نلقي نظرة على الصورة المجملة، في هذه المقالة سنمر على أربع مراحل أساسية في رحلة تعلمك البرمجة، وما تحتاجه في كل مرحلة لكي لا تقع في الطريق، وسترى أيضًا مدى تأثير كثافة مصادر التعلم وكم المعرفة المطلوبة وكيف يحددان هذه الرحلة.

لماذا تعلم البرمجة صعب للغاية؟

سنستعرض التحديات المختلفة في باقي الثلاث مراحل. لكن إليك ما تحتويه كل منها باختصار:

1- مرحلة خذ بيدي

هذه المرحلة مليئة بالسعادة والإنجاز، فستقوم بقراءة بعض التعليمات، أو مشاهدة بعض فيديوهات الدورات التقديمية، وستحل كل التمارين، ستتعلم الأساسيات و ستشعر بشعور جيد تجاه إنجازاتك البسيطة.

2- منزلق الحيرة

هي بداية مرحلة الإدراك المؤلم بأنّ الأمر أصعب حينما لا تجد اليد التي تساعدك، وأنّك لا تستطيع أن تفعل أي شيء وحدك بعد. تحدياتك الأساسية هي فحص الكود Debugging، وأسئلتك فقط عن كيفية جعل سطر كود يعمل، والتي لا تقودك لأي طريقة منظمة للعمل.

3- صحراء اليأس

هي المرحلة الأصعب عبر صحراء لا مَعلم لها، عندما تبدو كل الطرق صحيحة، عندما تدور حول نفسك، وتبذل الوقت والجهد وتتعطش للمصادر التي توجهك للطريق الصحيح … لتكتشف أنّك رجعت لنفس نقطة البداية.

4- التحسن الرائع

عندما تكوّن لنفسك نظامًا لكيفية إيجاد حلول للمشاكل التي تواجهك أثناء البرمجة، عندما تقوم ببناء تطبيقات ومشاريع كاملة، لكن لازال الكود الخاص بك غير منظم وهش كبيت من ورق اللعب، ثقتك تزيد لأنّ المواقع التي تبنيها تعمل، واحترفت بعض التكتيكات في بناء مشاريعك وكتابة كودك الخاص. أصدقاؤك يعتقدون أنّ واجهات تطبيقاتك رائعة لكنك تشعر بالرعب عندما يسألك أحدهم تفقد الكود المكتوب.

عبر مقابلة المئات من المطورين الطموحين خلال السنوات القليلة الماضية، سمعت الكثير من قصصهم مرارًا وتكرارا، هدفي في هذه المقالة هي أن تتعرف على الرحلة كاملة بدراية كاملة، وأن يكون لديك خطة لتتجنب الأخطاء الشائعة التي يقع فيها المبرمجون في بداية رحلتهم.

دعنا نعود للمرحلة الثانية …

المرحلة الثانية: منزلق الحيرة

كن حذرًا عند دخولك هذه المرحلة، فأنت على وشك عبور مرحلة قد كسّرت العديد من طموحات المطورين، وأودت بهم إلى حفرة “البرمجة صعبة للغاية”، وأنّك لن تستطيع أبدًا تعلمها.

ستدرك مائة بالمائة أنّك في هذه المرحلة … اللحظة التي تجلس فيها أمام لوحة المفاتيح، وتقوم بتشغيل محرر الأكواد المفضل لديك، ثم تحاول أن تبني مشروع من الصفر، بدون اللجوء لأي مساعدة من زملاء أو تلميحات … بضع لحظات … ثم … تبًا!

ربما تبدأ بفتح بعض الدروس المحفوظة عندك، أو مراجعة فيديوهات يوتيوب لكي تبدأ بمعرفة ما تريد فعله، في هذه اللحظة ثقتك بما تعلمته تهتز … مرحبًا بك في منزلق الحيرة.

لماذا تعلم البرمجة صعب للغاية - 2

تقوم ببناء بعض الميزات في مشروعك، تقوم باختبار هذه فتتعطل تلك، حرب من المشاكل البرمجية Bugs لا تدري متى تنتهي، كل انتصار صغير ربما يلوح من بحث على جوجل … ثقتك تقل تدريجيًا، وكل همك الآن أن تثبت أنّك تستطيع بناء شيئًا ما، لذلك يتوجه تركيزك إلى البحث عن كيفية عمل ميزات بطريقة معينة، تقوم بالتطبيق، تظهر مشاكل، تبحث عن حلول وهكذا.

عند انتهاء المرحلة الأولى من تعلم البرمجة، فإنّ الطلاب يُدفعون من أعلى التل ويُطلب منهم القيام بالطيران. الجزء المخيف هنا أنّ هذه هي فقط المرحلة الثانية فأنت لم تتعرض للأشياء الدسمة بعد.

لكن ريثما قمت بحل عدد كبير من المشاكل وأنهيت عدة مشاريع برمجية فقد تجاوزت هذه المرحلة بنجاح … بالنسبة لأولئك من يريدون أن يبنوا حياة مهنية من بناء هذه الأشياء، فإنّهم هنا يقررون ما إذا كانوا مستعدين لخوض المجال بكل ما أوتوا من طاقة، أمّا الآخرين فهذه المرحلة هي منتهاهم.

ما الفرق بين مرحلة “خذ بيدي” ومرحلة “منزلق الحيرة”؟

إنّ فهمك للفروق بين هاتين المرحلتين هام جدًا لإدراك أنّه ليس ذنبك أبدًا إذا كانت تجربتك كما وصفناها سابقًا، بشكل رئيسي فإنّ ما يتحكم في المراحل جميعها هما عاملان … كثافة المصادر وكم المعرفة … دعنا نتعرف عليهما قبل أن نستكشف تأثيرها على المرحلة الثالثة.

العامل الأول: كثافة المصادر

كما سبق وأن أخبرناك في البداية تشعر أنّه يوجد مليون مصدر متاح لتتعلم منه، كل مصدر يحاول أن يأخذ بيدك لبداية الطريق، وهذا لأنّه بالفعل يوجد الكثير من المصادر … حاول البحث عن تعلم البرمجة وستجد كم هائل من المصادر، الفيديوهات، المقالات، والمساقات المتاحة … وعادةً ما تكون هذه المصادر جيدة، لم يوجد هذا الكم للبدء بتعلم البرمجة من قبل.

لكن للأسف فإنّ هذه المصادر تقل في المراحل التالية من رحلتك في تعلم البرمجة، أي شخص قد انتقل من مستوى مبتدأ إلى مستوى متوسط يدرك مدى الفجوة الموجودة بين كم المصادر في كلا المستويين.

هذه المشكلة تقل مع زيادة حجم معرفتك ممهدة دخولك المرحلة الثالثة صحراء اليأس، ريثما قمت بتخطي كل هذا واعتدت على المصادر المفيدة التي تعتمد عليها، كالمدونات التقنية، والمراجع والتوثيق.

إليك شكل يوضح كثافة المصادر في كل مرحلة من مراحل تعلم البرمجة …

لماذا تعلم البرمجة صعب للغاية - 2

العامل الثاني: كم المعرفة

لنتحدث الآن عن عاملٍ له علاقة، وهو كم المعرفة المطلوب منك في كل مرحلة، الشكل التالي يوضح كم المعرفة المطلوب منك استيعابه في كل مرحلة …

لماذا تعلم البرمجة صعب للغاية - 2

في بداية تعلمك فإنّ المطلوب منك فهمه قليل جدًا، كل من يريد تعلم البرمجة أيًا كانت خلفيته يحتاج أن يعرف ماذا تعني for loop، كيفية بناء المنطق الشرطي، والأساسيات الأخرى لكتابة الكود، لا يوجد الكثير من هذه الأساسيات. لذا، فما تحتاجه في البداية بالنسبة لحجم المعرفة المطلوب قليل جدًا بالنسبة للمراحل التالية.

بمجرد الانتهاء من الأساسيات فإنّك تدرك زيادة مطردة في كم المعرفة المطلوب منك استيعابها، أشياء أصعب في الفهم، كفهم أنواع الأخطاء البرمجية وكيفية التعامل معها، ما هي أنسب طريقة لتنفيذ هذه الخاصية، متى تستخدم الكود الذي تعرفه، وكيف تستخدمه، الفرق هنا أنّه لا يوجد إجابة واحدة صحيحة … الرؤية ضبابية بعض الشيء.

عندما تتقدم للمرحلة الثالثة فإنّ حجم المعرفة يزيد أكثر، أنت الآن تريد أن تفهم ماذا تستخدم من أدوات، ماذا تتعلم من لغات، ما وراء أساسيات علوم الحاسب، كيف تكتب مكونات كود منفصلة عن بعضها البعض، البرمجة الكائنية، الأسلوب الجيد، كيف تطلب المساعدة … وهذا فقط بعضٌ من المطلوب منك تعلمه.

كل رحلة قصيرة لجوجل أو Hacker news إنّما هي كحفر الأرانب لا تدري إلى أين تأخذك، كل هذا يزيد من إحباطك وعدم ثقتك بنفسك.

ببساطة أنت تجهل ماتجهله

فقط عندما تجد بعض المساعدة، وتغادر هذه الصحراء، يبدأ كم المعرفة المطلوب بالنقصان شيئًا فشيئًا، عند هذه النقطة تكون قد اخترت التقنية المناسبة لتبني معها حياتك المهنية. أخيرًا تعرف ما تجهله وتستطيع اقتحامه ببعض الثقة، سيستمر تركيزك في الزيادة متجهًا بك لبداية حياتك المهنية. لنعود لسرد المراحل الباقية …

مرحلة صحراء اليأس

بعد فهمك للعاملين السابقين، بإمكانك إدراك أنّ منزلق الحيرة ما هو إلّا نقطة فاصلة في رحلتك، ما شعرت به من الألم هو ناتج عن خليط من الزيادة المتسارعة في كم المعرفة المطلوب منك استيعابها، وقلة المصادر المتاحة، ما سبَب ما نسميه هنا صحراء اليأس.

باختصار أنت تعرف أنّ للأمر نهاية ولكنك لا تعرف كيف تصل هناك، الصحراء كبيرة ومليئة بالمخاطر، ستجد نفسك منجذبًا لدستة من المصادر التي ربما تحمل في طياتها حلولًا لمشاكلك. لكن أيًا منها سيفيدك بحق؟!

لماذا تعلم البرمجة صعب للغاية

ربما تسجل في بعض المساقات المتاحة الموجودة على coursera ،Udacity أو Edx، تريد أن تصل لمكان لم يصل إليه أحد من قبل. لكن الحقيقة أنّك لا تستطيع تعلم هذه الأشياء في أسبوع، أو شهر، أو حتى فصل دراسي مهما حدث، لذلك لا تقع في هذه المغالطة.

يوجد الكثير لتعلمه ربما أكثر من المتوقع، حتى بعد إنهائِك لبعض التطبيقات التي تعمل، من الصعب ألّا تشعر بالتيه في طريقك لتكون محترفًا. من الصعب أن تقيس تقدمك، كيف تعرف ما تحتاج أن تتعلمه، أو حتى ما هو الشيء المقبل الواعد لتعلمه؟

التحسن الرائع

لقد اجتزت مرحلة صحراء اليأس ببراعة وثقتك في ازدياد، مهارة جوجل جعلت خاصتك ممتازة، وأخيرًا تستطيع أن تفهم المقالات الفنية المطولة، ربما قد تعمقت في لغة أو framework معينة ولديك الثقة في إطلاق تطبيقات حسنة الأداء. هذه هي مرحلة التحسن الرائع.

الكل يبدو جيدًا من الخارج لكنك تعرف بأعماقك أنّك لم تصل بعد، بإمكانك بناء تطبيقات تعمل بكفاءة لكن لا أحد يدري ما يجري تحت هذه الواجهات الجميلة، ربما يقبع المئات من المشاكل البرمجية تنتظر من يكتشفها، كودك لا يبدو جيدًا، والمصيبة الأكبر أنّك لا تعرف أي الأجزاء سيئة وأي الأجزاء جيدة، وهذا في حد ذاته لا يعتبر أمرًا سيئًا، والأسوأ إحساس سيّئ بأنّك لازلت لا تدري ماذا تفعل بالضبط.

إنّها مرحلة ذو وجهين، من ناحية تشعر أنّك مطور جيد ومعك الإثبات على ذلك، ففي ملفك الشخصي العديد من البرامج والتطبيقات، ومن ناحية أخرى لديك شكوك فيما يخص الكود أنّه ليس في أفضل حالة، كلما تقدمت شعرت أنّك محتالًا وأنّ قريبًا سينكشف أمرك.

أنت تعتقد أنّه يجب أن تعمل كمطور بالفعل، وما ما أبعد من المسافة بين ما تكتبه من كود، وبيئة العمل الاحترافية.

لكنك بالنهاية ستفعلها، صحراء اليأس مهما كانت كبيرة فستجتازها، منزلق الحيرة الآن مجرد ذكرى، أنت أخيرًا تتحسن وبسرعة متزايدة، قدرتك على استيعاب المواضيع الجديدة باتت أسرع، تبنيك للتقنيات والأدوات الأحدث بات أسهل، قد اكتسبت العديد من الممارسات الجيدة Design patters التي ستساعدك في حياتك المهنية كمطور.

إنّ مرحلة التحسن الرائع دائمًا تستغرق وقتًا أطول من المتوقع لتصل إليها، وربما تشعر بعدم وجود نهاية لمعاناتك، لكنك ستصل إليها إن شاء الله، إذا كنت مصممًا بما فيه الكفاية.

كيف يبدو كل هذا؟

إذن فقد عرفت مراحل الرحلة كلها الآن، ولماذا هي صعبة، عندما تضم جميع المراحل التي ناقشناها مع العوامل المؤثرة بها فإنّها ستبدو كما الشكل التالي:

لماذا تعلم البرمجة صعب للغاية - 7

إنّ معرفة الطريق شيء، واتباعه شيءٌ آخر … لذا دعنا نساعدك …

كيف تنجح في عبور المراحل الأربعة

إنّ الرحلة تبدو صعبة وفي الأغلب هي كذلك، من المهم أن تفهم دوافعك ولماذا أنت هنا بالأصل، خاصةً إذا كنت ستخوضها وحدك، في هذا الجزء من المقال سنوضح بعض التكتيكات التي ستجعلك تعبر الرحلة بشكل أسرع.

كيف تعبر مرحلة “خذ بيدي”:

إنّ كثرة المصادر في هذه المرحلة يجعلها أكثر متعة من غيرها، لكن إليك نصيحتان حتى تستعد مبكرًا للمراحل التي تليها:

1- ابدأ بالتعلم من أكثر من مصدر:  لتتعرف على أفضل طريقة للتعلم، ما هي أكثر المواضيع التي تبدو شيقة بالنسبة لك، ربما تتعلم من خان أكاديمي عبر التحديات المتتالية، أو عبر تمارين codeacademy المهيئة بالمتصفح، أو كتاب كريس باين learn to program … كن منفتحًا في البداية وانس كل ما يتعلق بـ “ما يجب تعلمه” فكل الأكواد هي ذاتها في هذه المرحلة.

2- استقر على مصدر واحد: واستمر معه لنهاية المرحلة الأولى طالما وجدته الأنسب، قم بحل جميع التمارين والتي ستمدك بالمعرفة الأساسية لكتابة بعض التطبيقات والبرامج البسيطة، ثم استعد لبناء تطبيقات خاصة بك.

كيف تعبر مرحلة “منزلق الحيرة”:

تقريبًا الكل سيختبر هذه المرحلة؛ لأنّ الطريقة الوحيدة لتصبح مطوًرا هي أن … حسنًا … “تطوّر”، ربما تتظاهر ببناء شيئًا ما عبر اتباعك بعض الدروس، لكنك حقيقةً تقوم بتتبع خطوات معدة مسبقًا، الدروس طريقة جيدة لتبدأ بتطبيق المعرفة النظرية، لكنك ستحتاج لشحذ نفسك أكثر لمواجهة الواقع. ثلاث نصائح حتى تبدأ ببناء مشاريعك الخاصة …

1- قم بالعمل مع رفيق، حتى ولو مبتدأ مثلك، ستتفاجَأ بمدى سهولة العثور على أسباب المشاكل البرمجية، عندما يتفقد الكود أكثر من شخص.

2- اقرأ أكواد الآخرين، لكي تبدأ باكتساب الممارسات الجيدة، تساءل دائمًا لماذا قام المبرمج بكتابة الكود بهذه الطريقة، تفقد أي مكتبات أو حلول قام الآخرون بكتابتها من قبل.

3- ابنِ مكونات صغيرة، وابنِ باستمرار. يجب أن يكون لديك العديد من أفكار المشاريع الشيقة ببالك لبنائِها مستقبلًا، لكنك تحتاج لخبرة البحث وDebugging في البداية، كلما تعلمت شيئًا طبقه دوريًا لبناء مشاريعك الخاصة قسمه أجزاء صغيرة.

كيف تعبر مرحلة “صحراء اليأس”:

ريثما تعتاد على الـ Debugging فإنّ مشكلتك الكبرى ستصبح في كم المعرفة المطلوب منك، وكم الجهد الذي ستحتاجه لتعلمها، في هذه الحالة فإنّ ما تحتاجه هو طريق محدد … لذا فإنّ مفاتيح عبور هذه المرحلة هي كالتالي:

1- ليكن لديك هدفًا قويًا لما تريد إنجازه؛ لأنّه بخلاف ذلك فسينتهي بك الحال في دائرة مغلقة من تعلم كل ما يبدو شيقًا، وفي النهاية لن تكون جيدًا في أي منها.

2- اعثر على مسار محدد يقودك مباشرةً للهدف الذي قمت بوضعه، وتأكد بأنّه سيأخذك إلى هناك، سيكون عليك أن تبحث بعمق، وأن تتخطى الشعارات التسويقية والوجوه المبتسمة الموجودة على مواقع مساقات البرمجة.

3- ركز جيدًا وتجنب المشتتات؛ لأنّه إذا كنت من النوع الذي جذبه تعلم البرمجة، فإنّك في الغالب من النوع الذي يجذبه أي شيء شيق، عندما تصعب الأمور في البرمجة ستحتاج للمضي قدمًا، بدلًا من الجري وراء شيء آخر يبدو لامعًا.

كيف تعبر مرحلة “التحسن الرائع”:

هذه المرحلة من إحدى المراحل الانتقالية المخادعة، فلديك القدرة على بناء التطبيقات، لكنك تريد أن تصبح أكثر احترافًا، هذه بعض النصائح التي ستجعلك جاهزًا للعمل كمطور محترف.

1- تعلم واتبع أفضل الممارسات البرمجية، ستحتاج لأن تفهم الفرق بين إيجاد حل وإيجاد أفضل الحلول، الممارسات الجيدة هي الفاصل الكبير بين كتابة كود خاص بك يؤدي الغرض، وما بين بناء برامج ذات جودة في وظيفة حقيقية.

2- راجع خبراتك، أغلب الأمر أنّك تخطيت بعض الأمور الهامة أثناء مسيرتك، والتي ربما لا تعرف أنّك تخطيتها حتى الآن، تحتاج أن تراجع هذه الأمور وتقوم بإعادة دراستها.

3- تعلم المهارات المملة، والتي نادرًا ما قد تتعرض لها أثناء رحلتك، كالـ testing – data modeling – architecture – deployment لكن من السهل استيعابها في هذه المرحلة، وتعتبر أساسية لأي عملية تطوير برمجية.

إنّ المفتاح الرئيسي لاتباع النصائح السابقة هي أن تجد من يقيمك، من يتعلم بمفرده ربما يكون منتجًا أكثر من غيره. لكنه نادرًا ما يكتب كود منظم أو مهيكل بطريقة جيدة؛ ﻷنّ لا أحد يخبره بذلك، وهو نفسه لا يدرك المشكلة. الحقيقة أنّك ستحتاج -خمن ماذا- العمل مع أشخاصٍ آخرين أكثر خبرة منك. لتسألهم وتحصل منهم على تقييم … بعض مواقع الأسئلة كذلك ربما يساعد.

مترجم بتصرف – المصدر

29

شاركنا رأيك حول "لماذا تعلم البرمجة صعب للغاية؟! وكيف تجتاز المراحل الأربعة لتعلم البرمجة"