> ## Content Index
> Fetch the complete content index at: https://arabroot.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# الهاكاثون Hackathon والمسابقات التقنية: كيف تستعد؟
- URL: https://arabroot.io/articles/الهاكاثون-والمسابقات-التقنية-كيف-تستعد-وماذا-تكسب/
- Published: 2026-11-01T19:11:27.000Z
- Updated: 2026-11-01T20:11:09.000Z
- Description: ماذا تكسب من الهاكاثون ومسابقات البرمجة وCTF وأين تجدها، وكيف تجهز فريقك وبيئتك قبل الحدث وتخطط للساعات الثماني والأربعين وتعرض في دقيقتين.
- Author: فريق عرب رووت
- Tags: الأدلة التقنية, للطلاب والخريجين

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

والمسابقات التقنية للطلاب أنواع كثيرة: الهاكاثون Hackathon الذي تبني فيه نموذجاً أولياً في يومين، ومسابقات البرمجة التنافسية مثل ICPC التي تحل فيها مسائل خوارزمية في خمس ساعات، ومسابقات الأمن السيبراني من نوع CTF، ومسابقات البيانات مثل Kaggle، ومسابقات الشركات الناشئة الطلابية. ولكل نوع مهارات يكسبها واستعداد يحتاجه. وفي هذا المقال سوف نتابع هؤلاء الأربعة من الإعلان إلى ما بعد الإعلان عن الفائزين، ونرى ما تكسبه من المسابقات وما لا تكسبه، وأين تجد المسابقات المفتوحة للطلاب في السعودية وخارجها، وكيف تبني حزمة بداية Starter Kit تجربها قبل الهاكاثون بحيث لا تضيع الساعات الأولى في إعداد البيئة، وقد قسنا ذلك في تجربة عملية.

وهذا المقال من مرحلة مشروع التخرج في مسار الطلاب والخريجين، لأن الهاكاثون في الحقيقة نسخة مضغوطة من مشروع التخرج: مشكلة، وفريق، ونطاق، وعرض أمام لجنة، في يومين بدل فصلين. فإذا قرأت [دليل مشروع التخرج](https://arabroot.io/articles/%D9%85%D8%B4%D8%B1%D9%88%D8%B9-%D8%A7%D9%84%D8%AA%D8%AE%D8%B1%D8%AC-%D9%85%D9%86-%D8%A7%D8%AE%D8%AA%D9%8A%D8%A7%D8%B1-%D8%A7%D9%84%D9%81%D9%83%D8%B1%D8%A9-%D8%A7%D9%84%D9%89-%D8%A7%D9%84%D9%85%D9%86%D8%A7%D9%82%D8%B4%D8%A9/) في المرحلة نفسها فستجد هنا الأفكار نفسها مضغوطة، وإذا شاركت في هاكاثون قبل مشروع التخرج فستدخل المشروع وقد جربت العمل تحت ضغط موعد قريب.

وسوف نناقش في هذا المقال ما يلي:

- ما هو الهاكاثون Hackathon ومن أين جاء، والفرق بينه وبين مسابقات البرمجة وCTF وKaggle.
- ماذا تكسب من المسابقات فعلاً، وما الذي لا تعطيك إياه.
- مسابقات وبرامج حقيقية مفتوحة للطلاب في السعودية ودولياً، وما يجب أن تقرأه في القواعد قبل التسجيل.
- أدوار الفريق، وتجربة عملية Lab: حزمة بداية للهاكاثون مع قياس حقيقي لوقت إعدادها على جهازين.
- خطة الساعات الثماني والأربعين، ومعايير التحكيم Judging، والعرض Pitch في ثلاث دقائق.
- الاستعداد لمسابقات البرمجة التنافسية وCTF، وماذا تفعل بعد المسابقة، وأخطاء شائعة.

## ما هو الهاكاثون Hackathon، ومن أين جاء؟

الكلمة مركبة من Hack بمعنى البرمجة الإبداعية السريعة، وMarathon بمعنى السباق الطويل، وتقول صفحة مشروع OpenBSD عن [الهاكاثونات](https://www.openbsd.org/hackathons.html?ref=arabroot.io) إن المشروع عقد «أول هاكاثون» في يونيو 1999، عندما اجتمع مطوروه في منزل واحد، وخلال أسبوع دمجوا أول تطبيق لـ IPv6 وIPsec في نظام تشغيل. والصفحة نفسها تصف الهاكاثون كما يفهمه المشروع حتى اليوم: تجمع لكتابة الكود، يعمل فيه كل مطور على ما يريد لفترة متصلة في الغرفة نفسها مع من يحتاج أن يتحدث معهم، دون محاضرات ودون جدول ثابت. وهذا الأصل مهم لأنه يذكرك بما يجعل الهاكاثون مفيداً: ليس الجوائز، وإنما أن تبني شيئاً حقيقياً مع أشخاص بجانبك في وقت قصير.

أما الهاكاثون كما تعرفه الجامعات والجهات اليوم فهو مسابقة محددة بالوقت، غالباً من 24 إلى 48 ساعة، يعلن فيها المنظم تحدياً أو مجموعة مسارات، وتبني الفرق نموذجاً أولياً يعمل، ثم تعرضه أمام لجنة تحكيم. ومن الهاكاثونات التي أقيمت في المملكة [هاكاثون الحج](https://www.seu.edu.sa/en/colleges/computing-and-informatics-college/news/guinness-world-records/?ref=arabroot.io) الذي نظمه الاتحاد السعودي للأمن السيبراني والبرمجة والدرونز بدعم من Google في أغسطس 2018، وتقول صفحة الجامعة السعودية الإلكترونية إنه شارك فيه نحو 2,915 مشاركاً من خمسين دولة، وإن كلية الحوسبة فيها حصلت على شهادة من موسوعة غينيس لمشاركتها في الحدث الذي سجل رقماً قياسياً.

### أنواع المسابقات Competition Types: ما الفرق؟

كثير من الطلاب يخلطون بين أنواع المسابقات، فيستعد لهاكاثون كأنه مسابقة خوارزميات، أو يدخل CTF وهو يتوقع أن يبني تطبيقاً. والجدول التالي يفرق بينها:

| النوع                             | المدة المعتادة   | ما تسلمه                           | ما يقيم                             | المهارة الأهم                       |
| --------------------------------- | ---------------- | ---------------------------------- | ----------------------------------- | ----------------------------------- |
| هاكاثون Hackathon                 | 24 إلى 48 ساعة   | نموذج أولي يعمل وعرض               | الفكرة والتنفيذ والأثر والعرض       | بناء شيء يعمل بسرعة مع فريق         |
| آيدياثون Ideathon                 | يوم أو يومان     | فكرة ونموذج عمل وعرض               | المشكلة والحل وقابلية التطبيق       | فهم المستخدم والعرض                 |
| داتاثون Datathon                  | يوم إلى عدة أيام | تحليل أو نموذج على بيانات معطاة    | المقياس على بيانات اختبار، والتحليل | تنظيف البيانات والنمذجة             |
| برمجة تنافسية مثل ICPC            | نحو خمس ساعات    | حلول لمسائل خوارزمية               | عدد المسائل المحلولة والوقت         | الخوارزميات وهياكل البيانات         |
| CTF في الأمن السيبراني            | يوم إلى عدة أيام | «أعلام Flags» تثبت أنك حللت التحدي | النقاط                              | الثغرات والتحليل والأدوات           |
| Kaggle ومسابقات البيانات المفتوحة | أسابيع إلى أشهر  | توقعات على بيانات اختبار مخفية     | الترتيب في لوحة النتائج             | التحقق من النماذج Validation والصبر |
| مسابقات الشركات الناشئة الطلابية  | أشهر             | منتج أولي وخطة                     | المنتج والسوق والفريق               | المنتج والعرض                       |

![خريطة لأنواع المسابقات على محورين: المدة من ساعات إلى أشهر، وما تسلمه من حلول مسائل إلى منتج، وفيها ICPC قصيرة وحلولها خوارزمية، وCTF أيام وأعلام، والهاكاثون يومان ونموذج أولي، والداتاثون أيام ونموذج بيانات، وKaggle أشهر وتوقعات، ومسابقات الشركات الناشئة أشهر ومنتج](https://arabroot.io/content/images/2026/11/hackathons-competitions-01-types.webp)

كل نوع من المسابقات يقيس مهارة مختلفة، فاختر بحسب ما تريد أن تتعلمه

## ماذا تكسب من المسابقات What You Gain؟

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

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

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

## أين تجد المسابقات Competitions المفتوحة للطلاب؟

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

| الجهة أو المنصة                                                                             | النوع                     | ما تجده فيها                                                                                                                                                |
| ------------------------------------------------------------------------------------------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [الاتحاد السعودي للأمن السيبراني والبرمجة والدرونز](https://safcsp.org.sa/?ref=arabroot.io) | هاكاثونات ومعسكرات ومنصات | تذكر صفحته من مبادراته هاكاثون الحج وآرتاثون الذكاء الاصطناعي وهوماثون، ومعسكرات طويق، ومنصة سايبر هب لأندية الأمن السيبراني الطلابية، ومنصة مكافآت الثغرات |
| [ACPC](https://acpc.global/?ref=arabroot.io)                                                | برمجة تنافسية             | بطولة أفريقيا والعرب الجامعية للبرمجة، وهي تصفية إقليمية لمسابقة ICPC يتأهل الفائزون فيها إلى النهائيات العالمية                                            |
| [ICPC](https://icpc.global/?ref=arabroot.io)                                                | برمجة تنافسية             | المسابقة الدولية الجامعية للبرمجة، فرق من ثلاثة طلاب بجهاز واحد، تبدأ من التصفيات الإقليمية                                                                 |
| [CTFtime](https://ctftime.org/?ref=arabroot.io)                                             | أمن سيبراني               | تقويم مسابقات CTF حول العالم بتواريخها ونوعها، وترتيب الفرق، وحلول منشورة Writeups للتحديات السابقة                                                         |
| [picoCTF](https://picoctf.org/?ref=arabroot.io)                                             | أمن سيبراني               | منصة جامعة Carnegie Mellon المجانية للتعلم، وتقول صفحتها إنها انتقلت إلى اسم CyLab Security Academy مع الفريق نفسه                                          |
| [Kaggle](https://www.kaggle.com/competitions?ref=arabroot.io)                               | مسابقات بيانات            | مسابقات بجوائز من جهات حقيقية، ومسابقات تعليمية دائمة للمبتدئين                                                                                             |
| [Microsoft Imagine Cup](https://imaginecup.microsoft.com/?ref=arabroot.io)                  | شركات ناشئة طلابية        | نسخة 2027 مفتوحة للتقديم حتى 28 فبراير 2027، وجائزة البطل 250,000 دولار نقداً مع رصيد للشركات الناشئة Startup Credits                                       |
| [NASA Space Apps Challenge](https://www.spaceappschallenge.org/?ref=arabroot.io)            | هاكاثون                   | هاكاثون دولي سنوي على بيانات وكالة الفضاء، تقام له فعاليات محلية في دول كثيرة                                                                               |
| [Major League Hacking](https://mlh.io/?ref=arabroot.io)                                     | رابطة هاكاثونات           | تقويم هاكاثونات طلابية حول العالم، كثير منها عن بعد، ودليل لمنظمي الهاكاثونات                                                                               |
| [Devpost](https://devpost.com/hackathons?ref=arabroot.io)                                   | منصة هاكاثونات            | قائمة هاكاثونات عن بعد وحضورية، وصفحة تسليم لكل مشروع تبقى بعد المسابقة                                                                                     |
| [Google Summer of Code](https://summerofcode.withgoogle.com/?ref=arabroot.io)               | برنامج، وليس مسابقة       | برنامج دولي عن بعد لإدخال مساهمين جدد في المصادر المفتوحة، بمشروع لا يقل عن 12 أسبوعاً مع مرشدين من المشروع                                                 |

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

### اقرأ القواعد Rules قبل التسجيل

صفحة القواعد هي أهم صفحة في أي مسابقة، ومع ذلك يقرؤها أقل الطلاب. وفيها عادة خمسة أشياء يجب أن تعرفها قبل أن تسجل:

1. الأهلية Eligibility: هل المسابقة للطلاب فقط؟ هل تشترط عمراً أو جنسية أو تسجيلاً في جامعة معينة؟ وهل يجب أن يكون كل الفريق من الجامعة نفسها؟
2. حجم الفريق: أقل عدد وأكبر عدد، وهل يمكن أن تشارك فرداً ثم تنضم لفريق في المكان.
3. الكود المكتوب مسبقاً: أغلب الهاكاثونات تشترط أن يكتب المشروع أثناء المسابقة، وتسمح بالمكتبات والقوالب العامة. وحزمة البداية التي سنبنيها في التجربة العملية قالب عام بلا أي ميزة للمشروع، ولكن اقرأ القاعدة في كل مسابقة، وإذا لم تكن واضحة فاسأل المنظم كتابياً قبل الحدث.
4. الملكية الفكرية Intellectual Property: لمن الكود والفكرة بعد المسابقة؟ بعض المسابقات التي ترعاها جهات تشترط حقوقاً على المشاريع الفائزة، وهذا ليس خطأ في ذاته، ولكن يجب أن تعرفه قبل أن تقدم فكرة تريد أن تبني عليها شركة.
5. مدونة السلوك Code of Conduct: أغلب الهاكاثونات المنظمة لها مدونة، مثل [مدونة سلوك MLH](https://mlh.io/code-of-conduct?ref=arabroot.io)، والمخالفة فيها قد تعني الاستبعاد.

## كيف تختار المسابقة المناسبة Choosing a Competition؟

بعد أن ترى قائمة المسابقات، يأتي السؤال الطبيعي: بأيها أبدأ؟ والطالب في السنة الثانية الذي يسجل في أول هاكاثون يراه قد يجد نفسه في مسابقة موجهة للشركات الناشئة تطلب نموذج عمل وخطة تمويل، أو في CTF متقدم لا يستطيع أن يحل فيه تحدياً واحداً، فيخرج بانطباع أن المسابقات ليست له. والحقيقة أن المسابقة لم تكن مناسبة لمرحلته. لذلك اسأل نفسك أربعة أسئلة قبل التسجيل:

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

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

## أدوار الفريق Team Roles في الهاكاثون

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

![أربعة أدوار في فريق الهاكاثون: المنتج والعرض Pitch ويملك المشكلة وسيناريو العرض والشرائح، والواجهة Frontend وتملك ما يراه المحكم، والخلفية Backend والبيانات وتملك الواجهة البرمجية والبيانات الواقعية، والتكامل والتجربة الحية Demo ويملك المستودع وsetup_check والفيديو الاحتياطي، مع ما يفعله كل دور في الساعات الأولى والأخيرة](https://arabroot.io/content/images/2026/11/hackathons-competitions-02-roles.webp)

أدوار بحسب المسؤولية، ودور المنتج والعرض ليس رفاهية

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

### إذا جئت وحدك Solo: كيف تجد فريقاً؟

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

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

## قبل الهاكاثون Preparation: ماذا تجهز؟

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

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

## تجربة عملية Lab: حزمة بداية للهاكاثون Starter Kit

بنينا حزمة بداية عامة في المجلد `lab/hackathon-kit/` بجانب هذا المقال، كلها بالمكتبة القياسية في Python حتى لا تحتاج تثبيت أي شيء غير Python، ثم قسنا كم تأخذ من الوقت لتصبح جاهزة على جهازين: جهاز Windows لعضو في الفريق، وحاوية Linux نظيفة تمثل جهازاً جديداً أو خادم التكامل المستمر. وهذه محتوياتها:

```text
hackathon-kit/
├── README.md                  قالب: المشكلة، ما بنيناه، التشغيل، الفريق، ما بعد الهاكاثون
├── PITCH.md                   قالب العرض في ثلاث دقائق وقائمة ما قبل العرض
├── TIMELINE.md                خطة 48 ساعة بعلامات انتقال بين المراحل
├── app/server.py              خادم صغير: /health و/api/items مع SQLite
├── app/static/index.html      صفحة واحدة تستدعي الواجهة البرمجية
├── tests/test_app.py          اختبارات تشغل الخادم على منفذ حر وقاعدة مؤقتة
├── scripts/setup_check.py     يفحص البيئة ويقيس كل خطوة ويتوقف عند أول فشل
├── .github/workflows/ci.yml   يشغل setup_check.py على كل دفع وطلب دمج
└── .gitignore
```

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

### فحص البيئة setup\_check.py

قلب الحزمة هو السكربت `setup_check.py`، وهو أول ما يشغله كل عضو بعد أن ينسخ المستودع. ويمر بخمس خطوات ويقيس زمن كل واحدة، ويتوقف عند أول خطوة تفشل برسالة تقول ماذا تفعل:

```python
@step(f"port {PORT} is free")
def _():
    with socket.socket() as s:
        if s.connect_ex(("127.0.0.1", PORT)) == 0:
            raise RuntimeError(f"something already listens on {PORT}; run with PORT=8001")
```

والخطوات بالترتيب: إصدار Python لا يقل عن 3.11، ثم المنفذ 8000 غير مشغول، ثم الاختبارات، ثم تشغيل الخادم، ثم طلب `/health` والانتظار حتى يجيب. والاختبارات نفسها تشغل الخادم على منفذ حر يختاره نظام التشغيل وبقاعدة بيانات مؤقتة، حتى لا تتعارض مع خادم يعمل على جهازك أو تكتب في بياناتك.

### لماذا تشغل الاختبارات الخادم على منفذ حر Free Port؟

قد يبدو تشغيل الخادم داخل الاختبار تعقيداً لا يحتاجه هاكاثون، ولكنه يحل مشكلتين تحدثان في كل هاكاثون تقريباً. الأولى أن عضواً يشغل الخادم في نافذة ثم يشغل الاختبارات، فإذا كانت الاختبارات تستخدم المنفذ 8000 نفسه فشلت أو، وهذا أسوأ، اختبرت الخادم القديم المفتوح في النافذة. ولذلك تطلب الدالة `free_port()` من نظام التشغيل منفذاً غير مستخدم بربط مقبس Socket على المنفذ صفر، فيختار النظام منفذاً حراً، ثم يشغل الاختبار الخادم عليه. والثانية أن الاختبارات تكتب في قاعدة البيانات، فإذا استخدمت ملف `data.db` الحقيقي فإنها تضيف عناصر إلى بيانات العرض، وقد يظهر في التجربة الحية أمام اللجنة عنصر اسمه «فكرة» من الاختبار. لذلك تستخدم الاختبارات مجلداً مؤقتاً يحذف بعد انتهائها. والاختبارات الثلاثة نفسها بسيطة: أن `/health` يجيب، وأن إنشاء عنصر والتصويت له يعملان، وأن العنوان الفارغ يرفض برمز 400، وهي كافية لتعرف خلال ثانية أن تعديلاً أفسد الواجهة البرمجية قبل أن يكتشفه زميلك في الواجهة.

### التشغيل الأول First Run: خطأ في الترميز Encoding

شغلنا السكربت أول مرة على جهاز Windows بهذا الأمر:

```bash
python scripts/setup_check.py
```

فتوقف فوراً بهذا الخطأ:

```text
host: Windows AMD64  python 3.13.3
Traceback (most recent call last):
  ...
  File "C:\Python313\Lib\encodings\cp1252.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2714' in position 0: character maps to <undefined>
```

والسبب أن مخرج Python في هذه البيئة على Windows كان يستخدم ترميز cp1252، وهو ترميز لا يحتوي علامة ✔ التي نطبعها بجانب كل خطوة ناجحة، ولا يحتوي الحروف العربية كذلك. وهذا بالضبط نوع المشكلة التي تضيع نصف ساعة في الهاكاثون: كود يعمل على جهاز زميلك ولا يعمل على جهازك. والحل سطر واحد في أول السكربت يجعل المخرج UTF-8 ويستبدل ما لا يمكن طباعته بدل أن يتوقف:

```python
sys.stdout.reconfigure(encoding="utf-8", errors="replace")   # Windows consoles default to cp1252 and cannot print ✔
```

### القياس Measured Run: كم تأخذ الحزمة لتصبح جاهزة؟

بعد الإصلاح كان المخرج على جهاز Windows كما يلي:

```text
host: Windows AMD64  python 3.13.3
✔ python >= 3.11                      0 ms
✔ port 8000 is free                2052 ms
✔ unit tests                       3099 ms  OK
✔ start server                       14 ms
127.0.0.1 - - [01/Nov/2026 22:55:33] "GET /health HTTP/1.1" 200 -
✔ GET /health                      1739 ms  200 {"status": "ok", "items": 0} after 2 tries

ready in 6.90 s: open http://127.0.0.1:8000 after: python app/server.py
```

ثم شغلنا الحزمة نفسها في حاوية نظيفة من الصورة `python:3.13-slim`، تنسخ الحزمة إلى مجلد جديد ثم تشغل الفحص، وقسنا الزمن الكلي من خارج الحاوية:

```bash
docker run --rm --name ar-hack-fresh -v "$PWD/hackathon-kit:/src:ro" python:3.13-slim \
  sh -c 'cp -r /src /work && cd /work && python scripts/setup_check.py'
```

وكان المخرج:

```text
host: Linux x86_64  python 3.13.17
✔ python >= 3.11                      0 ms
✔ port 8000 is free                   1 ms
✔ unit tests                       1198 ms  OK
✔ start server                        1 ms
127.0.0.1 - - [01/Nov/2026 19:55:57] "GET /health HTTP/1.1" 200 -
✔ GET /health                       193 ms  200 {"status": "ok", "items": 0} after 4 tries

ready in 1.39 s: open http://127.0.0.1:8000 after: python app/server.py
wall (docker run incl. container start): 7.53 s
```

والآن نقرأ المخرجين معاً:

- الحزمة جاهزة في أقل من سبع ثوان على Windows، وفي 7.53 ثانية للحاوية الجديدة كاملة من تشغيلها إلى انتهاء الفحص، منها 1.39 ثانية للفحص نفسه والباقي لتشغيل الحاوية ونسخ الملفات. وقارن ذلك بالساعة أو الساعتين اللتين تضيعان عادة في بداية الهاكاثون، فالقيمة ليست في السرعة، وإنما في أن كل عضو يعرف خلال دقيقة أن بيئته تعمل، أو يعرف بالضبط أي خطوة فشلت.
- أغرب سطر هو فحص المنفذ: 2052 ملي ثانية على Windows و1 ملي ثانية على Linux، مع أن الفحص في الحالتين محاولة اتصال بمنفذ مغلق. والسبب أن Windows يعيد محاولة الاتصال بالمنفذ المغلق على الجهاز نفسه عدة مرات قبل أن يقرر أنه مرفوض، بينما يرفضه Linux فوراً. والأثر نفسه يظهر في سطر `/health`: المحاولة الأولى قبل أن يستمع الخادم أخذت نحو ثانيتين على Windows، فنجحت المحاولة الثانية بعد 1739 ملي ثانية، بينما احتاجت الحاوية أربع محاولات سريعة في 193 ملي ثانية. وهذا يفسر أيضاً لماذا أخذت الاختبارات ثلاث ثوان على Windows وثانية واحدة على Linux، فالاختبارات تنتظر الخادم بالطريقة نفسها.
- لاحظ اختلاف الساعة في السطر الذي يطبعه الخادم: 22:55 على Windows و19:55 في الحاوية. فالجهاز بتوقيت السعودية والحاوية بالتوقيت العالمي UTC، وفي هاكاثون فيه بيانات بتواريخ، هذا الفرق وحده يكفي لخطأ في العرض إذا لم تنتبه له.
- لاحظ كذلك أن إصدار Python في الحاوية 3.13.17 وعلى Windows 3.13.3، والفحص يتطلب 3.11 على الأقل فقط، وهذا مقصود، فالحزمة يجب أن تعمل على أي جهاز معقول لا على الإصدار نفسه بالضبط.

![أشرطة أفقية لزمن كل خطوة في setup_check.py على جهاز Windows وفي حاوية Linux: فحص المنفذ 2052 ملي ثانية مقابل 1، والاختبارات 3099 مقابل 1198، وتشغيل الخادم 14 مقابل 1، وطلب health من 1739 مقابل 193، والمجموع 6.90 ثانية مقابل 1.39](https://arabroot.io/content/images/2026/11/hackathons-competitions-03-setup-timing.webp)

زمن كل خطوة كما قاسه setup\_check.py على الجهازين

### ماذا يحدث إذا كان المنفذ Port مشغولاً؟

في الهاكاثون يحدث هذا كثيراً: عضو شغل الخادم في نافذة ونسيه، أو أداة أخرى تستخدم المنفذ 8000\. فشغلنا في الحاوية خادماً آخر على المنفذ 8000 أولاً، ثم شغلنا الفحص، فكان المخرج:

```text
host: Linux x86_64  python 3.13.17
✔ python >= 3.11                      0 ms
✖ port 8000 is free                   0 ms  RuntimeError: something already listens on 8000; run with PORT=8001

setup failed: fix the step above before writing any feature code
exit=1
```

وبدون هذا الفحص كان الخادم الجديد سيفشل برسالة `Address already in use` مدفونة في مخرج طويل، أو أسوأ من ذلك، يفتح العضو المتصفح فيرى الخادم القديم ويظن أن تعديلاته لا تعمل. ثم أعدنا الفحص بالمنفذ `PORT=8001` كما تقترح الرسالة، فنجح في 0.84 ثانية. ولاحظ أن السكربت يعيد الرمز 1 عند الفشل، ولهذا يستطيع ملف `ci.yml` أن يشغله كما هو، فيفشل التكامل المستمر إذا عطل أحد الأعضاء بيئة التشغيل.

## خطة الساعات الثماني والأربعين 48-Hour Plan

في ملف `TIMELINE.md` من الحزمة خطة بالساعات، والفكرة الأساسية فيها أن لكل مرحلة علامة انتقال واضحة، فلا ينتقل الفريق إلى المرحلة التالية حتى تتحقق العلامة، ولا يبقى في المرحلة بعد وقتها. وهذا ملخصها:

![شريط زمني لثمان وأربعين ساعة مقسم إلى مراحل: فهم التحدي واختيار المشكلة حتى الساعة 2، والإعداد بحزمة البداية حتى 4، والمستخدم وسيناريو العرض حتى 6، وبناء المسار الوحيد من طرف إلى طرف حتى 18، ونوم بالتناوب حتى 24، والتحسين حتى 34، وتجميد الكود والفيديو حتى 40، والشرائح والتدريب حتى 46، والتسليم قبل الموعد بساعة، مع علامة الانتقال تحت كل مرحلة](https://arabroot.io/content/images/2026/11/hackathons-competitions-04-48h.webp)

كل مرحلة لها علامة انتقال، ولا ميزات جديدة بعد الساعة 34

- الساعتان الأوليان لفهم التحدي ومعايير التحكيم واختيار مشكلة واحدة، وكتابة جملة المشروع في README. والفريق الذي يبدأ البرمجة في الدقيقة العاشرة يبرمج غالباً حلاً لمشكلة لم يحددها.
- من الساعة الثانية إلى الرابعة: المستودع من حزمة البداية، وفحص البيئة ناجح على كل جهاز، وكل عضو دفع commit واحداً على الأقل، وهي علامة أن الجميع يستطيع العمل.
- من الرابعة إلى السادسة: الحديث مع مرشد أو مستخدم محتمل، ورسم الواجهة على الورق، وكتابة سيناريو العرض. والسيناريو هو الذي يحدد ما يبنى.
- من السادسة إلى الثامنة عشرة: بناء المسار الوحيد الذي يظهر في العرض من طرف إلى طرف End-to-End، ولو بواجهة قبيحة. والقاعدة هنا أن المسار الكامل البسيط أفضل من نصف مسار جميل.
- نوم بالتناوب: عضوان على الأقل ينامان أربع ساعات، لأن العضو الذي لم ينم يكتب في الساعة الثلاثين أخطاء يقضي الفريق ساعتين في البحث عنها.
- من الرابعة والعشرين إلى الرابعة والثلاثين: تحسين المسار نفسه بالبيانات الواقعية والواجهة، ثم لا ميزات جديدة بعد الساعة 34.
- تجميد الكود Code Freeze، وتسجيل فيديو التجربة الحية وحفظه في مكانين، ثم الشرائح والتدريب على العرض ثلاث مرات على الأقل بمؤقت، ثم التسليم قبل الموعد بساعة، لأن منصات التسليم تبطؤ في الدقائق الأخيرة.

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

### المرشدون Mentors: كيف تستفيد منهم؟

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

### الهاكاثون عن بعد Remote: ما الذي يتغير؟

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

## معايير التحكيم Judging Criteria: كيف تقيم المشاريع؟

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

والأهم من المعايير هو شكل التحكيم، لأنه يحدد كم من الوقت لديك أمام المحكم. ففي [دليل التحكيم لدى MLH](https://guide.mlh.com/general-information/judging-and-submissions/judging-plan?ref=arabroot.io) للمنظمين توصية قوية بنمط معرض العلوم Science Fair، حيث تجلس الفرق على طاولاتها ويمر المحكمون عليها واحداً واحداً، ويقترح الدليل أربع دقائق لكل مشروع لكل محكم: دقيقتان للعرض والتجربة الحية، ودقيقة للأسئلة وتسجيل الدرجة، ودقيقة لانتقال المحكم إلى الطاولة التالية، مع أن تعليمات المحكمين في الدليل نفسه تقول لهم إن لديهم ثلاث دقائق لكل فريق. ويقترح الدليل أن يسلم كل فريق فيديو من دقيقتين يعرض التجربة الحية لا شرائح، وأن يقدم الفريق المتأهل للنهائي عرضاً من ثلاث إلى خمس دقائق.

![رسم لزيارة المحكم في نمط معرض العلوم مقسمة إلى أربع دقائق: دقيقتان للعرض والتجربة الحية، ودقيقة للأسئلة والدرجة، ودقيقة للانتقال، وبجانبها خمسة معايير متكررة: الفكرة، والتنفيذ التقني، والأثر، والتصميم، والعرض، وما يراه المحكم في كل معيار خلال الدقيقتين](https://arabroot.io/content/images/2026/11/hackathons-competitions-05-judging.webp)

في نمط معرض العلوم لديك نحو دقيقتين أمام كل محكم

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

## العرض Pitch في ثلاث دقائق

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

![شريط زمني لعرض من ثلاث دقائق: المشكلة 20 ثانية، والحل 20 ثانية، والتجربة الحية 80 ثانية، وكيف يعمل 30 ثانية، والأثر والخطوة التالية 20 ثانية، والفريق 10 ثوان، وتحتها الأسئلة الأربعة التي يجب أن يجيب عنها الفريق قبل العرض](https://arabroot.io/content/images/2026/11/hackathons-competitions-06-pitch.webp)

نصف وقت العرض للتجربة الحية

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

## مسابقات البرمجة التنافسية Competitive Programming

الاستعداد لـ ICPC وتصفياتها الإقليمية مثل ACPC مختلف تماماً عن الهاكاثون، فلا يوجد عرض ولا لجنة ولا واجهة، وإنما مسائل خوارزمية يحكم عليها مصحح آلي، وفريق من ثلاثة طلاب يتشاركون جهازاً واحداً. والجهاز الواحد هو ما يجعل المسابقة مسابقة فريق، فبينما يكتب عضو الكود، يقرأ الثاني المسألة التالية، ويتتبع الثالث حلاً على الورق. والاستعداد لها يأخذ شهوراً لا أسبوعاً، ويقوم على ثلاثة أشياء: هياكل البيانات والخوارزميات الأساسية حتى تكتبها دون تفكير، والتدريب على مسائل قديمة بمؤقت، ومراجعة كل مسألة لم تحلها بعد انتهاء التدريب. وإذا كنت في البداية ففي [هياكل البيانات](https://arabroot.io/articles/%D9%87%D9%8A%D8%A7%D9%83%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/) و[الخوارزميات وتعقيدها Big-O](https://arabroot.io/articles/%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D9%88%D8%AA%D8%B9%D9%82%D9%8A%D8%AF-big-o-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/) الأساس، وفي [تمارين Kata في البرمجة والخوارزميات](https://arabroot.io/articles/%D8%AA%D9%85%D8%A7%D8%B1%D9%8A%D9%86-kata-%D9%81%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%88%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA/) طريقة للتدرب المنتظم.

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

## مسابقات الأمن السيبراني CTF

مسابقات CTF، أي Capture The Flag، لها شكلان رئيسيان بحسب [شرح CTFtime](https://ctftime.org/ctf-wtf/?ref=arabroot.io): نمط Jeopardy، وفيه مجموعة تحديات في فئات مختلفة مثل الويب والتشفير والهندسة العكسية، ولكل تحد نقاط تزيد مع صعوبته، ونمط الهجوم والدفاع Attack-Defense، وفيه لكل فريق شبكة أو خادم بخدمات فيها ثغرات، يرقعها ليدافع عنها ويهاجم خدمات الفرق الأخرى. وأغلب المسابقات المفتوحة من نمط Jeopardy، وهو الأنسب للبداية.

والاستعداد لـ CTF يبدأ بمنصات التدريب المجانية مثل picoCTF، ثم بالمشاركة في مسابقات حقيقية من تقويم CTFtime حتى لو حللت تحدياً واحداً، ثم بقراءة حلول الآخرين Writeups بعد المسابقة، وهذا الجزء الأخير هو الذي تتعلم منه أكثر. وتذكر أن مهارات CTF تستخدم داخل بيئة المسابقة فقط، فتجربة الأدوات نفسها على نظام لا تملك إذناً مكتوباً باختباره مخالفة قانونية، وهذا ما يشرحه [اختبار الاختراق المصرح به: المنهجية والإذن والتقرير](https://arabroot.io/articles/%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1-%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D8%B1%D8%A7%D9%82-%D8%A7%D9%84%D9%85%D8%B5%D8%B1%D8%AD-%D8%A8%D9%87-%D8%A7%D9%84%D9%85%D9%86%D9%87%D8%AC%D9%8A%D8%A9-%D9%88%D8%A7%D9%84%D8%A7%D8%B0%D9%86-%D9%88%D8%A7%D9%84%D8%AA%D9%82%D8%B1%D9%8A%D8%B1/)، وإذا أردت بيئة أدوات جاهزة فاقرأ [Kali Linux في Docker وأدوات الفريق الأحمر](https://arabroot.io/articles/kali-linux-%D9%81%D9%8A-docker-%D9%88%D8%A7%D8%AF%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D9%81%D8%B1%D9%8A%D9%82-%D8%A7%D9%84%D8%A7%D8%AD%D9%85%D8%B1/).

## مسابقات البيانات Kaggle ولوحة النتائج Leaderboard

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

والدرس من ذلك يتجاوز Kaggle، فهو نفس ما تحتاجه في مشروع التخرج ورسالة الماجستير وفي العمل: لا تقيم نموذجك على البيانات التي تعدل بناءً عليها، واعتمد على تحقق Validation منفصل تبنيه بنفسك، مثل التحقق المتقاطع Cross-Validation، بدل أن تطارد رقم اللوحة العامة. والطالب الذي يبدأ بالمسابقات التعليمية الدائمة في Kaggle، ثم يقرأ دفاتر Notebooks الفرق الفائزة بعد انتهاء كل مسابقة، يتعلم في أشهر ما يأخذ وقتاً أطول بكثير من الكتب وحدها. وإذا كنت في البداية فاقرأ [أساسيات تعلم الآلة](https://arabroot.io/articles/%D8%A7%D9%84%D8%AA%D8%B9%D9%84%D9%85-%D8%A7%D9%84%D8%A7%D9%84%D9%8A-machine-learning-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/) قبل أول مسابقة.

## ماذا تفعل بعد المسابقة After the Competition؟

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

1. نظف المستودع: احذف أي مفتاح أو كلمة مرور من الكود ومن سجل Git، وغير المفاتيح نفسها من الخدمة لأن ما دفع مرة إلى مستودع عام يجب أن يعتبر مكشوفاً، واكتب README كما في القالب مع صورة للنظام ورابط للفيديو.
2. اكتب ما تعلمته: فقرة قصيرة عن المشكلة وما بنيتموه وأصعب قرار وما لم يكتمل، في المستودع أو في حسابك المهني. وهذه الفقرة هي ما ستقوله في المقابلة.
3. تواصل مع من قابلتهم: المرشدون والمحكمون والفرق الأخرى، برسالة قصيرة فيها رابط المشروع.
4. قرر: هل يستمر المشروع؟ إذا كانت المشكلة حقيقية وتحدثتم مع مستخدمين، فقد يكون فكرة مشروع تخرج جيدة، وفي هذه الحالة ابدأ من دليل مشروع التخرج في هذه المرحلة ولا تبدأ من كود الهاكاثون، فكود 48 ساعة يكتب ليرمى. وإذا لم يكن، فأغلق المستودع بفقرة «ما تعلمناه» وانتقل.
5. راجع قواعد الملكية الفكرية مرة أخرى إذا قررت الاستمرار، خاصة إذا فاز المشروع بجائزة من جهة راعية.

## أخطاء شائعة Common Mistakes

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

## قائمة تحقق Checklist قبل الهاكاثون وبعده

| متى              | تأكد من                                                                                                           |
| ---------------- | ----------------------------------------------------------------------------------------------------------------- |
| قبل التسجيل      | قرأت القواعد: الأهلية، وحجم الفريق، والكود المكتوب مسبقاً، والملكية الفكرية، ومدونة السلوك                        |
| قبل الحدث بأسبوع | الأدوار موزعة، وحزمة البداية مجربة، وsetup\_check ناجح على كل جهاز، والحسابات في المنصات جاهزة                    |
| الساعات الأولى   | جملة المشروع في README، وسيناريو العرض مكتوب، وكل عضو دفع commit                                                  |
| منتصف الحدث      | المسار الوحيد يعمل من طرف إلى طرف، وجدول النوم بالتناوب متفق عليه                                                 |
| قبل التسليم      | تجميد الكود، وفيديو التجربة في مكانين، وعرض الدقيقتين وعرض الدقائق الثلاث مجربان بمؤقت، والتسليم قبل الموعد بساعة |
| بعد الحدث        | المفاتيح محذوفة ومغيرة، وREADME كامل، وفقرة ما تعلمناه، وقرار الاستمرار أو الإغلاق                                |

## الخلاصة Summary

- الهاكاثون بدأ تجمعاً لكتابة الكود عند OpenBSD في 1999، وأصبح مسابقة محددة بالوقت تبني فيها نموذجاً أولياً وتعرضه، وهو يختلف عن ICPC وCTF وKaggle في المدة وما تسلمه وما يقيم.
- ما تكسبه فعلاً: أن تبني شيئاً كاملاً تحت قيد وقت، وأن تتعلم أداة في يوم، وأن تتعرف على أشخاص، ومشروعاً تتحدث عنه، بشرط أن تنظفه بعد المسابقة.
- تابع الجهات والمنصات لا القوائم: الاتحاد السعودي للأمن السيبراني والبرمجة والدرونز، وACPC وICPC، وCTFtime وpicoCTF، وKaggle، وImagine Cup، وNASA Space Apps، وMLH وDevpost، وإعلانات الجامعات والجهات الوطنية.
- جهز البيئة والقالب قبل الحدث: في تجربتنا كانت حزمة البداية جاهزة في 6.90 ثانية على Windows و7.53 ثانية في حاوية جديدة، وكشف الفحص مشكلة ترميز على Windows ومنفذاً مشغولاً قبل أن يكتب سطر واحد من المشروع.
- خطط بالساعات مع علامات انتقال، وابن مساراً واحداً من طرف إلى طرف، ونم بالتناوب، وجمد الكود قبل النهاية.
- في نمط معرض العلوم لديك نحو دقيقتين أمام كل محكم، فاجعل التجربة الحية في أول العرض ونصفه.

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

[![](https://arabroot.io/content/images/2026/10/tech-majors-cover-cover.webp)دليلأي تخصص تقني تختار؟ ما تدرسه فعلاً وأين تعمل بعدهماذا تدرس فعلاً في كل تخصص تقني بحسب الخطط الدراسية السعودية، وأين يعمل خريجوه، ومتى يهم اسم التخصص ومتى تهم المهارة.](https://arabroot.io/articles/%D8%A7%D9%8A-%D8%AA%D8%AE%D8%B5%D8%B5-%D8%AA%D9%82%D9%86%D9%8A-%D8%AA%D8%AE%D8%AA%D8%A7%D8%B1-%D9%85%D8%A7-%D8%AA%D8%AF%D8%B1%D8%B3%D9%87-%D9%88%D8%A7%D9%8A%D9%86-%D8%AA%D8%B9%D9%85%D9%84/)[![](https://arabroot.io/content/images/2026/10/git-basics-cover-cover.webp)دليلإدارة النسخ وGit للمبتدئين: لماذا نحتاجها وكيف تعمللماذا تضيع الملفات بأسماء final\_v2 ويمسح الزملاء عمل بعضهم، وكيف يحل Git ذلك على مشروع حقيقي من أول commit.](https://arabroot.io/articles/%D8%A7%D8%AF%D8%A7%D8%B1%D8%A9-%D8%A7%D9%84%D9%86%D8%B3%D8%AE-%D9%88-git-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/)[![](https://arabroot.io/content/images/2026/10/testing-types-cover-cover.webp)دليلأنواع الاختبارات للمبتدئين: من Unit إلى E2E مع Playwrightما الذي يكشفه كل نوع من الاختبارات وما الذي يفوته، وكم اختباراً تكتب من كل نوع، وأين يعمل كل منها في خط CI.](https://arabroot.io/articles/%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1%D8%A7%D8%AA-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-unit-%D9%88-integration-%D9%88-e2e/)[![](https://arabroot.io/content/images/2026/10/data-structures-cover-cover.webp)دليلهياكل البيانات Data Structures للمبتدئينلماذا تكون نفس العملية سريعة في هيكل بيانات وبطيئة في آخر، وأين تقابل كل هيكل في السيرفرات وقواعد البيانات.](https://arabroot.io/articles/%D9%87%D9%8A%D8%A7%D9%83%D9%84-%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/)[![](https://arabroot.io/content/images/2026/10/algorithms-bigo-cover-cover.webp)دليلBig-O للمبتدئين: لماذا يبطؤ كودك عندما تكبر البياناتلماذا يعمل الكود بسرعة على مئة صف ثم يتوقف على مئة ألف، وكيف تقرأ Big-O وتكتشف الخوارزمية البطيئة في كودك.](https://arabroot.io/articles/%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA-%D9%88%D8%AA%D8%B9%D9%82%D9%8A%D8%AF-big-o-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86/)[![](https://arabroot.io/content/images/2026/10/katas-programming-cover-cover.webp)دليلتمارين Kata في البرمجة بثلاثة مستويات مع الحلولتمارين برمجة تحلها بيدك دون ذكاء اصطناعي، من FizzBuzz إلى النصوص العربية وحالة السباق، ولكل تمرين حل مجرب في لغتين.](https://arabroot.io/articles/%D8%AA%D9%85%D8%A7%D8%B1%D9%8A%D9%86-kata-%D9%81%D9%8A-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9-%D9%88%D8%A7%D9%84%D8%AE%D9%88%D8%A7%D8%B1%D8%B2%D9%85%D9%8A%D8%A7%D8%AA/)[![](https://arabroot.io/content/images/2026/10/pentest-methodology-cover-cover.webp)دليلاختبار الاختراق المصرح به: المنهجية والإذن والتقريريواجه مسؤول نظم طلب المستشفى باختبار اختراق سنوي، فنرافقه وهو يفهم الإذن والنطاق وقواعد الاشتباك وبنية التقرير قبل أن يبدأ.](https://arabroot.io/articles/%D8%A7%D8%AE%D8%AA%D8%A8%D8%A7%D8%B1-%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D8%B1%D8%A7%D9%82-%D8%A7%D9%84%D9%85%D8%B5%D8%B1%D8%AD-%D8%A8%D9%87-%D8%A7%D9%84%D9%85%D9%86%D9%87%D8%AC%D9%8A%D8%A9-%D9%88%D8%A7%D9%84%D8%A7%D8%B0%D9%86-%D9%88%D8%A7%D9%84%D8%AA%D9%82%D8%B1%D9%8A%D8%B1/)[![](https://arabroot.io/content/images/2026/10/prepare-internship-interview-cover-cover.webp)دليلكيف تستعد لمقابلة التدريب Internship وأنت طالب؟سيرة ذاتية بلا خبرة عمل، ومشاريع تبنيها لمسار التطوير والأمن، وإجابات لأسئلة مقابلة التدريب الشائعة، وأسئلة تسألها أنت.](https://arabroot.io/articles/%D9%83%D9%8A%D9%81-%D8%AA%D8%B3%D8%AA%D8%B9%D8%AF-%D9%84%D9%85%D9%82%D8%A7%D8%A8%D9%84%D8%A9-%D8%A7%D9%84%D8%AA%D8%AF%D8%B1%D9%8A%D8%A8-internship-%D9%88%D8%A7%D9%86%D8%AA-%D8%B7%D8%A7%D9%84%D8%A8/)

## سجل التحديثات Changelog

- نوفمبر 2026: كتابة المقال، والتحقق من صفحات الجهات والمسابقات المذكورة في 1 نوفمبر 2026، وبناء حزمة البداية واختبارها على Python 3.13.3 في Windows وفي حاوية python:3.13-slim بإصدار Python 3.13.17، مع تجربة المنفذ المشغول.