JavaRush /Blog Java /Random-VI /Kay Horstmann và 1500 từ của anh ấy về cách trở thành một...

Kay Horstmann và 1500 từ của anh ấy về cách trở thành một lập trình viên Java giỏi hơn

Xuất bản trong nhóm
Rất có thể bạn đã từng nghe đến cái tên Cây S. Horstmann. Ông là một người khá nổi bật trong thế giới Java và là tác giả của nhiều cuốn sách về ngôn ngữ yêu quý của chúng ta. Trong số đó có khóa học cổ điển “Core Java” (được xuất bản bằng tiếng Nga trong cuốn sách hai tập “Java. Professional's Library” ) và một loạt bài tóm tắt ngắn gọn về bản chất của “Java dành cho người thiếu kiên nhẫn” (xuất bản bằng tiếng Nga “Java SE 8. Khóa học giới thiệu”“Khóa học Java SE 8. Cơ bản " ). Anh ấy mang danh hiệu đáng tự hào là “Nhà vô địch Java”. Và tại liên kết này, bạn có thể tìm thấy trang web trường học cũ của anh ấy với những thông tin thú vị.
Kay Horstmann và 1500 từ về cách trở thành lập trình viên Java giỏi hơn - 1
Chúng tôi mang đến cho bạn bản dịch của một bài viết trên nguồn InformIT , trong đó Kay đưa ra một số lời khuyên dành cho những lập trình viên mới bắt đầu và đang tiếp tục về cách trở nên giỏi hơn trong nghề nghiệp của họ. Một ngày nọ, Jennifer Bortel, giám đốc biên tập của InformIT, yêu cầu tôi chia sẻ về cách trở thành một lập trình viên Java giỏi hơn. Cô ấy gợi ý rằng tôi, tác giả của Core Java cho người thiếu kiên nhẫn, có thể biết điều gì đó về nó. “Không có gì dễ dàng hơn, chỉ cần mua một cuốn sách,” lúc đầu tôi nghĩ. Nhưng câu trả lời này không hiệu quả, vì tôi phải ghép nó thành 1500 từ và tính đến thời điểm này chỉ có 62 từ * ( tất nhiên, khi dịch bài viết, chúng tôi không cố gắng duy trì số lượng từ - khoảng. bản dịch. ). Gần đây tôi đã nhận được email từ một người bạn là nhà phát triển, người đã được hỏi tại một cuộc phỏng vấn tại sao đoạn mã sau không an toàn cho chuỗi:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

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

     public synchronized void decrement()
     {
         count--;
     }
}
Bạn tôi quyết định rằng mã trong ví dụ này là an toàn cho luồng và tôi đồng ý với anh ấy, lưu ý rằng có một từ khóa bị thiếu statictrong phương thức thứ hai và khi nó được chèn vào, quyền truy cập sẽ được kiểm soát bởi khóa tích hợp của đối tượng lớp. Tôi cũng đã nói rằng đây không phải là một câu hỏi phỏng vấn hay vì nếu bạn cần một bộ đếm luồng, tốt hơn hết bạn nên sử dụng AtomicInteger. Nhưng rồi đến nửa đêm tôi thức dậy và tự hỏi: nếu từ này staticbị lược bỏ vì một lý do nào đó thì sao? Có lẽ một số người phỏng vấn lén lút đã cố tình cấu trúc ví dụ này theo cách để đánh lừa ứng viên? Vì vậy, tôi đã viết lại cho nhà phát triển, người đã đặt câu hỏi và nói rằng có lẽ tôi đã sai trước đó: trong một vũ trụ song song có tên là Câu hỏi Phỏng vấn, câu trả lời cho câu hỏi này là: “Phương pháp thứ hai chứa khóa đối tượng”. Sau câu trả lời này, anh chàng hỏi liệu tôi có điều hành một kênh YouTube nơi tôi dạy cách xử lý những vấn đề phỏng vấn kiểu này không. Than ôi, tôi không làm việc này. Tôi dạy khoa học máy tính và viết sách, nhưng mục tiêu chính của tôi không phải là tạo ra những “người giải quyết vấn đề trong cuộc phỏng vấn” giỏi hơn mà là giúp học sinh của tôi trở thành những lập trình viên giỏi hơn. Ngày xửa ngày xưa, Peter Norvig ( nhà khoa học người Mỹ trong lĩnh vực trí tuệ nhân tạo, giám đốc nghiên cứu của Google - xấp xỉ chuyển giới ) đã viết một bài báo rất hay trên blog của mình. Ông lập luận rằng những cuốn sách hứa hẹn dạy bạn Java trong 24 giờ hoặc 21 ngày đơn giản là nực cười. Thật khó để không đồng ý với ông: phải mất 10 năm, hoặc có lẽ là 10.000 giờ, để trở thành chuyên gia trong bất kỳ lĩnh vực nào. Và ai cũng biết rằng các chuyên gia xử lý thông tin khác với những người mới làm quen. Trong một thí nghiệm cổ điển, những người mới chơi cờ và có kinh nghiệm được cho xem một bàn cờ có cách sắp xếp các quân cờ nhất định trong vài giây, sau đó nó được giấu đi và được yêu cầu sắp xếp các quân cờ như cũ. Những người mới bắt đầu không hoàn thành tốt nhiệm vụ, nhưng các chuyên gia không gặp vấn đề gì. Nhưng chỉ với một điều kiện quan trọng: việc sắp xếp các quân cờ phải phù hợp với trò chơi thực sự . Nếu các quân cờ được đặt ngẫu nhiên thì các chuyên gia cũng không giỏi xây dựng lại bàn cờ hơn những người mới vào nghề.
Kay Horstmann và 1500 từ về cách trở thành lập trình viên Java giỏi hơn - 2
Đó là lý do tại sao tôi đã trả lời câu hỏi trong bức thư một cách chính xác như cách tôi đã làm. Nền tảng của tôi là lập trình thực tế chứ không phải phỏng vấn nên theo bản năng tôi đã thêm từ khóa còn thiếu và đưa ra kết luận “sai”. Tôi muốn nghĩ rằng tôi vẫn sẽ được thuê sau khi tôi giải thích chuyện gì đã xảy ra và tại sao tôi sẽ không bao giờ viết mã giống như ví dụ nếu không có phần bổ sung của mình. Có lẽ, nếu câu trả lời như vậy không làm họ hài lòng thì bản thân tôi cũng không muốn làm việc cùng họ.
Bây giờ, tôi không nghĩ rằng việc học để thi lấy chứng chỉ hay phỏng vấn sẽ giúp bạn trở thành một lập trình viên giỏi hơn. Tôi cũng chắc chắn rằng việc mua một số lượng lớn sách về lập trình rồi đọc từ đầu đến cuối cũng sẽ không hiệu quả (mặc dù tôi, với tư cách là tác giả của chính những cuốn sách này, không muốn thừa nhận điều đó!). Trên thực tế, cách thực sự tốt để trở thành một lập trình viên giỏi hơn là tạo ra càng nhiều phần mềm càng tốt . Thỉnh thoảng tôi dạy một khóa học cơ bản về khoa học máy tính tại trường đại học của mình. Đây là khóa học khó nhất mà tôi từng dạy. Nó thậm chí còn khó hơn cả khóa học sau đại học. Khi mới bắt đầu làm giáo sư trẻ, tôi đã siêng năng giảng bài cho sinh viên, trong đó tôi nghiêm túc đề cập đến các vấn đề lập trình, chẳng hạn như sự khác biệt giữa vòng lặp forwhilevòng lặp do. Sau đó tôi giao cho học sinh bốn dự án kéo dài ba tuần. Và môn học này đã được dạy theo cách này ngay từ đầu ở tất cả các trường đại học. Sau lần thử đầu tiên của tôi, người hướng dẫn khóa học trong học kỳ thứ hai phàn nàn rằng hầu hết các sinh viên cũ của tôi không thực sự hiểu được ngay cả những vòng lặp đơn giản sau học kỳ lập trình đầu tiên của họ. Và những kết quả như vậy cũng đã diễn ra từ thuở sơ khai. Bạn còn nhớ bài viết “FizzBuzz hay tại sao lập trình viên không thể lập trình” ? Khi bạn học ngoại ngữ, hầu hết các nhiệm vụ đều là bài tập và thực hành chứ không phải lý thuyết chút nào. Việc “đẩy” kiến ​​thức vào tiềm thức là điều cực kỳ quan trọng. Bước ngoặt xảy ra khi bạn không còn phải chủ động suy nghĩ về từng chu kỳ, hoặc (trong trường hợp tiếng Pháp), từng động từ bất quy tắc. Nếu thời điểm này đã đến thì bạn đã sẵn sàng để chuyển sang cấp độ tiếp theo. Và không có gì mang tính cách mạng trong ý tưởng này.
Kay Horstmann và 1500 từ về cách trở thành lập trình viên Java giỏi hơn - 3
Chìa khóa của mọi thứ là phản hồi ngay lập tức. Một số nhà tâm lý học tin rằng chúng ta có thể làm được nhiều hơn với việc học tập trên máy tính với phản hồi tức thì. Ví dụ, trong một thí nghiệm cổ điển khác, các phi công tập sự đầy tham vọng đã trải qua một buổi huấn luyện trong đó họ được yêu cầu nhìn đi nhìn lại bảng điều khiển và mô tả chuyển động của máy bay. Đồng thời, họ nhận được phản hồi ngay lập tức cho biết họ đã làm đúng hay chưa. Sau hai giờ huấn luyện, họ đã vượt trội so với các phi công giàu kinh nghiệm. Tất nhiên, điều này không có nghĩa là họ có thể ngay lập tức được đưa lên một chuyến bay thực sự, nhưng họ không còn lo lắng về các mặt số đa dạng và nhiều trên bảng điều khiển. Vì vậy, nếu bạn mới bắt đầu học Java, làm nhiều bài tập thực hành để luyện tập là ý tưởng tốt nhất. Có một số lượng lớn các trang web và khóa học trực tuyến tự động kiểm tra tính chính xác của mã của bạn. Hãy chọn một trò chơi đưa ra những thử thách thực sự thay vì gobbledygook. Rốt cuộc, bạn muốn tiềm thức của mình giỏi về đoạn mã mà bạn sẽ thực sự viết trong thực tế. Đây là lý do tại sao tôi không quan tâm lắm đến các ví dụ lập trình sử dụng các tình huống giả tạo, chẳng hạn như các lớp động vật với phương pháp kêu meo meo và sủa. Sau một thời gian, bạn sẽ nắm vững những điều cơ bản về lập trình. Để chuyển sang cấp độ tiếp theo, bạn có thể viết một vài dự án. Cách đây vài năm, cổng thông tin InformIT đã hỏi các lập trình viên có kinh nghiệm một câu hỏi: “Cách tốt nhất để một lập trình viên học một ngôn ngữ mới là gì?” Nếu tóm tắt câu trả lời của họ, chúng ta có thể kết luận như sau: “hãy sử dụng ngôn ngữ này trong dự án hiện tại của bạn”. Vì vậy, hãy nghĩ về những gì bạn luôn muốn thực hiện - và tiếp tục. Hai mươi năm trước, khi Java vẫn còn rất trẻ,bạn tôi và đồng thời là đồng tác giả Gary Cornell đã gọi cho tôi và nói, “Này, chúng ta sắp viết một cuốn sách về Java.” Câu trả lời của tôi là cả anh ấy và tôi đều không thực sự biết gì về Java này, anh ấy vặn lại: “Vậy thì sao? Chúng tôi đã có hợp đồng xuất bản sách rồi." Không có gì làm. Chúng tôi phải vội vàng vì có người khác đã thông báo về việc sắp phát hành cuốn sách "Dạy bản thân trở thành một gã ngu ngốc Java trong 24 giờ" ... Tôi nghĩ nó được gọi như vậy ( Kay chế giễu bộ sách "Dành cho người ngu" - "dành cho người giả" từ "Dummy" có thể dịch là "dummy" - ghi chú của người dịch ). Để học một ngôn ngữ mới, tôi bắt đầu với các dự án - viết một chương trình tạo giao diện người dùng để lập kế hoạch nghỉ hưu, sau đó là chương trình kết nối với một trang web thời tiết và hiển thị báo cáo thời tiết. Sau đó - một chương trình mô phỏng chuyển động của ô tô trên đường cao tốc. Vào thời điểm đó, những chương trình này thật tuyệt vời!java.awtjava.netvà chủ đề ( threads). Và tôi phải học cách thực sự thực hiện được điều này chứ không chỉ những gì tài liệu nói. Vào thời điểm đó đây là những điều hoàn toàn khác nhau. Đó là lý do tại sao Core Java [1] lại thành công: nó không dành cho những người chưa biết gì.
Kay Horstmann và 1500 từ về cách trở thành lập trình viên Java giỏi hơn - 4
Vào thời điểm đó, việc học Java khó khăn hơn rất nhiều. Chúng tôi không có các trang web như Stack Overflow ( và chúng tôi cũng không có JavaRush - ghi chú của biên tập viên ). Tại thời điểm này, tôi chuyển sang đưa ra lời khuyên sau để cải thiện “kỹ năng” lập trình của bạn. Vì vậy, khi bạn thực hiện dự án của riêng mình, bạn chắc chắn sẽ gặp khó khăn ở đâu đó. Trong trường hợp này, hãy đến một diễn đàn chuyên ngành và cố gắng tìm câu trả lời. Hãy tin tôi, đây là một ý tưởng tuyệt vời . Đầu tiên, bạn sẽ đặt những câu hỏi đã được hỏi nhiều lần trước đó. Nhưng bạn sẽ sớm có được kiến ​​thức và những câu hỏi của bạn sẽ trở nên độc đáo hơn. Đây là một cách tuyệt vời để học hỏi! Tất nhiên, đây không phải là việc chỉ sao chép-dán một đoạn mã và hỏi: “Tôi nên làm gì với cái này bây giờ?” Bạn cần đi sâu vào vấn đề, giải thích những nỗ lực bạn đã thực hiện để giải quyết vấn đề trước khi gặp khó khăn. Nhân tiện, trong hầu hết các trường hợp, khi tôi đặt câu hỏi bằng văn bản, tôi tự tìm ra câu trả lời và tất cả những gì tôi phải làm là tự nhủ: “Vấn đề ở đây là gì, không cần phải đắn đo nữa” ngay cả trước khi tôi gửi câu hỏi . Nhưng ngay cả khi điều này không xảy ra... Hãy tin tôi, những câu hỏi sâu sắc có xu hướng thu hút những câu trả lời sâu sắc. Chỉ cần nhớ đáp lại sự ưu ái của xã hội bằng cách trả lời những câu hỏi sâu sắc của người khác. Cả việc đặt câu hỏi và trả lời các câu hỏi sâu sắc đều giúp bạn trở thành một lập trình viên giỏi hơn. “Vậy còn những cuốn sách thì sao? - bạn hỏi. “Có phải chúng thực sự đã trở nên lỗi thời hoàn toàn và không thể thay đổi nhờ GoogleStack Overflow ?” Bất cứ khi nào tôi định hướng một công nghệ mới, tôi tin rằng mình là một người dũng cảm và có thể một mình vượt qua mọi khó khăn. Nhưng một giờ dằn vặt vô nghĩa nhường chỗ cho một giờ tỉnh táo - và tôi mua một cuốn sách. Sách kỹ thuật là một món hời tuyệt vời ngày nay. Nếu tôi trả 40 USD cho một cuốn sách điện tử và chỉ nhận được một câu hỏi được trả lời nhanh chóng thì tôi đã kiếm lại được số tiền của mình. Tôi ghét phải làm các đồng nghiệp của mình thất vọng, nhưng tôi chưa bao giờ đọc một cuốn sách kỹ thuật nào từ đầu đến cuối. Tôi bắt đầu từ nơi tôi nghĩ vấn đề của mình và giải pháp cho nó được viết ra, và tôi đọc cho đến khi tôi hiểu cách giải quyết nó. Vì lý do này, tôi hiện đang cố gắng viết những cuốn sách có thể đọc được theo cách này. Cách tiếp cận này đã tạo nên loạt bài “Dành cho người thiếu kiên nhẫn”. Và tại thời điểm này tôi nên dừng lại - tôi đã vượt quá giới hạn biên tập là 1500 từ. Hãy để tôi nói thêm điều đó để trở thành một lập trình viên giỏi hơn, hãy bắt đầu bằng việc nhận ra rằng có nhiều cấp độ kiến ​​thức.
  1. Đầu tiên, hãy “kéo” các cấu trúc ngôn ngữ cơ bản vào tiềm thức của bạn, tức là đưa kiến ​​​​thức của chúng trở nên tự động bằng cách giải một số lượng lớn bài tập.

  2. Bắt đầu thực hiện các dự án thực tế mà bạn quan tâm càng nhanh càng tốt.

  3. Sau đó tham gia một cộng đồng nơi bạn có thể hỏi và trả lời các câu hỏi.

  4. Khi làm được điều này, bạn sẽ có thể nói chuyện bằng kiến ​​thức và kinh nghiệm trong các cuộc phỏng vấn. Và việc bạn có giải được câu đố giả tạo hay không thực sự không quan trọng.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION