** انتشر الفترة اللي فاتت كتير من المقالات و التدوينات اللي بتتكلم عن البرمجة و ازاي تتعلم برمجة .. و للأسف كتير منها فيه معلومات مغلوطة و أغلبها تدوينات لناس مش في المجال أصلا أو مجرد مبتدئين ..
** في المقال ده هنحاول نعرض الموضوع من وجهة نظر شخص شغال في المجال من سنين و هجاوب علي اغلب الاسئلة اللي بتدور في دماغ أغلب الناس اللي بادئة جديد .. و قدر الامكان هكون محايد .. و هنرد علي اسئلة الناس في التعليقات بحيث يكون المقال مرجع للناس اللي حابة تبدأ ..
** المقال طويل شوية بس ان شاء الله هلم فيه أغلب الحاجات و ممكن تقراه علي اجزاء لانه عبارة عن أسئلة و أجوبة
الاول دي أهم تجميعة لتعلـيم البرمجة و برامج الكمبيوتر
من هنا
--------------------------
دي الاسئلة اللي هنتكلم عنها بحيث تبقي عارف محتوي المقال :
*1* هل البرمجة حاجة صعبة؟
*2* هاخد وقت أد ايه علي ما أتعلم ؟
*3* ازاي أبدأ اتعلم برمجة بشكل صحيح؟
*4* هل لو كنت مستصعب البرمجة في الدراسة في فرصة تانية أتعلمها
صح؟
*5* هل علشان أتعلم لازم أكون شاطر في مواد زي الرياضيات؟
*6* هل علشان أتعلم لازم أكون في هندسة أو حاسبات و معلومات ؟
*7* حاسس بتوهان ومش عارف انا صح ولا غلط ازاي اتغلب علي كده؟
*8* اتعلمت الاساسيات بس مش قادر أعمل ولا مشروع ايه الحل؟
*9* بيقابلني مشاكل كتير وانا ببرمج ازاي احلها؟
*10* ايه أقوي لغـة برمجة؟
*11* ايه أقوي لغـة من حيث السيكيورتي؟
*12* هل الـ Algorithms حاجة مهمة؟
*13* ازاي أتعلم و أطور من نفسي بعد الاساسيات؟
*14* السوق محتاج ايه الفترة دي؟
*15* هل ممكن يكون لي عائد مادي كويس من البرمجة؟
*16* ازاي أبدأ كـ freelancer في البرمجة؟
*17* ايه أفضل مصادر أتعلم منها ؟
--------------------------
قبل ما أتكلم عن أي حاجة في البرمجة .. انا سيبت البرمجة 3 مرات لأني كنت مستصعبها فكونت حاولت قبل كده وفشلت عادي جدا
الحمد لله انا دلوقت خبرة في أكتر من لغة و بدرب طلاب و مبرمجين في شركات و الوضع اختلف تمام
--------------------------
*1* هل البرمجة حاجة صعبة؟
الاجابة المختصرة (لأ)
البرمجة زيها زي أي مجال جديد بتقابلك صعوبات كتير في الاول .. كل ما بتحاول و تستمر الموضوع بيتحسن معاك يوم بعد يوم و المشاكل بتتحل .. المهم يكون عندك حافز مخليك مكمل .. ولازم تكون حاببها
--------------------------
*2* هاخد وقت أد ايه علي ما أتعلم ؟
الموضوع مش هيتقاس بالوقت أد ما هيتقاس انت بتبذل مجهود أد ايه ..
يعني مثلا اللي عامل لنفسه وقت اسبوعي غير اللي مخصص وقت يومي وكده ..
ملحوظة:
اوعي تتخدع و تخلص مستوي كامل في يومين مثلا .. لأنك و انت بتتابع الدروس هتلاقيك فاهم و عمال تعدي فيديوهات من غير ما تطبق او بتاخد كمية كبيرة في وقت صغير لمجرد انك فهمتها لانك للأسف بعد يومين تلاته هتلاقيك نسيت و بتجيب من الاول تاني ..
* ما تستعجلش وادي كل حاجة وقتها وما تتابعش كمية كبيرة في وقت صغير .. وطبق كل حاجة بايدك وشوف أمثلة كتير جدا علي اد ما تقدر
--------------------------
*3* ازاي أبدأ اتعلم برمجة بشكل صحيح؟
البرمجة انا بقسمها جزئين :
1- انك بتتعلم قواعد اللغة (syntax)
2- انك تتعلم ازاي تبرمج (Logic)
غلطة كبيرة أي حد جديد في البرمجة بيعملها انه بيتعلم اساسيات اللغة و ازاي يكتب الكود و يقف .. أو يروح يدرس المستوي الاول في لغة برمجة ويقف ..
** انت كده اتعلمت ازاي تكتب كود لكن ما اتعلمتش ازاي تبرمج.
** لغة البرمجة انا بشبهها بالظبط كأنك بتتعلم لغة زي الالماني مثلا ..
- بتبدأ بانك تتعلم الحروف و قواعد اللغة (بس لسة مش قادر تتكلم)
- بعد كده بتبدأ تعرف كلمات و ما زلت برضه مش عارف تتكلم
- مع الوقت و الاستمرار و التدريب بتقدر تكون جمل بسيطة بس ما زال النطق وحش ..
- مع الممارسة و الاستمرار بيبدأ النطق يتحسن و تتكلم
كذلك البرمجة :
- بتتعلم الاساسيات و كتابة لغة البرمجة وقواعدها سواء لواحدك أو في كورس ..
- بعد كده بتبدأ تعمل حاجات بسيطة (ولو بالتقليد)..
- مع الاستمرار و كده بتتغلب علي المشاكل و الموضوع بيتحسن مرة بعد مرة و بتكسب خبرة
** يبقي ما تفتكرش انك لو فهمت قواعد اللغة انك كده بدأت تبرمج او اتعلمت برمجة .. و للأسف أغلب المبتدئين بيقعوا في المشكلة دي ..
** في مراحل بتمر عليها بنسميها مراحل التوهان هتلاقيها و حلولها في الاسئلة الجاية
--------------------------
*4* هل لو كنت مستصعب البرمجة في الدراسة في فرصة تانية أتعلمها
صح؟
- للأسف أغلب الدراسة الاكاديمية بتدرس البرمجة غلط .. و معظم اللي بيشرحوا برمجة في الجامعات غير مؤهلين أو بيتشرح فقط مجرد أساسيات .. فيكون مجمل اللي اتعلمته فقط هي قواعد اللغة .. وده بياخدنا للمشكلة اللي اتقالت في الاجابة اللي فوق .. انت اتعلمت syntax لكن ما اتعلمتش ازاي تبرمج ..
- ممكن تبدأ بداية جديدة مع البرمجة بشكل صحيح و تتعلم و تتفوق فيها كمان .. المهم انك تكون حابب الموضوع و تستمر وعندك حافز
--------------------------
*5* هل علشان أتعلم لازم أكون شاطر في مواد زي الرياضيات؟
الاجابة المختصرة بنسبة 85% لأ
أغلب الشغل اللي بيتطلب منك مش متطلب انك تكون شاطر و متقدم في الرياضة .. لكن في نوعيات من البرمجيات (و ليكن مثلا هتستخدم فيها neural networks) بتحتاج بعض العمليات الرياضية .. و في حاجات معينة بتبقي فيها حسابات و بتطلب منك حسابات رياضية زي برامج الكونترول و كده ..
بس زي ما قولت نادر جدا جدا لما يتطلب منك حاجة محتاج خلفية كبيرة في الرياضيات .. وبالتالي مش هتكون عائق في طريق انك تتعلم برمجة بدليل ان في أطفال بتتعلم
--------------------------
*6* هل علشان أتعلم لازم أكون في هندسة أو حاسبات و معلومات ؟
الاجابة المختصرة : لأ
- انا طول مشوار التدريب من 2011 لحد دلوقت .. ناس كتير دراستهم غير متعلقة تماما بالهندسة او البرمجة و مع ذلك متفوقين جدا علي ناس في هندسة .. (انا مهندس ومش شايف أي مشكلة في الاعتراف بكده)
- الدراسة الاكاديمية في البرمجة بتديك اساسيات .. الميزة بس انها بتديك مواد تانية جنب البرمجة زي الرياضيات بتساعدك جدا في البرمجة.
- يعني انا درست الكترونكس في الكلية و درس رياضيات 4 سنين و مواد خاصة بالكونترول و ألجورزيمات و OS و غيرها .. كل ده ساعدني جدا .. بالرغم من اني درست اساسيات مش تعمق الا انها ادتني معلومات كويسة فادتني ..
- بس عمر ما كانت الدراسة في هندسة او حاسبات هي اللي هتخليك متفوق في البرمجة بدليل ان في أطفال بيبرمجوا كويس جدا .. و في مبرمجين مشهورين عالميا مكانوش في هندسة او مكملوش جامعة ..
- يعني من الاخر اللي حابب يتعلم و يدوس هيتعلم .. مفيش حاجة هتعيقك غير نفسك
--------------------------
*7* حاسس بتوهان ومش عارف انا صح ولا غلط ازاي اتغلب علي كده؟
في الحقيقة طول مشوارك في البرمجة هيقابلك أكتر من مرحلة توهان :
- أول مرحلة هتلاقيك بتغلط كتير في كتابة أبسط الاكواد .. و هتبقي متعذب و تلاقي الغلطة انك ناسي حرف او حاجة عاملها Capital وهي small أو ناسي semicolon .. لو انت في المرحلة دي فده طبيعي أوي ما تقلقش .. وحل المشكلة دي انك تقرا الايرور و تراجع الكود بنفسك لحد ما تحله .. وكل ما تكتب بايدك كتير كل ما المشكلة دي هتتخلص منها بسرعة جدا ..
- تاني مرحلة توهان بتيجي بعد الاساسيات .. انك اتعلمت اساسيات بس مش قادر تعمل أبسط الحاجات بنفسك .. ده طبيعي جدا جدا علي فكرة .. (انت اتعلمت syntax بس) .. فمفروض تبدأ تشوف مشروع صغير اوي أوي تلم فيها الاساسيات دي و تشوف ازاي ممكن تدمجها مع بعض..
حاول تعمل حاجات بسيطة أوي في الاول .. واحدة واحدة هتلاقي الامور بتتحسن .. وقلد عادي جدا في الاول
- تالت توهان انك مش قادر تبتكر و بتقلد بس و حاسس انك فاشل
علي فكرة طبيعي جدا انك ممكن تقلد في الاول .. البرمجة انت بتبني طوبة فوق طوبة .. ناخد مثال :
تخيل لو عميل طلب منك أبلكيشن مقالات مثلا .. وانت دوخت علي النت و قعدت اسبوع تدور وتتعلم علشان تعمله و سلمته .. و بعدها باسبوع عميل طلب نفس الابلكيشن .. مش هياخد منك أكتر من 10 دقايق لأنك خلاص عرفت فكرته ..
** الخلاصة : كل ما تعمل مشاريع كتير وتشوف افكار كل ما الدنيا بتتحسن معاك ..
--------------------------
*8* اتعلمت الاساسيات بس مش قادر أعمل ولا مشروع ايه الحل؟
- دي مرحلة التوهان التانية اللي اتكلمنا عنها في الاجابة اللي فوق ..
حلها انك تبدأ تعمل أبلكيشنز بسيطة أوي أوي و تشوف tutorials فيها تطبيقات كاملة ولو بسيطة .. قلد في الاول عادي جدا .. ما تعديش حاجة الا لما تفهم فكرتها كويس .. و سرش علي اللي ما فهمتوش .. واسأل اللي منزل الـtutorial وما تتكسفش
- بعد ما الموضوع يتحسن شوية ابدأ شوف مشروع كامل كبير شوية و امشي معاه خطوة خطوة و لما تخلصه حاول تضيف خواص من دماغك للمشروع ده ..
- في المشاريع الحقيقية بنبقي عاملين حاجة اسمها Learning period
بنتعلم الحاجة اللي مش عارفينها في المشروع اللي في ايدينا و نبدأ نطبقها في المشروع ..
يعني مثلا لو عامل موقع كامل و عاوز تضيف فيه حاجة معينة ومش عارف بتتعلم ازاي .. بتبدأ تبحث و تتعلم و تطبق و كله تمام .. بعد كده تروح تضيفها للمشروع اللي شغال فيه ..
--------------------------
*9* بيقابلني مشاكل كتير وانا ببرمج ازاي احلها؟
- طول طريقك في البرمجة هيقابلك مشاكل .. ده طبيعي أوي .. و المشاكل بتكون أكبر كل ما كان مستواك أعلي و بتعمل برمجيات أعقد ..
- بس 99% من المشاكل اللي قابلتك قابلت ناس قبلك و سألوا عنها .. فاتعود انك تستخدم البحث .. اوعي تسأل حد الا لما تيأس خالص و تجرب كل الحلول و تبحث كويس..
- كل ما يقابلك مشكلة و تحلها بنفسك او تبحث عن حل خبرتك هتزيد .. لكن لو استسهلت و سألت الناس او حد كملك كود صدقني مش هتستفيد أي حاجة .. (اللي بيستسهل ما بيتعلمش)
--------------------------
*10* ايه أقوي لغة برمجة؟
- أقوي لغة برمجة هي اللي تخليك تعمل كل اللي انت عاوزه من غير ما توقفك .. ما تتعبش نفسك في المقارنات اللي مالهاش لازمة .. اتعب نفسك في تطوير مستواك في أي لغة تختارها
- كل اللغات تقدر تعمل بيها نفس الحاجات .. ركز انك تتعلم ازاي تبرمج مش ازاي تبرمج بلغة كذا .. و صدقني لو اتعاملت مع لغة البرمجة علي انها مجرد Tool .. سهل أوي أوي تتعلم أي لغة جديدة في وقت قياسي
- كل واحد بيبرمج بلغة هيصورلك اللغة اللي بيشتغل فيها كأحسن لغة .. و لحد النهاردة مش فاكر ان قريت مقال محايد في مقارنة بين لغتين ..
- الاداء و السيكيورتي مسؤلية المبرمج أكتر من اللغة .. كل ما كنت متمكن من اللغة هتكتب كود محترم
--------------------------
*11* ايه أقوي لغة من حيث السيكيورتي؟
- السيكيورتي مسؤليتك انت كمبرمج ..
يعني في ناس مثلا تقول حاجة زي ASP.net أقوي في السيكيورتي من PHP , python .. طيب السؤال هنا ليه مواقع متبرمجة بيها بتخترق ؟ حتي موقع مايكروسوفت نفسه بيتعرض للاختراق و مواقع حكومية؟؟
-أولا مفيش برمجية أمنة 100% لكن انت كمبرمج لو مش فاهم سيكيورتي كويس و مطبقها علي شغلك يبقي انت معرض للاختراق بغض النظر عن لغة البرمجة اللي انت مستخدمها ..
- الشركات والمواقع الكبيرة بتخصص ناس لاختيارات السيكيورتي .. ومع الوقت و التطوير عدد الثغرات في الموقع بتقل جدا .. لان الكمال لله وحده ومش هتوصل لمرحلة استقرار من أول مرة
--------------------------
*12* هل الـ Algorithms حاجة مهمة؟
- الالجوريزم من أهم الحاجات اللي لازم تتدرسها .. بس مش لازم تكون هاجس بالنسبالك انك عاوز تتعلمها من أول يوم ليك في البرمجة .. ممكن تأجلها شوبة لحد ما تبدأ تنتج ..
- ميزة دراستك للألجوريزمات انك بتكتسب أفكار و حلول مختلفة لنفس المشكلة و طريقة تفكير .. و كمان بتتعلم أساليب تختبر من خلالها كفاءة الكود بتاعك
--------------------------
*13* ازاي أتعلم و أطور من نفسي بعد الاساسيات؟
- أفضل طريقة تتعلم بيها انك تعمل مشاريع .. ومن خلال المشاريع دي بتبحث و تتعلم اللي ناقصك .. و تتعلم و تطور من طريقة كتابتك للكود
- في البداية ممكن تقلد لحد ما تكتسب خبرة بسيطة و مع الوقت الوضع هيتحسن ..
--------------------------
*14* السوق محتاج ايه الفترة دي؟
- السوق الفترة اللي فاتت معتمد بشكل كبير علي الويب و الموبايل ..
أغلب الشركات نقلت الانظمة بتاعتها لكلاود و الموبايل أبلكيشن بدأ ياخد حصة كبيرة من السوق ..
فلو هتبدأ برمجة من الافضل تاخد طريق من الاتنين
--------------------------
*15* هل ممكن يكون لي عائد مادي كويس من البرمجة؟
- البرمجة من أعلي العوائد في العلم .. بس خلي تركيزك في الاول انك تتعلم و تطور من نفسك ومن طريقة كتابتك للكود أكتر من تركيزك علي الفلوس ..
--------------------------
*16* ازاي أبدأ كـ freelancer في البرمجة؟
- فكر كعميل .. ازاي هيثق فيك و يدفعلك فلوس او يطلب منك شغل من غير ما يشوفلك شغل ع النت .. يبقي اول خطوة انك تعمل Portfolio محترم تعرض شغلك فيه
- اعمل Branding لنفسك و شارك بمعلوماتك و شغلك في كل الـ Communities .. ممكن تعمل شغل مجاني للناس و تنزله في الاول لحد ما تتعرف ..
- لو ليك موقع خاص فدي نقطة في منتهي القوة بالنسبالك ان العميل يوصلك ويوصل لبياناتك و يشوف شغلك اونلاين دايما ..
- حاول تشوف مواقع الفري لانس وادخل اختباراتها .. وممكن تبحث عن فيديوهات مهندسة سمر صبحي علي يوتيوب شارحة مواقع الفري لانس بالتفصيل الممل
--------------------------
*17* ايه أفضل مصادر أتعلم منها ؟
- في البداية الاسهل لأي مبتدئ هي الفيديوهات .. ممكن تبدأ بيها و تفهم اساسيات اللغة .. للكن للأسف مش كل حاجة وخصوصا المستوي المتقدم مش بتكون في الفيديوهات ..
- تاني مصدر هو الكتب .. الكتب منتهي القوة وفيها المعلومات اللي انت محتاجها كلها .. وممكن تلاقي كتاب كامل بيتكلم عن تقنية واحدة ..
-انا عمري ما كنت بقرأ ولا بحب القراية .. بس لما اتعودت ما بقتش بفارق الكتاب
- الناس اللي بتتعلم من PDF دي تبطل العادة دي .. قراءة يعني كتب مطبوعة .. الـ PDF هيشتتك و مش هتستفيد منه كويس .. لو تقدر تشتري الكتاب المطبوع تمام ولو مش قادر اشتري الـ PDF واطبعه مش هيكلفك كتير و صدقني الكتاب المطبوع هيفرق معاك كتير ..
- أفضل كتب بحب اقراها هي كتب دار نشرWrox اسلوبها من الاخر بيقولك ازاي تبرمج .. ابحث عن الكتب اللي تحتاجها بكتابة wrox وبعدها لغة البرمجة اللي عاوزها ..
--------------------------
* المقال ممكن يكون محتواه سهل او تافه لبعض الناس بس ممكن يكون منقذ لناس تانية حابة تبدأ ومش عارفة الطريق فاتمني تمشي بمبدأ (فليقل خيرا أو ليصمت) ..
* انا سيبت البرمجة أكتر من مرة لان مكانش في حد يوجهني .. فخليك ايجابي و ساعد غيرك انه يشوف الطريق
* شارك الناس بعلوماتك ولو بحاجة بسيطة .. وصدقني معلوماتك انت كمان هتزيد .
* في النهاية انا عرضت وجهة نظر وتجربة شخصية .. ان كان من توفيق فمن الله وان كنت مقصر فمن نفسي ومن الشيطان
كتبه : أحمد صيام