개발자 관계

왜 오픈소스는 프로그래머의 프로그래밍 기술을 향상시킬 수 있을까요?

2018-10-03
개발자 관계
ko

저는 수년간 소프트웨어를 작성했습니다. 최근에 저는 오픈소스 기술에 더 많이 관여할수록(헌신하고, 결합하고 등) 제가 작성하는 코드가 더 좋아진다는 것을 깨달았습니다. 이것은 저에게 의문을 불러일으켰습니다: 그 안에 어떤 상관관계나 인과관계가 있을까요?

코드를 읽으면 더 나아질 수 있습니다

저는 프로그래밍 경력 초기에 코드를 더 많이 읽을수록 제 코드가 더 좋아진다는 것을 깨달았습니다. 다른 사람의 코드를 유지 관리해야 할 때, 간단하고 깨끗한 코드가 화려하거나 복잡한 코드보다 거의 항상 낫다는 것을 알게 되었습니다. 주석이 있더라도 마찬가지입니다. 반면에 복잡한 코드를 이해하는 데 충분한 시간을 보내면 종종 새로운 기술을 배울 수 있었습니다. 어느 쪽이든, 저는 향상되었습니다.

이것은 코드 검토가 없는 곳에서 저를 계속해서 노력하게 만들었습니다. 정식으로 “코드 검토”를 수행할 시간이 없을 때, 저는 저장소를 직접 탐색하고 코드를 읽었습니다. 물론 그때는 저는 소규모 팀의 회사 자원에 제한을 받았습니다.

구문을 넘어서

임의의 프로그래밍 언어의 구문을 다루어야 할 때, 그 언어를 최대한 활용하는 방법을 배우는 가장 사소한 순간입니다. 언어의 구문은 종종 매우 정적이며, 실수를 하면 컴파일러가 불평할 것입니다. 더 깊은 수업은 어떤 언어가 어떤 문제를 해결하는 데 가장 적합한지(“적합한 도구로 적합한 작업을”)와 그 언어로 효율적이고 유지 관리 가능한 코드를 작성하는 방법과 관련이 있습니다.

새로운 언어를 배우는 방법은 많습니다: 강좌, 튜토리얼, 멘토, 책 등등. 저는 보통 이러한 옵션을 결합하여 새로운 언어를 배웁니다. 비구문 요소와 관련될 때 이러한 방법들이 종종 매우 유사하다는 것을 알게 되었습니다.

다른 사람의 실제 배포된 코드를 읽으면 더 많은 것을 얻을 수 있습니다. 일반적인 구조화된 학습뿐만 아니라 패턴과 실천 방법을 배워야 합니다. 언어에서 “올바른” 방식이라고 하는 것이 항상 최상의 효과를 내는 방식은 아닙니다. 경계 경우, 일회성 트랜잭션 및 예상치 못한 통합을 경험하게 될 것입니다. 또한 이러한 문제에 대한 해결책을 찾을 것입니다. 좋든 나쁘든, 진지하게 생각한다면 이것이 “권장 사례”가 나오는 곳입니다. 오늘의 패턴은 내일의 안티패턴입니다.

“항상 주석 달기”, “쉼표를 마지막에 넣기”, “x칸 들여쓰기”와 같은 일에 대해 자신만의 생각이 있을 것입니다. 물론 당신은 옳습니다. 저도 언급된 것들과 코딩의 다른 측면에 대해 자신만의 느낌을 가지고 있습니다.

때때로 다른 사람의 코드를 읽을 때 그들이 잘못한 것을 보면 화가 납니다. 하지만 코드 읽기 양이 늘어나면서, 다른 사람의 코드에서는 흔하지만 제 코드에서는 경험하지 못한 상황이 항상 있다는 것을 이해하기 시작했으며, 제 방식이 그렇게 완고할 필요가 없다는 것을 알게 되었습니다. 저는 일부 관점을 바꿨을 뿐만 아니라 더 유연해졌습니다.

오픈소스는 어디에나 있습니다

오픈소스 운동이 발전함에 따라, 읽고 배울 수 있는 코드의 양도 크게 증가했습니다. 예를 들어 Gitlab, GitHub, BitBucket과 같은 웹사이트는 완전한 기능을 갖춘 애플리케이션에 액세스할 수 있게 해주며, 코드를 읽을 수 있을 뿐만 아니라 가지고 놀 수도 있습니다. 제가 배우고 싶은 것 중 오픈소스 코드에서 얻을 수 없는 것은 거의 없습니다.

이전에는 새로운 프로그래밍 언어를 배울 때 디렉토리 구조와 명명 규칙과 같은 간단한 것에 중점을 두었습니다. 하지만 이제는 다양한 오픈소스 프로젝트를 찾아서 일반적인 방법을 조립하기 시작합니다. 이전에 그런 종류의 것들을 거의 강조하지 않습니다.

사용 가능한 코드는 너무 많지만 품질은 천차만별입니다. 배우고 싶을 때 종종 어떤 것이 좋고 나쁜지 알 수 없습니다. 그냥 코드를 계속 읽으세요. 점차 구별하는 방법을 배우게 될 것입니다. “나쁜” 코드를 읽으면 왜 그것이 “나쁜”지 이해하는 데 도움이 됩니다. 핵심은 올바르다고 생각하는 것을 시도하는 것을 두려워하지 않고, 잘못된 길로 갔을 때 실수를 인정하고 문제를 수정한 다음 계속 나아가는 것입니다.

나쁜 코드는 나쁜 것, 그렇죠?

누군가는 “나쁜 코드가 좋은 코드보다 더 많고 더 분명하다”고 말할 것입니다. sub-reddit은 나쁜 코드에 전념합니다.

수년간 저는 많은 좋은 코드와 나쁜 코드를 작성했습니다. 이전에 작성한 코드를 볼 때, 첫 번째 생각은 내가 어떻게 이런 쓰레기 코드를 작성했는지입니다. 이것은 실제로 제가 아직 배우고 있다는 것을 의미합니다. 이전 코드를 보고 매우 훌륭해 보인다고 생각한다면, 저는 향상되지 않은 것입니다.

그렇다면, 우리는 어떻게 나쁜 코드에서 배울 수 있을까요?

나쁜 코드를 더 많이 읽을수록, 나쁜 코드를 발견하는 데 더 능숙해집니다

배우고 예제를 검색할 때, 작동하지 않는 많은 코드를 발견하고 사용하게 될 것입니다. 귀하의 상황에 맞지 않는다고 해서 그것이 나쁜 코드라는 것을 의미하지 않는다는 것을 기억하세요. 그것을 작동하게 만드는 방법을 배우면 더 나아질 수 있습니다.

어떻게 그것이 나쁜 코드인지 알 수 있을까요?

사람들은 비판을 좋아합니다. 댓글을 읽고, 많은 “WTF(이게 뭐야)”를 본다면, 아마도 당신이 본 것이 나쁜 코드일 수 있습니다. 왜 나쁜지 지적해 보세요. “이 코드 정말 엉망이네”라는 댓글만 남기지 마세요. 나쁜 코드의 모든 요구 사항을 아는 척하지 마세요. 그것이 그렇게 작성된 정당한 이유가 항상 있다는 것을 알아야 합니다. 왜 나쁜 코드인지 알고 있다면, 건설적인 댓글을 남기세요. 또는…

좋은 코드로 만드세요

코드를 더 좋게 만들 수 있는 pull 요청을 넣으세요. 구문 수정, 더 나은 방법 사용, 주석 추가 또는 들여쓰기 수정: 이 모든 것이 코드를 개선하는 훌륭한 방법입니다. 코드 변경을 권장하는 이유에 대한 설명을 추가하세요.

저는 다른 사람이 배우는 것을 도울 때 더 많이 배운다는 것을 발견했습니다. 새로운 주제를 이해했다고 생각하면, 누군가를 찾아 설명하려고 시도합니다. 이것은 더 깊이 이해하고 기억하게 하며, 제가 나쁜 코드를 작성했는지 빠르게 발견하게 합니다.

보답

오픈소스는 참여할 때 가장 잘 작동한다는 것을 기억하세요. 코드 변경은 대부분의 프로젝트에서 환영하지만, 힘을 실어줄 방법은 많습니다.

오픈소스 코드 테스트 및 파일 오류 보고; 문서 세트 완성 돕기; 튜토리얼 및 방법 예제 작성; 대화 참여 - 또는 단순히 전파 돕기. 모든 것이 변화를 가져올 수 있으며, 더 많은 사람이 참여할수록 좋습니다!

리소스

시작하는 데 도움이 되는 몇 가지 링크가 있습니다. 일부는 제가 사용했고, 일부는 아직 깊이 살펴보지 못했습니다. 유용한 것을 발견하거나 이 글에서 수정이 필요한 것이 있으면, 주저하지 말고 우리와 공유해 주세요.

출처 명시:개발자 관계 »


Similar Posts

Content icon
Content