그런데 몇몇 동료 프로그래머들이 나에게 진로에 대한 조언을 구해왔고, 이제는 또 다른 조언을 작성해야 할 때라고 생각했습니다. 그건 그렇고, 다른 것을 확인하고 싶으시다면 제가 요리한 끔찍한 것들을 Heinz's Worst Recipes에 기록하기 시작했습니다. 허리 둘레에서 알 수 있듯이 잘 먹고 싶은 압도적인 욕구에 힘입어 요리는 나의 열정 중 하나가 되었습니다. 나는 조리법을 전혀 따르지 않기 때문에 자격을 갖춘 요리사가 아니며 따라서 내가 요리하는 많은 음식은 "슬프게도 먹을 수 없음"으로 폐기됩니다. 물론 충분한 질문 후에 문제가 발생할 수 있습니다. 내가 원하는 것을 얻으십시오. 내 블로그에는 성공과 실패의 사례가 문서화되어 있습니다. 물론 이것은 Java와 관련이 없습니다.
Java 챔피언 프로그래머가 되는 방법은 무엇인가요?
몇 달 전 저는 비즈니스 파트너인 Carl과 프랑스어 코스 강사 Xavier와 함께 파리의 한 레스토랑에서 식사를 하고 있었습니다. 대화하는 동안 칼과 나는 우리가 어렸을 때 사용했던 모든 멋진 기술에 대해 웃고 농담했습니다. 동시에 나는 자비에르가 오랫동안 침묵하고 있다는 것을 알아차리고 그에게 나이를 물어보기로 했다. 그 아이의 나이는 정확히 기억나지 않지만, 나와 나이가 꽤 달랐고, 내 둘째 아이와도 거의 같은 나이였던 것으로 기억한다. 이는 칼과 내가 수년에 걸쳐 동시에 가졌던 모든 프로그래밍 경험이 그에게는 가치가 없다는 것을 의미했습니다.
소프트웨어 엔지니어라는 직업에서 지식의 반감기는 3년입니다. 이는 3년 후에는 당신이 가지고 있는 지식의 절반이 쓸모 없게 된다는 것을 의미합니다. 예를 들어, 나이가 들수록 TSR(Terminate-Stay-Resident)을 이해하는 사람을 보기가 어렵고, TSR을 작성한 사람을 찾는 것은 건초 더미에서 바늘을 찾는 것과 같습니다. DOS 시스템에서는 여러 프로그램을 동시에 실행할 수 없습니다. 따라서 달력이나 계산기와 같은 배경 기능이 필요할 때 메모리 상주 프로그램(Terminate-Stay-Resident 프로그램)을 작성한 다음 특정 키 조합을 통해 다른 프로그램에서 이를 활성화합니다.
이 업계에서는 지식의 3년 반감기가 실제로는 놀라운 일이므로 절대로 가라앉는 나무가 되지는 않습니다. 10대 때 사람들은 내가 계속해서 새로운 것을 배워야 한다고 생각하면서 프로그래머가 되지 말라고 경고했지만, 나는 그것이 우리의 일에 도움이 될 것이라고 생각했습니다. 첫째, 마음이 신선하고 활동적이어야 합니다. 제가 마지막으로 할머니를 만났을 때 할머니는 98세이셨고 걷기가 불편하셨지만 여전히 정신은 맑았습니다. 그녀는 내 Macbook Pro를 보고 "야, 그거 멋지구나. 하나 사고 싶다"고 말했습니다. 그녀가 계속해서 새로운 것을 배우고 있기 때문입니다. 둘째, 별로 관심이 없는 기술은 곧 대체될 것이기 때문에 무시하십시오. Subversion의 예를 들어 보겠습니다. 예전에는 필요해서 사용했지만 특별하게 여기지 않았고 Subversion 전문가가 되지도 않았습니다. 몇 년 후 git이 등장했고 저는 Subversion에 작별 인사를 할 수 밖에 없었습니다. 안타깝게도 내 고객 중 한 명이 실제로 올해 CVS에서 Subversion으로 마이그레이션했습니다! 올해는 2015년입니다!
자, 다시 주제로 돌아가겠습니다. 챔피언 프로그래머가 되는 방법은 무엇일까요? 다음 사항이 매우 도움이 된다고 생각합니다.
기억력이 강합니다. 제가 8학년이었을 때 저는 제 기억력이 형편없다고 스스로 확신했습니다. 모두 죽은 역사 선생님 때문이었습니다. 그런데 놀랍게도 수년간 프로그래머로 일한 후, 이전에 보았던 Java 소스 코드를 즉시 재현할 수 있다는 사실에 놀랐습니다. JDK의 메소드를 읽어보면 이전 버전과 메소드가 달라졌는지 알 수 있는 경우가 많다. 어쩌면 나는 누군가의 얼굴과 이름을 명확하게 기억하지 못할 수도 있지만 사진 기억으로 Java 코드를 기억할 수 있습니다. 그 사람의 이름도 for 루프라면 좋을 것입니다. 다행스럽게도 기억력이 부족하다고 해서 챔피언 프로그래머가 되는 데 방해가 되는 것은 아니지만, 기억력이 좋다는 것은 여전히 분명한 이점입니다.
수학적 능력. 훌륭한 Java 프로그래머가 되기 위해 수학에 능숙할 필요는 없지만 수학 기술은 훌륭한 프로그래머가 되기 위한 자격을 갖추는 데 분명히 도움이 될 것입니다. 올해 1월에는 시간이 좀 있어서 프로젝트 오일러(Project Euler)를 시도해 보기로 했습니다. 퍼즐 중 하나는 해결책을 찾는 데 9시간 30분의 실행 시간이 필요합니다. 실행하는 동안 문제를 살펴보고 솔루션을 최적화하는 데 사용할 수 있는 숫자 간의 약간의 관계를 발견했습니다. 다시 실행했는데 이번에는 6분밖에 걸리지 않았습니다. 그러는 동안 내 첫 번째 알고리즘은 계속 실행되어 답을 찾으려고 노력합니다. 다시 숫자로 돌아가서 이전에 보지 못했던 또 다른 패턴을 발견했는데, 이제는 완성하는데 6초밖에 걸리지 않습니다. 또한 영리한 프로그래밍 기술과 병렬성을 사용하여 코드에 대한 무차별 최적화를 시도했는데, 이로 인해 속도가 약간 빨라졌을 수도 있지만 여전히 6초 미만으로 완료할 수는 없었습니다.
약 10년 전, Sun은 Java Champion 프로그램을 시작했습니다. Java 개선을 돕기 위해 적극적으로 활동하고 있는 세계 최고의 Java 전문가 1,000명을 찾아보자는 아이디어입니다. 지금 우리 순위는 아마 160위일 겁니다. Oracle은 이 프로그램을 계속하고 있으며 지난 몇 년 동안 우리는 이 인정 시스템의 추가적인 이점을 확인했습니다. 스스로 선택한 그룹입니다. 새로운 챔피언은 기존 챔피언의 추천과 투표로 선정됩니다. 일반적으로 챔피언이 선택되려면 12표 이상이 필요하며, 1표가 제안을 거부합니다. 자체 추천이 고려되지만 일반적으로 충분한 지원을 받지 못합니다.
프로그래머 친구들이 어떻게 Java 챔피언 프로그래머가 되었는지 묻곤 합니다. "매우 간단합니다." 저는 "나처럼 Java 관련 기사를 200개 게시하거나 Hibernate, Spring, Jacoco 등을 작성하세요. 또는 StackOverFlow에 대한 수천 가지 질문에 답변하고 12개의 좋은 기사를 게시하거나 유럽에서 가장 큰 Java 개발자 컨퍼런스를 조직하세요.”
시간과 에너지가 필요한 특별한 일을 해야 합니다. 카리스마와 외모 때문에 챔피언 Java 프로그래머가 되는 사람은 없습니다. 열심히 일하는 것이 전부이기 때문에 아마도 우리 이름 뒤에 머그샷이 없는 이유일 것입니다 ;-) . 더욱이, 챔피언 프로그래머가 되기 위해 챔피언 프로그래머가 되지 마십시오. 이기적인 태도를 멈추고 다른 사람들의 칭찬을 기다리면 기분이 좋아질 것입니다. 모든 챔피언 프로그래머가 공식적으로 "Oracle Java Champion(Oracle Java Champion Programmer)"로 불리는 것은 아닙니다.
어떤 길을 선택하든 챔피언 프로그래머가 된다는 것은 헌신을 의미합니다. 9시부터 5시까지 일하는 것과는 완전히 다릅니다. 일하는 동안 필요한 모든 것을 배울 수는 없습니다. 챔피언 프로그래머가 되려면 시간에 맞춰 저녁과 주말에 공부해야 합니다. 가장 과장된 농담은 프로그래머가 40세에 도달하자마자 제거 기간에 들어간다는 것입니다. 아마도 그들은 Java 프로그래밍에서 잘 하고 있을 것입니다. 책, 기사를 읽거나 개발자 컨퍼런스 및 도전적인 과정에 참석하여 지식을 새롭게 하지 않는 한, 졸업장에만 의존하는 것은 결국 쓸모가 없게 될 것이며 업계에서는 그것을 중고 냅킨처럼 버릴 것입니다. 절대 그런 사람이 되지 마세요! 공부하고 공부하고 또 공부하세요! 그리고 가장 좋은 학습 방법은 의심할 여지 없이 동료들과 지식을 공유하는 것입니다.
어떻게 지식을 공유할 수 있나요? 요즘에는 많은 옵션이 있습니다. StackOverflow나 기타 유사한 사이트에서 질문에 답할 수 있고, 테이크아웃을 주문하여 점심 시간에 기술적인 문제에 대해 논의할 수도 있습니다. 몇 년 전 제가 Go에서 일했던 회사에서 "디자인 패턴" 방법을 통해 그랬던 것처럼 말입니다. 이를 위해서는 약간의 희생이 필요합니다. 점심을 포기하고 강연 준비를 위해 저녁 시간을 보내야 할 수도 있습니다. 그러나 단순히 정보 소비자가 되는 것보다 배워야 할 것이 훨씬 더 많습니다.
"Java™ Specialists' Newsletter"는 현재 130개국 이상에서 70,000명 이상의 프로그래머가 읽고 있지만 아주 작은 규모로 시작하여 80명의 친구와 가족(형제와 부모님 포함)에게 보냈습니다. ) 그리고 나는 그것을 친구들과 동료들에게 전달해달라고 간청했습니다. 시간이 지남에 따라 천천히 발전합니다. 주위를 둘러보면 80개의 이메일 주소를 찾을 수 있을 거라 생각하고 그렇게 시작된 거죠. 모든 것은 작게 시작됩니다. 천천히 발전하지만 성장은 꾸준합니다. 70,000이라는 숫자를 보면 충격을 받을 수도 있지만 이는 Java 프로그래머 중 극히 일부에 불과합니다.
마지막으로 매우 유용한 포인트인 열정으로 이번 포스팅을 마무리하고 싶습니다. 대부분의 사람들은 지루한 컴퓨터 작업을 해야 하지만 그것을 즐기는 사람은 거의 없습니다. 내 직업 중 하나에서는 전기 엔지니어에게 소스 코드 저장소를 구성하는 작업을 맡겼습니다. 그는 모든 것을 잘못했습니다. 소스 제어를 수행할 때 디렉터리 간에 소스 트리를 복사해 보겠습니다. 빌드하는 동안 매주 같은 시간에 이 작업을 수행해야 하는데 서버가 크롤러만큼 느립니다. 기계가 멈춰서 모두가 기다리게 되면 몇 시간이 걸릴 수 있는데, 이는 고통스럽고 좌절스러운 일입니다. 저는 VSS(Visual Source Safe: 소프트웨어 개발 시 다양한 버전의 소스 코드 및 문서를 관리하는 데 사용됨)에 대한 열정이 없습니다. 당신이 열정을 갖고 있는 일을 찾으십시오. 그것은 퇴근 후에도 기꺼이 하고 싶은 일이어야 합니다. 나에게는 Java 생태계의 구석구석을 연구하는 것입니다. 멈춰야 할 이유가 셀 수 없이 많을 때 열정은 우리를 앞으로 나아가게 하는 원동력입니다.
내가 요리를 좋아하는 이유와 비슷하다. 다행히 나는 요리보다 프로그래밍을 더 잘한다.
LAMP Brothers의 원본 PHP 튜토리얼 CD/"Essential PHP in Detail"을 무료로 받아보세요. 자세한 내용은 공식 웹사이트 고객 서비스에 문의하세요: http://www.lampbrother.net
|