여러 번 내 응용 프로그램에 대한 것들을 잊어 버렸습니다. 나는 테이블 이름이나 쿼리가 무엇을 기억하지 않고 원하는 것을 얻기 위해 검색합니다. 팀 리더는 내가 사용하는 테이블 이름을 외워야한다고 말했습니다.
개발자가 데이터베이스의 테이블 이름, 클래스 이름 등을 기억해야합니까? 대답이 "예, 항상"이라면, 그 것들을 기억하기 위해 어떻게해야합니까?
여러 번 내 응용 프로그램에 대한 것들을 잊어 버렸습니다. 나는 테이블 이름이나 쿼리가 무엇을 기억하지 않고 원하는 것을 얻기 위해 검색합니다. 팀 리더는 내가 사용하는 테이블 이름을 외워야한다고 말했습니다.
개발자가 데이터베이스의 테이블 이름, 클래스 이름 등을 기억해야합니까? 대답이 "예, 항상"이라면, 그 것들을 기억하기 위해 어떻게해야합니까?
답변:
이러한 것들을 명시 적으로 기억할 필요는 없습니다 . 그것은 당신이 철자법 테스트를위한 단어들의리스트처럼 앉아서 그것들을 배우는 것을 의미합니다. 첫 번째 인스턴스에서 이름이해야 기억에 남는 및 검색 할 당신이 너무 많은 노력없이 다시 찾을 수 있도록.
또한 자동 완성 등을 통해 도움을주는 도구에 액세스 할 수 있어야합니다.
100 개가 넘는 테이블이있는 큰 시스템에서는 모든 테이블 이름과 모든 열 이름을 실제로 기억할 수있는 방법이 없지만, 기억하기 쉽고 검색 가능한 이름과 정기적 인 사용으로 가장 중요한 세부 사항과 모든 테이블 이름을 기억해야합니다. 일.
아인슈타인은 "[책에서] 찾을 수있는 것을 외우지 말아라"고 말했고, 나는 완전히 동의한다.
필요할 때 찾을 수있는 사실이 아닌 추상적 인 것들 (개발 기술과 원칙)에 기억을 사용하십시오.
인정하기가 부끄럽다-나는 거의 30 년 동안 C를 사용해 왔지만 함수 포인터를 선언하는 방법을 결코 기억할 수 없다. 나는 항상 K & R을 통해 구문을 확인해야한다.
더 난처하게도 typedef의 작동 방식에 대해 정말 열심히 생각해야합니다.
typedef foo int;
또는
typedef int foo;
이들은 내 개인적인 사각 지대입니다. 비슷한 것이 있으면 걱정하지 않아도됩니다.
기억이 중요하다
강력한 기억력은 실제로 개발자가 가질 수있는 최고의 재능 중 하나입니다. 실제로 누구나 가질 수 있습니다. 그것은 진정으로 특별한 일이며 나는 그것을 축복 한 사람들을 부러워하고 존경합니다. 그것은 확실히 사람이 더 강한 개발자, 변호사, 정비사 또는 (여기에 선택한 작업을 삽입) 도움이 될 수 있습니다.
얼마가 필요합니까?
그러나 나는 모든 것을 암기하는 것이 공정한 요구 사항이라고 생각하지 않습니다. 나는 당신이 일을하는 것의 자연스러운 부분으로 기억에 헌신하기 시작할 것이라고 믿습니다. 그렇기 때문에 언어에 관한 책을 읽고 프로덕션 환경에서 사용하는 것이 같은 것이 아닙니다. 당신이 매일 무언가 (일부는 "연습"이라고 부름)로 일하면서 당신은 어떤 것을 제 2의 자연으로 만들기 시작할 것입니다.
다른 포스터와 마찬가지로 응용 프로그램의 주요 부분을 암기하는 것이 도움이된다고 생각합니다. 그러나 현대 도구에서 점점 일반적으로 사용되는 인텔리전스와 같은 기능을 활용할 수있을 때 모든 것을 암기하는 데 투자 할 가치가있는 것은 확실하지 않습니다.
어떻게 향상시킬 수 있습니까?
나는 기억에 대한 전문가는 아니지만 뇌 게임 (십자말, 스도쿠, 퍼즐 등)과 같은 정신 운동을 통해 기억력을 향상시킬 수 있다고 믿는 사람들도 있습니다. 이론은 당신의 두뇌가 근육과 같으며 다른 방식으로 사용하고 운동하면 그것을 강화시킬 수 있다는 것입니다.
두뇌 게임, 프로그래밍 및 대화 형 활동과 같은 일이 시간이 지남에 따라 두뇌에 미치는 영향에 대한 연구를 보는 것은 흥미로울 것입니다. 그러한 것들이 나이나 치매로 인한 기억 상실의 시작과 싸우는 데 도움이 될 수 있습니까?
내가 어디에서 왔을 때, 영어로 다음과 같은 오래된 말이 있습니다. "어리석은 사람이 암기하고 똑똑한 사람이 적습니다." 기본적으로, 당신의 기억이 얼마나 좋은지 상관없이 잊어 버릴 것 입니다. 당신은 인간 일뿐입니다. 결과적으로 이것은 인간의 기억에 의존하게됩니다. 이 테이블 이름을 기억한다고 생각하더라도 100 % 확신 할 수 있습니까? 몇 초만에 테이블 이름을 찾을 수 있지만 철자가 틀린 버그를 추적하려면 몇 시간 또는 며칠이 걸릴 수 있습니다.
결론적으로, 아니요, 특히 수천 개의 테이블과 클래스를 가질 수있는 대규모 프로젝트의 경우에는 어리석은 요구 사항 입니다.
그것이 당신이 일하고있는 무언가에 있고 장기적인 과제라면, 그렇습니다. 학습을 위해 노력하고 다양한 테이블과 열 이름, 클래스, 변수 및 메소드를 기억할 수 있어야합니다. 이것은 당신이 그들과 함께 일할 때 시간이 지날 것입니다. 밤새 학습하지는 않지만 가능한 한 작업중인 시스템에 대해 많은 정보를 얻으려고 노력해야합니다. 또한 큰 시스템에서는 모든 것을 암기 할 수있는 방법이 없지만 가능한 한 많이 배우고 기억하지 않을 이유는 없습니다.
항상 모든 것을 살펴보아야하는 것은 생산성에 큰 영향을 미칩니다. 작업을하고 있고 몇 분마다 물건을 멈추고 찾아야하는 경우 집중력이 떨어집니다. 적절한 도구를 사용하여 도움을주고, 가능한 것을 배우고 기억하십시오. 생산성을 크게 향상시킵니다.
주요 테이블 이름과 중요한 열 이름을 알지 못하고 데이터베이스를 쿼리 할 수있는 방법을 모르겠습니다 (그러나 모든 것은 아닙니다). 나는 매번 그것을 이해하지 않고서도이 자료를 아는 사람들이 조직에 더 가치있게되고 다른 사람들이 갇힐 때 "가는"사람들이된다는 것을 알고 있습니다.
나는 사람들 이이 물건을 배우기 시작하지 않으면 그것을 깨닫지 않고 쿼리에서 오류를 일으키는 경우가 종종 있습니다. 데이터베이스 구조와 테이블이 서로 어떻게 관련되어 있는지, 그리고 중요한 비즈니스 규칙이 무엇인지 찾아 보지 않기 때문에 코드 검토에서 종종 오류가 발생합니다.
개인적으로 나는 구조를 배우기를 귀찮게하지 않는 사람들이 종종 특정 데이터베이스를 쿼리 할 때 초보자 수준에 머물러 있음을 알게되었습니다. 그들은 또한 해고에서 살아남지 않는 경향이 있습니다. 나는 당신의 상사가 더 많은 관심을 갖도록 당신에게 호의를 베풀고 있다고 생각합니다.
강력한 메모리 이상으로 많은 것을 돕는 것은 도메인 기반 디자인이며 테이블 이름 및 클래스 이름과 같은 쉬운 규칙을 따르는 것입니다. 비즈니스 소유자가 요구 사항에 대해 귀하에게 말하면, 그에 의해 사용되는 도메인 특정 용어가 코드에 있어야합니다. 이 경우 코드에서 비즈니스 용어와 이름 간의 매핑을 기억할 필요가 없습니다. 이 습관은 따라 잡는 데 시간이 걸리지 만 비즈니스 소유자와 개발자 간의 번역 오류를 줄임으로써 매우 유용합니다.
이와 함께 프로젝트 기간이 매우 길면 일정 기간 동안 코드 기반에 익숙해지면 무의식적으로 메모리에 도움이됩니다.
domain driven design
시겠습니까?