9 عادات أتمنى لو امتلكتها كمطور مبتدئ: دليل شامل للنمو المهني
هل توقفت يوماً لتتأمل عاداتك اليومية؟ إن العادات هي التي تشكل هويتنا وتحدد مسارنا. فالعادات الجيدة تدفعنا نحو تحقيق طموحاتنا، بينما تعيقنا العادات السيئة عن الوصول إلى ذواتنا المثلى. بعد أكثر من 12 عاماً من العمل كمطور برمجيات، اكتسبتُ مجموعة من العادات التي أفتخر بها، وأخرى أتمنى لو تخلصت منها.
في كثير من الأحيان، لم أكن أدرك تأثير هذه العادات، ولكن بالنظر إلى الوراء، أصبح من الواضح تماماً أيها ساعدني على النمو وأيها كان عائقاً. هذا الإدراك دفعني إلى تقييم عاداتي والكتابة عن أفضل الممارسات التي يمكن أن يتبناها المطورون، على أمل أن ألهمك للقيام بالمثل. إذا كنت في بداية مسيرتك كمطور، فراجع العادات التسع الموضحة أدناه واسأل نفسك: هل ستساعدني هذه العادات على أن أصبح المطور الذي أطمح إليه؟ كن واعياً لعاداتك واعمل بنشاط على صقلها لتصبح مطور برمجيات استثنائياً.
1. بادر بتولي المهام غير المألوفة: مفتاح التعلم المستمر
في بداية مسيرتك المهنية، قد تشعر أن معرفتك محدودة. تدخل مشروعاً جديداً وتسيطر عليك متلازمة المحتال (Impostor Syndrome) لأنك تتلقى أجراً مقابل عمل لا تفهم نصف مصطلحاته أو تقنياته أو أطر عمله التي تُذكر في كل اجتماع. أما النصف الآخر، فربما تعرفه بشكل مبهم لأنك بحثت عنه في Google.
استبدل عبارة “في بداية مسيرتك المهنية” بـ “في بداية أي مشروع جديد”، وستحصل على ملخص دقيق لمسيرة تطوير البرمجيات. ففي كل مشروع جديد، نبدأ من الصفر: أشخاص جدد نتعرف عليهم، متطلبات جديدة نفهمها، وأطر عمل جديدة نتعلمها. هذا هو الواقع في كل مرة.
لهذا السبب، من الضروري أن تتعلم أشياء جديدة باستمرار. إذا اكتفيت بفعل ما تعرفه فقط، فلن تشعر بالثقة أبداً عند بدء مشروع جديد، وسيظل الخوف من المجهول يسيطر عليك.
إذا جعلت من عادتك التطوع للمهام التي لا تعرف عنها شيئاً، فستكتسب معارف جديدة باستمرار.
- إذا كان نظام البناء (
build system) يحتاج إلى إصلاح ولم تعمل عليه من قبل، بادر بالتعامل معه! ستتعلم عن إدارة البناء. - إذا كان هناك خطأ في الواجهة الأمامية بلغة
JavaScript، بينما عملت فقط على الواجهة الخلفية بلغةJavaحتى الآن، أصلحه! ستتعلم أنماطاً جديدة فيJavaScript.
القيام بمهام لا تشعر بالثقة الكاملة تجاهها هو طريقة رائعة للنمو. ومع ذلك، تأكد من إدارة توقعات الآخرين منك. لا تتظاهر بأنك خبير، بل أخبرهم أنك لم تقم بذلك من قبل ولكنك حريص على التعلم.
2. اطلب العمل الثنائي (Pair Programming): تسريع التعلم وحل المشكلات
إذا واجهتك عقبة ولم تتمكن من البدء في مهمة ما بسبب عدم إلمامك بالسياق، اطلب من زميل ذي خبرة في الموضوع أن يعمل معك بنظام البرمجة الثنائية (Pair Programming). جلسة العمل الثنائي هي طريقة ممتازة لبدء العمل على مهمة.
فوائد العمل الثنائي:
- فهم المتطلبات: ناقش المتطلبات مع شريكك حتى تتوصلا إلى فهم واضح لما هو متوقع.
- استكشاف الحلول: ناقش الحلول المحتملة. ما هو السياق؟ ما هي قواعد البيانات (
codebase) التي يجب التعامل معها؟ ما هي الاتفاقيات الصريحة والضمنية في قاعدة البيانات؟ - التعلم المتبادل: يمكنك تطوير العمل الثنائي إلى أبعد من مجرد بدء مهمة، خصص وقتاً أطول مع شريكك. بعد البدء في الموضوع، ابدآ العمل معاً. أنت تقود، وشريكك يقدم النصائح، ثم العكس. بهذه الطريقة، ستتعلم حتى كيف يفكر شريكك ويحل المشكلات. لا يمكنك إلا أن تستفيد من ذلك، حتى لو كان مجرد اختصار جديد لبيئة التطوير المتكاملة (
IDE) تعلمته.
العمل الثنائي في بيئة العمل عن بُعد:
ملاحظة حول العمل من المنزل: بسبب العمل عن بُعد، واجهت صعوبات في أمور لم تكن مشكلة من قبل. ترددت في طلب العمل الثنائي مع زملائي. ما كان مجرد نقرة بسيطة على كتف الزميل في المكتب أصبح حاجزاً كبيراً عند العمل عن بُعد والتواصل عبر برامج مؤتمرات الفيديو. إذا كانت هذه مشكلة في فريقك، تحدث عنها مع زملائك (في اجتماع retro، على سبيل المثال)، وستصبح الأمور أسهل بكثير بعد ذلك. اتضح أنها مجرد عادة تحتاج إلى إعادة تعلم.
3. تواصل بفاعلية حول تقدمك وعقباتك: إدارة التوقعات بذكاء
لا أتذكر كم مرة توليت مهمة بحماس، معتقداً أنني سأنهيها في غضون يوم واحد، لأجد نفسي أعمل عليها بعد أسبوع كامل. تتحسن هذه المهارة مع الخبرة، لكنني ما زلت أجد نفسي أقدم تقديرات متفائلة للغاية. هناك العديد من الأسباب للتقديرات المتفائلة: ضغط تسليم الميزة الجديدة بسرعة بسبب اقتراب الموعد النهائي، الرغبة في الظهور بمظهر جيد بين الزملاء، أو ببساطة عدم سير الأمور كما أتوقع (وهذا هو السبب الأكثر شيوعاً الذي يربكني، حتى بعد سنوات من الخبرة)، وغيرها الكثير…
لماذا التواصل المستمر ضروري؟
من المحتمل أن تكون معظم تقديراتك متفائلة جداً. فماذا يمكنك أن تفعل حيال ذلك؟ يمكنك إدارة التوقعات باستمرار. تحدث باستمرار عما تفعله وما يعيقك. بـ “باستمرار” لا أقصد أن تقدم تحديثاً للفريق بأكمله كل 15 دقيقة، ولكن تأكد من أن الأشخاص المعنيين يعرفون موقفك في بداية أو نهاية اليوم على الأقل.
لذا، إذا كان مديرك / فريقك / مدير المشروع / مدير المنتج / أصحاب المصلحة يتوقعون منك نتائج، قدم لهم تحديثاً سريعاً كل يوم: “هذا ما كنت أفعله. هذه هي الخطوة التالية. هذه مشكلة أواجهها. هذه هي الخيارات المتاحة.”
فوائد التحديثات المنتظمة:
- الشفافية: سيتيح هذا للجميع معرفة تقدمك.
- تجنب اللوم: لن يلومك أحد إذا واجهت عقبة، طالما أنك أبقيتهم على اطلاع. هذا سيجعل النقاشات من نوع “لماذا استغرق هذا وقتاً طويلاً؟” شيئاً من الماضي.
- تحفيز الحلول: كفائدة إضافية، سيؤدي تحديث الحالة إلى نقاشات قد تساعد في حل المشكلات.
في أفضل الأحوال، يكون تحديث الحالة هذا طقساً يومياً في الفريق، ويُعرف عادةً باسم “الاجتماع اليومي السريع” (daily standup) حيث يقوم كل عضو في الفريق بتحديث سريع لبقية الفريق حول تقدمه ومشكلاته. ولكن حتى لو كان لديك طقس يومي كهذا، خصص بضع دقائق للتفكير فيما إذا كان هناك أي شخص يجب تحديثه ليس جزءاً من الطقس اليومي. هل يجب إشراكهم؟ أم يجب تحديثهم من خلال آلية أخرى؟ اجعل من عادتك تحديث الأشخاص المهتمين بنتائج عملك بانتظام.
4. اكتب مدونة: رحلة التعلم والنمو عبر التوثيق
ربما لست أول من تسمع منه هذه النصيحة، لكنني سأكررها: اكتب مدونة! لا يجب أن تكون عامة بالضرورة. يمكن أن تكون بضع صفحات في موسوعة داخلية للشركة (company wiki) أو مجموعة من مستودعات GitHub تحتوي على أمثلة برمجية مع بضعة أسطر توضيحية.
لماذا يجب أن تكتب مدونة؟
لأن الكتابة بهدف تعليم الآخرين (حتى لو كان ذلك لـ “ذاتك المستقبلية”) هي طريقة رائعة للتعلم والنمو.
- اكتب عن كيفية حل مشكلة معقدة.
- اكتب عن كيفية استخدام إطار العمل الجديد والمثير الذي طالما أردت تجربته.
- أو اكتب يوميات عما فعلته كل أسبوع (سيساعدك هذا أيضاً في عادة “التحدث عما تفعله” لأنه يمكنك الرجوع إلى ما كنت تفعله).
تحديات البداية وكيفية التغلب عليها:
لقد بدأت مدونة عدة مرات. من الصعب الحفاظ على الدافع في البداية، لأن لا أحد سيقرأ منشوراتك. يبدو الأمر غريباً أن تكتب في الفراغ، لذلك توقفت. ثم، بدأت مدونتي الحالية قبل 3 سنوات، وكتبت بدون جمهور لمدة نصف عام. عندها فقط لاحظت أن ملف robots.txt الخاص بي لم يكن يسمح لمحركات البحث بفهرسة مدونتي! لذا قمت بتغيير ملف robots.txt، وبدأ الناس بالفعل في قراءة محتواي. ليس الكثيرون، لكن هذا أعطاني الدافع للاستمرار.
النتائج المذهلة للمثابرة:
لقد ثابرت، وصقلت مهاراتي في الكتابة على طول الطريق، ونمت مدونتي لتصل إلى أكثر من 200,000 مشاهدة صفحة شهرياً. كل هذا حدث لأنني بدأت أكتب عن أطر العمل التي أردت تعلمها والمشكلات التي حللتها، حتى أتمكن من الرجوع إلى مقالاتي مرة أخرى عندما أحتاج إليها، وليس لأنني أردت إنشاء جمهور كبير.
التدوين عمل شاق في البداية ولكنه يمكن أن يصبح مجزياً للغاية إذا التزمت به. إذا قمت بذلك بنية التعلم والتعليم، فلن تتعلم الكثير فحسب، بل سيلحظ الآخرون مدونتك في النهاية وستفتح لك عالماً كاملاً من الفرص.
5. امتلك دفتراً ونظاماً: تحرير العقل وتنظيم الأفكار
لقد أصبحت مؤخراً من أشد المعجبين بالدفاتر (notebooks)، ليس الدفتر المحمول (laptop)، بل الدفتر الورقي الحقيقي. أحمله (وقلماً!) أينما ذهبت، حتى أتمكن من تدوين أي شيء يبدو مهماً لي في أي وقت. أدوّن الملاحظات عندما أستمع إلى محاضرة، أو عندما أنتظر الحافلة، أو حتى عندما أفكر فيما يمكنني تحضيره للعشاء هذا الأسبوع.
استخدامات الدفتر المتعددة:
- تنظيم الأفكار: أستخدم الدفتر أيضاً للاحتفاظ بالقوائم: كتب أرغب في قراءتها، أطر عمل أريد تجربتها، ميزات أرغب في إضافتها إلى مشاريعي الجانبية.
- حفظ المعرفة: الأهم من ذلك، أنني أستخدمه لتدوين الملاحظات أثناء قراءة الكتب، لأن ذلك يحفظ التعلمات المستخلصة منها.
- تخفيف القلق: أكتب كل ما يشغل بالي. إذا لم أكتبه، فسيظل يشغل عقلي، أحياناً لدرجة أنني أشعر بالقلق وأجد صعوبة في النوم. السبب في شعوري بالقلق بدون دفتري هو أنني لا أثق بذاكرتي. إذا كانت لديك ذاكرة قوية ويمكنك تذكر كل ما فكرت فيه قبل أسبوع، فربما لا تحتاج إلى دفتر. ولكن إذا كانت ذاكرتك متقطعة مثل ذاكرتي، فسيحدث الدفتر فرقاً كبيراً في راحة بالك.
بناء نظام فعال لدفترك:
لبناء الثقة في دفترك، تحتاج إلى نظام. يجب أن تقنع عقلك بأن كل ما تضعه في الدفتر لن يضيع.
- فهرس منظم: أنشئ فهرساً في الصفحات الأولى من الدفتر لجعل المعلومات قابلة للاسترجاع.
- مراجعة ومعالجة دورية: ثم، اجعل من عادتك مراجعة ملاحظاتك بانتظام ومعالجتها. لمعالجة الملاحظات التي أدوّنها أثناء قراءة كتاب، على سبيل المثال، أقوم بمراجعة الملاحظات كلما انتهيت من الكتاب وأكتب مراجعة للكتاب على مدونتي. لا يقرأ أحد تقريباً هذه المراجعات، لكن عملية كتابة المراجعة تجعل الأشياء التي تعلمتها تترسخ بشكل أفضل بكثير.
6. سجل انتصاراتك وإنجازاتك: تعزيز الثقة والتحضير للمراجعات
يمكن أن يساعد امتلاك دفتر في العادة التالية: توثيق إنجازاتك. كما ذكرت، ذاكرتي متقطعة في أفضل الأحوال. عادةً ما أتذكر ما تناولته للغداء بالأمس، ولكن إذا كنت مركزاً بعمق وأبذل طاقة ذهنية في مشكلة معقدة، فإن كفاءة ذاكرتي تتراجع بشكل كبير.
لماذا توثق إنجازاتك؟
لهذا السبب أحب توثيق إنجازاتي في نهاية اليوم. عادةً ما تكون إنجازات صغيرة وليست كبيرة – مثل التغلب على خطأ برمجي (bug)، أو إكمال إحدى الخطوات العديدة نحو إضافة ميزة جديدة إلى البرنامج الذي أعمل عليه. كما أوثق الانتصارات الشخصية مثل الالتزام بروتيني الرياضي الصباحي.
كيف توثق إنجازاتك؟
أقوم ببساطة بإنشاء قائمة بنقاط تعدادية كل مساء في دفتري، ولكن يمكن أن ينجح الأمر أيضاً باستخدام وسيط رقمي مثل جدول البيانات (spreadsheet) أو أي شيء تشعر بالراحة معه – طالما أنك تلتزم به.
فوائد توثيق الإنجازات على المدى الطويل:
مع مرور الوقت، تتراكم الإنجازات. قد ترغب في تحديد الإنجازات الأكثر أهمية بالنسبة لك حتى تتمكن من العثور عليها بسهولة لاحقاً. ثم، في مناسبة مثل مراجعة الأداء (performance review)، يمكنك مراجعة تلك القائمة، والعثور على الإنجازات ذات الصلة بتلك المناسبة، وسردها للتحضير. مراجعات الأداء تكون دائماً أفضل عندما تكون مستعداً. كما أن وجود قائمة بإنجازاتك يساعد في المواقف اليومية للتحدث عما كنت تفعله (انظر العادة “تحدث بفاعلية حول تقدمك وعقباتك”).
7. خصص وقتاً للمهام الهامة: حماية إنتاجيتك من التشتت
في نهاية اليوم، غالباً ما أشعر أنني لم أنجز شيئاً. بينما يساعد توثيق انتصاراتك أو حتى مجرد الأشياء التي قمت بها، إلا أنك ما زلت بحاجة إلى القيام بتلك الأشياء بالفعل. يحدث بسرعة أن تنتقل من اجتماع إلى اجتماع وفجأة ينتهي اليوم. بعد اجتماع، تريد متابعة المهمة التي بدأتها قبل الاجتماع، ولكن بمجرد أن تبدأ في التركيز، يبدأ الاجتماع التالي. وبعد ذلك الاجتماع، عليك أن تبدأ من جديد، لأنك فقدت السياق.
خطر تبديل السياق (Context Switching):
إن تبديل السياق (Context Switching) يقتل الإنتاجية. إذا كان هناك شيء واحد تعلمته لأكون منتجاً، فهو تخصيص فترة زمنية محددة للأشياء التي تريد إنجازها. إذا لم يكن لديك فترة زمنية مخططة مسبقاً لمهمة ما، ففرص البدء فيها ضئيلة. سيتم استهلاكها بالعمل اليومي أو الأعمال المخطط لها الأخرى.
كيفية تطبيق تخصيص الوقت:
لا توجد طريقة واحدة لتطبيق عادة إدارة الوقت، وبصراحة، أنا أتنقل من طريقة إنتاجية إلى أخرى كل بضعة أشهر. لكن الجوهر دائماً هو نفسه: خصص بعض الوقت في يومك للأشياء التي تريد إنجازها أكثر من غيرها.
- أخصص ساعة في الصباح، قبل العمل، لكتابة مقالات لمدونتي (أو لمدونات أخرى، مثل هذه).
- في معظم الأيام، أخصص أيضاً ساعة في المساء، عندما ينام الأطفال، للعمل على أي مشروع جانبي قد يكون لدي.
- حالياً، لدي لوحة
Trelloبعمود لكل يوم من أيام الأسبوع حيث أضع المهام التي أرغب في القيام بها في الصباح والمساء. مرة واحدة في الأسبوع، أقوم بتحديث تلك اللوحة بالمهام التي أرغب في القيام بها في الأسبوع التالي، حتى لا أضطر إلى إضاعة وقتي الثمين المخصص للتفكير فيما يجب فعله بعد ذلك. - لدي لوحة
Trelloمشابهة جداً لوظيفتي كمطور برمجيات. كل صباح، أفكر في الأشياء التي أرغب في القيام بها وأضعها في عمود اليوم. - كما أحظر ساعتين على الأقل من وقت التركيز (
focus time) في تقويمي كل يوم، حتى لا يحاول زملائي جدولة أي اجتماعات في ذلك الوقت. هذا هو الوقت الذي أنجز فيه قائمة مهامي.
لا يهم حقاً كيف تدير وقتك، ولكن من المهم أن تفعل ذلك وأن تجعله عادة. وإلا فإن أيامك ستستهلكها أشياء ليست مهمة بالنسبة لك.
8. عند التعثر، خذ قسطاً من الراحة: إعادة شحن العقل لإيجاد الحلول
كمطوري برمجيات، نميل إلى التعثر كثيراً. ويا له من شعور مزعج عندما أتعثر ولا أرى مخرجاً! إنها نصيحة بديهية جداً أن تأخذ قسطاً من الراحة عندما تكون عالقاً، ولكن من الصعب جداً تطبيقها. “أنا قريب جداً من حل المشكلة، لا يمكنني أخذ استراحة الآن!” أيضاً، أخذ استراحة الآن سيعني أنه سيتعين علي العودة إلى الموضوع لاحقاً. لماذا يجب أن أبدل السياقات عمداً بينما تبديل السياقات هو المصدر الأول للوقت الضائع؟
لماذا الراحة ضرورية عند التعثر؟
عندما تكون عالقاً، لا تفكر بوضوح. أنت تفكر في مدى غباء الوقوع في هذه المشكلة، ومدى سهولة حل زملائك لها على الأرجح، ولماذا يحصلون دائماً على المهام السهلة. لكنك لا تفكر في كيفية حل المشكلة.
استراتيجيات فعالة للتعامل مع التعثر:
- تغيير التركيز: خذ قسطاً من الراحة واعمل على شيء آخر لفترة من الوقت. أو الأفضل من ذلك، حاول مرة أخرى في اليوم التالي.
- منظور جديد: الحصول على بعض المسافة عن المشكلة سيتيح لك رؤية حلول كنت غافلاً عنها من قبل. إذا لم تجرب هذا من قبل، فلن تصدق كم مرة “تُحل” المشكلة ببساطة في صباح اليوم التالي، غالباً لأنك ترى مساراً للحل لم تره من قبل.
تطبيق تقنية بومودورو (Pomodoro Technique):
الآن، من السهل القول “خذ قسطاً من الراحة”، ولكن كيف تحدد أنك حالياً في “وضع التعثر” ثم تقنع نفسك بالتوقف عن العمل على المشكلة لفترة من الوقت؟ بصراحة، أنا لست جيداً جداً في هذا بنفسي، لأنني عادةً ما أريد “إنهاء هذه المهمة الغبية” حتى أتمكن من إظهار أنني أنجزت شيئاً!
لكن ما وجدته يساعدني هو تقسيم يومي إلى شرائح مدتها 30 دقيقة وإجراء مراجعة سريعة بعد كل شريحة. تسمى هذه التقنية “تقنية بومودورو” (Pomodoro Technique) بناءً على مؤقتات المطبخ على شكل طماطم. بعد كل وحدة بومودورو، أسأل نفسي إذا كنت ما زلت أعمل في “وضع الحل”، أو إذا كنت عالقاً ويجب أن أعمل على شيء آخر لفترة من الوقت.
فائدة إضافية: تكديس العادات (Habit Stacking):
فائدة رائعة لتقنية بومودورو هي أنه يمكنك استخدام نهاية الوحدة كمحفز لعادات أخرى. أستخدمها كمحفز للوقوف من كرسيي لتمديد عضلاتي وشرب بعض الماء، على سبيل المثال. يسمى هذا أحياناً “تكديس العادات” (habit stacking)، لأنك تكدس عادة فوق أخرى، وهو فعال جداً. إذا كنت ترغب في قراءة المزيد عن العادات، أوصي بشدة بكتاب “العادات الذرية” (Atomic Habits) لجيمس كلير (James Clear).
9. لا تطارد الحلول السحرية (Silver Bullets): التفكير النقدي أولاً
لقد كتبت كتاباً عن نمط معماري معين، وأتلقى بانتظام رسائل بريد إلكتروني تقول: “أنا أحب هذا النمط المعماري وأريد تطبيقه على جميع مشاريعي! كيف يمكنني فعل ذلك؟” هل يمكنك تخمين إجابتي على هذا السؤال؟
لا يوجد حل واحد يناسب الجميع:
لا يوجد نمط معماري واحد ينطبق على جميع المشكلات الموجودة.
- تبني واجهة برمجة تطبيقات بسيطة للعمليات الأساسية (
CRUD API) عندما يكون المشروع صغيراً. - تبني بنية سداسية أكثر تعقيداً (
Hexagonal Architecture) إذا كان لديك نموذج نطاق معقد (complex domain model). - وتطبق أياً من مئات الأنماط المختلفة عند بناء الخدمات المصغرة (
microservices) في سياق معين.
وبالمثل، لا يوجد إطار عمل واحد يجب عليك استخدامه لكل مشروع على حدة. ولا توجد أفضل لغة برمجة واحدة أو نمط ترميز واحد.
أهمية الحجة المنطقية:
لا تقع في فخ “الحلول السحرية” (silver bullets). إنها غير موجودة. امتلاك رأي أمر جيد إذا كان مدعوماً بحجج قوية. “هذا هو أفضل نمط معماري” أو “لقد فعلت ذلك دائماً بهذه الطريقة” ليست حججاً جيدة، وسيرى الناس من خلالها. تخيل أن لديك مطوراً في فريقك لديه رأي في كل شيء ويريد دائماً القيام بالأشياء بطريقته، “لأنها أفضل طريقة”. ستتعب من ذلك بسرعة كبيرة. لا تكن هذا الشخص.
الخلاصة التقنية
لقد استعرضنا في هذا المقال تسع عادات محورية يمكن أن تحدث فرقاً جذرياً في مسيرة أي مطور برمجيات، خاصة في مراحله الأولى. من خلال تبني هذه العادات بوعي، مثل المبادرة بتعلم الجديد، والعمل الثنائي، والتواصل الفعال، وتوثيق الإنجازات، وإدارة الوقت بذكاء، وأخذ فترات راحة استراتيجية، وتجنب البحث عن الحلول السحرية، يمكن للمطور أن يسرع من نموه المهني ويحقق مستويات أعلى من الإنتاجية والكفاءة. الأهم ليس إتقان كل هذه العادات دفعة واحدة، بل البدء في تطبيق العادة التي تلامس احتياجك الأكبر والعمل على تحسينها يوماً بعد يوم. إن بناء العادات الإيجابية هو استثمار طويل الأمد في الذات، يعود بالنفع على المطور وعلى جودة عمله، ويفتح آفاقاً واسعة للفرص المستقبلية.