كمطور برمجيات، ليس شرطًا أن تفهم كل القرارات المعمارية (Architectural Decisions) لتكون جيدًا في عملك،، هذه مغالطة يقع فيها الكثير؛ الاعتقاد أن الجودة مرتبطة بفهمك لكل قرار هندسي في المشروع.
في الواقع، أغلب الوقت يكون دورك هو تنفيذ المهام ضمن نطاق محدد (Scope)، بخطوات صغيرة تؤدي في النهاية إلى بناء مشروع كبير ومتكامل.
المهم هو فهمك للتطلبات ال Requirements:
فهمك للمتطلبات لا يعني بالضرورة فهم الأسباب وراء اختيار قاعدة بيانات معينة، أو تبني نمط معماري محدد (Microservices, Monolith, Event-driven.. ).
هذه قرارات تقع غالبًا على عاتق مهندسي البرمجيات المعماريين (Software Architects) أو كبار المهندسين (Senior Engineers).
لكن؛ معرفة خلفية هذه القرارات والدوافع وراءها تمنحك ميزة إضافية:
- تساعدك على رؤية الصورة الكبيرة.
- ترفع من قيمتك المهنية مقارنة بغيرك.
- تجعل المشروع الذي تعمل عليه ذو قيمة.
- تفتح لك الطريق تدريجيًا نحو أدوار أعلى مثل Tech Lead أو Software Architect.
خلاصةً؛ من الطبيعي ألا تفهم كل القرارات المعمارية في البداية، وهذا لا يعني أنك أقل قيمة. ركّز على تنفيذ مهامك بإتقان، ومع الوقت ستبني معرفة أعمق تمكنك من استيعاب هذه القرارات وربما اتخاذها بنفسك مستقبلًا.
في الواقع، أغلب الوقت يكون دورك هو تنفيذ المهام ضمن نطاق محدد (Scope)، بخطوات صغيرة تؤدي في النهاية إلى بناء مشروع كبير ومتكامل.
المهم هو فهمك للتطلبات ال Requirements:
فهمك للمتطلبات لا يعني بالضرورة فهم الأسباب وراء اختيار قاعدة بيانات معينة، أو تبني نمط معماري محدد (Microservices, Monolith, Event-driven.. ).
هذه قرارات تقع غالبًا على عاتق مهندسي البرمجيات المعماريين (Software Architects) أو كبار المهندسين (Senior Engineers).
لكن؛ معرفة خلفية هذه القرارات والدوافع وراءها تمنحك ميزة إضافية:
- تساعدك على رؤية الصورة الكبيرة.
- ترفع من قيمتك المهنية مقارنة بغيرك.
- تجعل المشروع الذي تعمل عليه ذو قيمة.
- تفتح لك الطريق تدريجيًا نحو أدوار أعلى مثل Tech Lead أو Software Architect.
خلاصةً؛ من الطبيعي ألا تفهم كل القرارات المعمارية في البداية، وهذا لا يعني أنك أقل قيمة. ركّز على تنفيذ مهامك بإتقان، ومع الوقت ستبني معرفة أعمق تمكنك من استيعاب هذه القرارات وربما اتخاذها بنفسك مستقبلًا.
❤8
Chain of Responsibility (CoR)
هذا الـ Design Pattern فعلاً يستخدم لتجنب التفرعات المعقدة بالـ if/else عبر تحويل منطق المعالجة إلى سلسلة من ال objects. كل واحد يقرر، إما يتعامل مع الـ request أو يمرره للكائن الذي بعده.
استخدامه يكون مفيد خصوصًا عندما:
- عندك شروط كثيرة ومعقدة (nested conditions).
- المعالجات قابلة للتوسعة (مثلاً إضافة نوع جديد من المعالجات بدون لمس الكود الموجود).
- تريد فصل المسؤوليات (Single Responsibility Principle).
بخلاف هذا لدينا ال early returns.
ففي كثير من الأحيان، كثير من الشروط يمكن تبسيطها وإزالة التعقيد عنها باستخدام ال Early Returns بدلا من التفرعات عميقة.
مثال بسيط:
الكود الثاني أوضح وأسهل صيانة بدون الحاجة لإدخال Pattern إضافي.
هذا الـ Design Pattern فعلاً يستخدم لتجنب التفرعات المعقدة بالـ if/else عبر تحويل منطق المعالجة إلى سلسلة من ال objects. كل واحد يقرر، إما يتعامل مع الـ request أو يمرره للكائن الذي بعده.
استخدامه يكون مفيد خصوصًا عندما:
- عندك شروط كثيرة ومعقدة (nested conditions).
- المعالجات قابلة للتوسعة (مثلاً إضافة نوع جديد من المعالجات بدون لمس الكود الموجود).
- تريد فصل المسؤوليات (Single Responsibility Principle).
بخلاف هذا لدينا ال early returns.
ففي كثير من الأحيان، كثير من الشروط يمكن تبسيطها وإزالة التعقيد عنها باستخدام ال Early Returns بدلا من التفرعات عميقة.
مثال بسيط:
if ($user) {
if ($user->isActive()) {
if ($user->hasPermission('edit')) {
// do action
}
}
}
// with early returns
if (!$user) return;
if (!$user->isActive()) return;
if (!$user->hasPermission('edit')) return;
// do action
الكود الثاني أوضح وأسهل صيانة بدون الحاجة لإدخال Pattern إضافي.
إذا كنتَ ذا قيمة في مؤسستك فقط عندما تسير الأمور على ما يرام (ماديا)، فأنتَ في المكان الخطأ منذ البداية.. اتخاذ القرارات بناءً على الربح الاقتصادي والمالي فقط ليس بالأمر الجيد (لعديد الاسباب تحتاج وقتا وجهدت لشرحها.. ربما لاحقا ان شاء الله)، على الأقل ليس بالنسبة لي..
هذا ليس كلامًا سينمائيًا أو بطوليا؛ إنه ما أؤمن به حقًا.. فما يحركني هو القيام بما أحب لأسباب وجيهة، لوجه الله عز وجل قدر وسعي، من أجلي، ومن أجل مؤسستي التي أعمل بها و أحترمها، ومن أجل من حولي.. هذه هي القيم التي تحركني حتى في مجتل البرمجيات، و أحاول أن أتمسك بها و ان لا انجر في عالم مادي قح.. رغم علمي أنه صعب.
و لكي لا أُفهم خطئا، الربح والمال مهمان ويجب أن يكونا جزءًا من المعادلة، ولكن لا ينبغي أن يكونا المحرك الرئيسي الذي يجعلنا نتحرك..
هذا ليس كلامًا سينمائيًا أو بطوليا؛ إنه ما أؤمن به حقًا.. فما يحركني هو القيام بما أحب لأسباب وجيهة، لوجه الله عز وجل قدر وسعي، من أجلي، ومن أجل مؤسستي التي أعمل بها و أحترمها، ومن أجل من حولي.. هذه هي القيم التي تحركني حتى في مجتل البرمجيات، و أحاول أن أتمسك بها و ان لا انجر في عالم مادي قح.. رغم علمي أنه صعب.
و لكي لا أُفهم خطئا، الربح والمال مهمان ويجب أن يكونا جزءًا من المعادلة، ولكن لا ينبغي أن يكونا المحرك الرئيسي الذي يجعلنا نتحرك..
❤4👍2
في البرمجة لا تنتظر أن تتضح الصورة كاملة قبل أن تبدأ (و إلا فإنك لن تبدأ)، ابدأ الآن وستنكشف لك الرؤية على الطريق..
خصوصا اليوم مع الذكاء الاصطناعي، لم تعد هناك أعذار للخوض في التفاصيل و المهمات الكبيرة،، جرْب، قم. بالأخطاء، قم ببناء الأشياء، وهكذا...
وفي الوقت ذاته، واصل تأسيس نفسك وتطوير مهاراتك خطوة بخطوة، أيًا كان مستواك الحالي.
تحرك، لا تبقى ساكنا..
خصوصا اليوم مع الذكاء الاصطناعي، لم تعد هناك أعذار للخوض في التفاصيل و المهمات الكبيرة،، جرْب، قم. بالأخطاء، قم ببناء الأشياء، وهكذا...
وفي الوقت ذاته، واصل تأسيس نفسك وتطوير مهاراتك خطوة بخطوة، أيًا كان مستواك الحالي.
تحرك، لا تبقى ساكنا..
❤8
مرة أخرى؛ اكتب الـ Unit Tests، أو حتى استخدم ال AI لكتابتها،، ستحتاج في النهاية إلى جعل الاختبارات تمر بنجاح وتصحيح أخطاء الذكاء الاصطناعي لو وجدت.. ومن خلال هذه العملية ستربح الآتي:
- فهم أعمق لل function/class/behavior الذي تريد كتابته/كتابة test له في حالة عدم استخدامك لل TDD، وطريقة اختباره بشكل أفضل.
- اكتشاف الـ bugs مبكرًا قبل الوصول إلى ال production.
- تعلم التفكير في مختلف السيناريوهات المحتملة.
- اكتساب خبرة في ال testing داخل الـ framework أو لغة البرمجة التي تستخدمها.
- معرفة كيفية عمل mocking لل data وكيفية تنفيذ request/response داخل الاختبارات.
- تطوير مهاراتك في كتابة ال assertions.
وهكذا.. في الطريق ستجد أن مجرد كتابة الاختبارات هي عملية تعلمية متكاملة في الفهم، التفكير، والتطوير.
#testing #tdd #unittests
- فهم أعمق لل function/class/behavior الذي تريد كتابته/كتابة test له في حالة عدم استخدامك لل TDD، وطريقة اختباره بشكل أفضل.
- اكتشاف الـ bugs مبكرًا قبل الوصول إلى ال production.
- تعلم التفكير في مختلف السيناريوهات المحتملة.
- اكتساب خبرة في ال testing داخل الـ framework أو لغة البرمجة التي تستخدمها.
- معرفة كيفية عمل mocking لل data وكيفية تنفيذ request/response داخل الاختبارات.
- تطوير مهاراتك في كتابة ال assertions.
وهكذا.. في الطريق ستجد أن مجرد كتابة الاختبارات هي عملية تعلمية متكاملة في الفهم، التفكير، والتطوير.
#testing #tdd #unittests
❤8
الأهم ان تستخدم tools تحل المشكلة في وقت أسرع، لا أنت تستخدم ما يستهر في السوق..
مثلا jQuery لازال حلا ل 70 في المئة مشاكل الويب، لا تحتاج modular framework الا في حالات تطبيقات معقدة مبنية على components كثيرة و معقدة وتحتاج فيها للحصول على مبدأ ال Reusability، ومميزات اخرى كسهولة الحصول على SPA.. وهكذا.. و لا اظن ان كل المشاريع التي نعمل عليها تحتاج هذه الميزات..
مثلا jQuery لازال حلا ل 70 في المئة مشاكل الويب، لا تحتاج modular framework الا في حالات تطبيقات معقدة مبنية على components كثيرة و معقدة وتحتاج فيها للحصول على مبدأ ال Reusability، ومميزات اخرى كسهولة الحصول على SPA.. وهكذا.. و لا اظن ان كل المشاريع التي نعمل عليها تحتاج هذه الميزات..
حينما تبتعد عن عقلية المبرمج الذي يتقن حل المسائل البرمجية على LeetCode، وإتقان حل المشكلات وحفظ بعض المسائل حول ال Arrays وال Recursion وال Binary Search وما إلى ذلك.. ستبدأ بالشعور بالتحسن.
يتم توظيفك كمبرمج لحل مشكلات حياتية، لا لكتابة Functions تستعرض فيها قوة منطقك.. والمشكلات الحياتية التي تحلها البرمجة لا متناهية، ولا يوجد لها حل واحد قطعي. أنت تبدأ، وتبحث، وتفشل، ثم تحاول من جديد... وأي مؤسسة توظفك فقط لأنك ممتاز جدًا في ال Algorithms وال Data Structures هي مؤسسة تبني ثقتها فيك على أساس ضيق، بينما المبرمج الحقيقي هو من يستطيع التكيف مع تعدد المشكلات الحياتية التي ستواجهه.
وأي مبرمج حتى ولو كان قليل الخبرة في العمل في الشركات، يعرف أن كل لغات البرمجة والفريموركات الحالية تحل معظم المشكلات التي كان سيتطلب حلها كتابة آلاف الأسطر البرمجية يدويًا.. لذا لا تركز على هذه المسألة وحدها، لكي لا تحبط نفسيًا في حالة فشلك في حل مشكلة برمجية بأسلوب أكاديمي.
فالذكاء الاصطناعي حاليًا ربما يكتب كودًا أفضل مما نكتبه نحن، لكننا لسنا مجرد Coders فقط.. نحن مفكرون، مبرمجون، مستمعون للعملاء، قادرون على العمل كفريق، نفهم ونحاول البيزنس أكثر، نفهم ونحاول فهم هندسة البرمجيات عمومًا، نتعمق في كتابة كود نظيف ، Reusable, Clean، Modular، نستمر في التعلم.. وهكذا..
لكن لا تفهمني خطأ، ال DS وال Algorithms والتطبيق العملي لحل المشكلات باستخدام لغة برمجة تفضلها أو تتعلمها شيء أساسي، تخطيها سيجعلك تعود اليها لاحقا في مسارك المهني - اتحدث عن واقع تجربة - لكن الأهم هو الفهم لهذه المفاهيم لا الاعتقاد بأنها وحدها ما سيأخذك بعيدًا في هذا المجال.
هذه أشياء اكتشفتها في طريقي، وأحاول تطبيقها قدر الإمكان في عملي وتعلمي، ورأيت أنها ربما تكون نافعة للمشاركة، و قد اكون مخطئا.
اللهم إنا نسألك العلم والتعلم والعمل بهما.
#softwareEngineering #softwaredevelopment #programming #contuniuelearning #development
يتم توظيفك كمبرمج لحل مشكلات حياتية، لا لكتابة Functions تستعرض فيها قوة منطقك.. والمشكلات الحياتية التي تحلها البرمجة لا متناهية، ولا يوجد لها حل واحد قطعي. أنت تبدأ، وتبحث، وتفشل، ثم تحاول من جديد... وأي مؤسسة توظفك فقط لأنك ممتاز جدًا في ال Algorithms وال Data Structures هي مؤسسة تبني ثقتها فيك على أساس ضيق، بينما المبرمج الحقيقي هو من يستطيع التكيف مع تعدد المشكلات الحياتية التي ستواجهه.
وأي مبرمج حتى ولو كان قليل الخبرة في العمل في الشركات، يعرف أن كل لغات البرمجة والفريموركات الحالية تحل معظم المشكلات التي كان سيتطلب حلها كتابة آلاف الأسطر البرمجية يدويًا.. لذا لا تركز على هذه المسألة وحدها، لكي لا تحبط نفسيًا في حالة فشلك في حل مشكلة برمجية بأسلوب أكاديمي.
فالذكاء الاصطناعي حاليًا ربما يكتب كودًا أفضل مما نكتبه نحن، لكننا لسنا مجرد Coders فقط.. نحن مفكرون، مبرمجون، مستمعون للعملاء، قادرون على العمل كفريق، نفهم ونحاول البيزنس أكثر، نفهم ونحاول فهم هندسة البرمجيات عمومًا، نتعمق في كتابة كود نظيف ، Reusable, Clean، Modular، نستمر في التعلم.. وهكذا..
لكن لا تفهمني خطأ، ال DS وال Algorithms والتطبيق العملي لحل المشكلات باستخدام لغة برمجة تفضلها أو تتعلمها شيء أساسي، تخطيها سيجعلك تعود اليها لاحقا في مسارك المهني - اتحدث عن واقع تجربة - لكن الأهم هو الفهم لهذه المفاهيم لا الاعتقاد بأنها وحدها ما سيأخذك بعيدًا في هذا المجال.
هذه أشياء اكتشفتها في طريقي، وأحاول تطبيقها قدر الإمكان في عملي وتعلمي، ورأيت أنها ربما تكون نافعة للمشاركة، و قد اكون مخطئا.
اللهم إنا نسألك العلم والتعلم والعمل بهما.
#softwareEngineering #softwaredevelopment #programming #contuniuelearning #development
❤10👨💻2
لكل المبرمجين و مهندسي البرمجيات في هذه المجموعة، حبذا لو تفضلتم علينا، بتصحيح مفهوم، او تصحيح خطأ ننشره، او مغالطة (غير مقصودة)، أو توجيهنا على المسار الصحيح.. فكوننا تصدرنا للنشر لا يعني ان كل ما ننشره صحيح و دقيق.
هكذا سنثري المحتوى العربي، ونعلم و نتعلم اكثر، و الله اعلى و اعلم.
بارك الله فيكم.
هكذا سنثري المحتوى العربي، ونعلم و نتعلم اكثر، و الله اعلى و اعلم.
بارك الله فيكم.
❤12🔥1
لمن يعرف tool تستخدمها للنشر على جميع المنصات الرقمية مرة واحدة، وله تجربة جيدة معاها، و مجانية لو وجدت، يشاركها معي؟!
بارك الله فيكم.
بارك الله فيكم.
عضو مبارك معنا في هذه المجموعة افرحتني رسالته و اردت ان ارد عليه علنا و اناقش الموضوع علنا ايضا.
اولا اشكر الله، و اشكرك بعدها لانك ترى في قناتي الصغيرة هذه منفعة لك في هذا المجال.. و اسأل الله مزيدا من التوفيق.
ثانيا، لم يكن هدفي من الاساس جمع الناس بقدر ماهو مشاركة اخطائي لعلها تنفع شخصا ما في مكان ما، و انارة طريقه، اضافة الى شيئ من زكاة العلم (لو تجاوزنا ثقل الكلمة و اعتبرت نفسي لدي قليييييل علم).
لكن لا اخفيك سرا النفس تمل من قلة التفاعل، و لا اريد ان تصير هذه المشاعر هي المحركة لي فيما انشر، لهذا انا مستمر... لكن اكيد اسعد لو هناك تفاعل و اخد ورد في الكلام.
سأحاول العمل على تطوير القاعدة، و ربما محاولة التركيز على قناة صغيرة على يوتيوب ايضا، وفي هذا المنشور ايضا، اطلبك و اطلب كل من يقرأ هذا المنشور اذ كانت هنالك اقتراحات لتطوير القناة مشاركتها فضلا وليس امرا.
و مرة اخرى شكرا أحمد، و بارك الله لك و فيك.
اولا اشكر الله، و اشكرك بعدها لانك ترى في قناتي الصغيرة هذه منفعة لك في هذا المجال.. و اسأل الله مزيدا من التوفيق.
ثانيا، لم يكن هدفي من الاساس جمع الناس بقدر ماهو مشاركة اخطائي لعلها تنفع شخصا ما في مكان ما، و انارة طريقه، اضافة الى شيئ من زكاة العلم (لو تجاوزنا ثقل الكلمة و اعتبرت نفسي لدي قليييييل علم).
لكن لا اخفيك سرا النفس تمل من قلة التفاعل، و لا اريد ان تصير هذه المشاعر هي المحركة لي فيما انشر، لهذا انا مستمر... لكن اكيد اسعد لو هناك تفاعل و اخد ورد في الكلام.
سأحاول العمل على تطوير القاعدة، و ربما محاولة التركيز على قناة صغيرة على يوتيوب ايضا، وفي هذا المنشور ايضا، اطلبك و اطلب كل من يقرأ هذا المنشور اذ كانت هنالك اقتراحات لتطوير القناة مشاركتها فضلا وليس امرا.
و مرة اخرى شكرا أحمد، و بارك الله لك و فيك.
❤18👏2⚡1
إجعل لك في كل يوم هدفا شخصيا، سواءا في المجال التقني البرمجي، او في مجالات و جوانب اخرى من حياتك، و الهدف اليومي الشخصي هنا اقصد به شيئا خارجا عن روتينك اليومي (إذْ وجد).
أمثلة عملية مختلطة:
- قراءة جزء من التوثيق الرسمي للغة برمجة ما.
- مشي 10000 آلاف خطوة
- جري 3 او 4 كلم
- جلسة مع الاهل غير المؤلوفة..
- طهي شيئ غير معتاد
- مجاهدة نفسك في التخلي عن عادة او تطبع سيء..
- الإبتعاد عن الهاتف لساعات معينة.. و هكذا..
في نهاية اليوم و تحقيقك لشيئ من هذا ستشعر بشعور الانجار و بشعور عدم العجز.. و هذا سيفتح لك ابوابا اخرى للسعي و المحاولة.
اصدق النية و استعن بالله و لا تعجز.
#خاطرة
أمثلة عملية مختلطة:
- قراءة جزء من التوثيق الرسمي للغة برمجة ما.
- مشي 10000 آلاف خطوة
- جري 3 او 4 كلم
- جلسة مع الاهل غير المؤلوفة..
- طهي شيئ غير معتاد
- مجاهدة نفسك في التخلي عن عادة او تطبع سيء..
- الإبتعاد عن الهاتف لساعات معينة.. و هكذا..
في نهاية اليوم و تحقيقك لشيئ من هذا ستشعر بشعور الانجار و بشعور عدم العجز.. و هذا سيفتح لك ابوابا اخرى للسعي و المحاولة.
اصدق النية و استعن بالله و لا تعجز.
#خاطرة
❤12
الحمد لله الذي أحيانا بعدما اماتنا و اليه النشور..
إستعن بالله و لا تعجز، و حاول أن تضع الله أولا قدر الامكان، و اعلم انه لا تكلف نفسا الا وسعها، و اعلم ان الامر بيد الله بدءً و إنتهاءً.. و ذكر نفسك بهذا كلما فترت و نسيت.
وقد جاء في وصية رسول الله ﷺ لابن عباس رضي الله عنهما: ... وإذا سألت فاسأل الله، وإذا استعنت فاستعن بالله، واعلم أن الأمة لو اجتمعت على أن ينفعوك بشيء لم ينفعوك إلا بشيء قد كتبه الله لك، وإن اجتمعوا على أن يضروك بشيء لم يضروك إلا بشيء قد كتبه الله عليك، رفعت الأقلام وجفت الصحف" رواه الترمذي وقال: حديث حسن صحيح.
إستعن بالله و لا تعجز، و حاول أن تضع الله أولا قدر الامكان، و اعلم انه لا تكلف نفسا الا وسعها، و اعلم ان الامر بيد الله بدءً و إنتهاءً.. و ذكر نفسك بهذا كلما فترت و نسيت.
وقد جاء في وصية رسول الله ﷺ لابن عباس رضي الله عنهما: ... وإذا سألت فاسأل الله، وإذا استعنت فاستعن بالله، واعلم أن الأمة لو اجتمعت على أن ينفعوك بشيء لم ينفعوك إلا بشيء قد كتبه الله لك، وإن اجتمعوا على أن يضروك بشيء لم يضروك إلا بشيء قد كتبه الله عليك، رفعت الأقلام وجفت الصحف" رواه الترمذي وقال: حديث حسن صحيح.
binbaz.org.sa
وصية جامعة للحجيج وجميع المسلمين
من عبدالعزيز بن عبدالله بن باز إلى إخوانه في الله حجاج بيت الله الحرام وإلى كل من يطلع على
❤8
تجربتي مع العودة لبناء أسس صلبة للأساسيات و الخوارزميات في مجال هندسة البرمجيات. #5
تحدثنا في المقال السابق من هذه السلسلة عن وضع خطة للتعلّم بعد معرفة وتحديد الثغرات/الثقوب المعرفية، وذكرتُ بعض الاقتراحات والمصادر الموثوقة.. في هذا المقال، بإذن الله، سأشارك خطة عملية لكيفية جمع كل ذلك بصيغة تطبيقية.
تنويه مهم: بدء المشروع التطبيقي لا يعني بالضرورة أنك أنهيت مسار التعلّم، ولا يعني أيضًا أن التعلّم سيتوقف (حتى لو كنت في منتصف رحلة التعلّم، يمكنك أن تبدأ بالتطبيق مباشرة، ولا يجب أن تتوقف بمجرد إنهاء المسار أيضا)... باختصار، التعلّم النظري والتطبيقي مسيرة حياة بالنسبة للمبرمج.
لنفترض أنك تعلّمت أو بدأت التعلّم وتريد أن تجمع ذلك في خبرة عملية، ربما أخذت أساسيات من ال Frontend، والقليل من ال Backend، وبعض المفاهيم من قواعد البيانات.
في هذه المرحلة، يمكنك البحث عن أفكار مشاريع عبر منصّات مثل Upwork أو LinkedIn. الأفضل أن تختار مشروعًا خارج نطاق الأفكار التقليدية (مثل الافكار التقليدي: To-Do List)، وسأقترح بعض المشاريع في نهاية المقال.
بعد اختيار المشروع:
- اكتب مستندًا تقنيًا (Technical Document) بسيطًا يحتوي على الخصائص (Features) التي ستبنيها.
- أنشئ مخططًا أوليًا لقاعدة البيانات (Database Schema).
ثم ابدأ التنفيذ على مراحل: على سبيل المثال، حدّد إضافة ميزة جديدة كل أسبوع.. أعطِ كل ميزة وقتها الكافي من البحث، والبناء، والتحليل، والاختبار.
أنت هنا لا تلتزم بمواعيد تسليم صارمة (Deadlines)، بل تعمل لمصلحتك ولمصلحة تطوير ذاتك.. ومع الوقت، ستجد نفسك قد بنيت مشروعًا متكاملًا منذ الصفر، تعلمت من خلاله العديد من الأمور، وأصبح لديك Portfolio قوي.
بهذا الشكل ستستعمل اللغة أو الإطار (Framework) الذي تتعلّمه وأنت في وضع متحرك In Action. حتى لو كان لديك عمل بدوام كامل أو جزئي، اجعل هذا المشروع ملجأك للتعلّم المستمر.
كل ما ذكرته فوق،، أنا أيضًا أطبقه منذ أن بدأت تطوير مهاراتي وأساسياتي، فهو ليس كلامًا نظريًا بلا تجربة.
أمثلة لمشاريع:
- بناء API كيفما كان بلا فرونتآند
- بناء Dashboard باستخدام ال Full stack technologies
- بناء موق شخصي متكامل
- بناء منصلة مقالات
- بناء موقع لإجراء مسح معين.. و هكذا..
و مرة أخرى، الطريق طويل، لكن قليل دائم خير من كثير منقطع.
ولو 30 دقيقة يوميًا كافية للاستمرارية.
اللهم علّمنا وانفعنا بما علّمتنا.
والسلام عليكم.
#إستدراك_ما_فات_في_هندسة_البرمجيات
تحدثنا في المقال السابق من هذه السلسلة عن وضع خطة للتعلّم بعد معرفة وتحديد الثغرات/الثقوب المعرفية، وذكرتُ بعض الاقتراحات والمصادر الموثوقة.. في هذا المقال، بإذن الله، سأشارك خطة عملية لكيفية جمع كل ذلك بصيغة تطبيقية.
تنويه مهم: بدء المشروع التطبيقي لا يعني بالضرورة أنك أنهيت مسار التعلّم، ولا يعني أيضًا أن التعلّم سيتوقف (حتى لو كنت في منتصف رحلة التعلّم، يمكنك أن تبدأ بالتطبيق مباشرة، ولا يجب أن تتوقف بمجرد إنهاء المسار أيضا)... باختصار، التعلّم النظري والتطبيقي مسيرة حياة بالنسبة للمبرمج.
لنفترض أنك تعلّمت أو بدأت التعلّم وتريد أن تجمع ذلك في خبرة عملية، ربما أخذت أساسيات من ال Frontend، والقليل من ال Backend، وبعض المفاهيم من قواعد البيانات.
في هذه المرحلة، يمكنك البحث عن أفكار مشاريع عبر منصّات مثل Upwork أو LinkedIn. الأفضل أن تختار مشروعًا خارج نطاق الأفكار التقليدية (مثل الافكار التقليدي: To-Do List)، وسأقترح بعض المشاريع في نهاية المقال.
بعد اختيار المشروع:
- اكتب مستندًا تقنيًا (Technical Document) بسيطًا يحتوي على الخصائص (Features) التي ستبنيها.
- أنشئ مخططًا أوليًا لقاعدة البيانات (Database Schema).
ثم ابدأ التنفيذ على مراحل: على سبيل المثال، حدّد إضافة ميزة جديدة كل أسبوع.. أعطِ كل ميزة وقتها الكافي من البحث، والبناء، والتحليل، والاختبار.
أنت هنا لا تلتزم بمواعيد تسليم صارمة (Deadlines)، بل تعمل لمصلحتك ولمصلحة تطوير ذاتك.. ومع الوقت، ستجد نفسك قد بنيت مشروعًا متكاملًا منذ الصفر، تعلمت من خلاله العديد من الأمور، وأصبح لديك Portfolio قوي.
بهذا الشكل ستستعمل اللغة أو الإطار (Framework) الذي تتعلّمه وأنت في وضع متحرك In Action. حتى لو كان لديك عمل بدوام كامل أو جزئي، اجعل هذا المشروع ملجأك للتعلّم المستمر.
كل ما ذكرته فوق،، أنا أيضًا أطبقه منذ أن بدأت تطوير مهاراتي وأساسياتي، فهو ليس كلامًا نظريًا بلا تجربة.
أمثلة لمشاريع:
- بناء API كيفما كان بلا فرونتآند
- بناء Dashboard باستخدام ال Full stack technologies
- بناء موق شخصي متكامل
- بناء منصلة مقالات
- بناء موقع لإجراء مسح معين.. و هكذا..
و مرة أخرى، الطريق طويل، لكن قليل دائم خير من كثير منقطع.
ولو 30 دقيقة يوميًا كافية للاستمرارية.
اللهم علّمنا وانفعنا بما علّمتنا.
والسلام عليكم.
#إستدراك_ما_فات_في_هندسة_البرمجيات