بصراحة، بينما كنت أتصفح الإنترنت، صادفت مقالًا ممتازًا بعنوان “GitHub Repositories Every Software Engineer Should Know”، أي “مستودعات GitHub التي يجب على كل مهندس برمجيات معرفتها”. الفكرة هي أن الكاتب قام بترتيب هذه المستودعات حسب الفئة، مما يسهل الوصول إلى ما تحتاجه.
أقسام المقال
- خرائط الطريق (Roadmaps)
- الكتب والمدونات والمواقع (Books, Blogs, and Websites)
- مصادر لتعلم الخوارزميات (Algorithms)
- مصادر لأنماط التصميم (Design Patterns)
- مصادر لتصميم الأنظمة (System Design)
- مصادر للتصميم (Design Resources)
- مشاريع ودروس تعليمية (Projects and Tutorials)
- واجهات برمجة التطبيقات (APIs)
- التحضير للمقابلات (Interview)
قررت أن أكتب هذا المقال لكم لنستعرض هذه الموارد واحدًا تلو الآخر. سأترك لكم رابط المقال الأصلي في نهاية هذا المقال، حيث ستجدون روابط لجميع مستودعات GitHub التي سنتحدث عنها.
خرائط الطريق (Roadmaps)
خرائط الطريق هي دليلك للتعلم. وأول ما يتبادر للذهن هو خريطة الطريق الصفراء الشهيرة.
1. roadmap.sh
عند زيارة هذا المستودع، ستجد خرائط تعلم لكل شيء تقريبًا. الميزة هنا أنه لا يكتفي بذكر المواضيع، بل يقترح روابط لمصادر يمكنك التعلم منها.
على سبيل المثال، إذا أردت تعلم Full Stack Development، ستجد خريطة طريق كاملة يمكنك تحميلها أو مشاركتها. تبدأ الخريطة بالأساسيات مثل HTML و CSS. إذا ضغطت على JavaScript، ستجد قائمة بالمواضيع التي تحتاج إلى تعلمها، مع روابط لمصادر مثل:
freeCodeCamp
W3Schools
ملاحظة: قد تجد بعض المصادر المدفوعة، ولكن بشكل عام، الموقع موثوق جدًا وخرائط الطريق التي يقدمها ممتازة ومنظمة.
يمكنك الوصول إلى أي خريطة طريق مباشرة عبر الرابط: roadmap.sh/
متبوعًا باسم التقنية (مثل react
أو vue
).
2. Awesome Roadmaps
هذا المستودع يقسم المحتوى بطريقة ممتازة:
- لغات البرمجة (Programming Languages)
- مسارات تقنية (Tech Stacks): مثل تطوير الويب، تطبيقات الموبايل، تطوير الألعاب، الذكاء الاصطناعي.
- مقالات (Articles)
إذا أردت تعلم Angular، ستجد خريطة طريق مفصلة لها. هذا المستودع هو النسخة القديمة من موقع roadmap.sh
، لكن تقسيمه للمواضيع لا يزال مفيدًا جدًا.
الكتب والمدونات والمواقع (Books, Blogs, and Websites)
أثناء تصفحي لهذا القسم، اكتشفت أمرًا رائعًا: وجود كتب عربية ضمن هذا المستودع.
كتب باللغة الإنجليزية
المستودع يحتوي على كتب باللغة الإنجليزية مقسمة حسب لغة البرمجة والموضوع. على سبيل المثال، إذا بحثت عن كتب حول لغة C، ستجد قائمة بالكتب المتاحة مع روابط تحميل مباشرة بصيغة PDF أو رابط للموقع الرسمي للكتاب.
كتب باللغة العربية
الأمر المثير للإعجاب هو وجود قسم خاص بالكتب العربية لتعلم البرمجة، ومعظمها كتب جيدة. من بينها:
- تصميم قواعد البيانات
- مدخل للذكاء الاصطناعي وتعلم الآلة
- كتب في بايثون
- كتب للأنظمة المدمجة (Embedded Systems) مثل Raspberry Pi و Arduino
- أساسيات إطار العمل Vue.js
- البرمجة بلغة سكراتش للمبتدئين
دورات مجانية باللغة العربية
ستجد أيضًا قسمًا للدورات المجانية باللغة العربية، مقسمة حسب الموضوع. على سبيل المثال:
- هياكل البيانات والخوارزميات
- حل المشكلات باستخدام C++
البودكاست
يوجد أيضًا قسم للبودكاست بلغات متعددة، بما في ذلك اللغة العربية. ستجد معظم البودكاست العربية التقنية مدرجة هنا.
أفضل المواقع للمبرمجين
هناك مستودع يجمع أفضل المواقع التي يجب على كل مبرمج زيارتها، مقسمة حسب الاهتمامات. إذا كنت تبحث عن مصادر للأخبار التقنية، ستجد قائمة بالمواقع التي يمكنك الاشتراك في نشراتها الإخبارية لتصلك التحديثات أسبوعيًا.
الخوارزميات (Algorithms)
ستجد هنا مجموعة من المستودعات لتعلم الخوارزميات، وأفضلها في رأيي هو Awesome Algorithms.
Awesome Algorithms
يقسم هذا المستودع المصادر حسب نوعها:
- مواقع ويب
- قوائم تشغيل على يوتيوب
- دورات عبر الإنترنت
- كتب
إذا كنت تفضل التعلم من يوتيوب، ستجد روابط لقوائم تشغيل ممتازة مثل تلك التي يقدمها freeCodeCamp
.
أنماط التصميم (Design Patterns)
هنا ستجد مجموعة من المستودعات حول أنماط التصميم، وأفضلها هو Awesome Design Patterns.
Awesome Design Patterns
هذا المستودع مفصل للغاية، حيث يقسم أنماط التصميم حسب لغة البرمجة التي تفضلها. كما يحتوي على أقسام خاصة بالهندسة المعمارية العامة (General Architecture)، وهندسة العميل (Client Architecture)، والهندسة بدون خوادم (Serverless Architecture). إنه مستودع عبقري لأي شخص يريد تعلم أنماط التصميم.
تصميم الأنظمة (System Design)
ستجد هنا أيضًا مجموعة من المستودعات التي تعلمك تصميم الأنظمة.
System Design 101
هذا المستودع مناسب جدًا للمبتدئين، حيث يغطي كل ما تحتاجه من الألف إلى الياء. يتميز بتنظيمه الممتاز، حيث يحتوي على جدول محتويات (Table of Contents) في ملف README.md
، مما يسهل عليك العثور على ما تبحث عنه. كما يتضمن رسومًا توضيحية لشرح الأفكار.
ملاحظة: هذا المستودع من إنشاء قناة ByteByteGo، وهي من أفضل القنوات لتعلم المفاهيم التقنية بسرعة. شروحاتهم لمواضيع مثل RESTful API، Docker، Git، و Webhooks ممتازة جدًا.
مصادر التصميم (Design Resources)
إذا كنت تعمل في مجال تطوير الواجهات الأمامية (Frontend)، فإن مستودع Awesome Design Tools هو كنز حقيقي.
Awesome Design Tools
يحتوي هذا المستودع على كل ما قد تحتاجه من أدوات التصميم:
- أيقونات (Icons)
- مواد (Materials)
- صور (Images)
- خطوط (Fonts)
على سبيل المثال، ستجد أداة مثل WebFont التي تتيح لك استخدام مكتبة ضخمة من الأيقونات على شكل خطوط، مما يسرع من أداء موقعك. كل هذه الموارد مجانية ويمكنك تحميلها مباشرة.
المشاريع والدروس التعليمية (Projects and Tutorials)
إذا كنت من محبي التعلم القائم على المشاريع (Project-Based Learning)، فهذا القسم لك.
Project Based Learning
يعلمك هذا المستودع التقنيات واللغات من خلال بناء المشاريع. على سبيل المثال، لتعلم JavaScript، ستجد دورة لبناء 30 مشروعًا في 30 يومًا، مما يعلمك أساسيات اللغة من خلال التطبيق العملي.
App Ideas
هذا المستودع ممتاز للذين تعلموا الأساسيات ويريدون أفكار مشاريع صغيرة أو متوسطة للتمرن عليها. يقسم المشاريع إلى ثلاثة مستويات:
- مبتدئ (Beginner)
- متوسط (Intermediate)
- متقدم (Advanced)
بجانب كل مشروع، ستجد وصفًا موجزًا له. بغض النظر عن مستواك، ستجد أفكار مشاريع ممتازة تساعدك على التطور.
التحضير للمقابلات (Interview Preparation)
إذا كنت تستعد لمقابلة عمل، فهذه المستودعات ستكون مفيدة جدًا لك.
Awesome Interview Questions
هذا المستودع ممتاز جدًا، حيث يجمع أسئلة المقابلات مقسمة حسب الموضوع. إذا كنت تستعد لمقابلة في الخوارزميات، ستجد كتيبات تحتوي على كل ما تحتاجه من أسئلة ومواضيع.
هذا كان استعراضًا سريعًا لمجموعة من المستودعات المفيدة جدًا لأي شخص في مجال البرمجة. لن تندم أبدًا على تصفحها. يمكنك أخذ نسخة من أي مستودع (Fork) أو تحميله كملف مضغوط (ZIP) للاحتفاظ به على جهازك.