개발자가 세부 사항을 외우도록 강요해야합니까? [닫은]


33

여러 번 내 응용 프로그램에 대한 것들을 잊어 버렸습니다. 나는 테이블 이름이나 쿼리가 무엇을 기억하지 않고 원하는 것을 얻기 위해 검색합니다. 팀 리더는 내가 사용하는 테이블 이름을 외워야한다고 말했습니다.

개발자가 데이터베이스의 테이블 이름, 클래스 이름 등을 기억해야합니까? 대답이 "예, 항상"이라면, 그 것들을 기억하기 위해 어떻게해야합니까?


27
나는 그들을 잊을 수 있기를 바랍니다.
JeffO

6
그가 왼손으로 써야한다고 말하십시오 (일부에게는 매우 쉽고 다른 사람에게는 매우 어렵다).
Job

4
“테이블 이름을 외워야합니다”??? WTF !? “주말까지는 누구나이 열 이름을 배워야합니다! 그러면 시험이있을 것입니다. 100 %를받지 못한 사람은 처음에는 희귀 한 사자에 대한 나의 자존심에 힘을 줄 것입니다 !!! Bwahahahahaa !!!!!”
Donal Fellows

4
내가 협동 학생이었을 때, 나는 나에게 정확히 그것을 요구 한 남자와 일하고, 내가 물건을 찾을 때 "시간 낭비"라고 말하면서 "당신은 이것을 공부하고 있다고 말했다!" 메모리에서 테이블 이름 (및 해당 내용)을 암송 할 수없고 테이블 이름을 암기하는 것에 대한 저의 헌신을 저에게 멘토링을 중지시키는 변명으로 사용했습니다. 나는 협동 보고서에서 그를 야만적이었다.
user16764

2
암기하지 말고 기억하십시오.
tylermac

답변:


63

이러한 것들을 명시 적으로 기억할 필요는 없습니다 . 그것은 당신이 철자법 테스트를위한 단어들의리스트처럼 앉아서 그것들을 배우는 것을 의미합니다. 첫 번째 인스턴스에서 이름이해야 기억에 남는검색 할 당신이 너무 많은 노력없이 다시 찾을 수 있도록.

또한 자동 완성 등을 통해 도움을주는 도구에 액세스 할 수 있어야합니다.

100 개가 넘는 테이블이있는 큰 시스템에서는 모든 테이블 이름과 모든 열 이름을 실제로 기억할 수있는 방법이 없지만, 기억하기 쉽고 검색 가능한 이름과 정기적 인 사용으로 가장 중요한 세부 사항과 모든 테이블 이름을 기억해야합니다. 일.


6
4k 테이블이있는 앱에서 작업 한 후이 조언의 유용성을 증명할 수 있습니다. 프로젝트 컨벤션이 암기하는 것은 도움이되지 않습니다.
Vineet Reynolds

1
발견 가능성을 높이기 위해 필요한 것들의 치트 시트 및 / 또는 (모델) 다이어그램을 작성하십시오. 그렇게하면 종이나 문서 / 이미지를보고 필요한 테이블과 열 이름을 스캔 할 수 있습니다.
Kissaki

34

아인슈타인은 "[책에서] 찾을 수있는 것을 외우지 말아라"고 말했고, 나는 완전히 동의한다.

필요할 때 찾을 수있는 사실이 아닌 추상적 인 것들 (개발 기술과 원칙)에 기억을 사용하십시오.


네 ... 기억하지 마세요. 정보를 사용할 때 올 것입니다. 그래도 항상 유용한 참고 문서를 준비하십시오.
Newtopian 2016 년

17

인정하기가 부끄럽다-나는 거의 30 년 동안 C를 사용해 왔지만 함수 포인터를 선언하는 방법을 결코 기억할 수 없다. 나는 항상 K & R을 통해 구문을 확인해야한다.

더 난처하게도 typedef의 작동 방식에 대해 정말 열심히 생각해야합니다.

 typedef foo int;

또는

 typedef int foo;

이들은 내 개인적인 사각 지대입니다. 비슷한 것이 있으면 걱정하지 않아도됩니다.


2
+1 : 1985 년에 C 프로그래밍을 시작했지만 여전히 함수 포인터를 선언하는 방법을 찾아야합니다. 나는 다른 날에 찌르다가 효과가 있었고, 나는 매우 기뻤습니다. (나는 typedef를 수행하는 방법을 기억합니다 ... :-)
Bob Murphy

2
(C #)으로 작업하는 언어에서 함수 포인터와 동등한 기능은 실제로 컴파일러가 아니라 인간이 파싱 할 수 있다는 것이 행복합니다.
svick

@svick 아, 함수 포인터를 읽는 데 문제가 없습니다. 문제가있는 것을 작성하는 방법을 기억하고 있습니다.
Neil Butterworth

3
나는 의도적으로 C 또는 C ++ 우선 순위 테이블을 암기하지 않았다. 필요한 경우 즉시 참조 할 수 있도록 편리하게 사용했으며 암기하지 않은 다른 사람을 혼란스럽게하는 코드를 작성하고 싶지 않습니다.
David Thornley 2016 년

명백한 우선 순위 규칙에 의존하는 코드는 잘못된 코드입니다.
로봇 고트

9

컴퓨터는 물건을 정확하게 기억하는 데 능숙합니다. 컴퓨터는 또한 이전에 기억했던 것을 찾는 데 능숙합니다.

따라서 핵심 기술은 컴퓨터를 메모리의 확장으로 사용하는 것입니다. 깨끗한 코드 작성, 문서 작성, 검색 도구의 효과적인 사용법 배우기, 검색 환경 등을 쉽게 찾을 수 있도록 개발 환경 설정

좋은 부작용은 다른 사람들이 코드를 쉽게 읽을 수있게한다는 것입니다.


5

기억이 중요하다

강력한 기억력은 실제로 개발자가 가질 수있는 최고의 재능 중 하나입니다. 실제로 누구나 가질 수 있습니다. 그것은 진정으로 특별한 일이며 나는 그것을 축복 한 사람들을 부러워하고 존경합니다. 그것은 확실히 사람이 더 강한 개발자, 변호사, 정비사 또는 (여기에 선택한 작업을 삽입) 도움이 될 수 있습니다.

얼마가 필요합니까?

그러나 나는 모든 것을 암기하는 것이 공정한 요구 사항이라고 생각하지 않습니다. 나는 당신이 일을하는 것의 자연스러운 부분으로 기억에 헌신하기 시작할 것이라고 믿습니다. 그렇기 때문에 언어에 관한 책을 읽고 프로덕션 환경에서 사용하는 것이 같은 것이 아닙니다. 당신이 매일 무언가 (일부는 "연습"이라고 부름)로 일하면서 당신은 어떤 것을 제 2의 자연으로 만들기 시작할 것입니다.

다른 포스터와 마찬가지로 응용 프로그램의 주요 부분을 암기하는 것이 도움이된다고 생각합니다. 그러나 현대 도구에서 점점 일반적으로 사용되는 인텔리전스와 같은 기능을 활용할 수있을 때 모든 것을 암기하는 데 투자 할 가치가있는 것은 확실하지 않습니다.

어떻게 향상시킬 수 있습니까?

나는 기억에 대한 전문가는 아니지만 뇌 게임 (십자말, 스도쿠, 퍼즐 등)과 같은 정신 운동을 통해 기억력을 향상시킬 수 있다고 믿는 사람들도 있습니다. 이론은 당신의 두뇌가 근육과 같으며 다른 방식으로 사용하고 운동하면 그것을 강화시킬 수 있다는 것입니다.

두뇌 게임, 프로그래밍 및 대화 형 활동과 같은 일이 시간이 지남에 따라 두뇌에 미치는 영향에 대한 연구를 보는 것은 흥미로울 것입니다. 그러한 것들이 나이나 치매로 인한 기억 상실의 시작과 싸우는 데 도움이 될 수 있습니까?


5

내가 어디에서 왔을 때, 영어로 다음과 같은 오래된 말이 있습니다. "어리석은 사람이 암기하고 똑똑한 사람이 적습니다." 기본적으로, 당신의 기억이 얼마나 좋은지 상관없이 잊어 버릴 것 입니다. 당신은 인간 일뿐입니다. 결과적으로 이것은 인간의 기억에 의존하게됩니다. 이 테이블 이름을 기억한다고 생각하더라도 100 % 확신 할 수 있습니까? 몇 초만에 테이블 이름을 찾을 수 있지만 철자가 틀린 버그를 추적하려면 몇 시간 또는 며칠이 걸릴 수 있습니다.

결론적으로, 아니요, 특히 수천 개의 테이블과 클래스를 가질 수있는 대규모 프로젝트의 경우에는 어리석은 요구 사항 입니다.


3

그것이 당신이 일하고있는 무언가에 있고 장기적인 과제라면, 그렇습니다. 학습을 위해 노력하고 다양한 테이블과 열 이름, 클래스, 변수 및 메소드를 기억할 수 있어야합니다. 이것은 당신이 그들과 함께 일할 때 시간이 지날 것입니다. 밤새 학습하지는 않지만 가능한 한 작업중인 시스템에 대해 많은 정보를 얻으려고 노력해야합니다. 또한 큰 시스템에서는 모든 것을 암기 할 수있는 방법이 없지만 가능한 한 많이 배우고 기억하지 않을 이유는 없습니다.

항상 모든 것을 살펴보아야하는 것은 생산성에 큰 영향을 미칩니다. 작업을하고 있고 몇 분마다 물건을 멈추고 찾아야하는 경우 집중력이 떨어집니다. 적절한 도구를 사용하여 도움을주고, 가능한 것을 배우고 기억하십시오. 생산성을 크게 향상시킵니다.


1
나는 세부 사항을 기억하는 것에 강력히 동의하지 않습니다. 개념과 기능을 기억해야합니다. 즉, 시스템이 수행 할 수있는 작업을 알고 정확한 방법 / 변수 / 열 이름이 무엇인지 찾는 방법을 알아야합니다.
edA-qa mort-ora-y

1
나는 당신이 모든 것을 알기를 기대하지는 않지만 특정 서브 시스템을 작업하는 사람은 그 서브 시스템을 안팎으로 알고있을 것으로 기대합니다. 나는 그 지식이 당신의 일을 돌보는 것을 고려할 것입니다.
Thomas Owens

3

정확한 수업 명을 암기 할만한 점이 있습니까? 나는 그렇게 생각하지 않습니다.

프로젝트가 클래스 이름에 어떤 종류의 용어를 사용하는지 알기 위해 더 빨리 검색 할 수 있습니까? 명확히.


2

나는 당신이 테이블 이름을 기억해야한다는 것에 동의하지 않지만 추측하기 쉬워야합니다. 추측하기 쉽도록 일관성을 유지하십시오. 이런 식으로, 당신은 스스로에게 "흠 .. foo 테이블이 복수형입니까, 단수형입니까? 기본 키 ID, RID 또는 FooRID입니까?"


2

주요 테이블 이름과 중요한 열 이름을 알지 못하고 데이터베이스를 쿼리 할 수있는 방법을 모르겠습니다 (그러나 모든 것은 아닙니다). 나는 매번 그것을 이해하지 않고서도이 자료를 아는 사람들이 조직에 더 가치있게되고 다른 사람들이 갇힐 때 "가는"사람들이된다는 것을 알고 있습니다.

나는 사람들 이이 물건을 배우기 시작하지 않으면 그것을 깨닫지 않고 쿼리에서 오류를 일으키는 경우가 종종 있습니다. 데이터베이스 구조와 테이블이 서로 어떻게 관련되어 있는지, 그리고 중요한 비즈니스 규칙이 무엇인지 찾아 보지 않기 때문에 코드 검토에서 종종 오류가 발생합니다.

개인적으로 나는 구조를 배우기를 귀찮게하지 않는 사람들이 종종 특정 데이터베이스를 쿼리 할 때 초보자 수준에 머물러 있음을 알게되었습니다. 그들은 또한 해고에서 살아남지 않는 경향이 있습니다. 나는 당신의 상사가 더 많은 관심을 갖도록 당신에게 호의를 베풀고 있다고 생각합니다.


1

강력한 메모리 이상으로 많은 것을 돕는 것은 도메인 기반 디자인이며 테이블 이름 및 클래스 이름과 같은 쉬운 규칙을 따르는 것입니다. 비즈니스 소유자가 요구 사항에 대해 귀하에게 말하면, 그에 의해 사용되는 도메인 특정 용어가 코드에 있어야합니다. 이 경우 코드에서 비즈니스 용어와 이름 간의 매핑을 기억할 필요가 없습니다. 이 습관은 따라 잡는 데 시간이 걸리지 만 비즈니스 소유자와 개발자 간의 번역 오류를 줄임으로써 매우 유용합니다.

이와 함께 프로젝트 기간이 매우 길면 일정 기간 동안 코드 기반에 익숙해지면 무의식적으로 메모리에 도움이됩니다.


실례합니다, 무슨 의미인지 설명해 주 domain driven design시겠습니까?
Anyname Donotcare

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.