16-أغسطس-2015

حاول قراءة المزيد في مجالك دومًا (Getty)

الترا صوت- فريق التحرير

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

1- لم تبدأ بالخطوة الصحيحة ولا وفق المنهجية السليمة

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

اقرأ/ي أيضًا: 16 حقيقة تفسّر مكانة جوجل كأعظم شركة تكنولوجيا في العالم

2- أن لا تعرف بأي برنامج أو تقنية تبدأ عملية التعلم

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

لا يجب أن يغيب عن البال أن النظرية ليست سوى مجموعة محدودة من المفاهيم ولا يمكن لأي نظرية في الكون أن تقول كل شيء

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

كما يجب أن تضع في الاعتبار أن معظم المعارف المتعلقة بلغة برمجة ما، يمكن الاستفادة منها في العمل عبر اللغات الأخرى ولكن وفق خصائصها.

3-لا يمكنك تطبيق نظرية علمية تعلمتها وتحمل نفسك المسؤولية واللوم

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

 إلقاء اللوم على نفسك، أو فقدان الثقة بما تعلمته من أكبر الأخطاء التي يمكن أن تقع فيها

4- الغرق في المهمات دون حساب العواقب والمخاطر المتعلقة بالتقنية التي تعتمدها

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

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

اقرأ/ي أيضًا: ما هي تقنية جوجل "دوبلكس"؟.. 5 أجوبة كاملة

5- فقدان البوصلة، أي أن لا تعرف كيف تنجز المهمة البرمجية التي بدأتها

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

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

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

6- لديك حل المشكلة وتعرفه، لكنه لا يعمل بالشكل المرجو

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

اقرأ/ي أيضًا: الفضاء السيبراني.. امتداد حرب باردة بين واشنطن وموسكو

7- تحتاج المساعدة ولا تعرف كيفية الحصول عليها

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

في عالم البرمجة كل رمز تتعلمه يفيدك مستقبلًا ومستحيل أن يكون بلا فائدة

 

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

 

اقرأ/ي أيضًا: 

اختصارات جديدة تجعل استخدام "مستندات جوجل" أسرع وأسهل

لمواجهة حروب الإنترنت القادمة.. جيل جديد من "القراصنة الخلوقين" يتدرب