كيف لا تبدأ تعلم البرمجة

تحية طيبة خابروفتسي!



قررت أن أشارك تجربتي في التعلم "الناجح" للغة (لغات) البرمجة.



كي لا أقول إنني شخص عادي تمامًا في صناعة تكنولوجيا المعلومات ، لكن خطتي التدريبية "لأصبح مطورًا لتكنولوجيا المعلومات" - ذهبت بضجة كبيرة في اللحامات.



قليلا من الخلفية.



يجب أن أقول على الفور أنني لم أخوض في تدريب موجه في علوم الكمبيوتر. وتخصصي في التعليم بعيد كل البعد عن التقنية. عمل منذ 2005. حتى عام 2012 في شركات مختلفة ، صغيرة وكبيرة ، مرتبطة مباشرة بصناعة تكنولوجيا المعلومات. تعلمت القليل من كل شيء: الأخت. إدارة Windows (حتى MCP و MCSA تمكنت من الحصول عليها) ، برنامج VMware قليلاً (VCP موجود أيضًا في البنك الخنزير) ، بالإضافة إلى ذلك درس مجموعة مختلفة من البرامج ذلك النظام. يستخدم المشرفون عادة في عملهم اليومي.

لقد جربت نفسي في مبيعات الشركات ، بالمناسبة ، عملت بشكل جيد. تمكنت من العمل قليلاً مع موزع برامج ، وكذلك مع شركات تكامل ، وكان لدي فهم جيد لسياسات ترخيص البرامج. لقد خطط ليصبح مدير مشروع ، حتى أنه بدأ في دراسة PMBOK ، وإدارة الوقت ، ومعايير دولية مختلفة مثل ISO ، Tier ، وحتى تأرجح في PCI DSS.



ولكن في مرحلة ما انهار ، وتنازل عن كل شيء. ذهبت في إجازة لمدة 8 سنوات ، إذا جاز التعبير.

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



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



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



علاوة على ذلك ، كنت أرغب لفترة طويلة في تعلم البرمجة والتخصص في اتجاه SAP. تم اختيار مسار الدراسة المستقلة للأساسيات ، لغة ABAP ، ولكن بطريقة ما تخلت عن هذا العمل. لا أتذكر أي سبب يبدو أنه بسبب صعوبة الفهم.



الآن القصة نفسها ، دعنا نذهب ...



لذلك ، بعد 8 سنوات من الراحة من تكنولوجيا المعلومات بشكل عام ، بدأت في دراسة سوق العمل في الخارج وقررت أن أبدأ التخصص في تطوير الأجهزة المحمولة. بعد استخدام لغات برمجة googling لتطبيقات الأجهزة المحمولة واستلهامًا من حقيقة أن Google أعلنت رسميًا عن لغة Kotlin كلغة ذات أولوية لتطبيق android ، قررت بحزم أن أتعلم Kotlin بمفردي في مدة أقصاها سنة واحدة وأضع خططًا للهجرة من أجل الإقامة الدائمة في الولايات المتحدة.



كان قضاء أسبوعين من مشاهدة التدريبات وقراءة الكتيبات كافيين للتأكد من أنه لا يوجد شيء أفعله في Kotlin دون معرفة Java. على الرغم من أنه على الإنترنت ، يقول الكثير من الناس أنه يمكنك التعلم من الصفر. وبعد التسجيل على GitHub ، وتثبيت IntelliJ IDEA ، و JDK ومحاولة فهم الكود ، بدأت بالفعل في إدراك أنه سيتعين علي الدراسة لفترة طويلة جدًا جدًا وشاقة.

تقرر وضع Kotlin جانبًا في الوقت الحالي والتعمق أكثر في لغة جافا. وهكذا فعل. إيه ، أتذكر في وقتي أن جافا كانت لا تزال من بنات أفكار SUN.



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

لقد بدأت في تعلم Java بطريقة قياسية ، بعد قراءة جبل من المقالات ومشاهدة مجموعة من مقاطع الفيديو "كيف تصبح مبرمج جافا". لقد قمت بتنزيل كتاب Bruce Eckel "فلسفة Java" وفقًا لتوصيات الكثيرين في المنتديات ، باعتباره البداية الصحيحة لتعلم اللغة للمبتدئين.



لذلك سأخبرك بصراحة ، هذا ليس للمبتدئين على الإطلاق.



حاولت ألا أنتبه إليها وأكمل القراءة ، قابلية الهضم حوالي 20-25٪ ، أدركت أن هذا لن ينجح. سيتعين علينا فهم لغة C ، وحتى في الكتاب يكتبون بانتظام بالأبيض والأسود أن المادة مصممة للقراء الذين لديهم معرفة بأساسيات لغة C.



حسنًا ، لا خيار. مرة أخرى ، قرأت مجموعة من المعلومات ، ومئات المشاهدات من مقاطع الفيديو حول مواضيع مختلفة حول لغة C. قمت بتنزيل كتاب Kernighan and Ritchie "لغة C" ، وبدأت في الدراسة ، والاستيعاب بالفعل أفضل من Java ، إذا جاز التعبير ، حوالي 50-60٪ ، وهو ما لا يرضيني على الإطلاق.



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



إلا أن العناوين في الكتاب مثل:

"هذا الكتاب ليس دورة تمهيدية في البرمجة. يفترض بعض الإلمام بمفاهيم البرمجة الأساسية مثل المتغيرات ، عبارات التخصيص ، الحلقات ، الوظائف "

أو:

" يفترض معرفة العمل بعناصر البرمجة الأساسية ؛ إنه لا يشرح ماهية الكمبيوتر أو المترجم ، ولا يشرح معنى تعبيرات مثل N = N + 1 "

وعبارات مثل:

الثوابت الرمزية.

إلخ

قادني تدريجياً إلى حقيقة أنني لا أستطيع الاستغناء عن دراسة علوم الكمبيوتر.

في الوقت نفسه ، بدأت في الخوض في Computer Sciense ، مرة أخرى تنزيل الكثير من الكتب. أسجل في دورة Harvard CS50 ، وأبدأ في تعلم أساسيات البرمجة ، وأقرأ بعناية كتاب Vladston Ferreira Philo "الحد الأدنى النظري في علوم الكمبيوتر".



لاحظت أن تعلم لغة C ينتقل إلى الخلفية ، ويخصص المزيد والمزيد من الوقت لأساسيات البرمجة.



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



لفترة طويلة ، بحثت في سبب تساوي 0 إلى 0 درجة مع 1 ، ولدي شعور بأنني لم أفهم الفكرة بالكامل.



لكن هذه المهمة جعلتني أتوقف عند قراءة كتاب عن علوم الكمبيوتر. كلما قرأت أكثر ، كلما كانت المعادلات والمشكلات أكثر تعقيدًا بالفعل:







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



لقد حصلت على حل ، لكن لم أستطع فهم كيفية حل المعلم له:











على سؤالي: "كيف يتم حل هذه المعادلات؟" ، كانت الإجابة بسيطة جدًا:

"قم بتدريس دراسة الوظيفة ، وابدأ في التحليل ومشكلات التحسين. الجبر للصف 10-11 ".

حسنًا ، أعتقد ، حسنًا ، سأشاهد بعض أمثلة الفيديو لأطفال المدارس على موقع youtube ، وسأفهم كيفية حلها ، وسأواصل "جلوك" الدراسة في علوم الكمبيوتر.



وبعد مشاهدة مقاطع الفيديو هذه عن علم الجبر بزغت علي ...



www.youtube.com/watch؟v=RbX_QHxu7Lg

www.youtube.com/watch؟v=FVSG7Neopuo



لا يعني ذلك أنني لا أتذكر كيفية حل مثل هذه المشكلات - أنا ابتدائي مثل اتضح أنني ببساطة لا أعرف الجبر للصفوف 10-11!



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



ربما بقيت معرفتي بالرياضيات عند مستوى دروس الرياضيات في الصفوف 5-6.



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

من الأسرع الطيران إلى المريخ والعودة ، 1.5 عام فقط ، وفقًا للعلماء ...



لذلك ، بعد تحليل الشهر ونصف الشهر الماضي من التعلم المستقل ، أصبح واضحًا لي أنني مثل "الهامستر في عجلة" ، كما لو كنت أركض (أتعلم ) ، لكنني في الحقيقة أقف بلا حراك. لم أزيد من معرفتي بالبرمجة ، باستثناء أنه يمكنني تشغيل برنامج بلغة سي ("مرحبًا ، أيها العالم").

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

لقد فشلت الخوارزمية التي أنشأتها لتعلم البرمجة في البداية تقريبًا.

أصبح من الواضح أنك بحاجة إلى مراجعة خطة التدريب الخاصة بك والتعامل معها.

ومع ذلك ، لست على دراية كاملة بالصورة بعد ، ومن أي جانب يجب أن أقترب من اكتساب مهنة "مطور جافا" ، لأن التعليم القياسي ، من أساسيات الجبر والتعليم العالي ، سيكون طويلًا جدًا وغير مناسب لحالتي.



وفي ذلك الوقت كنت حزينًا إلى حد ما.



هل يستغرق الأمر وقتًا طويلاً لتصبح مبرمجًا بدون خلفية فنية؟

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



أم أنها لا تزال ليست لي؟ وهل المهنة "مطور" للنخبة ، لـ "طبقة الأشخاص المميزين"؟



أعلم أن هناك أشخاصًا أتقنوا البرمجة دون الحصول على تعليم عالٍ في علوم الكمبيوتر. هناك العديد منهم.



وأنا متشوق للانضمام إلى هؤلاء الأشخاص الرائعين والهادفين.

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



أشك في أنني الوحيد الذي يواجه مشكلة مماثلة. أستطيع حتى أن أقول إن هناك الكثير من الأشخاص مثلي ...



أشكركم مقدمًا!



All Articles