JavaRush /مدونة جافا /Random-AR /كاي هورستمان وكلماته الـ 1500 حول كيف تصبح مبرمج جافا أفض...

كاي هورستمان وكلماته الـ 1500 حول كيف تصبح مبرمج جافا أفضل

نشرت في المجموعة
من المحتمل أنك سمعت بالفعل اسم Cay S. Horstmann. إنه شخص بارز إلى حد ما في عالم جافا ومؤلف العديد من الكتب عن لغتنا الحبيبة. من بينها الدورة الكلاسيكية "Core Java" (منشورة باللغة الروسية في كتاب مكون من مجلدين "Java. Professional’s Library" ) وسلسلة تحتوي على ملخص موجز لجوهر "Java for Impatient" (منشورة باللغة الروسية "Java SE 8. الدورة التمهيدية" و "Java SE 8. الدورة الأساسية " ). يحمل لقب فخور "بطل جافا". وعلى هذا الرابط يمكنك العثور على موقع مدرسته القديمة الذي يحتوي على معلومات مثيرة للاهتمام.
كاي هورستمان وكلماته الـ 1500 حول كيف تصبح مبرمج جافا أفضل - 1
نلفت انتباهكم إلى ترجمة مقال لمورد InformIT ، حيث يقدم كاي عدة نصائح للمبرمجين المبتدئين والمستمرين حول كيفية أن يصبحوا أفضل في مهنتهم. في أحد الأيام، طلبت مني جينيفر بورتل، مديرة التحرير في InformIT، أن أتحدث عن كيفية أن أصبح مبرمجة جافا أفضل. واقترحت أنني، مؤلف كتاب Core Java for the Impatient، ربما أعرف شيئًا عن ذلك. فكرت في البداية: "لا يوجد شيء أسهل، فقط قم بشراء كتاب". لكن هذه الإجابة لم تنجح، لأنه يجب أن أضعها في 1500 كلمة، وحتى هذه اللحظة هناك 62 كلمة فقط * ( طبعًا عند ترجمة المقال، لم نحاول الحفاظ على عدد الكلمات - تقريبًا. ترجمة. ). لقد تلقيت مؤخرًا بريدًا إلكترونيًا من صديق مطور سُئل في إحدى المقابلات عن سبب عدم كون الكود التالي آمنًا لسلسلة المحادثات:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

     public synchronized static void increment()
     {
         count++;
     }

     public synchronized void decrement()
     {
         count--;
     }
}
قرر صديقي أن الكود الموجود في هذا المثال آمن لمؤشر الترابط، واتفقت معه، مشيرًا إلى أن هناك كلمة رئيسية واحدة مفقودة staticفي الطريقة الثانية، وبمجرد إدراجها، تم التحكم في الوصول من خلال القفل المدمج لكائن الفئة. لقد قلت أيضًا أن هذا ليس سؤالًا جيدًا للمقابلة لأنه إذا كنت بحاجة إلى عداد الخيوط، فمن الأفضل أن تستخدم AtomicInteger. ولكن بعد ذلك في منتصف الليل استيقظت وتساءلت: ماذا لو staticتم حذف هذه الكلمة لسبب ما؟ ربما قام أحد القائمين على المقابلة المخادعين بصياغة هذا المثال عمدًا بطريقة تضلل المرشحين؟ لذلك قمت بالرد على المطور الذي طرح السؤال وقلت إنني ربما كنت مخطئًا في وقت سابق: في عالم موازٍ يسمى أسئلة المقابلة، الإجابة على هذا السؤال هي: "الطريقة الثانية تحتوي على قفل الكائن". بعد هذه الإجابة، سألني الرجل إذا كنت أدير قناة على اليوتيوب حيث أعلم كيفية التعامل مع هذه الأنواع من مشاكل المقابلة. للأسف، أنا لا أفعل هذا. أقوم بتدريس علوم الكمبيوتر وتأليف الكتب، لكن هدفي الرئيسي ليس تحسين "حل مشكلات المقابلات"، ولكن جعل طلابي مبرمجين أفضل. ذات مرة، بيتر نورفيج ( عالم أمريكي في مجال الذكاء الاصطناعي، مدير أبحاث جوجل - تقريبا. ترانس. ) كتب مقالا رائعا على مدونته. وقال إن الكتب التي تعد بتعليمك لغة جافا خلال 24 ساعة أو 21 يومًا هي ببساطة سخيفة. من الصعب أن نختلف معه: يستغرق الأمر 10 سنوات، أو ربما 10000 ساعة، لتصبح خبيرًا في أي مجال. ومن المعروف أن الخبراء يعالجون المعلومات بشكل مختلف عن المبتدئين. في تجربة كلاسيكية، عُرض على لاعبي الشطرنج ذوي الخبرة والمبتدئين رقعة شطرنج بها ترتيب معين للقطع لبضع ثوان، ثم تم إخفاؤها وطلب منهم ترتيب القطع كما هي. لم يتعامل المبتدئون مع المهمة بشكل جيد، لكن الخبراء لم يواجهوا أي مشاكل. ولكن بشرط واحد مهم فقط: يجب أن يتوافق ترتيب القطع مع اللعبة الحقيقية . إذا تم وضع القطع بشكل عشوائي، فلن يكون الخبراء أفضل في إعادة بناء اللوحة من المبتدئين.
كاي هورستمان وكلماته الـ 1500 حول كيف تصبح مبرمج جافا أفضل - 2
ولهذا السبب أجبت على السؤال الوارد في الرسالة بالطريقة نفسها التي أجبت بها. خلفيتي تتعلق بالبرمجة الفعلية، وليس إجراء المقابلات، لذلك أضفت بشكل غريزي الكلمة الأساسية المفقودة وتوصلت إلى الاستنتاج "الخاطئ". أود أن أعتقد أنه سيتم تعييني بعد أن أوضحت ما حدث ولماذا لن أكتب أبدًا رمزًا مثل المثال دون إضافتي. ربما، إذا لم تكن هذه الإجابة مرضية لهم، فأنا نفسي لا أرغب في العمل معهم.
الآن، لا أعتقد أن الدراسة لامتحانات الشهادة أو المقابلات ستحولك إلى مبرمج أفضل. أنا متأكد أيضًا من أن شراء عدد كبير من الكتب حول البرمجة ثم قراءتها من الغلاف إلى الغلاف لن ينجح أيضًا (على الرغم من أنني، بصفتي مؤلف هذه الكتب بالذات، لا أرغب في الاعتراف بذلك!). في الواقع، الطريقة الجيدة حقًا لتصبح مبرمجًا أفضل هي إنشاء أكبر قدر ممكن من البرامج . أقوم من وقت لآخر بتدريس دورة تمهيدية لعلوم الكمبيوتر في جامعتي. هذه هي أصعب دورة قمت بتدريسها على الإطلاق. إنها أصعب من دورة الدراسات العليا. عندما بدأت العمل لأول مرة كأستاذ شاب، قمت بإعطاء محاضرات للطلاب حيث غطيت بإخلاص قضايا البرمجة، مثل الفرق بين الحلقات forوالحلقات . ثم قمت بعد ذلك بتعيين أربعة مشاريع لمدة ثلاثة أسابيع للطلاب. وقد تم تدريس هذه المادة بهذه الطريقة منذ بداية الزمن في جميع الجامعات. بعد محاولتي الأولى، اشتكى مدرس الفصل الدراسي الثاني من أن معظم طلابي السابقين لم يفهموا حقًا حتى الحلقات البسيطة بعد الفصل الدراسي الأول من البرمجة. ومثل هذه النتائج حدثت أيضًا منذ بداية الزمن. هل تتذكر مقالة "FizzBuzz أو لماذا لا يستطيع المبرمجون البرمجة" ؟ عندما تتعلم لغة أجنبية، فإن معظم المهام عبارة عن تمارين وممارسة، وليست نظرية على الإطلاق. من المهم للغاية "دفع" المعرفة إلى العقل الباطن. تأتي نقطة التحول عندما لا تضطر إلى التفكير بنشاط في كل دورة، أو (في حالة اللغة الفرنسية)، كل فعل غير منتظم. إذا جاءت هذه اللحظة، فأنت مستعد للانتقال إلى المستوى التالي. وليس هناك شيء ثوري في هذه الفكرة. whiledo
كاي هورستمان وكلماته الـ 1500 حول كيف تصبح مبرمج جافا أفضل - 3
المفتاح لكل شيء هو ردود الفعل الفورية. ويعتقد بعض علماء النفس أنه بإمكاننا تحقيق المزيد من خلال التعلم المعتمد على الكمبيوتر من خلال التغذية الراجعة الفورية. على سبيل المثال، في تجربة كلاسيكية أخرى، خضع الطيارون المتدربون الطموحون لجلسة تدريبية طُلب منهم فيها النظر إلى لوحة العدادات مرارًا وتكرارًا ووصف حركة الطائرة. وفي الوقت نفسه، تلقوا ردود فعل فورية تشير إلى ما إذا كانوا قد فعلوا ذلك بشكل صحيح أم لا. وبعد ساعتين من التدريب، تفوقوا على الطيارين ذوي الخبرة. بالطبع، هذا لا يعني أنه يمكن إرسالهم على الفور في رحلة حقيقية، لكنهم لم يعودوا متوترين بشأن الأوجه المتنوعة والمتعددة على لوحة العدادات. لذا، إذا كنت قد بدأت للتو في تعلم Java، فإن إجراء الكثير من التمارين التدريبية للتدرب عليها هو أفضل فكرة. هناك عدد كبير من مواقع الويب والدورات التدريبية عبر الإنترنت التي تتحقق تلقائيًا من صحة التعليمات البرمجية الخاصة بك. اختر واحدة تقدم تحديات حقيقية بدلاً من الهراء. بعد كل شيء، أنت تريد أن يكون عقلك الباطن جيدًا في الكود الذي ستكتبه بالفعل أثناء التدريب. ولهذا السبب لست مهتمًا جدًا بأمثلة البرمجة التي تستخدم مواقف مفتعلة، مثل فئات الحيوانات بطرق المواء والنباح. وبعد مرور بعض الوقت، سوف تتقن أساسيات البرمجة. للانتقال إلى المستوى التالي، يمكنك كتابة مشروعين. منذ عدة سنوات، طرحت بوابة InformIT سؤالاً على المبرمجين ذوي الخبرة: "ما هي أفضل طريقة للمبرمج لتعلم لغة جديدة؟" وإذا لخصنا إجاباتهم فيمكننا أن نستنتج ما يلي: “استخدم هذه اللغة في مشروعك الحالي”. لذا، فكر في ما كنت ترغب دائمًا في تنفيذه - والمضي قدمًا. قبل عشرين عامًا، عندما كانت جافا لا تزال صغيرة جدًا،بي صديقي والمؤلف المشارك غاري كورنيل وقال: "كاي، سنكتب كتابًا عن جافا". وكانت إجابتي أنه لا هو ولا أنا نعرف حقًا أي شيء عن جافا، فأجاب: "وماذا في ذلك؟ لدينا بالفعل صفقة كتاب." لا شيء لأفعله. كان علينا أن نستعجل لأن شخصًا آخر أعلن عن الإصدار الوشيك لكتاب "علم نفسك أن تكون دمية جافا في 24 ساعة" ... أعتقد أنه كان يسمى شيئًا كهذا ( كاي يسخر من سلسلة كتب "For Dummies" - "للدمى" يمكن ترجمة كلمة "دمية" إلى "دمية" - ملاحظة المترجم ). لتعلم لغة جديدة، بدأت بالمشاريع - كتابة برنامج أنشأ واجهة مستخدم للتخطيط للتقاعد، ثم برنامج متصل بموقع الطقس ويعرض تقريرًا عن الطقس. وبعده برنامج يحاكي حركة السيارات على الطريق السريع. في ذلك الوقت، كانت هذه البرامج ببساطة مذهلة!java.awtjava.netوالخيوط ( threads). وكان علي أن أتعلم كيفية تنفيذ هذا العمل، وليس فقط ما تقوله الوثائق. في ذلك الوقت كانت هذه أشياء مختلفة تمامًا. لهذا السبب حققت Core Java [1] نجاحًا كبيرًا: لم تكن مخصصة للدمى.
كاي هورستمان وكلماته الـ 1500 حول كيف تصبح مبرمج جافا أفضل - 4
في ذلك الوقت، كان تعلم جافا أكثر صعوبة. لم تكن لدينا مواقع مثل Stack Overflow ( ولم يكن لدينا JavaRush أيضًا - ملاحظة المحرر ). في هذه المرحلة، أنتقل إلى صياغة النصائح التالية لتحسين "مهاراتك" في البرمجة. لذلك، عندما تعمل على مشروعك الخاص، لا بد أن تتعثر في مكان ما. في هذه الحالة، انتقل إلى منتدى متخصص وحاول العثور على إجابات. صدقوني، هذه فكرة عظيمة . أولاً، سوف تقوم بطرح الأسئلة التي تم طرحها بالفعل عدة مرات من قبل. ولكن سرعان ما ستكتسب المعرفة وستصبح أسئلتك أكثر فريدة من نوعها. هذه طريقة رائعة للتعلم! بالطبع، لا يتعلق الأمر بمجرد نسخ ولصق جزء من التعليمات البرمجية والسؤال: "ماذا علي أن أفعل بهذا الآن؟" يتعين عليك الوصول إلى الجزء السفلي منها، وشرح المحاولات التي قمت بها بالفعل لحل المشكلة قبل أن تتعثر. بالمناسبة، في أغلب الأحيان، عندما أقوم بصياغة سؤال كتابيًا، أجد الإجابة بنفسي وكل ما علي فعله هو أن أقول لنفسي: "ما المشكلة هنا، لا داعي للتفكير" حتى قبل أن أرسل السؤال . ولكن حتى لو لم يحدث هذا... صدقني، الأسئلة المدروسة تميل إلى جذب إجابات مدروسة. فقط تذكر أن ترد الجميل الاجتماعي من خلال الإجابة على أسئلة الآخرين المدروسة. إن طرح الأسئلة والإجابة على الأسئلة المدروسة يجعلك مبرمجًا أفضل. " إذن ماذا عن الكتب؟ - أنت تسأل. "هل أصبحت بالفعل قديمة تمامًا ولا رجعة فيها بفضل Google و Stack Overflow ؟" كلما أبحرت في تقنية جديدة، أعتقد أنني شخص شجاع وأستطيع التغلب على جميع الصعوبات وحدي. لكن ساعة من العذاب الذي لا معنى له تفسح المجال لساعة من العقل - وأنا أشتري كتابًا. تعتبر الكتب الفنية صفقة مذهلة هذه الأيام. إذا دفعت 40 دولارًا مقابل كتاب إلكتروني وحصلت على إجابة سريعة على سؤال واحد فقط، فهذا يعني أنني استردت أموالي بالفعل. أكره أن أخيب أمل زملائي الكتاب، لكنني لم أقرأ قط كتابًا تقنيًا من البداية إلى النهاية. أبدأ من حيث أعتقد أن مشكلتي وحلها مكتوبان، وأقرأ حتى أفهم كيفية حلها. ولهذا السبب، أحاول حاليًا تأليف كتب يمكن قراءتها بهذه الطريقة. أدى هذا النهج إلى ظهور سلسلة "من أجل الصبر". وعند هذه النقطة يجب أن أتوقف - لقد تجاوزت الحد التحريري وهو 1500 كلمة. اسمحوا لي فقط أن أضيف أنه لكي تصبح مبرمجًا أفضل، عليك أن تبدأ بالاعتراف بأن هناك مستويات عديدة من المعرفة.
  1. أولاً، "اسحب" الهياكل اللغوية الأساسية إلى عقلك الباطن، أي اجعل معرفتها تلقائية من خلال حل عدد كبير من التمارين.

  2. ابدأ العمل على مشاريع حقيقية تهمك في أسرع وقت ممكن.

  3. ثم انضم إلى مجتمع حيث يمكنك طرح الأسئلة والإجابة عليها.

  4. بمجرد القيام بذلك، سوف تكون قادرًا على التحدث بالمعرفة والخبرة في المقابلات. ولا يهم حقًا ما إذا كنت قد قمت بحل اللغز المفتعل.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION