تعلم البرمجة ليس شيئا تفعله بين ليلة وضحاها، ولكنه لا يجب أن يكون مشروعا تعمل عليه طوال حياتك. هناك الكثير من الأشياء التي يمكنك أن تفعلها لتجعل عملية التعلم هذه أسهل وأسرع. واليوم سنتطرق لعدد من التكتيكات التي ستسمح لنا بتعلم أي لغة برمجية في غضون أقل من أسبوع وبتعلم لغة برمجية أقصد على الأقل أساسيات تلك الللغة، هذه التقنيات ستسمح لنا بتسريع عملية تعلم اللغات بإختالفها. بعد قراءتك لهته التقنيات ستبدو غريبة بعض الشيء ذلك يعود لإمكانية أنك لم تسمع بها من قبل، (ستكون المقالة طويلة نوعا ما لكن تعلم البرمجة أمر يستحق العناء) كما أن 4 خطوات هو عنوان المقالة فقط هناك عدد أكبر من الخطوات داخل هذه العناصر لذلك أنصحك أن تقرأها بتركيز. - روابط كل المنصات المذكورة ستكون في نهاية المقالة –
قرر أي لغة ستتعلمها ولا تركز سوى عليها
لا تقلق من إختيار أي لغة ستبدأ بها، فهو ليس بالتحدي الكبير وليس بالإختيار المصيري الذي سيكون قرار حياة أو موت (في أسوأ الحالات ستتوقف عن تعلم تلك اللغة بعد مرور فترة قصيرة جدا): فإختيارك للغة التي ترغب في تعلمها سيكون تجربة سريعة في حياتك فقط قرر وحدد المدة الزمنية لهته التجربة ( أسبوع، شهر، ثلاثة أشهر، ستة أشهر،عام...) أي مدة زمنية، فبعض الدراسات أقرت بأن المهام تتمدد وتتقلص حسب المدة الزمنية التي وضعتها في برنامجك لها، فكن ذكيا ولا تضع الكثير من الوقت. (ألا نخطط أننا سنراجع طوال الفترة الدراسية ثم نتماطل وننهي كل شيء ليلة الإمتحان فهذا مثال حي على أن نتائج هذه الدراسة صحيحة... مضحك أليس كذلك؟)
لكن عليك أن لا تحاول الأخذ من هنا وهناك! فعندما تقرر أي لغة ستبدأ بتعلمها (سواء كنت مبتدئا أو متقدما) عليك أن تتعلمها وحدها بدون أن تحاول تعلم أي شيء آخر وبالخصوص ألا تحاول أن تتعلم عددا من اللغات البرمجية في نفس الوقت، فهذا إن لم يكن مستحيلا فهو أمر جدّ صعب ومعقد، يمكن أن تقوم به عند إحترافك للبرمجة بصفة عامة وأقصد بالإحتراف العديد من سنوات الخبرة والعديد من اللغات البرمجية في قاموسك المعرفي فعند ذلك سيمكنك أن تستنتج طريقة عمل أي لغة برمجية في مدة جد قصيرة وسيمكنك فهم أي كود برمجي من دون أن تدرس اللغة التي برمج بها، لكن وكما قلت من قبل هذا سيتطلب منك عددا كبيرا من سنوات العمل في المجال وتعلما للكثير من لغات البرمجة. وهو أمر جد صعب إذا لم تكن تنوي أن تحترف البرمجة وتجعلها عملا رئيسيا لك.
إقرأ عددا من الشروحات المكتوبة في اللغة التي تتعلمها
بدخولك في عالم البرمجة (خصوصا إذا كنت جديدا) سيكون من المهم جدا أن تتعلم أبجديات وأساسيات كل لغة ولن تتمكن من بلوغ هذا سوى بقراءتك لعدد من الشروحات المكتوبة أو حتى بالفيديو، فكلمات عديدة ستكون جديدة عليك ) مثل models، controllers، lambda functions... إلخ) ولن تتعلم معناها سوى بشروحات مكتوبة مفصلة أو مشروحة بالفيديو. بحيث وبإطلاعك على هذه الشروحات سيبدأ عقلك بالوصل بين النقاط والربط بينها. يمكنك الإستمرار في قراءة هذه الشروحات حتى ولو لم تفهم منها حرفا واحدا بحيث وبقراءتك للعديد منها ستستطيع أن تفهم المصطلحات المستمعلة بالتدريج –مثل رياضة رفع الأثقال تماما-. أيضا يمكنك الدخول لمنصة codeacademy والتي تقدم دورات في تعلم أساسيات الكثير من لغات البرمجة مجانا، وبالتالي سيكون تنظيم قاعدتك عاملا مساعدا لك في إحتراف اللغة التي أنت بصدد تعلمها (وأقصد بتنظيم القاعدة هنا الأساس المتين الذي ستبني عليه مستقبلك البرمجي وليس المنظمة الإرهابية... مضحك أليس كذلك؟)
حاول أن تندمج في مجتمع لغتك البرمجية
تصرف وكأنك محترف في اللغة البرمجية التي تتعلمها، إعرف أفضل 10 مبرمجين بها وإعرف آخر ما قاموا ببرمجته على منصة github إقرأ أكوادهم (طبعا بعد فهم أساسيات اللغة البرمجية وهو الشيء الذي تطرقنا إليه سابقا) فهذه خطوة جد مهمة أن تقوم بدمج نفسك مع العالم الخاص باللغة البرمجية التي تتعلمها: المنتديات، المجتمعات مثل stackoverflow الذي نعتمد عليه نحن المبرمجون في أغلب الأحيان فهو مخلصنا عند كل مطب، بل ونعتمد عليه في إختصار الوقت وإيجاد أكواد تقوم بمهام معينة دون أن نضطر لكتابة سطر واحد. يمكنك أيضا البحث في الفيديوهات عن ملتقيات وورش العمل (فيديوهات طالما لا توجد هته المؤتمرات في عالمنا العربي أو أن عددها جد ضئيل) فبإطلاعك على هته الفيديوهات إبحث عن language confrences بحيث قم بتغيير language إلى اللغة التي تتعلمها مثلا python confrences، أو ruby confrences، ... وما إلى ذلك. التعلم من تلك الفيديوهات أمر صعب في بعض الأحيان لكن الهدف من مشاهدتها ليس تعلم لغة البرمجة بحد ذاته وإنما الإندماج في وسط اللغة البرمجية، وهذا الإندماج أمر بالغ الأهمية وله دور كبير في تسريع عملية التعلم (وهذا شيء ليس منحصرا في البرمجة فقط بل في كل المجالات) فأنا إذا طلب مني أن أقوم بمحاضرة غدا في مجال لا أعرف عنه شيئا أول شيء سأقوم به هو الإطلاع على الفيديوهات الخاصة بالمؤتمرات في هذا المجال (أو الإختباء في المنزل وعدم الذهاب للقيام بهته المحاضرة من الأساس)
بعد قيامك بالخطوات السابقة ستلاحظ أنك أذكى برمجيا عما كنت تعتقده، وهذا ليس سوى نتيجة قيامك بالخطوات السابقة فالبرمجة ليست بالمهارة الفطرية وهي ليست بالشيء الذي يتطلب ذكاء غير معهود فالكثير من المبرمجين لم يكمل دراسته حتى (مثل مارك زوكربورغ صاحب فيسبوك، الذي أتقن البرمجة في سن مبكرة وإستمر في إتقانها بعد خروجه من الجامعة –خروجه وليس تخرجه-).
طبق 25 شرح خاص باللغة البرمجية التي تتعلمها
لماذا 25 بالتحديد؟ لا تسألني فالعدد 25 أجمل من 21 أو 13 على الأقل بالنسبة لي، لكن يمكنك تعديله [20 ; 30] أمزح فقط فالعدد 25 هو العدد المعقول فهو ليس بالكبير وليس بالصغير ... من الأمور الأساسية التي أطبقها عند بداية تعلمي لأي لغة برمجة والتي تعتبر عاملا أساسيا في تعلمي للغات البرمجة التي أتقنها وهو الإطلاع على 25 شرح tutorial)) خاص باللغة التي أنا بصدد تعلمها وتطبيق هته الشروحات بحذافيرها، بعد قراءتك لعدد من الشروحات بدون أن تفهمها (العنصر 2 الذي تطرقنا إليه سابقا) أضف إلى ذلك تطبيقا لعدد 25 شرح للغة البرمجة المعنية، وستتقن هته اللغة في المدة التي تريدها (يمكنك مشاهدة بعض المسلسلات الخاصة بالبرمجة والإختراق لتشحن عزيمتك وأقترح عليك Sillicon Valley و Mr Robot) لنعد للموضوع: فتطبيق 25 شرحا لهو أمر قوي بالتأكيد، ما أقصده أنه ليس الكثير من الناس يفعلون هذا (الكسل وما إلى ذلك) فأغلب الناس التي "تريد" أن تتعلم البرمجة تطبق على الأكثر خمس أو ست شروحات ولا تصل لهذا العدد "الكبير". لذلك فالحصول على ماتريده (وهو تعلم لغة برمجة في حالتنا هذه) يتطلب منك أن تستحقه وتطبيق 25 شرح سيجعلك "تستحقه" بمعنى الكلمة. وأسرع طريقة للحصول على ما تريده هي القيام بالعمل وتطبيق 25 شرحا) مع تطبيق الخطوات السابقة واللاحقة بالطبع) ! في حالة البرمجة فهذا أمر جد سهل كونك ستتعلمها وأنت مستلق في فراشك في دفئ منزلك (لا أتكلم عن "دفئ" فصل الصيف بالطبع)، تسبح على الأنترنت في المدونات والمقالات ومشاهدة الفيديوهات بدون أن تحرك سوى أصابعك الصغيرة.. فالأمر ليس متعبا بل بالعكس فهو ممتع ! فكل شيء تم تقديمه لك على طبق من ذهب أكثر من أي وظيفة أخرى في أي مجال آخر تعرفه. فليس عليك أن تلتحق بالجامعة لتصبح مطور تطبيقات ويب مثلا أو مختبرا للإختراق مثلا (الكثير من مختبري الإختراق لم يلتحقوا بالجامعة نهائيا وتعلموا كل شيء على الأنترنت –طبعا وأخذوا شهادات عالمية بعد تجاوزهم لعدد من الإمتحانات التي تقدمها الشركات الكبرى اليوم: Google، compTIA، ...-) نعود للموضوع: فالمشكل الوحيد في البرمجة هو أنها تتطلب الكثير من العمل الجاد والمكثف، إختر 25 شرحا (أي نوع من الشروحات المتوفرة لا تقلق من تطبيق الشروحات طالما أنك تريد أن تحترف لغة البرمجة المطلوبة). يقول بروس لي: "أنا لا أخاف من الرجل الذي طبق ألف ضربة على مرة واحدة، أنا أخاف من ذلك الشخص الذي طبق ضربة واحدة عشرة الاف مرة"
فأنا لا أخاف من ذلك الشخص الذي يتقن الكثير من لغات البرمجة ويتعلم لغة برمجة واحدة كل ليلة، أنا أخاف من ذلك الشخص الذي يتقن لغة برمجة واحدة وتعلمها على مدى 25 يوم بحيث طبق شرح/اليوم (ليكون المجموع 25 شرح... يال الذكاء) ذلك هو الشخص الذي سيقوم بالعمل في شركة أمازون على تقنيات توصيل الطلبات عن طريق الدرون (طائرات بدون طيار) مثل Brian Beckman واحد من أبطالي.
فمبدأ الـ 25 شرح هو فكرة مني لأقول لك عزيزي القارئ take action أي قم بالتطبيق بإستمرار وبتواتر ثابت مثلا 50 شرح بمعدل شرح كل يومين أو 30 شرح بمعدل شرح كل يوم، كل شخص وظروفه بالتالي كل شخص وبرنامجه لتعلم اللغة التي يريدها فليس من هو متفرغ للتعلم كمن يعمل طوال النهار... أظن الفكرة وصلت الآن.
في النهاية، أشير أن البرمجة أصبحت علم العصر بحيث أن عددا كبيرا من المشاريع في العوالم المتقدمة (أمريكا خصوصا) تنطلق من كود بلغة برمجية معينة ويمكنك الإطلاع على سلسلة Sillicon Valley لتفهم ما أقصده. أتمنى أنني شددت من عزيمتكم في تعلم لغة برمجتكم المفضلة.. ولأولئك اللذين لم ينطلقوا فأنا أنصحهم بلغة python كونها أول لغة تعلمتها وساعدتني في فهم الكثير من اللغات بعد ذلك. دمتم بودّ.
الموضوع من طرف: أمين بن أودينة
ضمن مسابقة المحترف لأفضل تدوينة لسنة 2017