16

بماذا تنصحني لأصل لمستوى احترافي بالبرمجة ؟

بدأت تعلم البرمجة ولكن من البداية، التحقت بدورة علوم الحاسوب بأكاديمية حسوب، لم أنجز الكثير من الدورة، لكن أصبحت متخوفة، وهذه مخاوفي:

ليس لدي أي خلفية فعليا عن هذا المجال، فأصبحت مترددة حيال صعوبته، ولكن ما زال لدي الرغبة في التعلم.

أخشى بعد الانتهاء ألا أستطيع إنشاء تطبيق أو أعمل على أكواد، وكيف سأتعامل معها؟

هل الأمر يحتاج للحفظ كثيرا؟ خاصة أني ليس لدي هذه المهارة؟

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

وأين تضعني هذه الدورة في طريق تعلم البرمجة؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

أهلًا بكِ، سيسرني أن أجيب عن كامل استفسارتك بأفضل ما يمكنني، وأرجو منك أن تستوضحي عن أي إجابات ليست واضحة لك.

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

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

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

بالنسبة للحفظ، فهذا بعيد كل البعد في البرمجة، إذ الأمر أشبه بعملية الطبخ التي تجدين فيها كل الأدوات والمكونات أمامك، وما عليك سوى جلب المكونات واستعمال الأدوات المناسبة للخروج بطبخة لذيذة، فعادة كل شيء تجدينه على الإنترنت حتى شرح عن كيفية استعمالها بدقة. تشبيه آخر للبرمجة أسمعه كثيرًا هو بمثابة الامتحان المفتوح الذي يُسمَح فيه باستعمال أي مصادر أو مراجع أثناء الامتحان للعثور على الإجابة. باختصار، ما يهم هو تعلمك للمفاهيم البرمجية (وليس حفظها) والباقي يأتي بالبحث واستعمال التفكير المنطقي.

ومع ذلك، أرجو أن تتأكدي تمام التأكد أنني أبحث يوميًا عن الأشياء البسيطة التي يبحث عنها أي مبتدئ في البرمجة، ومن أجمل الأمور أنني أنسى كيف نكتب العنصر في HTML، والأمر المضحك أنني كتبت فصلًا كاملًا عن الفيديو في الويب وتحويله في كتاب "نحو فهم أعمق لتقنيات HTML5" (كان الفصل الأصلي قديمًا فاضطررت إلى إعادة كتابته وتحديثه)، وكتبت توثيق HTML في موسوعة حسوب، وأعرف كل خاصيات مع التطبيق العملي لها، لكنني منذ أيام كنت أبحث عن تضمين الترجمات في الفيدوهات، ووجدت مثالًا كتبتُه بيدي :-) أرجو أن تفهمي من كلامي أنني أعرف وجود التقنية الفلانية، وكيفية استخدامها، وطبقت كل ذلك عمليًا، لكنني لا أحفظ شيئًا منها (وتأكدي أنني لن أحفظه مستقبلًا).

تختلف البرامج المستعملة حسب مجال التطوير الذي أنتِ فيه، لا أريد التخصيص وذكر أسماء مرتبطة بمجالات معينة إذ إنَّ سؤالك عام، فسأجيبك أن تري ما هي البرمجيات التي يستعملها المدرب وتجربي استعمالها، هنالك بدائل لأغلبية البرمجيات لها الوظيفة نفسها، فإذا كان المدرب يستعمل vscode فابحثي في الإنترنت عن بدائل لهذا المحرر، وستجدين الكثير، وأنصحك بتجربتها واختيار أنسبها لك (التجربة خير برهان هنا، والتجربة ستكسبك الخبرة كما سأذكر).

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

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

في النهاية، أرجو لك كل التوفيق في مسيرتك التعليمية والعملية، صحيحٌ أن الطريق طويل، لكنه رحلة جميلة.

سلام عليكم يجب ان تعلم انه هذه هي البداية لا يوجد احد بدأ وهو محترف، في الاول يجب ان تتقن الأسسيات في البرمجة، متل loop, conditions... يمكنك إتقان هذه الأسسيات في أي لغة تريد متلا بايتون او C, C++... لك الخيار في ذلك.

بعد ان تتقن الأسسيات يجب عليك بحت عن خورزميات وتبدأ في حلها هناك عدة مواقع توفر هذا، من بينها hackerrank لازلت استعمله الى يومنا هذا لان به جميع المستوايات من مبتدأ الى محترف.

يجب ان تعلم الخورزميات من الاومور اساسية في البرمجة يعني خد وقتك الكافي لكي تصبح لديك القدرة على حل معضم المشاكل.

وأعتقد المدة المتوسط هي 3 اشهر لنفترض بعد 3 اشهر وانت تحاول حل الخورزميات فقط بالأساسيات بعدها ستكون لديك قدرة في قراءة بعض أكواد وفهمها هنا يجب عليك توجه الى لغة كائنية التوجه، هناك العديد C#, C++, Dart...

هنا ستتعلم أومور اخرى ستنتقل الى مستوى اخر حاول تعلم وفهم معضم اشياء في برمجة كائنة التوجه بعدها يمكنك الانتقال الى قاعدة البيانات وتوجد Sql and NoSal يمكنك البدأ بـ Sql حاول كذلك تعلم أساسيات كيفية إنشاء جدول كيفية ملئه... بعدها إبدأ ببرمجة برامج مربوطة بقاعدة البايانات...

سأنهي ماكتبت بأنه يجب عليك دائما تطبيق اي شيء درسته يجب تطبيقه، لكي تتعلم البرمجة تطبيق تم تطبيق كل يوم وإن شاء الله ستكون من المحترفين ويجب ان تعلم انه لا حدود لتعلم متلا عندما تصبح تبرمج موقع او تطبيق كاملا يجب عليك تعلم كيفية كتابة كود نظيف سهل تعديل عليه...

معلومات قيمة لقد حفزتني، لكن لدي سؤال،

كم من الوقت علي أن اخصص للبرمجة باليوم، خاصةً إن كان لدي عمل؟

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

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

ان اريك كم من الوقت يقضي طالب للحصول على شهادة تعترف به انه مهندس. يعني لا يجب ان نقارن 5 سنوات بـ 3 أشهر.دعنا نتحدت عن مستوايات المبرمج نجد:

Junior && Mid Level && Senior

هذه المستوايات تعتمد على شخص متلا لكي تكون Junior تعني مبتدأ تحتاج ما بين سنة الى 3 سنوات يعني على حسب شخص ويتقضى مابين 1500 دولار الى 3000 دولار ممكن أقل ممكن اكتر على حسب الدولة وشركة...

Junior هو من يفهم أساسيات البرمجة. ويجب إرشاده ولزال عليه تعلم كتير من التقنيات.

Mid-Level تعني متوسط تحتاج 3 سنوات فما فوق من خبرة يعرف جيدا اللغة التي يشتغل بها لديه خبرة جيدة يعرف كذلك بعض التقنيات التي يجب عمل بها الى جانب البرمجة ويتقضى مابين 1800 دولار الى 20.000 دولار ممكن أقل ممكن اكتر على حسب الدولة وشركة...

ونجد كذلك Senior لنقل خبير هو الشخص الذي أمضى أكتر من 10000 ساعة في البرمجة في نوع معين. له خلفية قوية عن design patterns كذلك لديه خبرة جد عالية في الحماية ،بروتوكولات ،تقنيات... هناك من يقول يجب ان تكون لك 5 سنوات الى 7 سنوات خبرة لكي تصبح Senior هناك من يقول 3 سنوات الى 7 سنوات... ومن خلال تجربتي المتواضعة ارى لكي تصبح Senior يجب ان تكون خبرة لا تقل عن 5 سنوات يمكن ان نجد استثناءات يتقضي مب 8000 دولار الى 30.000 دولار ممكن أقل ممكن اكتر على حسب الدولة وشركة...

هناك مستويات أخرى ، ولكن قلة من الناس يصلون إلى هذه المستويات.

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

بالتوفيق ان شاء الله.

-3

يا ألهي لا اصدق أن بعد هذا كله لم تذكر الممارسة

أولًا لستُ خبيرة في البرمجة ومازلتُ في بداية التعلم، ولكن يمكنني الاجابة على سؤالك

هل الأمر يحتاج للحفظ كثيرا؟ خاصة أني ليس لدي هذه المهارة؟

اعتقد أنه يحتاج للممارسة العملية اكثر من الحفظ، وان الأمر بمجرد التطبيق يُصبح أكثر سهولة من القراءة والدروس النظرية .

تلك مجرد نظرتي الأولية وانتظر من المحترفين أن يوضحوا لنا تحديدًأ ما المهارات التي نحتاجها لاحتراف البرمجة

1- في البداية يجب ان تعلم ان البرمجة هي وسيلة وليست غاية في حد ذاتها. البرمجة قد تكون اداه لانشاء برامج الويب او سطح المكتب ولكن قد يكون البرنامج المستهدف متخصص في التعلم "e-learning" او علم البيانات"Data science" او المعلومات البيولوجية "Bioinformatics" او البرمجة المدمجة "embedded programming" او برمجة الالعاب "Game programming" . لذلك من المهم للغاية معرفة وظيفة البرامج التي تهتم بإنشائها منذ البداية لعدم تضيع الوقت والمجهود. فمثلا بالرغم من ان لغة ال C و ال ++C هي لغات مهمة لكن لاداعي لتعلمها في البداية اذا كنت مثلا مهتم ببرامج الويب ولكن تصبح مثلا لغة ال ++C وال #C مهمة جدا اذا كنت تهدف لتعلم برمجة الالعاب ولكن بشكل عام لغة ال ++C معقدة الى حد ما ولاينصح بتعلمها في البداية لانك لن تشعر بوجود انتاجية الا بعد وقت طويل من الممارسة الا اذا كنت تهتم كما ذكرت ببرمجة الالعاب او البرمجة المدمجة وفي هذه الحالة لايمكن تجنب ال ++C لوقت طويل . اما اذا كان هدفك علم البيانات فتأتي ال Python و R في المقام الاول في الاهمية.

2- في حالة عدم تحديد الهدف العام لتخصصك البرمجي يمكنك البدء بلغة Python 3 لانها ذات شعبية واسعة وسهلة التعلم وتستخدم في الكثير من البرامج " تطبيقات الويب "على الخادم back end" من خلال "python Django, Python Flask, Python Tornado Frameworks" - علم البيانات ويشمل الذكاء الاصطناعي و التحليل الاحصائي من خلال "Python Scikitlearn, python Pandas, python Numpy" - الاسكربت وهو مهم لعمل المهام الممله والمتكرره بسرعة مثل "Server optimization" - برامج سطح المكتب من خلال "Python pyQt". والكثير الكثير من التطبيقات. وذلك هو السبب الرئيس وراء شعبية بايثون. ولكن في نفس الوقت يجب تعلم اللغة الاساسية بدون تخصص ومن ثم تحديد الهدف المطلوب من البرمجة.

بعد تحديد الهدف سيتضح لك ما اذا كنت بحاجة للغات اخرى . ففي حالة برامج الويب يجب تعلم ال Javascript و SQL و ال HTML و CSS بالاضافة لل Python وهذا يوضح مدى خطورة البدأ في تعلم البرمجة بدون معرفة الهدف. تخيل بعد معرفة هدفك البرمجي سوف تكون مضطرا لكي تتعلم ثلاث لغات اضافية .

3- بالنسبة للدورة فللإسف لم اتعامل معها لانني منضم جديد للموقع لكن من المهم الانضمام لدورة للاساسيات ومن ثم القيام بعمل مشروع حقيقي يمكن استخدامه بالفعل وقراءة التوثيق الخاص باللغة "documentation" لانه بهذه الطريقة يمكنك التعلم بشكل حقيقي ومؤثر. اما مجرد التعلم فلن تصل الى اي شئ بالتأكيد.

4- انا لست محترفا للبرمجة كعمل رئيس ولكن كعمل مساعد . على العموم من خبرتي الشخصية في التعلم الذاتي للبرمجة تعتبر الدورات المدفوعة "لقاء مقابل مادي" المقدمة على الشبكة افضل من تلك المجانية. وذلك يرجع الى ان المحترفين في البرمجة لايمكنهم تقديم الكثير من الوقت في تعليم الاخرين في الدورات مفتوحة المصدر بدون مقابل، حيث انه يتحصل فعليا على الكثير من الاموال كمحترف حقيقي للبرمجة وهذه هي طبيعة الكائن البشري بشكل عام "المحترفون لايعملون اطلاقا بكون مقابل" . حتى وان كانت الدورة تهدف لتعليم لغات او برامج مفتوحة المصدر بالاساس .

5- احتراف البرمجة ليس بالشئ السهل ولكن يعتبر المحفز الرئيس والضامن للتعلم هو الاهتمام او بشكل اكثر وضوحا ، الحب الجم للبرمجة والصبر على التعلم. في حالة عدم وجود الحافز فالنصيحة بالتأكيد هي عدم الاستمرار.

مرحبا, ماتشعرين به هو طبيعى ومنطقى ولكن فى بداية الامر يجب ان تحددى ماهو المسار الذى ترغبين فى تعلمه فى حالة برمجة المواقع الالكترونية :

1 - هل ترغبين ان تتخصصى فى تطوير الواجهات الامامية (Front-End) فقط ؟

2 - هل ترغبين ان تتخصصى فى تطوير الواجهات الخلفية (Back-End) فقط ؟

3 - هل ترغبين ان تتخصصى فى تطوير المواقع بشكل كامل (Full-Stack)؟

حتى تصلى الى الاحتراف يجب ان تبنى اساس متين ,

فى حالة رغبتك فى تعلم مسار الواجهات الامامية يجب ان تتعلمى الاتى كاساس لابد منه :

أ - HTML

ب - CSS

ج - Javascript

اما فى حالة رغبتك فى تعلم مسار الواجهات الخلفية يجب ان تتعلمى الاتى :

أ - mySQL

ب - PHP أو Python

اما فى حالة رغبتك فى تعلم مسار المواقع بشكل كامل يجب ان تتعلمى مسار الواجهات الامامية والخلفية .

كل ماذكرتة هو اساس يجب ان تتمكنى منه , يوجد العديد من الاشياء الاخرى التى ستتعلميها مستقبلا لكن فى الوقت حالى انتهى من دورة علوم الحاسوب بأكاديمية حسوب ثم بعد ذلك لديك الاختيار فى اتباع المسار الذى ترغبين به .

تذكرى دائما الاحتراف يأتى بالتدريب والممارسة المستمرة .

بالتوفيق فى القادم باذن الله

خاصة أني ليس لدي هذه المهارة؟

نجاحك في أي شيء مرهون بمدى استمراريتك في آداءه بغض النظر عن قوة أو ضعف موهبتك، وهذا معناه أنّ (من يجتهد يصيب ولو بعد حين ...)، الإستمرارية هي العنصر الوحيد الذي يجعلك تنجح في أي شيء مهما كان، لأن الاستمرارية تعني فعل تراكمي، والتراكمية تعني التطوير النوعي في آداءك، وبالتالي تحسين المستوى.

أخشى بعد الانتهاء ألا أستطيع إنشاء تطبيق أو أعمل على أكواد، وكيف سأتعامل معها؟

بما أنّك بدأت بالدورة الخاصة بحسوب، فـحاولي إكمالها كلها مع التطبيق، لأنّ وضع فرضيات قبل انهاء الشيء أمر خاطئ، لأنّ الصورة في هذه الحالة لم تكتمل لك، مما يُشكل صعوبة أو تخوف لِدى الشخص على فهم الأمر بشكل أوسع، وذلك بسبب أنّ مدارك العقل كبداية لا تعرف مع ماذا تتعامل، وتهيء أنّ الأمر صعب، ولكن مع الاستمرار والتعرف على الصورة بشكل أوسع، سوف يكون الأمر أسهل، لأنّه أصبح لديك الأساسيات على فهم الأكواد ..إلخ.

أنا تعلمت البرمجة من لا شيء، بدون دورات أو أي شيء، فقط مُمارسة، وقراءة مقالات، وفهم الأكواد، بعد أشهر أستطعت صُنع قوالب أو ثيمات كاملة ...

هل الأمر يحتاج للحفظ كثيرا؟

أنّ الذي يقول عليه الأشخاص "سهل" اكتشف بأنّه صعب جدًا بالنسبة لي، وبأنّي ندمت أنّي بدأت به ... وأنّ الذي يقولون عليه صعب، ومعقد، ومستحيل، أكتشف في النهاية أنّه في مُنتهى "السهولة" بالنسبة لي، وبأني ندمت أنّي صرفت النظر عن الخوض فيه.

هذا معناه سهل الناس ممكن يكون صعب علي، وعليك، وصعب الناس مُمكن يكون سهل علي، وعليك، وما قد يُمتع الأشخاص قد يكون قمة في الملل بالنسبة لي، وما يشعرهم بالضجر قد يكون متعتك الأبدية...

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

لذلك سؤالك في هذا الوقت سوف يزيد من الأمور صعوبة، وقد تصلين إلى التشتيت، حاولي انهاء الدورة بشكل كامل مع تطبيق ما تتعلميه مهما كان بسيط

وحين الانتهاء، وبناءً على ما تعلمتيه، يُمكن وضع سؤال آخر، وسوف تحصلين على إجابات وافية، ونصائح أكثر قيمة لأنّ الأمر سوف يُصبح أسهل، ويُمكن تحديد التخصص الذي تُريدين البدء به ...إلخ ... بناءً على الخبرة التي اكتسبتيها