reverse engineering buddy [1]

خاطرة سريعة حول أسلوب جديد للتعلم

Mohamed Saif published on
2 min, 343 words
بسم الله الرحمن الرحيم، اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا وزدنا علمًا.

هذه خاطرة سريعة واقتراح غير مكتمل الأركان أردت تدوينها ولاحقًا أكمل تفصيلها بإذن الله.

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

كما هو معلوم أن المشروع النهائي يكون مشروعًا متواضع المستوى، هدفه في الأساس ليس الشرح العميق لخصائص ومكونات اللغة أو الأداة التي تتعلمها وإنما المرور السريع عليها. فتجد معظم الشروحات تدور حول الـ CRUD apps بإختلاف أنواعها. وأيضًا كما قلنا أن ذلك يناسب مستوى المبتدئ، لكن المستوى المتقدم ولو قليلًا يحتاج إلى تحديات أكبر من مجرد بناء مدونة أو to-do app.

وفي الحياة العملية وعند انضمامك لعمل جديد هل الحال دائمًا أن تبدأ المشروع من الصفر؟ أم أنك تنضم للفريق وقد قطعوا اشواطًا في المشروع؟ الإجابة واضحة!

الإقتراح هو أن تتعلم من قراءة الكود، والقراءة المنظمة لـ codebase مشروع ما مفتوح المصدر بنية التعلم منه يمكن تسميتها reverse engineering، والمقصود هو محاولة الفهم والإستفادة من الكود، والعائد والفائدة من قراءة الكود كبير ومتنوع نذكر بعض الفوائد على سبيل المثال لا الحصر :

  • learn new language features
  • clean code practices
  • design patterns in real project
  • using different helping tools like static code analysis, code metrics, debuggers,.. etc
  • using source control system like a pro
  • chances for contributing to open source projects

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

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