تتمثل إحدى الطرق الأكثر أهمية لتطوير مهاراتك وتحسين قابلية توظيفك كمهندس برمجيات في العمل في مشاريع جانبية. هذه يمكن تشغيل سلسلة من المشاريع مفتوحة المصدر إلى أدوات مفيدة والبرامج النصية ، إلى اللعب متعة.
بينما يبدو أن بعض زملائنا يعملون دائمًا في مشروع جانبي جديد ، إلا أن الأمر ليس سهلاً بالنسبة لنا.نحن نريد للعمل على مشروع جانبي ولكن النضال من أجل التوصل إلى فكرة جيدة.
في تجربتي ، يحدث هذا عندما نقيِّد أنفسنا بشكل مصطنع. على سبيل المثال ، قد نحد من غير قصد أنواع المشاريع التي نشعر بأنها “تستحق” كمشاريع جانبية.
من خلال تعيين الشريط بدرجة عالية – مثل السعي لإنشاء مكتبة مفتوحة المصدر ناجحة وشعبية وأصلية – فإننا نحرم أنفسنا من فرصة الحصول على المتعة وتعلم شيء ما من مشروع جانبي أقل طموحًا ، ولكن لا يزال يستحق العناء.
في هذا المنشور ، أريد المساعدة في محاربة “شلل المشروع الجانبي” من خلال تقديم ما يصل إلى 40 فكرة مشروع جانبي يمكن لأي مطور برامج أن يبدأها في نهاية أسبوع واحد. التركيز هنا ليس على المشاريع التي ستغير العالم. بدلا من ذلك، وهذه هي المشاريع متعة لتعطيك شيئا لإضافة إلى محفظتك و تجعلك مطور أفضل.
مشاريع علوم الحاسوب الجانبية
هذه المشاريع مناسبة للمهندسين الذين يحاولون تعزيز أساسيات علوم الكمبيوتر لديهم. سوف يساعدونك في معرفة المزيد حول الجوانب المحددة للحوسبة ، مثل نقل الملفات وتصميم أنظمة التشغيل. يمكن أن تكون هذه المشاريع مفيدة بشكل خاص للمطورين الذين يقومون بالتدريس الذاتي والذين ركزوا أكثر على المهارات العملية من الأساسيات العلمية.
- عميل FTP (التنفيذ المقترح: تطبيق الويب أو سطح المكتب أو تطبيق CLI).
بناء عميل FTP بسيط. كتحدي إضافي ، قم بدعم نقل الملفات بشكل آمن.
- خادم HTTP (التنفيذ المقترح: أي لغة برمجة تريد إتقانها). لفهم HTTP بعمق ، قم ببناء خادم HTTP. هناك عدد من البرامج التعليمية المتاحة لإرشادك خلال هذه العملية.
- قم ببناء نظام تشغيل بسيط (التنفيذ المقترح: أي لغة برمجة تريد إتقانها). هذا مشروع يمثل تحديًا تقنيًا وسيعمق فهمك لكيفية عمل أجهزة الكمبيوتر وأنظمة التشغيل. قد ترغب في البدء بالكتاب المجاني (والمسمى بذكاء) ، أنظمة التشغيل: من 0 إلى 1 .
- أنشئ مكشطة ويب (التنفيذ المقترح: أي لغة برمجة تريد إتقانها). أنشئ أداة تأخذ عنوان URL كمدخلات وتُرجع محتوى عنوان URL كـ HTML أو XML.
- مراقب عرض النطاق الترددي (التنفيذ المقترح: أداة تحديث CLI الحية) أنشئ أداة لتتبع مقدار البيانات التي قمت بتنزيلها أو تحميلها على الإنترنت. اطلب منه إرسال تقرير أسبوعي عن استخدامك. كتحدي إضافي ، توقع أوقات الاستخدام القصوى.
- قم بتنفيذ تشفير (التنفيذ المقترح: أي لغة برمجة تريد إتقانها). قم بإنشاء أداة تأخذ سلسلة نصية كمدخلات وتشفيرها باستخدام تشفير ، مثل تشفير قيصر .
- أنشئ تعطلًا للرسالة النصية (تطبيق مقترح: التطبيق مدرج في واجهة برمجة تطبيقات Twilioلإرسال الرسائل النصية). قم بإنشاء تطبيق يأخذ عنوان URL كمدخل ويرسل لك رسالة نصية عندما يُرجع الطلب إلى عنوان URL رمز استجابة بخلاف 200 (موافق).
مشاريع جانبية للتمويل الشخصي
ستساعدك هذه المشاريع على تحقيق هدف عملي (الحصول على التعامل بشكل أفضل مع أموالك) ، مع تحسين مهارات هندسة البرمجيات أيضًا.
- آلة حاسبة ومتعقب صافي القيمة (التنفيذ المقترح: CLI أو الويب أو تطبيق الجوّال). قم ببناء آلة حاسبة يمكنك استخدامها لتتبع ارتفاع أو انخفاض صافي ثروتك على أساس شهري. يمكنك استخدام شيء مثل ورقة العمل ذات القيمة الصافية هذه من Charles Schwab لإرشادك. تمديد اختياري: اطلب منك إرسال تقرير مدته 12 شهرًا للعام السابق في أول يناير من كل عام.
- متنبئ الضريبة (التنفيذ المقترح: تطبيق الويب). سيكون هذا مفيدًا بشكل خاص إذا كنت تفعل أي هندسة برامج مستقلة. قم بإنشاء أداة تأخذ أرباحك المستقلة كمدخلات ، ثم تتنبأ بالتزاماتك الضريبية المتوقعة لبقية السنة المالية. اجعلها ذكية بما يكفي للتنبؤ بفترات الطلب المتزايد أو المنخفض على خدماتك ، وضبطها وفقًا لذلك.
- باحث عن الصفقات (التنفيذ المقترح: تطبيق الويب مع إشعارات الأجهزة المحمولة). قم بإنشاء تطبيق ويب بسيط لإعلامك عند عرض عنصر تطمع بسعر جيد. يمكنك استخدام مكشطة ويب لسحب صفحة منتج العنصر وإعلامك بأي تغييرات في السعر.
- متتبع حساب (التنفيذ المقترح: تطبيق ويب أو تطبيق جوال). إنشاء واجهة بسيطة يمكنك استخدامها لإضافة وتصنيف النفقات الخاصة بك. قم بإنشاء تقارير شهرية استنادًا إلى المدخلات وكتابة تنبيهات مخصصة لأشياء ، مثل “إنفاق الكثير من المال على القهوة … كما هو الحال دائمًا.”
- آلة حاسبة الاستقلال المالي (التنفيذ المقترح: تطبيق الويب). الاستقلال المالي هو ، في الأساس ، توفير واستثمار أكبر قدر ممكن من دخلك حتى لا تحتاج إلى العمل مقابل المال. بينما يواصل العديد من الأشخاص المستقلين ماليا العمل ، يمكنهم الآن التركيز على القيام بالعمل الذي يحبونه ، بدلاً من العمل الذي يدفع أكثر. قم ببناء أداة لحسابها ، بناءً على: المدخرات الحالية ، والاستثمارات ، والدخل ، وحسابات التقاعد ، والنفقات ، ومدى بعيدًا عن الاستقلال المالي. بعض الأمثلة: FIREcalc ، cFIREsim .
- فاتورة الفاصل (التنفيذ المقترح: التطبيق المحمول). قم ببناء أداة بسيطة لمساعدتك أنت وأصدقائك على تقسيم الفواتير عند الخروج لتناول الطعام معًا.
الألعاب والمشاريع الجانبية المحاكاة
معظم مهندسي البرمجيات الذين أعرفهم مفتونون بعالم تطوير الألعاب والرسومات والمحاكاة ، لكن ليس لديهم الكثير من الخبرة معهم. هذه المشاريع صغيرة بما فيه الكفاية بحيث يمكنك وضعها في هذا العالم دون أن تقضم أكثر مما تستطيع مضغه.
- مولد اسم عشوائي (التنفيذ المقترح: CLI أو الويب أو تطبيق الجوّال). قم بإنشاء منشئ أسماء عشوائي ( مثال ) يقوم بإنشاء أسماء فريدة أثناء التنقل ، استنادًا إلى خوارزمية. استخدم أساليب التعلم الآلي لمساعدتك في تدريب البرنامج باستخدام مجموعة بيانات نموذجية من الأسماء المشابهة لتلك التي ترغب في إنشائها. بخلاف ذلك ، قم بإنشاء قواعد معجمية لكيفية إنشاء الأسماء. على سبيل المثال ، قد ينص اسم خوارزمية تولدها حكاية الخادمة على أن أسماء نساء الخادمة يجب أن تبدأ بحرف “من” ، وتنتهي باسم ذكر عشوائي ، مثل Ofpeter.
- Conway’s Game of Life (التنفيذ المقترح: أي منصة قادرة على تقديم رسوم بيانية في الوقت الفعلي). تحاكي لعبة Conway’s Game of Life حياة الخلايا البسيطة التي تطيع قوانين الخوارزميات. يشرح هذا الفيديو كيف تعمل اللعبة ويتضمن مثالًا لنتيجة واحدة محتملة:
- مصمم خرائط تم إنشاؤه من الناحية الإجرائية (التنفيذ المقترح: تطبيق قائم على المتصفح). قم بإنشاء تطبيق يستند إلى المستعرض يتيح للمستخدمين إنشاء خريطة تضاريس إجرائية استنادًا إلى بذرة عشوائية. يمكن أن تكون الخريطة مفصلة أو بسيطة كما تريد. هذا المشروع هو فرصة جيدة للتعرف على الجيل الإجرائي .
- مولد حرف (التنفيذ المقترح: تطبيق يستند إلى المستعرض أو تطبيق جوال ، CLI). قم بإنشاء أداة تسمح لك بإنشاء أحرف قابلة للتشغيل بشكل عشوائي لألعاب لعب الأدوار المفضلة لديك ، سواء أكانت ألعابًا على الطاولة ، مثل Pathfinder أو ألعاب فيديو ، مثل Divinity: Original Sin.
- الخيال التفاعلي (التنفيذ المقترح: CLI). طريقة ممتعة للدخول في تطوير اللعبة دون الحاجة إلى القلق بشأن الأصول الرسومية ، تجعل الخيال التفاعلي العالم اللاعب من خلال أوصاف النص. يعد Dreamhold مثالًا جيدًا على الخيال التفاعلي باستخدام أمر “مساعدة” مفيد.
مشاريع جانبية الذكاء الاصطناعي
تزداد فائدة الذكاء الاصطناعي في هندسة البرمجيات اليومية بشكل كبير. أصبح الآن أسهل من أي وقت مضى القيام بغزواتك الأولى في عالم الذكاء الاصطناعي.
- محرك Tic-Tac-Toe لا يهزم (التنفيذ المقترح: برنامج CLI). من أجل أول مشروع ممتاز لمنظمة العفو الدولية ، حاول كتابة محرك لا يمكن التغلب عليه في Tic-Tac-Toe. يمكنك تحقيق ذلك من خلال تنفيذ هذه الإستراتيجية ، والتي تنتج قرعة كأفضل نتيجة لها.
- محرك شطرنج (التنفيذ المقترح: محرك مكتوب بلغة برمجة تريد تعلمها أو إتقانها). حاول كتابة محرك يمكنه لعب الشطرنج ضد خصم بشري باستخدام واجهة المستخدم الرسومية المتوافقة مع Universal Chess Interface ، مثل XBoard. انظر Stockfish كمثال. لتحدي أقل صعوبة ، قد ترغب في التركيز على سلوك قطعة واحدة فقط ، على سبيل المثال ، فرسان.
- chatbot المتخصصة (التنفيذ المقترح: تطبيق الويب). بعض أعظم العقول في العالم تعمل على chatbots التي تستجيب بطرق نابضة بالحياة. إنه تحد صعب للغاية ، ولكن عن طريق تقليل نطاق chatbot الخاص بك ، لديك مشروع جانبي أكثر قابلية للدخول في المساء وعطلات نهاية الأسبوع. قم بإنشاء chatbot ينتج عنه ردود صوتية حقيقية استنادًا إلى موضوع متخصص تهتم به: الفرقة أو لعبة الفيديو أو الفريق الرياضي أو العرض التليفزيوني المفضل لديك. الاستفادة من مكتبة موجودة لمساعدتك ، مثل ChatterBot .
- مصنف الرسائل غير المرغوب فيها (التنفيذ المقترح: أي لغة برمجة تريد إتقانها). أنشئ أداة لتصنيف ما إذا كان البريد الإلكتروني غير مرغوب فيه أم لا بناءً على المحتوى وحده. يمكنك استخدام مجموعة البيانات العامة لرسائل البريد الإلكتروني من تحقيق Enron لاختبار مصنف الرسائل غير المرغوب فيها.
مشاريع الترفيه الجانبية
هذه المشاريع مخصصة لمهندسي البرامج الذين يرغبون في العمل على شيء ممتع ومبهج.
- باحث عن شوتايم (التنفيذ المقترح: تطبيق ويب أو تطبيق جوال مع إشعارات بالبريد الإلكتروني أو الرسائل النصية). أنشئ برنامجًا يُعلمك ، عن طريق الرسائل النصية أو البريد الإلكتروني ، بأوقات العرض للأفلام التي يحتمل أن تكون مثيرة للاهتمام والتي تشغلها في السينما المفضلة لديك. يمكن اشتقاق مفهوم “فيلم مثير للاهتمام” باستخدام التعلم الآلي (إذا كنت تشاهد أفلامًا كافية للحصول على بيانات تدريب جيدة) أو خوارزمية مصنوعة يدويًا. على سبيل المثال ، يمكنك استخدام واجهة برمجة تطبيقات Open Movie Database ، مقترنة بمحلل HTML مثل BeautifulSoup ، لإنشاء برنامج ينبهك إلى أفلام الخيال العلمي التي تم تصنيفها 7.0 أو أعلى على IMDB ، والأفلام من بطولة Amy Adams ، و / أو أي فيلم مع معدل متوسط 8.0 أو أعلى.
- مانع المفسد (التنفيذ المقترح: امتداد المتصفح). باستثناء تطبيق حظر شامل للدردشة على وسائل التواصل الاجتماعي / الإنترنت / استخدام الألوان المائية ، قد يكون من الصعب تجنب رؤية المفسدين لبرنامجك التلفزيوني المفضل … خاصةً إذا كان هذا البرنامج التلفزيوني شائعًا مثل Game of Thrones. قم بإنشاء امتداد متصفح يزيل جميع الإشارات إلى برنامجك المفضل من أي صفحة ويب محملة في متصفحك … أو يستبدلها بصور جميلة من الجراء.
مشاريع المرح الجانبية
تختلف كل هذه المشروعات ، من تسجيل بيانات المستشعر إلى إيجاد خلفيات سطح مكتب جديدة لجهاز الكمبيوتر الخاص بك. هناك شيء واحد مشترك بين الجميع هو أنهما ممتعان ، وسوف يعمل العديد منهم على استخدام واجهات برمجة التطبيقات المثيرة للاهتمام.
- Pixel art generator (التنفيذ المقترح: أي لغة برمجة تريد إتقانها). قم بإنشاء أداة تأخذ صورة كمدخلات وأخذ عينات من الصورة لإنتاج صورة بكسل كإخراج. إذا كنت ترغب في تحسين مهاراتك الأمامية ، فقم بإنشاء فن البكسل الناتج باستخدام CSS.
- أداة اقتراح الموسيقى (التنفيذ المقترح: قم ببناء غلاف لواجهة برمجة تطبيقات Spotify ). قم بإنشاء أداة لتتبع الموسيقى التي تستمع إليها وإنشاء قائمة تشغيل لها نفس الصفات ، ولكن من الأغاني التي لم تسمعها من قبل. توفر واجهة برمجة تطبيقات Spotify جميع الأدوات اللازمة لاستخراج ما استمعت إليه وإنشاء قائمة تشغيل – محرك التوصية متروك لك!
- مسجل درجة الحرارة (التنفيذ المقترح: Raspberry Pi ، جهاز استشعار درجة الحرارة ، تطبيق ويب). اطلب من Raspberry Pi توصيل جهاز استشعار درجة الحرارة وإرسال بيانات درجة الحرارة من منزلك إلى تطبيق ويب يحفظ البيانات في قاعدة بيانات أو يقوم بتحديث ملف CSV. للحصول على نقاط المكافأة ، احصل على تقرير درجة الحرارة أسبوعيًا عبر البريد الإلكتروني. مشاريع Raspberry Pi الأخرى: أتمتة المنزل ، أمن المنازل .
- تطبيق Microlearning (التنفيذ المقترح: تطبيق ويب أو تطبيق جوال). أنشئ تطبيقًا يرسل لك صفحة واحدة يوميًا عن شيء تريد أن تتعلمه. هذا يمكن أن يكون صفحة عشوائية من ويكيبيديا، صفحة من رد فعل الوثائق، وهو كانجي شخصية، أو صفحة من كتاب حقائق العالم .
- سلاك بوت (التنفيذ المقترح: سلاك API ). إذا كنت أنت أو فريقك يستخدمون تطبيق الدردشة الشهير Slack ، فقم ببناء الروبوت لجعل بعض جوانب حياتك (أو فريقك) أسهل. الأفكار: روبوت طلب القهوة ، روبوت يقدم تقارير يومية عن عدد الإلتزامات التي تم إجراؤها على فريقك ، أو روبوت تذكير مؤقت.
- خلفية سطح المكتب اليومية (التنفيذ المقترح: Unsplash API ، لغة البرمجة النصية لنظام التشغيل الخاص بك). قم بإنشاء تطبيق يعمل على تحديث خلفية سطح المكتب الخاص بك مع صورة جديدة كل يوم.
مشاريع الترميز الجانبية التحدي
بدلاً من إنشاء مشروع من البداية ، فهذه هي مجموعات من تحديات الترميز لتحسين مهاراتك. إذا كنت ترغب في التحسن في حل المشكلات المنفصلة أو تحسين مقاطعك باستخدام لغة برمجة جديدة ، فهذه كلها خيارات جيدة.
- Advent of Code (التنفيذ المقترح: أي لغة تريد ممارستها). تحدث تحديات ظهور الكود كل عام في الأيام التي سبقت عيد الميلاد. وهي تشمل الكثير من تحديات البرمجة الممتعة التي يمكن أن تساعدك في تطوير مجموعاتك بلغة برمجة تتعلمها أو لغة تريد إتقانها. لا تزال التحديات من2015 و 2016 و 2017 متاحة.
- Kaggle’s Titanic Challenge (التنفيذ المقترح: Python أو R). تقدم Kaggle تحديا رائعا لتعريفك بأساسيات التعلم الآلي باستخدام Python أو R: استخدم مجموعة بيانات حقيقية من سجل الركاب Titanic للتنبؤ بالركاب الذين من المرجح أن ينجووا من الكارثة.
- Project Euler (التنفيذ المقترح: أي لغة برمجة تريد ممارستها). تحديات مشروع أويلر مكرسة لاستكشاف الزواج بين الرياضيات والبرمجة. استخدم أدوات البرمجة لحل التحديات الرياضية المختلفة.
مشاريع الحياة اليومية الجانبية
هذه المشاريع الجانبية لها غرض عملي: فهي تساعد في بعض جوانب حياتك اليومية. على الرغم من أنها تحل المشكلات البسيطة في العالم الحقيقي (أشياء مثل ما يجب تناوله للغداء) ، إلا أن الحلول يمكن أن تكون بسيطة أو معقدة مثلما ترغب.
- منتقي الغداء (التنفيذ المقترح: CLI أو تطبيق الويب أو الجوال). إذا كنت مهندس برامج عاملاً ، فمن المحتمل أنك تصارع أحد أصعب الأسئلة في تطوير البرمجيات … أين يجب أن أتناول الغداء؟ منتقي الغداء الخاص بك هو الأداة التي ستنتقل إليها للإجابة على هذا السؤال. يمكن أن يكون الأمر بسيطًا للغاية ، ويمكنك الاختيار من بين مجموعة من الخيارات التي تعرف أنك تحبها بشكل عشوائي أو أكثر تعقيدًا – سحب البيانات من مراجعات Google مع مراعاة: الموقع والسعر ونوع المطبخ.
- مخطط التاريخ (التنفيذ المقترح: تطبيق جوال). أحد أصعب الأشياء في المواعدة ، أو في علاقة طويلة الأمد ، هو تحديد المواعيد التي يجب عليك الذهاب إليها. قم ببناء أداة تجوب مراجعات المطاعم ، وتقويمات الأحداث ، وغيرها من البيانات لاقتراحات فكرة التاريخ.
- أداة لتبسيط الرسائل الإخبارية الخاصة بالبريد الإلكتروني (التنفيذ المقترح: البرامج النصية المرتبطة بخادم البريد). إذا كنت مثلي ، فستتلقى عددًا كبيرًا جدًا من الرسائل الإخبارية عبر البريد الإلكتروني كل أسبوع ، وهي تتكدس في بريدك الوارد. بدلاً من إلغاء الاشتراك فيها جميعًا في نوبة من الغضب ، صمم أداة تلتقط هذه الرسائل وتجمعها جميعًا في رسالة بريد إلكتروني واحدة يتم إرسالها مرة واحدة في الأسبوع.
- إشعار “أحضر المظلة” (التنفيذ المقترح: تطبيق جوال). قم بإنشاء تطبيق جوال بسيط يرسل إليك إشعارًا بالهاتف في الصباح لإعلامك بما إذا كان يجب عليك إحضار المظلة الخاصة بك إلى العمل (على سبيل المثال ، إذا كانت السماء ستهطل في منطقتك في ذلك اليوم).
- تعقب المجموعة (التنفيذ المقترح: تطبيق ويب أو تطبيق جوال). أنشئ أداة لتتبع شيء تجمعه.يمكنك تتبع: قيمة العنصر ، والسنة التي تم إنشاؤها فيه ، وحالته ، وموقعه.
مشاريع البيانات الجانبية
ستعمل هذه المشاريع على تحسين قدرتك على العمل مع البيانات. يعمل مهندسو البرمجيات مع كميات متزايدة من البيانات. ستساعدك هذه المشروعات على تعلم كيفية جمع البيانات وتحليلها وتحليلها بثقة.
- قم بإنشاء مجموعة بيانات وتحديثها تلقائيًا (التنفيذ المقترح: إدخال مكشطة الويب إلى إخراج CSV). قم بإنشاء أداة لإنشاء وتحديث مجموعة بيانات حول شيء تهتم به تلقائيًا. مجموعات البيانات المقترحة: إحصائيات حول فريقك الرياضي المفضل ، والرحلات إلى وجهات ترغب في زيارتها ، أو بيانات الأرصاد الجوية من مكان إقامتك ، أو أي شيء آخر يهمك أنت. الشيء الأكثر أهمية هو أن مجموعة البيانات يجب أن تتطلب تحديثات مستمرة عند إنشاء بيانات جديدة – ويجب أن تحدث تلقائيًا. على سبيل المثال ، بمجرد نشر نتائج فريقك الرياضي على موقع ويب ، يجب إلغاء البيانات تلقائيًا وإضافتها إلى مجموعة البيانات الخاصة بك.
- أدخل مسابقة علوم البيانات (التنفيذ المقترح: R أو Python). تستضيف Kaggle عددًا من مسابقات علم البيانات التي تضم مجموعات بيانات في العالم الحقيقي وجوائز نقدية ضخمة. غالبًا ما تكون مهمتك حل المشكلات الواقعية مثل: كيفية تصنيف التعليقات السامة عبر الإنترنت أو التنبؤ بزوار المطعم أو التعرف على الأشياء من الفضاء.
شارك مشروعك الجانبي
أحد أصعب الأمور في العمل في مشروع جانبي هو حث أي شخص آخر غيرك أنت وزوجتك وقططتك الأليفة ميلي على تقديره. يرجى استخدام التعليقات على هذه المقالة كفرصة للحصول على بعض الحب لأحدث مشروع جانبي. شارك رابطًا لما تعمل عليه ، وأعلمنا:
- ما هو التحدي الأكبر أثناء العمل في مشروعك الجانبي؟
- ما هو الشيء الوحيد الذي تعلمته أثناء العمل في مشروعك الجانبي؟
- ما هي النصائح التي تقدمها لشخص آخر لبدء مشروع جانبي مماثل؟