JavaRush /จาวาบล็อก /Random-TH /Kay Horstmann และคำพูด 1,500 คำของเขาเกี่ยวกับการเป็นโปรแ...

Kay Horstmann และคำพูด 1,500 คำของเขาเกี่ยวกับการเป็นโปรแกรมเมอร์ Java ที่ดีขึ้น

เผยแพร่ในกลุ่ม
เป็นไปได้ว่าคุณเคยได้ยินชื่อCay S. Horstmann แล้ว เขาเป็นบุคคลที่โดดเด่นในโลกชวาและเป็นผู้เขียนหนังสือหลายเล่มเกี่ยวกับภาษาที่เรารัก หนึ่งในนั้นคือหลักสูตรคลาสสิก “Core Java” (จัดพิมพ์เป็นภาษารัสเซียในหนังสือสองเล่ม“Java. Professional’s Library” ) และซีรีส์ที่มีบทสรุปโดยย่อเกี่ยวกับสาระสำคัญของ “Java for Im Patient” (จัดพิมพ์ในภาษารัสเซีย“Java SE” 8. หลักสูตรเบื้องต้น”และ“Java SE 8. หลักสูตรพื้นฐาน " ) เขาได้รับตำแหน่งอันน่าภาคภูมิใจของ "Java Champion" และที่ลิงค์นี้คุณจะพบเว็บไซต์โรงเรียนเก่าของเขาพร้อมข้อมูลที่น่าสนใจ
Kay Horstmann และคำพูด 1,500 คำของเขาเกี่ยวกับการเป็นโปรแกรมเมอร์ Java ที่ดีขึ้น - 1
เราขอแจ้งให้คุณทราบเกี่ยวกับการแปลบทความสำหรับ แหล่งข้อมูล InformITซึ่ง Kay กล่าวถึงเคล็ดลับหลายประการสำหรับการเริ่มต้นและดำเนินการโปรแกรมเมอร์ต่อไปเกี่ยวกับวิธีการพัฒนาอาชีพของตนให้ดีขึ้น วันหนึ่ง Jennifer Bortel ผู้อำนวยการกองบรรณาธิการของ InformIT ขอให้ฉันอธิบายเกี่ยวกับวิธีที่จะเป็นโปรแกรมเมอร์ Java ที่ดีขึ้น เธอแนะนำว่าฉันซึ่งเป็นผู้เขียน Core Java for the Im Patient อาจรู้อะไรบางอย่างเกี่ยวกับเรื่องนี้ “ไม่มีอะไรง่ายไปกว่านี้ แค่ซื้อหนังสือ” ฉันคิดในตอนแรก แต่คำตอบนี้ใช้ไม่ได้ผลเพราะฉันต้องจัดมันให้เป็น 1,500 คำและจนถึงจุดนี้มีเพียง 62 คำเท่านั้น * ( แน่นอนว่าเมื่อแปลบทความเราไม่ได้พยายามรักษาจำนวนคำ - แปลประมาณ ) ฉันเพิ่งได้รับอีเมลจากเพื่อนนักพัฒนาซอฟต์แวร์ที่ถูกถามในการสัมภาษณ์ว่าเหตุใดโค้ดต่อไปนี้จึงไม่ปลอดภัยสำหรับเธรด:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

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

     public synchronized void decrement()
     {
         count--;
     }
}
เพื่อนของฉันตัดสินใจว่าโค้ดในตัวอย่างนี้ปลอดภัยสำหรับเธรด และฉันเห็นด้วยกับเขา โดยสังเกตว่ามีคีย์เวิร์ดหนึ่งคำหายไปstaticในวิธีที่สอง และเมื่อแทรกเข้าไปแล้ว การเข้าถึงจะถูกควบคุมโดยล็อคในตัวของคลาสอ็อบเจ็กต์ ฉันยังบอกด้วยว่านี่ไม่ใช่คำถามสัมภาษณ์ที่ดี เพราะถ้าคุณต้องการตัวนับเธรด คุณควรใช้AtomicInteger. แต่แล้วกลางดึกฉันก็ตื่นขึ้นมาและสงสัยว่าจะเกิดอะไรขึ้นถ้าคำนี้staticถูกละทิ้งด้วยเหตุผล? บางทีผู้สัมภาษณ์ที่แอบอ้างบางคนจงใจจัดโครงสร้างตัวอย่างนี้ในลักษณะที่ทำให้ผู้สมัครเข้าใจผิด ดังนั้นฉันจึงเขียนกลับไปหานักพัฒนาที่ถามคำถามและบอกว่าฉันอาจผิดก่อนหน้านี้: ในจักรวาลคู่ขนานที่เรียกว่าคำถามสัมภาษณ์ คำตอบสำหรับคำถามนี้คือ: “วิธีที่สองประกอบด้วยการล็อควัตถุ” หลังจากคำตอบนี้ ชายคนนั้นถามว่าฉันเปิดช่อง YouTube ที่ฉันสอนวิธีจัดการกับปัญหาการสัมภาษณ์ประเภทนี้หรือไม่ อนิจจาฉันไม่ทำเช่นนี้ ฉันสอนวิทยาการคอมพิวเตอร์และเขียนหนังสือ แต่เป้าหมายหลักของฉันไม่ใช่การสร้าง "นักแก้ปัญหาในการสัมภาษณ์" ที่ดีขึ้น แต่เพื่อทำให้นักเรียนเป็นโปรแกรมเมอร์ที่ดีขึ้น กาลครั้งหนึ่งPeter Norvig ( นักวิทยาศาสตร์ชาวอเมริกันในสาขาปัญญาประดิษฐ์ผู้อำนวยการฝ่ายวิจัยของ Google - ประมาณ ทรานส์ ) เขียนบทความที่ยอดเยี่ยมในบล็อกของเขา เขาแย้งว่าหนังสือที่สัญญาว่าจะสอน Java ให้คุณใน 24 ชั่วโมงหรือ 21 วันนั้นไร้สาระ เป็นเรื่องยากที่จะไม่เห็นด้วยกับเขา ต้องใช้เวลา 10 ปีหรืออาจถึง 10,000 ชั่วโมงกว่าจะเป็นผู้เชี่ยวชาญในสาขาใดก็ได้ และเป็นที่ทราบกันดีว่าผู้เชี่ยวชาญประมวลผลข้อมูลแตกต่างจากมือใหม่ ในการทดลองแบบคลาสสิก ผู้เล่นหมากรุกที่มีประสบการณ์และเป็นมือใหม่จะเห็นกระดานหมากรุกที่มีการจัดเรียงตัวหมากอยู่สองสามวินาที จากนั้นมันถูกซ่อนไว้และขอให้จัดเรียงตัวหมากตามที่เป็นอยู่ ผู้เริ่มต้นรับมือกับงานนี้ได้ไม่ดีนัก แต่ผู้เชี่ยวชาญก็ไม่มีปัญหาใดๆ แต่ภายใต้เงื่อนไขสำคัญประการเดียวเท่านั้น: การจัดเรียงชิ้นส่วนต้องสอดคล้องกับเกมจริง หากชิ้นส่วนต่างๆ ถูกวางแบบสุ่ม ผู้เชี่ยวชาญก็ไม่ได้สร้างกระดานขึ้นมาใหม่ได้ดีไปกว่ามือใหม่
Kay Horstmann และคำพูด 1,500 คำของเขาเกี่ยวกับการเป็นโปรแกรมเมอร์ Java ที่ดีขึ้น - 2
นั่นคือเหตุผลที่ฉันตอบคำถามจากจดหมายเหมือนกับที่ฉันทำ พื้นหลังของฉันอยู่ในการเขียนโปรแกรมจริง ไม่ใช่การสัมภาษณ์ ดังนั้นฉันจึงเพิ่มคีย์เวิร์ดที่หายไปโดยสัญชาตญาณและสรุปว่า "ผิด" ฉันอยากจะคิดว่าฉันจะยังคงได้รับการว่าจ้างหลังจากที่ฉันอธิบายสิ่งที่เกิดขึ้นแล้วและทำไมฉันจะไม่เขียนโค้ดเหมือนตัวอย่างหากไม่มีการเพิ่ม บางทีหากคำตอบดังกล่าวไม่เป็นที่พอใจพวกเขา ฉันเองก็ไม่อยากร่วมงานกับพวกเขา
ตอนนี้ฉันไม่คิดว่าการเรียนเพื่อสอบรับรองหรือสัมภาษณ์จะทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้นได้ ฉันมั่นใจด้วยว่าการซื้อหนังสือเกี่ยวกับการเขียนโปรแกรมจำนวนมากแล้วอ่านตั้งแต่หน้าหนึ่งไปอีกหน้าหนึ่งจะไม่ได้ผลเช่นกัน (แม้ว่าฉันในฐานะผู้เขียนหนังสือเหล่านี้ก็ไม่อยากจะยอมรับ!) ที่จริงแล้ว วิธีที่ดีจริงๆ ในการเป็นโปรแกรมเมอร์ที่ดีขึ้นคือการสร้างซอฟต์แวร์ให้ได้มากที่สุด ฉันสอนหลักสูตรวิทยาการคอมพิวเตอร์เบื้องต้นในมหาวิทยาลัยเป็นครั้งคราว นี่เป็นหลักสูตรที่ยากที่สุดที่ฉันเคยสอน มันยากกว่าหลักสูตรบัณฑิตศึกษาอีก เมื่อฉันเริ่มทำงานในฐานะศาสตราจารย์รุ่นเยาว์ ฉันบรรยายให้กับนักเรียนอย่างขยันขันแข็ง โดยฉันได้กล่าวถึงประเด็นการเขียนโปรแกรมตามหน้าที่ เช่น ความแตกต่างระหว่างลูปและforลูwhiledoจากนั้น ฉันมอบหมายโครงการระยะเวลาสามสัปดาห์ให้กับนักเรียนสี่โครงการ และวิชานี้ก็มีการสอนแบบนี้มาตั้งแต่ต้นในมหาวิทยาลัยทุกแห่ง หลังจากที่ฉันได้ลองครั้งแรก ผู้สอนหลักสูตรภาคเรียนที่สองบ่นว่านักเรียนเก่าของฉันส่วนใหญ่ไม่เข้าใจลูปง่ายๆ เลยแม้แต่น้อยหลังจากเรียนการเขียนโปรแกรมภาคแรกแล้ว และผลดังกล่าวก็เกิดขึ้นตั้งแต่กาลเริ่มต้นเช่นกัน จำบทความ“FizzBuzz หรือทำไมโปรแกรมเมอร์เขียนโปรแกรมไม่ได้” ? เมื่อคุณเรียนภาษาต่างประเทศ งานส่วนใหญ่เป็นแบบฝึกหัดและการฝึกฝน ไม่ใช่ทฤษฎีเลย การ "ผลักดัน" ความรู้เข้าสู่จิตใต้สำนึกเป็นสิ่งสำคัญอย่างยิ่ง จุดเปลี่ยนเกิดขึ้นเมื่อคุณไม่จำเป็นต้องคิดเกี่ยวกับแต่ละวัฏจักรอีกต่อไป หรือ (ในกรณีของภาษาฝรั่งเศส) คำกริยาแต่ละคำที่ไม่ปกติอีกต่อไป หากช่วงเวลานี้มาถึง คุณก็พร้อมที่จะก้าวไปสู่ระดับต่อไป และไม่มีอะไรที่จะปฏิวัติแนวคิดนี้
Kay Horstmann และคำพูด 1,500 คำของเขาเกี่ยวกับการเป็นโปรแกรมเมอร์ Java ที่ดีขึ้น - 3
กุญแจสำคัญของทุกสิ่งคือการตอบรับทันที นักจิตวิทยาบางคนเชื่อว่าเราสามารถทำอะไรได้มากกว่านั้นด้วยการเรียนรู้ผ่านคอมพิวเตอร์พร้อมการตอบรับทันที ตัวอย่างเช่น ในการทดลองคลาสสิกอีกรายการหนึ่ง นักบินฝึกหัดที่ต้องการเข้ารับการฝึกอบรมโดยต้องดูแผงหน้าปัดซ้ำแล้วซ้ำอีก และบรรยายการเคลื่อนไหวของเครื่องบิน ในเวลาเดียวกันพวกเขาได้รับการตอบรับทันทีโดยระบุว่าทำถูกต้องหรือไม่ หลังจากการฝึกอบรมสองชั่วโมง พวกเขาก็ทำได้ดีกว่านักบินที่มีประสบการณ์ แน่นอนว่านี่ไม่ได้หมายความว่าพวกเขาสามารถส่งพวกมันไปบินจริงได้ทันที แต่พวกเขาไม่กังวลกับแป้นหมุนที่หลากหลายและมากมายบนแผงหน้าปัดอีกต่อไป ดังนั้น หากคุณเพิ่งเริ่มเรียนรู้ Java การทำแบบฝึกหัดเพื่อฝึกฝนเยอะๆ ถือเป็นความคิดที่ดีที่สุด มีเว็บไซต์และหลักสูตรออนไลน์จำนวนมากที่ตรวจสอบความถูกต้องของโค้ดของคุณโดยอัตโนมัติ เลือกอันที่เสนอความท้าทายที่แท้จริงมากกว่า gobbledygook ท้ายที่สุด คุณต้องการให้จิตใต้สำนึกของคุณเก่งในโค้ดที่คุณจะเขียนในทางปฏิบัติ นี่คือเหตุผลที่ฉันไม่ค่อยสนใจการเขียนโปรแกรมตัวอย่างที่ใช้สถานการณ์ที่ประดิษฐ์ขึ้นมา เช่น คลาสสัตว์ด้วยวิธีร้องเหมียวและเห่า หลังจากนั้นสักพัก คุณจะเชี่ยวชาญพื้นฐานของการเขียนโปรแกรม หากต้องการเลื่อนไปยังระดับถัดไป คุณสามารถเขียนโปรเจ็กต์ได้สองสามโปรเจ็กต์ เมื่อหลายปีก่อน พอร์ทัล InformIT ได้ถามคำถามกับโปรแกรมเมอร์ที่มีประสบการณ์: “อะไรคือวิธีที่ดีที่สุดสำหรับโปรแกรมเมอร์ในการเรียนรู้ภาษาใหม่” หากเราสรุปคำตอบ เราก็สามารถสรุปได้ดังนี้: “ใช้ภาษานี้ในโครงการปัจจุบันของคุณ” ดังนั้น ลองนึกถึงสิ่งที่คุณต้องการนำไปใช้มาโดยตลอด และดำเนินการต่อ เมื่อยี่สิบปีที่แล้ว ตอนที่ Java ยังเด็กมากเพื่อนของฉันและผู้ร่วมเขียนหนังสืออย่าง Gary Cornellโทรหาฉันแล้วพูดว่า "เคย์ เราจะเขียนหนังสือเกี่ยวกับ Java" คำตอบของฉันคือทั้งเขาและฉันไม่รู้อะไรเลยเกี่ยวกับ Java นี้จริงๆ ซึ่งเขาโต้กลับ: "แล้วไงล่ะ? เรามีข้อตกลงเกี่ยวกับหนังสืออยู่แล้ว" ไม่มีอะไรทำ. เราต้องรีบเพราะมีคนอื่นประกาศเปิดตัวหนังสือ "Teach Yourself to Be a Java Dummy in 24 Hours" ใกล้จะออกแล้ว ... ฉันคิดว่ามันเรียกแบบนั้น (เคย์ล้อเลียนหนังสือชุด "For Dummies" - "for dummies" คำว่า "Dummy" สามารถแปลได้ว่า "dummy" - หมายเหตุผู้แปล ) เพื่อเรียนรู้ภาษาใหม่ ฉันเริ่มต้นด้วยโปรเจ็กต์ต่างๆ โดยเขียนโปรแกรมที่สร้างอินเทอร์เฟซผู้ใช้สำหรับการวางแผนเกษียณอายุ จากนั้นโปรแกรมที่เชื่อมต่อกับเว็บไซต์สภาพอากาศและแสดงรายงานสภาพอากาศ หลังจากนั้น - โปรแกรมจำลองการเคลื่อนที่ของรถยนต์บนทางหลวง ในเวลานั้นโปรแกรมเหล่านี้น่าทึ่งมาก!java.awtjava.netและเธรด ( threads) และฉันต้องเรียนรู้วิธีการทำงานนี้จริงๆ ไม่ใช่แค่สิ่งที่เอกสารระบุไว้เท่านั้น ในเวลานั้นสิ่งเหล่านี้แตกต่างไปจากเดิมอย่างสิ้นเชิง นั่นเป็นสาเหตุที่Core Java [1] ได้รับความนิยม: ไม่ใช่สำหรับหุ่นจำลอง
Kay Horstmann และคำพูด 1,500 คำของเขาเกี่ยวกับการเป็นโปรแกรมเมอร์ Java ที่ดีขึ้น - 4
ในเวลานั้นการเรียนรู้ Java นั้นยากขึ้นมาก เราไม่มีไซต์เช่นStack Overflow ( และเราไม่มี JavaRush เช่นกัน - หมายเหตุจากบรรณาธิการ ) ณ จุดนี้ ฉันเดินหน้าต่อไปเพื่อกำหนดคำแนะนำต่อไปนี้เพื่อพัฒนา “ทักษะ” การเขียนโปรแกรมของคุณ ดังนั้นเมื่อคุณทำงานในโครงการของคุณเอง คุณจะต้องติดอยู่ที่ไหนสักแห่ง ในกรณีนี้ ให้ไปที่ฟอรัมเฉพาะแล้วลองค้นหาคำตอบ เชื่อฉันเถอะ นี่เป็นความคิดที่ดี ขั้นแรก คุณจะต้องถามคำถามที่เคยถามมาหลายครั้งแล้ว แต่ในไม่ช้า คุณจะได้รับความรู้ และคำถามของคุณจะมีเอกลักษณ์เฉพาะตัวมากขึ้น นี่เป็นวิธีการเรียนรู้ที่น่าทึ่ง! แน่นอนว่า นี่ไม่ใช่แค่การคัดลอกและวางโค้ดแล้วถามว่า "ฉันควรทำอย่างไรกับสิ่งนี้ตอนนี้" คุณต้องไปถึงจุดต่ำสุด อธิบายว่าคุณได้พยายามแก้ไขปัญหาใดบ้างก่อนที่คุณจะติดขัด อย่างไรก็ตาม ในกรณีส่วนใหญ่ ขณะที่ฉันเขียนคำถามเป็นลายลักษณ์อักษร ฉันพบคำตอบด้วยตัวเองและสิ่งที่ฉันต้องทำคือพูดกับตัวเองว่า “ปัญหาคืออะไร ไม่ใช่เรื่องง่ายเลย” ก่อนที่ฉันจะส่งคำถามด้วยซ้ำ . แต่ถึงแม้สิ่งนี้จะไม่เกิดขึ้น... เชื่อฉันเถอะ คำถามที่ใคร่ครวญมักจะดึงดูดคำตอบที่ไตร่ตรองมา เพียงอย่าลืมตอบแทนสังคมด้วยการตอบคำถามที่ใคร่ครวญของผู้อื่น ทั้งการถามคำถามและการตอบคำถามที่รอบคอบทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้น “แล้วหนังสือล่ะ? - คุณถาม. “สิ่งเหล่านี้ล้าสมัยไปโดยสิ้นเชิงและไม่สามารถเพิกถอนได้จริง ๆ ต้องขอบคุณGoogleและStack Overflowหรือไม่” เมื่อไหร่ก็ตามที่ฉันใช้เทคโนโลยีใหม่ๆ ฉันเชื่อว่าฉันเป็นคนกล้าหาญและสามารถเอาชนะความยากลำบากทั้งหมดได้โดยลำพัง แต่หนึ่งชั่วโมงแห่งการทรมานอย่างไร้สติก็เปิดทางให้หนึ่งชั่วโมงแห่งความมีสติ - และฉันก็ซื้อหนังสือ หนังสือเชิงเทคนิคเป็นสินค้าที่ต่อรองราคาได้อย่างน่าทึ่งในสมัยนี้ หากฉันจ่ายเงิน 40 ดอลลาร์สำหรับ eBook เล่มหนึ่งและได้รับคำตอบเพียงคำถามเดียวอย่างรวดเร็ว แสดงว่าฉันได้เงินคืนแล้ว ฉันเกลียดการทำให้เพื่อนนักเขียนผิดหวัง แต่ฉันไม่เคยอ่านหนังสือด้านเทคนิคตั้งแต่ต้นจนจบเลย ฉันเริ่มต้นจากที่ฉันคิดว่าปัญหาของฉันและวิธีการแก้ไขถูกเขียนไว้แล้ว และฉันอ่านจนกว่าฉันจะเข้าใจวิธีแก้ปัญหา ด้วยเหตุนี้ ฉันจึงพยายามเขียนหนังสือที่สามารถอ่านได้ด้วยวิธีนี้ วิธีการนี้ทำให้เกิดซีรีส์เรื่อง “For the Im Patient” และเมื่อมาถึงจุดนี้ ฉันควรหยุด - ฉันเกินขีดจำกัดบรรณาธิการที่ 1,500 คำแล้ว ผมขอเสริมอีกนิดเพื่อที่จะเป็น Programmer ที่ดียิ่งขึ้น เริ่มต้นจากการตระหนักว่าความรู้นั้นมีหลายระดับ
  1. ขั้นแรก "ดึง" โครงสร้างภาษาพื้นฐานเข้าสู่จิตใต้สำนึกของคุณ นั่นคือ นำความรู้ไปสู่ความเป็นอัตโนมัติโดยการแก้แบบฝึกหัดจำนวนมาก

  2. เริ่มต้นทำงานในโครงการจริงที่คุณสนใจโดยเร็วที่สุด

  3. จากนั้นเข้าร่วมชุมชนที่คุณสามารถถามและตอบคำถามได้

  4. เมื่อทำเช่นนี้แล้วคุณจะสามารถพูดคุยกับความรู้และประสบการณ์ในการสัมภาษณ์ได้ และไม่สำคัญว่าคุณจะไขปริศนาที่ประดิษฐ์ขึ้นหรือไม่
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION