خليني أحكيلكم قصة صارت معي قبل كم سنة، قصة علّمتني درس ما بنساه. كنت وقتها مبسوط على حالي، عندي خبرة منيحة في البرمجة، وعامل كم مشروع “بترفع الراس” لشركات اشتغلت معها. قررت أبحث عن فرصة عمل عن بعد مع شركة عالمية، قلت لحالي: “أبو عمر، خبرتك بتحكي عنك!”.
جهزت سيرتي الذاتية اللامعة، ورتبت ملف أعمالي (البورتفوليو)، وبالطبع، حطيت رابط حسابي على GitHub بكل ثقة. ضغطت على زر “إرسال” وأنا بتخيل حالي بستلم إيميل القبول. مر يوم، يومين، أسبوع… ولا حس ولا خبر. بعثت إيميل متابعة لطيف، ورجعلي الرد الآلي البارد: “شكرًا لاهتمامك، سنحتفظ بسيرتك الذاتية في سجلاتنا”. هاي الجملة اللي كلنا بنعرف شو معناها: رفض صامت ومؤدب.
يا جماعة الخير، حسيت بإحباط مش طبيعي. أنا عارف إني شاطر بشغلي، وين المشكلة؟ لجأت لصديق إلي، “خليل”، مبرمج شغال بشركة كبيرة برا، وبعثتله كل أوراقي عشان “يشوفلي الوضع”. بعد كم ساعة، رن عليّ خليل وحكالي جملة هزتني: “يا أبو عمر، سيرتك الذاتية ممتازة، ومشاريعك اللي حاكي عنها قوية، بس حسابك على GitHub… سامحني يا خوي، زي أرض بور. آخر مساهمة إلك من سنة! كيف بدهم يصدقوا إنك لسا بتبرمج كل يوم؟”.
هون بالزبط فهمت المشكلة. حسابي العام كان مدينة أشباح، لا يعكس أبدًا حجم الشغل اللي بشتغله يوميًا على المشاريع الخاصة المغلقة. كانت هاي اللحظة هي ولادة “نموذج المساهمات الصغيرة” في حياتي.
لماذا كان GitHub الخاص بي “مدينة أشباح”؟
قبل ما نحكي عن الحل، خلينا نفصّص المشكلة اللي كثير منا بوقع فيها. أنا شخصيًا كنت واقع في أربع فخاخ رئيسية:
- فخ “المستودعات الخاصة” (Private Repos): كل شغلي كان لعملاء أو شركات، وبالتالي محبوس في مستودعات خاصة. العالم الخارجي، وتحديدًا مسؤولو التوظيف، ما كانوا شايفين أي إشي من جهدي اليومي.
- وهم “المشروع العملاق”: كنت دايما بحكي لحالي: “بس ألاقي فكرة مشروع ضخمة ومميزة، رح أعملها مصدر مفتوح والعالم كله رح يشوف شغلي”. طبعًا، وهم الكمال هذا خلاني مشلول، ولا عمري بلشت إشي لأنه الفكرة ما كانت “كافية العظمة”.
- لعنة “النشاط المتقطع”: كنت أتحمس أسبوع، أشارك في “هاكاثون” أو أعمل مشروع صغير، وتلاقي المربعات الخضرا في بروفايلي منوّرة… وبعدها، صحرا قاحلة لشهور. هذا النمط المتقطع بيعطي انطباع بعدم الالتزام.
- عذر “ما عندي وقت”: بين الشغل، والالتزامات العائلية، ومتطلبات الحياة، كنت دايما أحس إن المساهمة في مشاريع مفتوحة المصدر هي رفاهية ما عندي وقت إلها. كنت غلطان، وهسا بحكيلكم ليش.
ولادة “نموذج المساهمات الصغيرة”
بعد مكالمتي مع خليل، قعدت مع حالي وفكرت: كيف ممكن أحل هاي المعضلة بدون ما أضطر أترك شغلي أو أهمل بيتي؟ الجواب ما كان ببناء مشروع عملاق، بل بتغيير فلسفتي بالكامل.
المبدأ بسيط: بدل ما تحاول تبني برج إيفل بيوم وليلة، ابني كل يوم طوبة وحدة. مع الوقت، رح يصير عندك جدار، وبعدين بيت، وبعدين قلعة.
هذا هو جوهر “نموذج المساهمات الصغيرة”. الفكرة هي تحويل الأفعال البرمجية الصغيرة، اليومية، وغير المرئية، إلى مساهمات عامة، مرئية، وذات قيمة. مش مهم حجم المساهمة، المهم هو استمراريتها.
كيف تطبق نموذج المساهمات الصغيرة عمليًا؟
طيب يا أبو عمر، حكي حلو، بس كيف نطبق هالكلام على أرض الواقع؟ بسيطة، ركزوا معي.
ابدأ بما لديك: نظّف بيتك أولاً
أول خطوة هي إنك تلتفت لمشاريعك القديمة المنسية في حسابك. كل واحد فينا عنده “مقبرة مشاريع” على GitHub. هاي المقبرة ممكن تصير حديقة غنّاء!
- ملفات الـ README هي بطاقتك الشخصية: افتح كل مشروع قديم عندك، واكتبله ملف
README.mdمحترم. اشرح المشروع، كيف تشغله، شو التقنيات اللي استخدمتها. هاي بحد ذاتها مساهمة قيمة جدًا وبتعمل مربع أخضر في سجلك. - نظّف الكود القديم (Refactoring): عندك دالة (function) كتبتها زمان وشايف إنها ممكن تنكتب بطريقة أحسن؟ ممتاز! ادخل وعدّلها، وحسّن أسماء المتغيرات، وأضف شوية تعليقات. بعدها اعمل commit برسالة واضحة مثل:
refactor: improve readability of user authentication function. مبروك، هاي مساهمة ثانية! - أضف ملفات التكوين: هل مشروعك يحتاج لملف
.env.exampleأو.gitignore؟ أضفهم! هاي مساهمات صغيرة لكنها بتدل على احترافية.
المساهمة في عالم المصادر المفتوحة (بدون خوف!)
بعرف، فكرة إنك تعدل على كود مشروع ضخم مثل React أو Django بتخوف. بس مين حكى إنك لازم تبدأ من هناك؟ عالم المصادر المفتوحة أوسع بكثير.
- الوثائق هي البوابة الذهبية: وأنت بتقرأ وثائق مكتبة برمجية بتستخدمها، لقيت خطأ إملائي؟ أو جملة مش واضحة؟ يا سلام! هاي فرصتك الذهبية. اعمل Fork للمشروع، عدّل الخطأ، وافتح Pull Request (PR). صدقني، أصحاب المشاريع بحبوا هاي المساهمات جدًا، لأنها بتوفر عليهم وقت وبتفيد كل المستخدمين.
- ابحث عن “Good First Issues”: معظم المشاريع الكبيرة بتحدد بعض المشاكل السهلة للمساهمين الجدد. ابحث في GitHub عن الوسوم (labels) التالية:
good first issue,help wanted,documentation. رح تلاقي مهام بسيطة بتقدر تنجزها وتكون أول مساهمة إلك في مشروع كبير. - الإبلاغ عن الأخطاء (Bugs) بذكاء: مجرد كتابة تقرير خطأ (Bug Report) واضح ومفصل هو بحد ذاته مساهمة. اشرح المشكلة، خطوات تكرارها، وماذا كنت تتوقع أن يحدث مقابل ما حدث فعلاً.
اصنع مساهماتك الخاصة: مشاريع صغيرة و”مفيدة”
مش كل المساهمات لازم تكون في مشاريع غيرك. بتقدر تخلق تيار مستمر من المساهمات من خلال مشاريعك الشخصية الصغيرة.
- مشروع الـ Dotfiles: كلنا عنا إعداداتنا الخاصة للـ Terminal أو محرر الأكواد (VS Code, Vim, etc). ليش ما تحط كل هاي الإعدادات في مستودع على GitHub؟ هذا مشروع “حي”، رح تعدل عليه وتطوره باستمرار مع كل أداة جديدة بتتعلمها.
- مستودع “اليوم تعلمت” (Today I Learned – TIL): فكرة عبقرية وبسيطة. اعمل مستودع جديد، وكل يوم تتعلم فيه إشي جديد – حتى لو كان أمر بسيط في الـ command line – اكتب عنه في ملف Markdown صغير. هذا المشروع لا يظهر فقط نشاطك اليومي، بل يثبت أنك شخص فضولي ويتعلم باستمرار.
- مشاريع الأدوات المساعدة (Utility Scripts): هل كتبت سكربت بايثون صغير عشان يغير حجم مجموعة صور؟ أو سكربت Shell عشان يعمل نسخة احتياطية من قاعدة بياناتك؟ ممتاز! نظّف الكود، حطه في مستودع خاص، واكتبله README بسيط. هاي الأدوات مفيدة جدًا وبتشكل مشاريع صغيرة ممتازة.
على سبيل المثال، سكربت بسيط زي هذا ممكن يكون مشروع كامل:
# A simple Python script to resize all images in a folder
# You can name it `image-resizer` and put it on GitHub!
import os
from PIL import Image
import argparse
def resize_images_in_folder(folder_path, size=(800, 800), output_folder='resized'):
"""Resizes all images in a given folder and saves them to an output folder."""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
for filename in os.listdir(folder_path):
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
try:
img_path = os.path.join(folder_path, filename)
with Image.open(img_path) as img:
img.thumbnail(size)
output_path = os.path.join(output_folder, filename)
img.save(output_path)
print(f"Successfully resized {filename}")
except Exception as e:
print(f"Could not resize {filename}: {e}")
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Resize images in a folder.')
parser.add_argument('folder', type=str, help='The folder containing images to resize.')
parser.add_argument('--width', type=int, default=800, help='Max width of resized image.')
parser.add_argument('--height', type=int, default=800, help='Max height of resized image.')
parser.add_argument('--output', type=str, default='resized_images', help='The output folder for resized images.')
args = parser.parse_args()
resize_images_in_folder(args.folder, size=(args.width, args.height), output_folder=args.output)
هذا الكود البسيط، مع ملف README، يشكل مشروعًا صغيرًا ومثاليًا يظهر مهاراتك في بايثون والتعامل مع الملفات.
النتيجة: من مدينة أشباح إلى واحة خضراء
بعد ما تبنيت عقلية “المساهمات الصغيرة”، تغير كل شيء. شاشة المساهمات في بروفايلي على GitHub تحولت تدريجيًا من صحراء قاحلة إلى حديقة مليئة بالمربعات الخضراء. كل مربع ما كان مجرد رقم، بل كان قصة: قصة خطأ إملائي صلحته، قصة README كتبته، قصة سكربت بسيط طورته.
هذا النشاط المستمر خلق قصة جديدة عني. القصة بتقول:
- هذا الشخص يكتب الكود بانتظام.
- يستخدم Git و GitHub باحترافية.
- متفاعل مع مجتمع المطورين.
- مبادر، فضولي، ويتعلم كل يوم.
أجمل ما في الأمر أن المقابلات الوظيفية تغيرت. بدل ما أنسأل أسئلة عامة، صار الحوار يبدأ بـ “رأيت في حسابك على GitHub أنك ساهمت في المشروع X، ممكن تحكيلنا عن تجربتك؟” حتى لو كانت مساهمتي مجرد تعديل بسيط في الوثائق، فهذا يفتح بابًا للنقاش ويظهر أني شخص مبادر.
الرفض الصامت تحول إلى دعوات للمقابلات، وفي النهاية، حصلت على الوظيفة التي كنت أحلم بها. كل هذا بفضل تغيير بسيط في العقلية: التركيز على الاستمرارية، لا على ضخامة الإنجاز.
الخلاصة: نصيحة من أخوكم أبو عمر
يا جماعة الخير، ملفكم الشخصي على GitHub أو أي منصة مشابهة هو هويتكم التقنية في العالم الرقمي. لا تتركوه مدينة أشباح. لا تنتظروا المشروع الخارق أو الوقت المثالي، لأنهما لن يأتيا.
ابدأ اليوم. ابدأ صغيرًا. صحح خطأ إملائيًا. اكتب ملف README. انشر سكربتًا صغيرًا كنت تستخدمه لوحدك. اجعل المساهمة عادة يومية، مثل شرب القهوة صباحًا.
تذكروا دائمًا مقولة نبينا الكريم صلى الله عليه وسلم: “أَحَبُّ الأَعْمَالِ إِلَى اللَّهِ أَدْوَمُهَا وَإِنْ قَلَّ”. القليل الدائم خيرٌ من الكثير المنقطع. 👨💻✅
يلا، شدّوا الهمة وخلّوا هالمربعات الخضرا تشهدلكم. وإذا احتجتوا إشي، أخوكم أبو عمر موجود.