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

قدرة استثنائية على تعلّم المهارات الجديدة بسرعة
التعلّم الذاتي مهارة لا غنى عنها لكل مطوّر. فعلى المطوّرين مواكبة مشهد يتغيّر باستمرار لمجرد البقاء على صلة بالتقنيات الجديدة التي تظهر بوتيرة متسارعة. ويتقن المطوّرون العظماء مهارة التعلّم الذاتي، فهم حاضرون في المجتمعات التقنية على الإنترنت، ويعرفون بالفطرة أين يبحثون عن المعلومات الجديدة، ويفهمون كيف يستخدمون الأدوات المتاحة لهم بأكبر فاعلية. والمطوّرون الاستثنائيون لا يتعلّمون عادةً لأن وظائفهم تتطلب ذلك فحسب، بل كثيرًا ما يتعلّمون لأن التعلّم نفسه هو ما يحرّكهم؛ فاكتشاف تقنيات جديدة وتطبيقها على مشاريعك الخاصة أمر ممتع ومجزٍ فعلًا. وتعلّم التقنيات والأساليب والمنهجيات الجديدة يبني شبكة من المعرفة يمكنكم الرجوع إليها لحل المشكلات مستقبلًا. وكلما اتسعت المعرفة التي تستندون إليها، زادت فاعليتكم في حل التحديات الجديدة، بل والقديمة أيضًا. وإذا كنتم تسعون إلى تحسين مهاراتكم، فأنصحكم بتعلّم لغة برمجة جديدة، أو حتى framework أو منهجية جديدة باللغات التي تعرفونها بالفعل. فتعلّم اللغات وأطر العمل الجديدة طريقة رائعة لتحسين المهارات لأنه يوسّع نظرتكم إلى العالم توسيعًا كبيرًا. وكثيرًا ما تتبنى المجتمعات ممارسات فضلى خاصة بإطار عمل معيّن تحبسكم داخل صندوق، وهذا ليس سيئًا بالضرورة، لكن من الجيد دائمًا أن تتوفر لديكم أدوات أكثر.
معرفة واسعة النطاق
قد يكون التطوير مخيفًا، فهناك الكثير مما يجب تعلّمه، وربما أكون منحازًا، لكنني أرى أن هذا ينطبق على تطوير الويب بشكل خاص. وإذا أردتم أن تصبحوا ذوي قيمة حقيقية، فمن المهم أن تخرجوا من منطقة راحتكم كلما استطعتم. فتعلّم المزيد عن http وdev-ops وكتابة السكربتات وتخصيص الذاكرة وأداء قاعدة البيانات وغيرها، كلها مجالات لا تجعلكم بالضرورة مطوّري Ruby on Rails أفضل، لكنها ستجعلكم حتمًا موظفين أو متعاقدين أعلى قيمة. وخلال سنوات عملي مطوّرًا، شهدت تحوّلًا من مطوّري frontend وbackend وdev-ops شديدي التخصص إلى مطوّرين أكثر شمولًا. وظلّ مصطلح Full-stack رائجًا لفترة لسبب وجيه، فكثير من الشركات الناشئة والشركات الصغيرة الراسخة تحتاج إلى مطوّرين يستطيعون التنقل بين الأدوار كثيرًا. والقدرة على أداء مهام متعددة فعّالة جدًا من حيث التكلفة، خاصة للشركات الناشئة في مراحلها الأولى والوكالات، لأنها تحتاج إلى المرونة. كما أن المعرفة الواسعة تمنحكم فهمًا أعمق للنظام الكامل الذي تعملون عليه، ما يعطيكم أفضلية في التخطيط وتصحيح الأخطاء (debugging). فستتمكنون من تحديد مواطن الضعف والقوة المحتملة في الأنظمة التي تستخدمونها، وستختارون الاستراتيجية الصحيحة بسهولة أكبر. كما ستراودكم حدوس عن مصدر الخطأ (bug) عندما تعرفون النظام من الداخل والخارج. ومن الأمور التي ساعدتني على توسيع قاعدة معرفتي التعمق في الكود مفتوح المصدر، بل والمساهمة فيه. ففهم التبعيات التي تعتمدون عليها طريقة رائعة لتوسيع مجموعة مهاراتكم، إذ سترون الأدوات التي تستخدمها هذه التبعيات، وكثيرًا ما ستجدون أيضًا shims وحلولًا التفافية للأنظمة التي تعمل عليها.
التواصل بجميع أشكاله
من أبرز المجالات التي يواجه فيها كثير من المطوّرين صعوبة مهارات التواصل. فمن المهم أن يستطيع المطوّر التواصل على مستويات متعددة، وأن تصل رسالته بالصيغة المناسبة. فإذا كنت أتحدث مع عميل، فلن أشرح له التفاصيل الدقيقة لمنطق ميزة ما، فهذا ليس ما يحتاجه، بل يحتاج إلى نظرة عامة عالية المستوى على الأكثر. وكثيرًا ما لا يحتاج حتى إلى ذلك، بل يكفيه أن يرى بعض التصاميم لتشرح له ما يحدث عندما ينقر المستخدم على زر "ادفع الآن". وعندما أناقش الميزة نفسها مع مدير المشروع، قد أدخل في تفاصيل أكثر، وأناقش أيضًا العوائق والتحديات المحتملة. وإذا تحدثت مع مطوّر، فسأدخل في التفاصيل التقنية لطريقة تنفيذ الميزة. لكن التواصل لا يقتصر على عرض المعلومات بما يناسب مستويات الفهم المختلفة. بل عليكم أيضًا أن تتذكروا الالتزام بالمهنية. وأنا أقدّر المهنية كثيرًا، وأراها أساسية لبناء علاقات قوية مع العملاء. فالأمر لا يتعلق بإقامة ستار من الدخان، بل عليكم أن تكونوا شفافين مع الحفاظ على مستوى من المهنية يبقي الحوار مركّزًا ومتجهًا نحو الإنتاج. فالمهنية في الحوار تساعد على بناء إطار للتواصل الفعّال وسير العمل والتسليم. وتطوير مهارة التواصل ليس أمرًا سهلًا، فقد اضطررت إلى تعلّمها بالطريقة الصعبة عبر سنوات من العمل الحر، دون فريق يرشدني. وهناك مدونات كثيرة تناقش أساليب تحسين مهارات التواصل، لذا أنصحكم بالبحث عنها إذا كان الموضوع يهمكم. وما زلت أواجه صعوبة في بعض الأمور، مثل عدم التحدث ببطء كافٍ، خاصة عند مناقشة المشكلات التقنية. فالمشكلات التقنية تحتاج إلى وقت لاستيعابها، لذا من المهم أن تمنحوا المستمع وقتًا لمعالجة المعلومات وطرح الأسئلة قبل الانتقال إلى الجملة التالية. وتذكّروا أيضًا أن جزءًا كبيرًا من التواصل ليس كلامًا، بل إصغاء ومراقبة ووعي بجمهوركم.
التفكير في الصورة الكبيرة والصورة الصغيرة
إذا أتقنتم هذا الفن، فستتقدمون على كثيرين. فليس من السهل التفكير في الصورة الكبيرة والصورة الصغيرة، وخاصة في الوقت نفسه. فهذا بطبيعته تنقّل بين السياقات، لكنه أيضًا انتقال إلى سياق نادرًا ما يحتاج كثير من المطوّرين إلى التفكير فيه. ماذا أعني بالصورة الكبيرة والصورة الصغيرة؟ الأمر في الواقع ليس بهذا الوضوح، فلا يوجد خط فاصل حقيقي بين الصورة الصغيرة والكبيرة. فهناك صور كبيرة داخل الصورة الصغيرة، وصور صغيرة داخل الصورة الكبيرة. وما أعنيه حقًا هو النظر إلى المشكلة أو الميزة من زوايا مختلفة. فنحن المطوّرين لا ننظر عادةً إلا إلى الصورة الصغيرة: كيف أنفّذ هذه الميزة؟ وربما ننظر إلى صورة أكبر قليلًا: كيف يندمج هذا المنطق في التطبيق ككل؟ أما الصورة الكبيرة الحقيقية فتتمثل في أسئلة مثل: هل هذه الميزة ذات قيمة حقيقية للعملاء؟ هل من المجدي اقتصاديًا بناء نظام CMS كامل بينما كل ما نريده هو تغيير صورة الواجهة الرئيسية (hero image) كل شهر؟ هل يجب أن نبني هذا بأنفسنا فعلًا بينما يمكننا الدفع مقابل خدمة من طرف ثالث؟ قد يبدو أنكم لا تحتاجون إلى هذا بوصفكم مطوّرين، لكنكم ستجدون عمليًا أن كونكم المطوّرين يعني غالبًا أنكم أكثر معرفة من عميلكم في مجالات أخرى غير البرمجة. فقد لا يعرف عملاؤكم إجابات هذه الأسئلة، وإذا كان يهمكم تقديم أفضل حل لاحتياجات عميلكم، فهذه مهارة قيّمة جدًا ومحل تقدير. وقد لاحظت أن من عملوا في العمل الحر أو أداروا منتجاتهم الخاصة يكونون عادةً أفضل بكثير في هذا النوع من التفكير لأنهم اضطروا إلى ممارسته. فعندما يكون مصدر رزقك على المحك، تضطر إلى الوضوح. ومع ذلك، يمكنكم بالتأكيد التحسّن في هذا المجال بمجرد أن تحرصوا على التفكير فيه عند مناقشة التحديات. اطرحوا على عملائكم أسئلة "لماذا" الخمسة (ليس بالضرورة خمسة، بل تعمّقوا قليلًا لتفهموا منطقهم حقًا)، وانظروا إن كان بإمكانكم المساعدة في كشف حلول بديلة ربما لم يتوصلوا إليها.
القدرة على النقد وتقبّل النقد جيدًا
من أثمن ما يمكنكم فعله لتطوير أنفسكم أن تسعوا بنشاط إلى نقد الكود الذي تكتبونه والأساليب التي تتبعونها. وعليكم أن تتحملوا ما سيقوله الناس عن الكود الذي تكتبونه. فكثيرًا ما يقول مطوّرون آخرون أشياء تبدو قاسية، حتى عندما تكون نواياهم حسنة. فقد تكون الأنا لدينا هشة، لكن يمكنكم تعلّم الخروج من هذه العقلية. وإذا بدت الأمور قاسية، فتراجعوا خطوة وتذكّروا أن كود الجميع كان سيئًا في وقت ما. بل إن الكود القديم الذي كتبتموه سيئ، اذهبوا واقرؤوه. هكذا هو كود الجميع، لأن قراءة الكود أصعب بكثير من كتابته. وخلال مسيرتكم المهنية، ستمرّون بمواقف كثيرة ترون فيها كودًا "دون المستوى" وتتساءلون من كتبه، لتكتشفوا أنكم أنتم من كتبه. يا للهول! ومن أفضل الطرق لتقوية جلدكم أن تقدّموا أنتم الملاحظات لمطوّرين آخرين، وأن تحاولوا صياغتها بطريقة ودية وبنّاءة. وستدركون أن ذلك ليس سهلًا. وهذا الإدراك يساعدكم على تلقي الملاحظات على عملكم بنظرة أكثر إيجابية.
روح الفريق
تعلّم العمل الجيد مع الآخرين مهارة يمكن تنميتها. فالمبرمجون يعملون في فرق في كل الأحوال تقريبًا. وأعضاء الفريق العظماء لا يكتفون بكتابة الكود، بل يساهمون بنشاط في نجاح الفريق ككل. فهم يبحثون عن المشكلات في سير العمل، وعن طرق لتحسين التواصل وزيادة الإنتاجية. ومن المهم بناء العلاقات داخل الفريق، وبصفتكم أعضاء فيه، فمن مسؤوليتكم أيضًا المساهمة في أن يصبح مجموعة فعّالة. ويمكن للشركات أن تساعد في ذلك بتنظيم فعاليات للفريق وتشجيع الاحتفالات الجماعية، لكن هناك أمورًا أخرى يمكنكم فعلها أيضًا. فمشاركة المعرفة مع أعضاء الفريق طريقة رائعة لبناء العلاقات، كما أنها تعزز الإنتاجية. ومساعدة زملائكم في الفريق لا تخلّصهم من مشكلتهم فحسب، بل تمنحكم أيضًا فرصة لاستكشاف كود ربما لم تروه من قبل. فزميلكم قد استوعب الكود بالفعل، وبالتالي سيستطيع أن يقدّم لكم الخلاصة بسرعة. وهذه فرصة فريدة لفهم الكود دون أن تقضوا ساعات في بناء الخريطة الذهنية بأنفسكم.
أين تعملون لتطوير مهاراتكم؟
أرى أن هناك عدة طرق رائعة لتصبحوا مبرمجين متميزين. أحدها أن تعملوا في العمل الحر، فهذا سيحسّن مهاراتكم الشخصية بسرعة، وخاصة مهارات التعامل مع العملاء. لكن الطريق الأفضل برأيي هو الانضمام إلى وكالة تطوير متميزة. فأماكن مثل OOZOU رائعة لاكتساب المعرفة، مع الحرية والتوجيه اللازمين لممارسة مهارات أخرى. ومع الشركة المناسبة، ستتمكنون من تحمّل القدر الذي تريدونه من المسؤولية، وستمنحكم مساحة كبيرة للنمو في مجالات ربما لا تكون متاحة لكم في مكان آخر. لا أقصد أن يكون هذا إعلانًا، لكنني أنصح بـ OOZOU بشدة، فلماذا لا تلقون نظرة على صفحة الوظائف لدينا لتروا كيف يمكنكم الانضمام إلينا؟


