[Extra Credits] تريد أن تصبح مطوراً ؟ (الجزء الأول)

[Extra Credits] كيف تصبح مطوراً ؟ الجزء الأول

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

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

هذه الحلقة تأتي بعنوان: تريد أن تصبح مطوراً ؟ الجزء الأول (So You Want to be a Developer Part 1)

وهي تخاطب فئة المبرمجين – أو كما يحبون تسمية أنفسهم: المطورين – لإعطائهم نصائح قيمّة لكيفية تطوير أنفسهم في هذا المجال بالتركيز على تحسين التفكير التحليلي لحل المسائل التي تواجههم في كل سطر برمجي.

لمناقشة أفكار الحلقة، يمكنك التعليق بالأسفل.
مشاهدة ممتعة!

إذا كنت تفضل القراءة على مشاهدة الفيديو أو في حالة أن YouTube لا يعمل في العمل 🙂

تفضل نص الترجمة:

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

حسناً، فلنمضي!

طيب هؤلاء المبرمجين (أو كما يحب الكثير منهم أن يُنادوا، مطورين): ماذا يعملون في الحقيقة؟

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

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

طيب، كيف هو شكل هذا النوع من حل المشكلات؟ ديفيد هنا كانت له حكاية مساعدة جداً.

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

كان أسلوب هذه المادة مختلف عن بقية المواد التي أخذها من قبل. تلك المواد كانت بسيطة وواضحة: هنا حلقة برمجية، الآن اكتب بعض الأسطر البرمجية باستخدام الحلقات البرمجية. هذه المادة كانت تطالبهم بأن يعملوا أشياء ليس لديهم أدنى فكرة عنها. لم يكن هناك فصل في كتاب المادة عن توزيع حبوب M&Ms. لم يكن هناك موقع على الإنترنت يحتوي على درس يعلمهم كيفية بناء يد آلية من المحركات الدورانية ومكعبات الليجو( على الأقل ذلك الوقت، من الممكن أن يكون هناك واحداً الآن…). كان عليهم أن يكتشفوا الأمر.

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

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

إن كان هذا هو تعريف المطور، فمالذي يجعل الشخص متمكن في هذا المجال؟

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

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

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

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

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

للأسف، الاستكشاف هو عادة غير حميدة في مكان العمل بشكل عام – وعادة ما يكون هناك سبب وجيه لذلك:

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

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

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

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

أخيراً، تداخل مع المجتمعات العريضة. هناك الكثير من الأماكن التي تمكّنك من عمل ذلك – Hacker News، GitHub، IRC، وحتى Slashdot أو Stack Overflow!. والأحسن من ذلك، تداخل مع مجتمعات المصادر المفتوحة واعط قليلاً من جهدك لهؤلاء المجتمعات. إذا كنت في مدينة كبيرة، ابحث عن مجموعة تطوير محلية لمقابلتهم. كل ذلك سيساعدك لاكتشاف عالم البرمجة العريض جداً. هذه الأساليب ستعلمك أفكار جديدة، مهارات جديدة، وأدوات جديدة لحل المسائل.

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


 

أعجبك المحتوى؟

 نأمل منك التفضل بتسجيل بريدك الإلكتروني حتى نرسل لك التدوينات القادمة في المجالات التي تهمك:

لا تقلق، نحن أيضاً لا نحب السبام 🙂

مهتم بتدوينات:


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

أشرف باروم

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

اخر المقالات
التعليق ( 1 )
  1. [Extra Credits] تريد أن تصبح مطوراً ؟ (الجزء الثاني) - Xash | زاش
    أبريل 11, 2014 at 3:16 م
    رد

    […] تتمة للحلقة الأول التي تخاطب فئة المبرمجين – أو كما يحبون تسمية […]

‎اضف رد