저는 12 살 때부터 (강박 적으로) 프로그래밍을 해왔습니다. 어셈블리, C ++, Javascript, Haskell, Lisp 및 Qi에 이르기까지 다양한 언어에 대해 상당히 잘 알고 있습니다. 그러나 내 모든 프로젝트는 저 혼자였습니다.
CS 또는 컴퓨터 공학이 아닌 화학 공학 학위를 받았지만 이번 가을에 처음으로 다른 사람들과 함께 대규모 프로그래밍 프로젝트를 진행할 것이며 준비 방법에 대한 실마리는 없습니다. 나는 평생 동안 Windows를 사용했지만이 프로젝트는 매우 유닉스 일 것이므로 최근 환경에 익숙해지기 위해 Mac을 구입했습니다.
나는 지난해 CS 친구들과 함께 친구들과 함께 해커 톤에 참여하게되어 매우 기뻤습니다. 그러나 나는 그들과 함께 일하면서 그들의 작업 흐름이 나의 것과는 매우 다르다는 것을 깨달았습니다. 그들은 버전 관리를 위해 Git을 사용했습니다. 나는 당시에 그것을 사용한 적이 없었지만, 그 이후로 내가 할 수있는 모든 것을 배웠습니다. 또한 많은 프레임 워크와 라이브러리를 사용했습니다. 나는 Rails가 해커 톤을 위해 밤새도록 무엇을 배웠는지 알아야했다 (반면, 어휘 범위 또는 클로저가 무엇인지 몰랐다). 우리의 모든 코드는 잘 작동했지만 그들은 내 것을 이해하지 못했고 나는 그들의 코드를 이해하지 못했습니다.
실제 프로그래머가 매일 단위 테스트, 코드 검토를 수행하는 것에 대한 언급을 들었지만 이것이 무엇인지 모호합니다. 나는 보통 내 작은 프로젝트에 많은 버그가 없으므로 버그 추적 시스템이나 테스트가 필요하지 않았습니다.
마지막으로 다른 사람들의 코드를 이해하는 데 시간이 오래 걸린다는 것입니다. 변수 이름 지정 규칙 (새 언어마다 다름)이 어렵고 (__mzkwpSomRidicAbbrev) 느슨한 결합이 어렵다는 것을 알았습니다. 그것은 내가 느슨하게 커플 링하지 않는다는 것을 말하는 것은 아닙니다. 저는 제 자신의 작업에 상당히 능숙하다고 생각하지만 Linux 커널이나 Chromium 소스 코드와 같은 것을 다운로드하여 볼 때 몇 시간을 소비합니다. 이 이상한 이름의 디렉토리와 파일이 모두 어떻게 연결되는지 알아 내기 바퀴를 재발 명하는 것은 프로그래밍 죄이지만, 종종 라이브러리를 해부하는 데 시간을 소비하는 것보다 기능을 직접 작성하는 것이 더 빠릅니다.
분명히, 생계를 위해 이것을하는 사람들에게는 이러한 문제가 없으며, 나는 그 시점에 스스로 도달해야합니다.
질문 : 다른 사람과 "통합"하기 위해 취할 수있는 몇 가지 단계는 무엇입니까?
감사!