# التقليد

Home PDF

في مراجعة تجربتي في تعلم Android وiOS، أدركت أن الكثير من المعرفة القيمة التي اكتسبتها كانت من خلال التقليد.

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

باستخدام هذه الطريقة، تمكنت من تذكر تعلم كيفية كتابة سحب التحديث وتدفق الشلال (Pull-to-Refresh and Waterfall Flow) في Android، وواجهة المستخدم المكتوبة يدويًا في iOS، وغيرها من الأشياء بعمق.

تجربة سحب التحديث (Pull to Refresh) في Android كانت المرة الأولى التي أتحكم فيها مباشرة في العرض (View) دون استخدام XML، كما أنني تعلمت كيفية التعامل مع الإيماءات (Gestures). كانت هذه التجربة بمثابة قفزة نوعية بالنسبة لي. في بعض الأحيان، أثناء نسخ كود المؤلف الأصلي، كنت أتفاجأ بفهم مفاجئ للأمور. هناك أشياء لا يمكن اكتشافها بمجرد التفكير، لأننا نغفل عن الكثير من التفاصيل أثناء القراءة، ولا نلاحظ الأشياء المهمة. ولكن عند كتابة الكود والتعامل معه يدويًا، يصبح الشخص أكثر انخراطًا، ويبدأ في التساؤل عن “لماذا”، مما يجعله يلاحظ المزيد من التفاصيل، وبالتالي يفهم الموضوع بشكل أفضل. على سبيل المثال، في تأثير Parallax الذي تحدثت عنه في منشوري السابق، لم أكن أعرف في البداية أن الصورة الخلفية ستتحرك سواء كانت موضوعة أفقياً أو عمودياً. ولكن أثناء كتابة الكود وتقليده، لاحظت العديد من الأشياء، وتعلمت طريقة لإنشاء تأثير الزجاج المعتم (Blur Effect).

في السابق، كنت أستخدم xib بكثرة في iOS، وقد جربت كتابة الكود يدويًا عدة مرات ولكني استسلمت. عندما كنت أحاول تقليد مشروع يشبه “دائرة الأصدقاء” (مثل WeChat Moments)، شعرت كما لو أنني أنسخ الكود. معظم الأجزاء كانت متشابهة تمامًا، باستثناء بعض الاختلافات في الأسماء أحيانًا. ومع ذلك، لاحظت العديد من الأشياء المهمة في كتابة الكود يدويًا. على سبيل المثال، في حالة خلايا القوائم (list cells)، إذا كان الارتفاع يتغير بناءً على المحتوى، يجب عليك حساب الارتفاع قبل رسم الخلية. ثم تقوم بتمرير هذا الارتفاع إلى الجدول (tableview). كيف يمكن حساب الارتفاع؟ إحدى الطرق هي استخدام عرض ثابت لحساب الارتفاع. هذه الأشياء تصبح واضحة عندما تنسخ الكود وتلاحظ التفاصيل.

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

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

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

تقليدًا لها!


Back 2025.01.18 Donate