JavaRush /Java Blog /Random-KO /Kay Horstmann과 더 나은 Java 프로그래머가 되는 방법에 대한 1,500개의 단어

Kay Horstmann과 더 나은 Java 프로그래머가 되는 방법에 대한 1,500개의 단어

Random-KO 그룹에 게시되었습니다
Cay S. Horstmann 이라는 이름을 이미 들어보셨을 것입니다 . 그는 자바 세계에서 상당히 저명한 사람이자 우리가 사랑하는 언어에 관한 많은 책의 저자입니다. 그 중에는 고전 코스인 "Core Java"(러시아어로 2권의 책 "Java. Professional's Library" 에 출판됨)와 "Java for Impatient"(러시아어 "Java SE 에 출판됨)"의 본질을 간략하게 요약한 시리즈가 있습니다. 8. 입문과정''Java SE 8. 기본과정 " ). 그는 "자바 챔피언"이라는 자랑스러운 칭호를 갖고 있습니다. 그리고 이 링크 에서 흥미로운 정보가 담긴 그의 예전 학교 웹사이트를 찾을 수 있습니다.
Kay Horstmann과 더 나은 Java 프로그래머가 되는 방법에 대한 1,500가지 단어 - 1
우리는 InformIT 리소스 에 대한 기사 번역을 여러분에게 알려드립니다 . Kay는 초보 프로그래머와 계속 프로그래머가 자신의 직업에서 더 나은 사람이 되는 방법에 대한 몇 가지 팁을 제시합니다. 어느 날 InformIT의 편집장인 Jennifer Bortel이 나에게 더 나은 Java 프로그래머가 되는 방법에 대해 한 마디 부탁했습니다. 그녀는 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이유로 이 단어가 빠졌다면 어떨까? 어쩌면 일부 교활한 면접관이 지원자를 오도하는 방식으로 의도적으로 이 예를 구성했을 수도 있습니다. 그래서 나는 질문을 한 개발자에게 답장을 보내 내가 아마도 틀렸을 것이라고 말했습니다. 인터뷰 질문이라는 평행 우주에서 이 질문에 대한 대답은 "두 번째 방법에는 개체 잠금이 포함되어 있습니다."입니다. 이 답변을 마친 후 그 사람은 이러한 유형의 면접 문제를 처리하는 방법을 가르치는 YouTube 채널을 운영하는지 물었습니다. 아아, 나는 이런 일을 하지 않습니다. 나는 컴퓨터 과학을 가르치고 책을 집필하지만, 나의 주요 목표는 더 나은 "인터뷰 문제 해결사"를 만드는 것이 아니라 학생들을 더 나은 프로그래머로 만드는 것입니다. 옛날 옛적에 Peter Norvig ( 인공 지능 분야의 미국 과학자, Google 연구 책임자 - 약. trans. )는 자신의 블로그에 멋진 기사를 썼습니다. 그는 24시간 또는 21일 안에 Java를 가르친다고 약속하는 책은 정말 터무니없다고 주장했습니다. 그에게 동의하지 않는 것은 어렵습니다. 어떤 분야에서든 전문가가 되려면 10년, 어쩌면 10,000시간이 걸립니다. 그리고 전문가가 초보자와 다르게 정보를 처리한다는 것은 잘 알려져 있습니다. 고전적인 실험에서는 숙련된 체스 플레이어와 초보 체스 플레이어에게 특정 조각이 배열된 체스판을 몇 초 동안 보여준 다음 체스판을 숨겨서 조각을 있는 그대로 배열하도록 요청했습니다. 초보자는 작업에 잘 대처하지 못했지만 전문가는 아무런 문제가 없었습니다. 그러나 한 가지 중요한 조건에서만 가능합니다. 즉, 조각의 배열이 실제 게임과 일치해야 한다는 것입니다 . 조각을 무작위로 배치하면 전문가가 초보자보다 보드를 다시 구성하는 데 더 나을 것이 없습니다.
Kay Horstmann과 더 나은 Java 프로그래머가 되는 방법에 대한 1,500가지 단어 - 2
그래서 나는 편지의 질문에 내가 했던 방식으로 정확하게 대답했습니다. 내 배경이 인터뷰가 아닌 실제 프로그래밍에 있었기 때문에 본능적으로 누락된 키워드를 추가하고 "잘못된" 결론을 내렸습니다. 나는 무슨 일이 일어났는지 설명하고 왜 내가 추가하지 않으면 예제와 같은 코드를 작성하지 않을 것인지 설명한 후에도 여전히 고용될 것이라고 생각하고 싶습니다. 아마도 그러한 대답이 그들을 만족시키지 못한다면 나 자신도 그들과 함께 일하고 싶지 않을 것입니다.
이제 자격증 시험이나 면접 공부를 한다고 해서 더 나은 프로그래머가 될 수는 없다고 생각합니다. 나는 또한 프로그래밍에 관한 많은 책을 사서 처음부터 끝까지 읽는 것도 효과가 없을 것이라고 확신합니다(비록 이 책의 저자로서 나는 그것을 인정하고 싶지 않지만!). 사실, 더 나은 프로그래머가 되는 정말 좋은 방법은 가능한 한 많은 소프트웨어를 만드는 것입니다 . 저는 가끔 대학에서 컴퓨터 과학 입문 과정을 가르치고 있습니다. 이것은 지금까지 내가 가르쳤던 강좌 중 가장 어려운 강좌이다. 대학원 과정보다 더 어렵습니다. for제가 처음 젊은 교수로 일하기 시작했을 때 학생들에게 루프 와 while루프 의 차이점과 같은 프로그래밍 문제를 성실하게 다루는 강의를 열심히 했습니다 do. 그런 다음 학생들에게 3주짜리 프로젝트 4개를 할당했습니다. 그리고 이 과목은 초창기부터 모든 대학에서 이런 식으로 가르쳐 왔습니다. 첫 번째 시도 이후, 2학기 과정의 강사는 대부분의 이전 학생들이 프로그래밍 첫 학기 이후에도 간단한 루프조차 이해하지 못한다고 불평했습니다. 그리고 그러한 결과는 태초부터 나타났습니다. “FizzBuzz 또는 프로그래머가 프로그래밍할 수 없는 이유” 기사를 기억하시나요 ? 외국어를 배울 때 대부분의 작업은 이론이 아닌 연습과 실습입니다. 지식을 잠재의식 속으로 "밀어넣는" 것이 매우 중요합니다. 전환점은 더 이상 각 주기 또는 (프랑스어의 경우) 각 불규칙 동사에 대해 적극적으로 생각할 필요가 없을 때 발생합니다. 이 순간이 왔다면 다음 단계로 이동할 준비가 된 것입니다. 그리고 이 아이디어에는 혁명적인 것이 없습니다.
Kay Horstmann과 더 나은 Java 프로그래머가 되는 방법에 대한 1,500가지 단어 - 3
모든 것의 핵심은 즉각적인 피드백입니다. 일부 심리학자들은 즉각적인 피드백을 제공하는 컴퓨터 기반 학습을 통해 훨씬 더 많은 일을 할 수 있다고 믿습니다. 예를 들어, 또 다른 고전적인 실험에서는 예비 조종사가 계기판을 계속해서 보고 비행기의 움직임을 설명하도록 요구되는 훈련 세션을 거쳤습니다. 동시에 그들은 올바르게 수행했는지 여부에 대한 즉각적인 피드백을 받았습니다. 2시간의 훈련 후에 그들은 숙련된 조종사보다 더 뛰어난 성능을 발휘했습니다. 물론 이것이 즉시 실제 비행기로 보내질 수 있다는 의미는 아니지만 계기판의 다양하고 수많은 다이얼에 더 이상 긴장하지 않았습니다. 따라서 이제 막 Java를 배우기 시작했다면 연습을 많이 해서 연습해 보는 것이 가장 좋습니다. 코드의 정확성을 자동으로 확인하는 수많은 웹사이트와 온라인 강좌가 있습니다. gobbledygook보다는 실제적인 도전을 제공하는 것을 선택하십시오. 결국, 당신은 실제로 실제로 작성할 코드를 잠재의식적으로 잘 활용하기를 원합니다. 이것이 바로 내가 야옹거리고 짖는 메서드를 사용하는 동물 클래스와 같이 인위적인 상황을 사용하는 프로그래밍 예제에 별로 관심이 없는 이유입니다. 시간이 지나면 프로그래밍의 기본을 마스터하게 됩니다. 다음 단계로 이동하려면 몇 가지 프로젝트를 작성하면 됩니다. 몇 년 전 InformIT 포털에서는 숙련된 프로그래머에게 "프로그래머가 새로운 언어를 배우는 가장 좋은 방법은 무엇입니까?"라는 질문을 했습니다. 그들의 답변을 요약하면 다음과 같은 결론을 내릴 수 있습니다. "현재 프로젝트에서 이 언어를 사용하십시오." 따라서 항상 구현하고 싶었던 것이 무엇인지 생각해보고 계속 진행하십시오. 20년 전, 자바가 아직 아주 어렸을 때,내 친구이자 공동 저자이기도 한 게리 코넬 (Gary Cornell) 이 나에게 전화해서 “케이, 우리는 자바에 관한 책을 쓸 거예요.”라고 말했습니다. 내 대답은 그도 나도 이 Java에 대해 아무것도 모른다는 것이었습니다. 이에 그는 다음과 같이 반박했습니다. “그래서 뭐요? 우리는 이미 책 계약을 맺었습니다." 할 것이 없다. "Teach Yourself to Be a Java Dummy in 24 Hours"라는 책의 출시가 임박했다고 다른 사람이 발표했기 때문에 우리는 서두를 수밖에 없었습니다... 그런 이름이었던 것 같아요( Kay는 "For Dummies" 시리즈의 책을 놀립니다. - "인형용" "인형"이라는 단어는 "인형"으로 번역될 수 있습니다 - 번역자 주 ). 새로운 언어를 배우기 위해 저는 은퇴 계획을 위한 사용자 인터페이스를 만드는 프로그램을 작성하고 날씨 사이트에 연결하여 일기 예보를 표시하는 프로그램을 작성하는 프로젝트부터 시작했습니다. 그 후 - 고속도로에서 자동차의 움직임을 시뮬레이션하는 프로그램입니다. 그 당시 이 프로그램은 정말 놀라웠습니다!java.awtjava.net및 스레드( threads). 그리고 저는 문서에 적힌 내용뿐만 아니라 실제로 이 작업을 수행하는 방법을 배워야 했습니다. 그 당시에는 완전히 다른 것들이었습니다. 이것이 바로 Core Java [1]가 히트한 이유입니다. 이는 더미용이 아니었습니다.
Kay Horstmann과 더 나은 Java 프로그래머가 되는 방법에 대한 1,500가지 단어 - 4
그 당시에는 Java를 배우는 것이 훨씬 더 어려웠습니다. 우리는 Stack Overflow 와 같은 사이트가 없었습니다 ( 그리고 JavaRush도 없었습니다 - 편집자 주 ). 이제 프로그래밍 "기술"을 향상시키기 위한 다음 조언을 공식화하겠습니다. 따라서 자신의 프로젝트를 진행하다 보면 어딘가에 막히게 마련입니다. 이런 경우에는 전문 포럼에 가서 답변을 찾아보세요. 저를 믿으십시오. 이것은 좋은 생각입니다 . 먼저, 이전에 이미 여러 번 물어본 질문을 할 것입니다. 그러나 곧 당신은 지식을 얻게 될 것이고 당신의 질문은 더욱 독특해질 것입니다. 이것은 배우는 놀라운 방법입니다! 물론 이것은 단지 코드를 복사해서 붙여넣고 “이제 이걸 어떻게 해야 하지?”라고 묻는 것이 아닙니다. 문제의 근본 원인을 파악하고 막히기 전에 문제를 해결하기 위해 이미 어떤 시도를 했는지 설명해야 합니다. 그런데 대부분의 경우, 질문을 글로 작성하다 보면 스스로 답을 찾고, 질문을 보내기 전에도 "여기서 문제가 뭐야, 고민할 필요도 없어"라고 스스로에게 물어보면 됩니다. . 하지만 그런 일이 일어나지 않더라도... 제 말을 믿으세요. 사려 깊은 질문은 사려 깊은 답변을 이끌어내는 경향이 있습니다. 다른 사람들의 사려 깊은 질문에 답하여 사회적 호의에 보답하는 것을 잊지 마십시오. 질문을 하고 사려 깊은 질문에 대답하는 것은 모두 당신을 더 나은 프로그래머로 만듭니다. “그럼 책은 어떻습니까? - 물어. " GoogleStack Overflow 덕분에 정말 완전하고 돌이킬 수 없을 정도로 쓸모없어졌나요 ?" 나는 새로운 기술을 탐색할 때마다 나는 용기 있는 사람이고 혼자서 모든 어려움을 극복할 수 있다고 믿습니다. 그러나 한 시간의 무의미한 고통은 한 시간의 온전한 정신으로 바뀌고 나는 책을 구입합니다. 요즘에는 기술 서적이 정말 저렴합니다. 전자책을 구입하기 위해 40달러를 지불하고 한 가지 질문에 대한 답변만 빨리 받았다면 이미 돈을 돌려받은 것입니다. 나는 동료 작가들을 실망시키고 싶지 않지만 기술 서적을 처음부터 끝까지 읽은 적이 없습니다. 나는 내 문제와 그 해결책이 쓰여 있다고 생각되는 곳부터 시작하여, 그 문제를 해결하는 방법을 이해할 때까지 읽습니다. 그래서 나는 현재 이렇게 읽을 수 있는 책을 쓰려고 노력하고 있다. 이러한 접근 방식은 "For the Impatient" 시리즈를 탄생시켰습니다. 그리고 이 시점에서 나는 멈춰야 한다. 나는 편집 제한인 1500 단어를 초과했다. 더 나은 프로그래머가 되려면 다양한 수준의 지식이 있다는 점을 인식하는 것부터 시작하겠습니다.
  1. 첫째, 기본 언어 구조를 잠재 의식으로 "끌어당기"십시오. 즉, 많은 연습 문제를 해결하여 지식을 자동으로 가져옵니다.

  2. 관심 있는 실제 프로젝트 작업을 가능한 한 빨리 시작하세요.

  3. 그런 다음 질문하고 답변할 수 있는 커뮤니티에 가입하세요.

  4. 이렇게 하면 면접에서 지식과 경험을 가지고 말할 수 있게 됩니다. 그리고 당신이 인위적인 퍼즐을 풀었는지 여부는 별로 중요하지 않습니다.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION