CodeGym /مدونة جافا /Random-AR /كيف وجدته؟ أو مشروعي الأول
John Squirrels
مستوى
San Francisco

كيف وجدته؟ أو مشروعي الأول

نشرت في المجموعة
هذه ترجمة لقصة النجاح من مجتمع Java العالمي الخاص بنا. تعلم Alex لغة Java في النسخة الروسية من الدورة، والتي تدرسها باللغة الإنجليزية على CodeGym. قد يصبح مصدر إلهام لمزيد من التعلم وربما في يوم من الأيام سوف ترغب في مشاركة قصتك الخاصة معنا :)

مقدمة

قليلا عن كيف دخلت البرمجة. أنا مدرس وأخصائي نفسي بالتدريب، ومنذ 5 سنوات أمارس مهنتي بنجاح. ولكن لأسباب مختلفة، أفكر بشكل متزايد في الانتقال إلى بلد آخر. ونظرًا لاختلاف اللغة واللوائح في البلدان الأخرى، لم يكن بإمكاني أن أصبح نفس النوع من الاحتراف دون إعادة تدريب جدية. لذلك بدأت بالبحث عن طرق أبسط وأكثر إثارة للاهتمام للتحرك وتحقيق النجاح. كيف وجدته؟  أو مشروعي الأول - 1لقد جربت يدي كفنان وشم (وهذا لا يتطلب في الأساس أي معرفة باللغة)، ولكن هذه قصة ليوم آخر. ثم قدمني صديقي زميل العمل إلى CodeGym. كنت في البداية متشككًا في الوعود التي جعلتني مبرمجًا كاملاً من خلال لعب لعبة وبمثل هذا السعر المتواضع. ولكن بعد ذلك حصلت على بعض أموال عيد الميلاد (لا تخضع لـ "ضريبة الأسرة")، وواجهت الاختيار بين WoW وCodeGym... حسنًا، بفضل الخصم الذي جاء في الوقت المناسب، انقلبت الموازين في الاتجاه الصحيح، وها أنا ذا. كما يجب أن نعلم جميعًا، فإن CodeGym عبارة عن ممارسة خالصة بنسبة 90%. تتعلم كيفية حل المهام. تتعلم كيفية العثور على المعرفة التي تفتقر إليها على شبكة الإنترنت. كل هذا جيد، ولكن بالنسبة للمستويات الخمسة عشر، لم أستطع التخلص من الشعور بأنني أفتقد شيئًا من شأنه أن يكمل الصورة بالنسبة لي. فكرت في الانضمام إلى GeekBrains، ولكن (لحسن الحظ على الأرجح) أوقفني نفس الصديق في الوقت المناسب وقدمني إلى Udemy. عندما فتحت مستودع المعرفة هذا، وافقت على المناشدات: " بسسس، يا صديقي. هل أنت مبتدئ؟" هناك خصم لك... لمدة 3 أيام فقط — لا تفوت هذه الفرصة! " أصبح من الواضح لاحقًا أن هناك دائمًا خصومات، لكن هذا ليس هو الهدف. لقد اشتريت على الفور حزمة تحتوي على دورتين: Java من 0 إلى Pro وشيء مشابه لنظام Android. وهنا تبدأ قصتنا.

نجاح أو فشل؟

أثناء دراستي لدورة Android، حصلت على واجب منزلي لإنشاء مشروع بناءً على معرفتي الجديدة. أنا من النوع الذي يعتقد أن القيام بشيء ما بطريقة بسيطة أو عادية يشبه عدم القيام به على الإطلاق. لذلك، بدأت على الفور في تعقيد حياتي. التفتت إلى الشخص الذي أعرفه والذي يتمتع بخيال أكثر تطورًا وحيوية. هذه زوجتي العزيزة (نعم، ستقرأ هذا المقال أيضًا). واقترحت إنشاء تطبيق يحتوي على صور للحيوانات، والتي تصدر أصوات الحيوانات المقابلة عند النقر عليها. لقد كانت فكرة رائعة، لكنها لا تزال بسيطة جدًا. وبأخذ هذا الاقتراح كأساس، بدأت أفكر:
  • يجب أن يكون هذا التطبيق أكثر من مجرد زغب (شيء يضحك عليه وينسى). أريد أن يكون لها قيمة. على سبيل المثال، من خلال تدريس شيء ما.
  • فليكن الأبجدية مع الحيوانات. ولكن ليس فقط أي أبجدية، ولكن الأبجدية الإنجليزية!
  • وليس الحيوانات فقط، بل حيوانات نادرة لا يعرفها إلا القليل من الناس، وذلك من أجل توسيع آفاقهم!
  • ويجب أن يكون هناك رسوم متحركة واستنساخ صوتي لأسماء الحروف وأسماء الحيوانات باللغتين الإنجليزية والروسية!
الآن هذا ما أسميه الواجب المنزلي (نسيت أن أذكر أنه قبل CodeGym لم أكن على دراية بالبرمجة. وقد مر أقل من 3 إلى 4 أشهر من اللحظة التي بدأت فيها استخدام الموقع بنشاط حتى اللحظة التي بدأت فيها المشروع. لذا، إذا كنت أنت من المخضرمين في هذا المجال وتفكر، " بفف... هل تغير شيء عن النسخة الأصلية؟ "، أؤكد لك، نعم، لقد تغير)! الصعوبة الأولى التي واجهتها كانت ، بشكل غريب، بدء المشروع. كما اتضح، فإن المؤلفين ليسوا الوحيدين الذين يعانون من "حصار الكتاب"... ولكن لأنني طبيبة نفسية، كنت أعرف الحل لمشكلتي. كل ما عليك فعله هو البدء في فعل شيء ما. اتخذ خطوة صغيرة على الأقل، ثم لا تتوقف. لذلك بدأت بفصل دراسي للرسائل المجردة . كان لدى هذا الفصل حقلين وبالتالي يجب أن يكون لديه طرق مختلفة. في الواقع، لم يكن لدي أي فكرة عما سأفعله به، ولكن كان علي أن أفعل شيئًا ما. ثم قمت بإنشاء فئات لكل حرف، مما جعلهم يرثون الطبقة المجردة. استغرق الأمر الكثير من الوقت، وفي هذا اليوم الأول من عملي انتهى. في اليوم التالي قمت بحذف المشروع وبدأت من جديد. لقد فتحت المشروع للتو لأتذكر ما تغير منذ اللحظة التي وصفتها أعلاه. وأود أن أقول أن كل شيء بدا أفضل عندما انتهيت، ولكن لا. لا تزال هناك بالفعل فصول لكل حرف... ويرجع ذلك على وجه التحديد إلى حقيقة أنه تم تكليفي بهذا الواجب المنزلي في بداية دورة Android تقريبًا، وكان عليّ بمفردي اكتشاف تعقيدات العلاقة بين حرف ما النشاط (النافذة النشطة، أو شيء من هذا القبيل) مع الفصل الدراسي. ولم أجد أو أفكر في أي شيء آخر غير هذه الطريقة الخرقاء لربط فصل معين بنشاط معين. على أية حال فإن أحد مبادئ البرمجة (تجنب التكرار) تم انتهاكه 26 مرة. أولاً، (بدا لي) قمت بتنفيذ الحرفين الأولين بالكامل، وقمت بإنشاء واجهة مستخدم تقريبية تتكون من قائمتين (قائمة عامة قد تكون ضرورية عند توسيع الوظيفة، وجدول محتويات، يمكنك من خلاله الانتقال إلى أي من الحروف). لم أواجه صعوبة كبيرة حقًا في البرمجة. أثناء قيامي بتنفيذ مشروعي المستقل، أصبحت أشياء كثيرة، مثل العلاقات بين الفئات والأساليب وما إلى ذلك، واضحة وأصبح المشروع نفسه ممارسة ممتازة لتوحيد كل المعرفة التي اكتسبتها ليس فقط حول Android، ولكن أيضًا حول Java. وكانت الصعوبة الثانيةأن الحرف تحول في نفس الوقت الذي سمع فيه اسمه. الانتقال السلس (التظليل) جعل الأمر يبدو وكأن الصوت يسبق الصورة. ولكن عندما قمت بتأخير الصوت، تجمد الخيط بأكمله - تم تأجيل الانتقال ببساطة بسبب مقدار التأخير، مما أدى إلى نفس التأثير غير المرغوب فيه، فقط في وقت لاحق. ثم اتخذت قرارًا جريئًا بجعل برنامجي متعدد الخيوط! لقد قمت بنقل تشغيل الصوت إلى موضوع منفصل، مع تأخير طويل بما يكفي لتحميل الصورة. كان هذا أقصى ما وصل إليه تعدد مؤشرات الترابط، لكنني كنت فخورًا بالقول إنني كنت أكتب تطبيقًا متعدد مؤشرات الترابط. وكانت الصعوبة الأخيرة هي اختيار المواد المناسبة. هل تعتقد أن اللغة الإنجليزية لا تحتوي على حيوان للحرف X (اتضح أنه كذلك)؟ كان عليّ التعرف على 26 حيوانًا والعثور على صورها وأصواتها، وتسجيل أسماء 26 حرفًا و26 حيوانًا. لو كنت أعمل ضمن فريق، فمن الواضح أنني كنت سأترك هذا الجزء من العمل لشخص آخر. مثل هذه اللحظات الرتيبة تقتل الرغبة في العمل، وعندما لا تكون هناك رغبة، تكون هناك أعذار. على أية حال، استغرقت هذه المرحلة حوالي أسبوعين (لقد قمت بالمشروع في وقت فراغي وعندما لم يكن لدي أي أعذار). تم الإعلان عن اكتمال المشروع بعد حوالي 3-4 أسابيع من بدايته.

هل يستحق الاستمرار في دراسة البرمجة؟

تبع ذلك خيبة الأمل. أولاً، لم يُسمح لي بنشر واجباتي المنزلية في الدورة. لقد قمت بالعمل وبذلت الكثير من الجهد للتباهي، لكن لم يُسمح لي بذلك. ثانيًا، عمل تطبيقي بشكل جيد في المحاكي وعلى هاتفي. فيما خططت للقيام به، لم أقم بتنفيذ الرسوم المتحركة، لأنني بصقت وقررت أن أنهيه عندما انتهيت من الدروس ذات الصلة في الدورة. لكن عندما بدأت بالتفكير في توزيع التطبيق، واجهت مشكلة مثيرة للاهتمام. بعد استخدام هاتف آخر وجهاز لوحي للتحقق مما إذا كان تطبيقي مُحسّنًا لشاشات مختلفة وإصدارات مختلفة من Android، واجهت خطأ غير معروف. يتم إيقاف تشغيل البرنامج ببساطة عند التبديل إلى حرف ما. حاولت العثور على جذر المشكلة، وراجعت السجلات، والتي بدت أشبه بالخدع، مقارنةً باستثناءات جافا الموجزة. الإنترنت لم يساعدني. من ناحية، قمت بإنشاء تطبيق عملي يحب أطفالي اللعب به. ومن ناحية أخرى، فإنه يعمل فقط على هاتفي. هذا يجعلني أضحك. بالطبع كنت منزعجًا، لكن عندما فكرت في الأمر، استنتجت أنني ربحت أكثر مما خسرت:
  • أصبحت أفضل في التعامل مع النقد الموجه لعملي.
  • أدركت قيمة المعرفة والخبرة في تصميم البرمجيات.
  • لقد عززت احترامي لذاتي في البرمجة.
  • أدركت الحاجة إلى دراسة أنماط التصميم وأساسيات إعادة البناء.
  • وكما قلت، لدي الآن تطبيقي الخاص، والذي لا يمتلكه أي شخص آخر وربما لن يمتلكه أبدًا. =)
"أعلم أني لا أعلم شيئا". من خلال تنفيذ مشاريع تعليمية كهذه، لديك فرصة عظيمة لتحليل ما تعرفه وأين توجد فجوات في معرفتك، وتحديد طرق لتحقيق المزيد من التقدم. هل يستحق الاستمرار في دراسة البرمجة إذا أدركت أن كل جهودك على مدى مرحلة طويلة من حياتك قد نقلتك من 0 إلى +0.001؟ بالنسبة لي، كان الجواب نعم. ماذا عنك؟
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION