paint-brush
프로그래밍 멘토로서 ChatGPT를 사용하여 배운 것~에 의해@zawistowski
5,165 판독값
5,165 판독값

프로그래밍 멘토로서 ChatGPT를 사용하여 배운 것

~에 의해 Wojciech Zawistowski22m2023/05/08
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

숙련된 멘토만큼 성장을 가속화하는 것은 없습니다. ChatGPT가 합리적인 대안이 될 수 있나요? 저는 20년 이상의 경험을 가진 개발자이고 이를 테스트해 보았습니다.
featured image - 프로그래밍 멘토로서 ChatGPT를 사용하여 배운 것
Wojciech Zawistowski HackerNoon profile picture
0-item
1-item

경험 많은 멘토만큼 당신의 성장을 가속화할 수 있는 것은 없습니다. 그러나 이를 찾는 것이 어려울 수 있으며 가용성이 제한되는 경우가 많습니다.


반면 ChatGPT 와 같은 AI 에이전트는 연중무휴 24시간 이용 가능하며 지식도 상당히 풍부한 것 같습니다. 그러한 대리인이 실제 인간 멘토를 대신할 수 있는 합리적인 역할을 할 수 있습니까?


제가 특히 관심을 갖는 것은 단순히 코드를 생성하거나 설명하는 것이 아니라 광범위한 경험을 통해서만 얻을 수 있는 작은 팁과 요령인 "메타" 조언입니다. 개발자로서 성장하고 성숙하는 데 도움이 됩니다 .


20년 이상의 경험을 갖고 여러 주니어 개발자를 멘토링한 사람으로서 ChatGPT의 조언이 초보자에게 얼마나 건전하고 포괄적이며 실행 가능한지 궁금합니다.


빠른 테스트 드라이브를 위해 가져가겠습니다!

TL;DR.

ChatGPT 조언의 품질이 궁금하지만 전체 토론과 자세한 단계별 설명을 살펴보고 싶지 않다면 마지막 섹션으로 바로 이동하세요.

짧은 전설.

💬 내 메시지.


🤖 ChatGPT가 답변합니다.


🤔 내 생각/댓글.

설정.

💬 10년 이상의 경험을 갖춘 노련한 전문 소프트웨어 개발자로 활동하세요. 당신이 경력이 2~3년 미만인 젊은 후배 동료를 멘토링하고 있다고 상상해 보십시오. 프로그래밍 및 소프트웨어 개발 경력과 관련된 다양한 질문을 드리겠습니다. 나는 이 젊은 개발자로서 그들에게 물어볼 것입니다. 내가 더 나은 개발자가 되고 전문적으로 성장하는 데 가장 도움이 되는 방식으로 답변해 주세요.


🤖 물론이죠. 제가 도와드리러 왔습니다! 프로그래밍이나 소프트웨어 개발 경력에 대해 궁금하신 점은 언제든지 문의해 주세요. 제 경험을 바탕으로 최선을 다해 안내해 드리겠습니다.


🤔 지금까지는 너무 좋았습니다. 시작하자!


"백만 달러" 질문: 더 나은 개발자가 되기 위한 10가지 생활 꿀팁

💬 빠르고 쉽게 구현하고 즉시 더 나은 개발자가 되는 데 도움이 될 10가지 생활 꿀팁을 공유해 주세요.


🤖 물론이죠! 개발자로서의 기술을 향상시키기 위해 빠르게 구현할 수 있는 10가지 생활 꿀팁은 다음과 같습니다.


  1. 키보드 단축키 사용 : IDE 또는 편집기별 키보드 단축키를 배우고 사용하여 코드를 더 빠르게 탐색하고 조작할 수 있습니다. 시간을 절약하고 생산성을 높일 수 있습니다.


  2. 포모도로 기법 따르기 : 작업을 관리 가능한 작은 간격(보통 25분)으로 나누고 짧은 휴식을 취하세요. 이 기술은 집중력을 유지하고 일관된 작업 리듬을 유지하는 데 도움이 될 수 있습니다.


  3. 마스터 버전 제어 : Git 또는 다른 버전 제어 시스템에 익숙해집니다. 이를 통해 코드 변경 사항을 추적하고, 다른 사람과 공동 작업하고, 필요할 때 이전 버전으로 되돌릴 수 있습니다.


  4. 반복 작업 자동화 : 스크립트나 도구를 사용하여 코드 서식 지정, 파일 이름 바꾸기, 프로젝트 스캐폴딩과 같은 일상적인 작업을 자동화합니다. 이렇게 하면 시간이 절약되고 인적 오류가 발생할 가능성이 줄어듭니다.


  5. 깔끔한 코드를 읽고 작성하세요 . 읽고 이해하기 쉬운 깔끔한 코딩 스타일을 채택하세요. 명명 규칙, 들여쓰기 및 코드 구조에 대한 모범 사례를 따르십시오. 이렇게 하면 코드를 더욱 유지 관리하기 쉽게 만들고 디버깅에 소요되는 시간을 줄일 수 있습니다.


  6. 코드에 주석 달기 : 코드의 목적과 기능을 설명하는 의미 있는 주석을 작성합니다. 이렇게 하면 다른 사람들이 귀하의 코드를 더 쉽게 이해할 수 있고 나중에 코드를 다시 방문할 때 귀하의 사고 과정을 기억할 수 있습니다.


  7. 코드 검토 요청 : 동료나 멘토에게 정기적으로 코드를 검토하도록 요청하세요. 이는 개선이 필요한 영역을 식별하고 그들의 전문 지식으로부터 배우는 데 도움이 될 것입니다.


  8. 호기심을 유지하세요 . 새로운 언어, 프레임워크, 도구를 끊임없이 탐색하세요. 이를 통해 최신 업계 동향을 파악하고 기술 범위를 넓힐 수 있습니다.


  9. 문제를 더 작은 조각으로 나누기 : 복잡한 문제에 직면했을 때 문제를 더 작고 관리하기 쉬운 작업으로 나눕니다. 이렇게 하면 집중력을 유지하고 압도당하는 것을 방지하는 데 도움이 됩니다.


  10. 자신을 돌보십시오 : 신체적, 정신적 안녕을 우선시하십시오. 규칙적으로 운동하고, 충분한 수면을 취하고, 필요할 때 휴식을 취하십시오. 건강한 정신과 신체는 업무에 더 생산적이고 집중하는 데 도움이 됩니다.


더 나은 개발자가 되는 것은 지속적인 과정이며 시간과 헌신이 필요하다는 점을 기억하십시오. 하지만 이러한 생활 꿀팁을 구현하면 성장을 가속화하고 지속적으로 기술을 향상시킬 수 있습니다.


🤔 목록은 대부분 견고해 보이지만 다소 무작위적이고 특별히 획기적인 것은 아닙니다. 하지만 ChatGPT에 초보자 조언을 요청했으므로 상대적으로 명확한 답변은 이해할 수 있습니다.


이러한 팁 중 일부는 구현하기가 그렇게 빠르고 쉽지 않은 것 같습니다(내 메시지의 일부였습니다). 다른 몇 가지는 약간 모호하고 추가 설명이 필요하지만 ChatGPT는 반복적으로 사용되도록 설계되어 후속 질문을 통해 더 깊이 파고들기 때문에 괜찮을 것 같습니다. 제가 완전히 동의하지 않는 몇 가지 사항이 있지만, 저는 그것들이 틀렸다기보다는 의견의 문제라고 봅니다. 전반적으로 나쁘지 않습니다!


각 제안에 대해 좀 더 자세히 살펴보겠습니다.


  1. 키보드 단축키 사용 : 확실한 조언입니다. 빠르고 쉽게 구현할 수 있으며 의심할 여지 없이 생산성이 향상됩니다. 나를 놀라게 하는 것 중 하나는 왜 간단한 키보드 단축키만 사용하는가 하는 것입니다. 코드 인텔리전스, 스니펫, 자동 포맷터, 코드 생성기 및 GitHub Copilot(또는 ChatGPT 자체)과 같은 AI 도우미와 같은 고급 기능을 활용하는 것도 마찬가지로 사용하기 쉽고 훨씬 더 큰 향상을 제공할 것입니다.


  1. Pomodoro 기술을 따르십시오 . 좋은 조언입니다. 꼭 시도해 보세요. 이전에 Pomodoro에 대해 들어본 적이 없다면 Google에서 검색하거나 ChatGPT에 후속 질문을 물어봐야 할 수도 있지만 그렇지 않으면 매우 간단하고 설명이 필요합니다.


  1. 마스터 버전 관리 : 좋은 조언이지만 확실히 인생 꿀팁은 아닙니다. "마스터"라는 단어조차도 빠르고 쉬운 해결 방법이 아님을 분명히 보여줍니다. 또한 버전 제어는 생산성을 향상시키기 위한 "해킹"이 아니라 프로그래밍 언어, 기본 프레임워크 또는 데이터베이스와 유사하게 기본 기술 스택의 필수적인 부분이라고 주장하고 싶습니다. 그러나 그렇지 않으면 조언이 정확합니다.


  1. 반복적인 작업 자동화 : 확실한 조언이지만 다시 한 번 더 탐구가 필요합니다. 즉시 구현하기에는 너무 높은 수준입니다.


  1. 깨끗한 코드를 읽고 작성하기 : 깨끗한 코드(또는 일반적인 코드)를 많이 읽는 것은 환상적인 조언이며 구현하기 쉽습니다. 유일한 까다로운 부분은 초보자로서 어떤 코드가 깨끗하고 어디서 찾을 수 있는지 아는 방법입니다. 이를 위해서는 다시 더 깊은 조사가 필요합니다. 그러나 깨끗한 코드를 작성하는 것은 완전히 다른 문제입니다. 이는 평생 동안 숙달된 기술의 일부이며 전체 책이 해당 주제에 대해 작성되었습니다. 반드시 공부해야 하지만 버전 관리를 마스터하는 것과 마찬가지로 인생 꿀팁과는 거리가 멀습니다.


  1. 코드에 주석 달기 : 이것은 제가 논쟁의 여지가 있다고 생각하는 첫 번째 팁입니다(앞서 말했듯이 분명히 틀렸기 때문이 아니라 개인적인 선호 때문입니다). 주석에 대해서는 두 가지 입장이 있습니다. 크게 주석을 다는 것과 설명이 필요 없을 정도로 코드를 작성하는 것입니다(코드 이면의 비즈니스 목적을 설명할 필요가 없는 한). 나는 두 번째 진영에 강력하게 속해 있기 때문에 ChatGPT의 매우 권위 있는 "댓글 쓰기"는 나에게 공감하지 않습니다. 다른 한편으로는 의미 있는 주석을 작성하고 코드의 목적을 설명하라는 내용도 있는데, 이는 저도 매우 동의합니다. 그러나 그것은 또한 코드의 기능을 설명하는 것이기도 합니다. 나는 이것이 나쁜 습관이자 시간 낭비라고 생각합니다. 그래서 저는 이것에 대해 엇갈린 감정을 가지고 있습니다.


  1. 코드 리뷰를 찾아보세요 . 이 조언은 최대한 확실하고 쉽게 적용할 수 있습니다. 특히 초보자라면 가능한 한 코드 리뷰를 꼭 구해야 합니다.


  1. 호기심을 가지세요 : 이것은 제가 다소 논쟁의 여지가 있다고 생각하는 두 번째 조언입니다. 새로운 언어, 프레임워크 및 도구를 탐색하는 것은 전반적으로 좋은 조언입니다("지속적으로"에 대해 논쟁하고 싶지만, 이는 전문 용어 중심의 개발 냄새가 납니다). 그러나 경력이 1~2년밖에 되지 않은 초보자에게는 최선의 전략이 아닐 수도 있습니다. 경험. 후배로서 모범 사례와 원칙의 탄탄한 기반을 구축하고 심층적으로 학습하는 데 더 집중해야 합니다. 이는 한동안 단일 스택을 마스터하는 데 집중할 때 더 쉽습니다. 하지만 솔직히 말해서 나는 여기서 빈정거릴 뿐이며 이 조언이 틀렸다고는 생각하지 않습니다.


  1. 문제를 작은 조각으로 나누세요 . 확실한 조언이지만 다시 말씀드리지만 너무 수준이 높습니다. 문제를 효과적으로 분석하는 것은 결코 쉬운 일이 아닙니다. 실제로 이를 실제로 구현하려면 몇 가지 추가 드릴다운이 필요합니다.


  1. 자신을 돌보세요 : 매우 훌륭하고 적용 가능한 조언입니다. ChatGPT에 하드 기술 기술과 직접적인 관련이 없는 이와 같은 조언이 포함되어 있다는 것은 실제로 좋은 일입니다.


좋습니다. 모든 팁을 살펴보았습니다. 나쁘지 않아요, 전혀 나쁘지 않아요. 그러나 이들 모두가 즉시 적용되는 것은 아닙니다. 핵심에 얼마나 가까이 다가갈 수 있는지 알아보기 위해 몇 가지를 자세히 살펴보겠습니다.

키보드 단축키 - 더 자세히 알아보세요.

💬 '단축키 사용' 팁을 좀 더 자세히 살펴보겠습니다. 가능한 모든 단축키를 배워야 하는지, 아니면 집중해야 할 특정 단축키 카테고리가 있는지 좀 더 자세히 설명해 주시겠어요?


🤖 물론이죠! 키보드 단축키와 관련하여 핵심은 생산성과 효율성에 가장 큰 영향을 미치는 단축키를 배우는 데 집중하는 것입니다. 사용 가능한 모든 단축키를 배울 필요는 없지만, 시간을 가장 많이 절약하고 작업 흐름을 간소화하는 데 도움이 되는 단축키의 우선순위를 지정하세요.


다음은 집중해야 할 몇 가지 키보드 단축키 범주입니다.


  1. 탐색 단축키 : 이 단축키를 사용하면 코드를 빠르게 탐색하고, 파일이나 탭 사이를 이동하고, 특정 기호나 키워드 인스턴스를 찾을 수 있습니다. 예에는 "정의로 이동", "행으로 이동" 및 "모든 참조 찾기"가 포함됩니다.


  2. 단축키 편집 : 이 단축키는 텍스트 잘라내기, 복사, 붙여넣기 및 서식 지정을 통해 코드를 조작하는 데 도움이 됩니다. 예에는 "줄 복제", "줄 위/아래로 이동" 및 "설명 전환"이 포함됩니다.


  3. 리팩토링 단축키 : 리팩토링은 깨끗하고 효율적인 코드를 유지하는 데 필수적인 부분입니다. 코드를 빠르게 리팩터링하는 데 도움이 되는 단축키를 사용하면 많은 시간을 절약할 수 있습니다. 예를 들면 "기호 이름 바꾸기", "추출 방법" 및 "서명 변경"이 있습니다.


  4. 디버깅 단축키 : 디버깅은 개발 프로세스에서 중요한 부분입니다. 중단점을 관리하고, 코드를 단계별로 실행하고, 변수를 검사하는 데 도움이 되는 바로 가기를 사용하면 디버깅 세션을 간소화할 수 있습니다. 예를 들면 '중단점 전환', 'Step Over', 'Step Into' 등이 있습니다.


  5. IDE 관련 단축키 : IDE 또는 코드 편집기에는 단축키를 통해 액세스할 수 있는 고유한 기능이나 도구가 있을 수 있습니다. 선택한 개발 환경을 최대한 활용하려면 이러한 단축키를 숙지하세요.


이러한 바로 가기의 실제 키 조합은 사용 중인 IDE 또는 코드 편집기에 따라 다를 수 있습니다. 이러한 단축키를 찾아 원하는 대로 사용자 정의하려면 편집기의 문서나 설정을 참조하세요.


지름길을 배울 때 한 번에 몇 가지에 집중하는 것부터 시작하세요. 익숙해지면 점차적으로 일상 작업 흐름에 더 많은 단축키를 추가하세요. 시간이 지남에 따라 이러한 단축키를 사용하는 것이 자연스럽게 익숙해지며 생산성과 효율성이 크게 향상되는 것을 느낄 수 있습니다.


🤔 정말 훌륭한 분류네요! 나는 감동. 카테고리별로 구체적인 예시도 마음에 듭니다. 이 수준의 조언은 이미 실행 가능합니다. IDE 문서에서 "탐색 바로 가기" 또는 "정의로 이동"을 쉽게 찾을 수 있습니다. 게다가 카테고리도 잘 선택되어 있습니다. 이는 진정으로 귀하의 생산성을 크게 향상시켜 줄 것입니다.


아직 부족한 것이 하나 있습니다. 바로 자동 완성이나 코드 조각과 같은 보다 실질적인 생산성 향상 기능입니다. 나는 그것들이 존재하는지 모른 척하고 있기 때문에 그것들에 대해 명시적으로 묻고 싶지 않습니다. 그러나 규칙을 약간 변형해 보겠습니다.


💬 "코드를 더 빠르게 탐색하고 조작하기 위해", "핵심은 생산성과 효율성에 가장 큰 영향을 줄 수 있는 것을 배우는 데 집중하는 것", "할 수 있는 것의 우선순위를 정하는 것"이라는 지름길을 배워야 한다고 말씀하셨습니다. 시간을 최대한 절약하고 작업 흐름을 간소화하는 데 도움이 됩니다." 키보드 단축키 외에 이러한 목표를 달성하는 데 도움이 될 수 있는 다른 도구나 IDE 기능이 있습니까?


🤖 물론이죠! 키보드 단축키 외에도 생산성과 효율성을 높이는 데 도움이 되는 다른 도구와 IDE 기능이 많이 있습니다. 그 중 일부는 다음과 같습니다.


  1. 코드 조각 및 템플릿 : 많은 IDE 및 편집기는 몇 번의 키 입력만으로 일반적으로 사용되는 코드 구조 또는 상용구 코드를 생성할 수 있는 코드 조각 또는 템플릿을 지원합니다. 이를 통해 시간을 절약하고 코드의 일관성을 유지하는 데 도움이 됩니다.


  2. 자동 완성 및 IntelliSense : 최신 IDE 및 코드 편집기는 현재 컨텍스트를 기반으로 변수, 메서드 또는 키워드에 대한 완성을 제안하는 지능형 코드 완성 기능을 제공하는 경우가 많습니다. 이렇게 하면 코딩 프로세스 속도가 빨라지고 오타나 구문 오류가 발생할 가능성이 줄어듭니다.


  3. 통합 디버깅 : IDE에 통합된 디버깅 도구를 사용하면 개발 환경을 벗어나지 않고도 중단점을 설정하고, 코드를 단계별로 실행하고, 변수를 검사할 수 있습니다. 이 원활한 디버깅 환경을 통해 문제를 보다 효율적으로 찾고 해결하는 데 도움이 됩니다.


  4. 버전 제어 통합 : 많은 IDE는 Git과 같은 버전 제어 시스템에 대한 기본 지원을 제공합니다. 이러한 통합을 통해 IDE 내에서 변경 사항 커밋, 브랜치 생성, 충돌 해결 등 일반적인 버전 제어 작업을 단순화할 수 있습니다.


  5. 코드 분석 및 린팅 : 실시간 코드 분석 및 린팅 도구는 코드를 작성할 때 구문 오류, 사용되지 않는 변수 또는 코드 스타일 위반과 같은 잠재적인 문제를 식별하는 데 도움이 될 수 있습니다. 이렇게 하면 디버깅 시간을 절약하고 코드가 모범 사례를 준수하는지 확인할 수 있습니다.


  6. 리팩토링 도구 : 일부 IDE에는 메서드 추출, 변수 이름 바꾸기, 메서드 서명 변경 등 코드를 자동으로 리팩터링할 수 있는 도구가 내장되어 있습니다. 이러한 도구를 사용하면 수동 작업 없이도 깔끔하고 효율적인 코드를 유지할 수 있습니다.


  7. 작업 및 프로젝트 관리 : 많은 IDE 및 편집기에는 작업을 관리하고, 할 일 목록을 만들고, 프로젝트 내 진행 상황을 추적할 수 있는 기능이 있습니다. 이렇게 하면 업무를 체계적으로 정리하고 작업 우선순위를 보다 효과적으로 정하는 데 도움이 됩니다.


  8. 사용자 정의 : 대부분의 IDE 및 편집기는 테마, 플러그인 및 구성 옵션을 포함하여 높은 수준의 사용자 정의를 제공합니다. 개발 환경을 원하는 대로 조정하면 보다 편안하고 효율적으로 작업하는 데 도움이 될 수 있습니다.


  9. 통합 터미널 : IDE 내에 통합 터미널이 있으면 창을 전환하지 않고도 명령을 실행하고, 프로젝트를 빌드하고, 버전 제어와 상호 작용할 수 있으므로 시간을 절약할 수 있습니다.


이러한 도구와 기능은 코딩 경험을 크게 향상시켜 효율성과 생산성을 높여줍니다. 시간을 내어 IDE 또는 코드 편집기의 기능을 살펴보고 작업 흐름을 향상할 수 있는 새로운 도구나 플러그인을 주저하지 말고 사용해 보십시오.


🤔 이제 얘기하는 중이에요! 목록이 완전히 포괄적이지는 않지만(예를 들어 코드 자동 포맷터가 누락되고 놀랍게도 여전히 AI 보조자가 누락되어 있습니다. ChatGPT가 자체 기능을 인식하지 못합니까? 아니면 너무 겸손한가요?) 초보 개발자에게 정말 유용할 것입니다. 또한 이제 최신 개발자 도구의 풍부함을 알게 되었으므로 점차적으로 더 깊이 파고들 수 있습니다.

버전 관리 - 보다 실행 가능하고 간단한 팁을 알아보세요.

💬 알려주신 팁 중 하나가 '마스터 버전 관리'였습니다. 하지만 정말 빠르고 쉬운 인생 꿀팁일까요? 버전 관리를 완전히 익히는 것은 긴 과정처럼 보입니다. 즉시 구현할 수 있는 버전 제어 관련 빠른 팁이 있습니까?


🤖 버전 제어를 마스터하는 데 시간이 더 걸릴 수 있다는 점은 맞습니다. 하지만 Git과 같은 버전 제어 시스템을 보다 효과적으로 사용하기 위해 즉시 구현할 수 있는 몇 가지 빠른 팁과 모범 사례가 있습니다. 다음은 몇 가지입니다:


  1. 자주 작은 단위로 커밋 : 단일 논리적 변경 사항을 포함하는 작고 집중된 커밋을 만듭니다. 이를 통해 프로젝트 기록을 더 쉽게 이해하고, 문제를 찾고, 필요한 경우 변경 사항을 되돌릴 수 있습니다.


  2. 설명이 포함된 커밋 메시지 작성 : 변경 사항을 커밋할 때 변경 내용과 목적을 설명하는 명확하고 간결한 커밋 메시지를 작성하세요. 이를 통해 귀하와 귀하의 팀은 프로젝트 기록을 이해하고 나중에 특정 변경 사항을 더 쉽게 찾을 수 있습니다.


  3. 브랜치 사용 : 새로운 기능, 버그 수정 또는 실험을 위해 브랜치를 만듭니다. 이를 통해 메인 브랜치를 안정적으로 유지하고 메인 코드베이스에 영향을 주지 않고 여러 작업을 병렬로 작업할 수 있습니다.


  4. 정기적으로 병합 : 기본 분기의 변경 사항을 기능 분기에 정기적으로 병합하여 최신 상태를 유지하고 변경 사항을 통합할 때 병합 충돌을 최소화합니다.


  5. 푸시하기 전에 풀기 : 변경 사항을 원격 저장소에 푸시하기 전에 항상 원격 저장소에서 최신 변경 사항을 가져와 로컬 저장소가 최신 상태인지 확인하세요. 이를 통해 충돌을 방지하고 보다 원활한 공동 작업 환경을 보장할 수 있습니다.


  6. Embrace .gitignore : .gitignore 파일을 사용하여 임시 파일, 빌드 아티팩트 또는 IDE 관련 파일과 같이 추적할 필요가 없는 파일을 제외합니다. 이렇게 하면 저장소를 깔끔하게 유지하고 필수 코드에 집중할 수 있습니다.


이러한 빠른 팁은 버전 제어 시스템을 보다 효과적으로 사용하고 작업 흐름을 간소화하는 데 도움이 될 수 있습니다. 하루아침에 버전 제어 마스터가 될 수는 없지만 계속해서 기술을 배우고 개선하면서 구축할 수 있는 견고한 기반이 될 수 있습니다.


🤔 꽤 매끄러워요. 이러한 팁이 완전한 버전 제어 숙달로 이어지지는 않지만 이제 더 실행 가능해졌으며 전반적으로 초보자를 위한 조언이라는 점을 고려하면 꽤 괜찮습니다.


"분기 사용"과 같은 일부 사항은 약간 모호합니다. 버전 제어 분기 전략은 광범위하고 복잡한 주제이며 이 특정 사항은 추가 탐색 없이는 실행 가능하지 않습니다. 그러나 이는 단일 이상치이며 최소한 더 심층적인 연구를 위한 명확한 시작점을 제공합니다.


전반적으로 나쁘지 않습니다!

깔끔한 코드 읽기 - 모호함 해소

💬 '클린 코드 읽기' 팁을 주셨는데요. 하지만 초보자로서 어떤 코드가 깨끗한지 어떻게 알 수 있나요? 그것을 인식하는 방법? 그리고 읽을 코드를 어디서 찾을 수 있습니까?


🤖 초보자로서 언뜻 보기에 깨끗한 코드를 인식하는 것이 어려울 수 있습니다. 그러나 잘 작성된 코드를 연습하고 접해 보면 깨끗한 코드가 무엇인지 이해하게 될 것입니다. 클린 코드의 일반적인 지침과 특징은 다음과 같습니다.


  1. 가독성 : 깔끔한 코드는 읽고 이해하기 쉽습니다. 명확한 구조, 의미 있는 변수 및 함수 이름, 적절한 들여쓰기가 있습니다. 또한 일관된 명명 규칙과 스타일 지침을 따릅니다.


  2. 모듈성 : 깔끔한 코드는 단일 작업을 수행하는 작고 집중된 함수 또는 메서드로 구성됩니다. 각 모듈에는 단일 책임이 있어야 하며 코드는 논리적 구성 요소로 나누어져야 합니다.


  3. 유지 관리성 : 깔끔한 코드는 수정, 확장, 리팩터링이 쉽습니다. 코드 중복을 방지하고(DRY 원칙) 모범 사례를 따라 변경 시 버그가 발생할 가능성을 최소화합니다.


  4. 문서화 및 주석 : 클린 코드는 코드의 목적과 기능을 설명하는 주석으로 잘 문서화되어 있습니다. 주석은 간결해야 하며 코드 자체를 읽으면 즉시 알 수 없는 정보만 제공해야 합니다.


  5. 효율성 : 클린 코드는 성능 및 리소스 사용 측면에서 효율적입니다. 불필요한 복잡성을 피하고 사용된 알고리즘과 데이터 구조가 당면한 문제에 매우 적합합니다.


읽고 배울 수 있는 깨끗한 코드를 찾으려면 다음 소스를 고려하세요.


  1. 인기 있는 오픈 소스 프로젝트 : GitHub와 같은 플랫폼의 많은 인기 오픈 소스 프로젝트에는 여러 기여자가 검토하고 개선한 고품질 코드가 있습니다. 작업 중인 언어 또는 프레임워크의 프로젝트를 탐색하여 깨끗한 코드의 예를 찾으세요.


  2. 코딩 모범 사례 : 작업 중인 프로그래밍 언어에 대한 코딩 모범 사례에 대한 기사, 책 또는 강좌를 찾아보세요. 이러한 리소스는 깔끔한 코드의 예와 코드 작성 방법에 대한 지침을 제공하는 경우가 많습니다.


  3. 코드 검토 : 팀 내에서 코드 검토에 참여하거나 숙련된 개발자 또는 멘토로부터 피드백을 구하세요. 그들의 피드백과 제안을 관찰하면 깨끗한 코드를 인식하고 자신의 코딩 스타일을 개선하는 방법을 배우는 데 도움이 될 수 있습니다.


  4. 코딩 과제 : LeetCode, HackerRank 또는 Codewars와 같은 웹사이트에서는 다른 사용자가 제출한 솔루션과 함께 코딩 과제를 제공합니다. 이러한 솔루션을 검토하면 문제 해결에 대한 다양한 접근 방식을 배우고 깔끔한 코드 예제를 접하는 데 도움이 될 수 있습니다.


깨끗한 코드를 인식하고 작성하는 것은 시간이 지남에 따라 발전하는 기술이라는 것을 기억하십시오. 더 많은 코드를 읽고 작성할수록 깨끗한 코드를 식별하고 자신의 작업에 모범 사례를 채택하는 데 더욱 능숙해질 것입니다.


🤔 이번에는 기껏해야 결과가 엉망이네요.


답변의 첫 번째 부분은 본질적으로 클린 코드라는 매우 높은 수준의 모호한 원칙을 준수한다는 사실로 클린 코드를 인식할 수 있다고 명시합니다(주석 및 효율성과 같은 일부 원칙은 심지어 논쟁의 여지가 있습니다. 예를 들어 다음과 같습니다. 코드는 정말 깨끗하고 읽기 쉬우려면 효율적이어야 합니까?).


두 번째 부분도 히트 또는 미스입니다. 코드 검토에 참여하는 것은 좋은 조언입니다(비록 코드 검토를 받아야 할 뿐만 아니라 더 많은 고위 개발자의 코드에서 배우기 위해 스스로 가능한 한 많은 검토를 수행해야 한다는 점이 더 강조될 수 있음). 코딩 모범 사례에 대한 책과 기사를 읽는 것은 건전한 조언이지만 오히려 분명하고 많은 가치를 추가하지 않습니다. 오픈 소스 프로젝트와 코딩 챌린지 웹 사이트에서 배우는 것은 잠재적으로 환상적인 조언이지만 이러한 소스에는 종종 잘못된 코드도 포함되어 있으며 초보자가 어떤 코드를 인식할 수 있는지에 대한 수수께끼를 해결하지 못합니다.


좀 더 자세히 살펴보겠습니다.


💬 읽고 배울 수 있는 깔끔한 코드를 찾으려면 인기 있는 오픈 소스 프로젝트를 보면 된다고 하더군요. 그 중 상당수가 고품질 코드를 갖고 있기 때문입니다. 그러나 많은 오픈 소스 프로젝트에도 품질이 낮은 코드가 있습니다. 어떤 오픈 소스 프로젝트가 고품질이고 어떤 것이 아닌지 어떻게 알 수 있나요?


🤖 모든 오픈 소스 프로젝트에 고품질 코드가 있는 것은 아닙니다. 고품질 오픈 소스 프로젝트를 식별하려면 다음 요소를 고려할 수 있습니다.


  1. 인기 : GitHub와 같은 플랫폼에서 많은 수의 스타, 포크 또는 감시자가 있는 프로젝트는 일반적으로 해당 프로젝트가 커뮤니티에서 좋은 평가를 받고 있음을 나타냅니다. 인기가 코드 품질을 보장하는 것은 아니지만 유용한 지표가 될 수 있습니다.


  2. 활동적인 유지관리자 및 기여자 : 고품질 프로젝트에는 활동적인 유지관리자와 다양한 기여자 그룹이 있는 경향이 있습니다. 정기적인 커밋, 업데이트, 버그 수정 기록이 있는 프로젝트를 찾으세요. 건강한 수의 기여자와 활발한 커뮤니티는 코드베이스가 지속적으로 개선되고 개선되고 있다는 신호일 수 있습니다.


  3. 명확한 문서화 : 잘 문서화된 프로젝트는 잘 관리되고 고품질의 코드베이스가 있다는 표시인 경우가 많습니다. 포괄적인 README 파일, API 문서, 사용 가이드가 포함된 프로젝트를 찾아보세요.


  4. 코드 리뷰 및 토론 : 프로젝트의 풀 리퀘스트 및 이슈 토론을 확인하세요. 건강한 프로젝트에는 철저한 코드 검토, 건설적인 피드백, 개선 사항 및 버그 수정에 대한 활발한 토론이 포함됩니다.


  5. 코딩 표준 준수 : 고품질 프로젝트는 일반적으로 사용하는 프로그래밍 언어 또는 프레임워크에 대한 코딩 표준과 모범 사례를 따릅니다. 일관된 형식, 명명 규칙 및 코드 구성을 찾으십시오.


  6. 자동화된 테스트 : 강력한 자동화 테스트 제품군을 갖춘 프로젝트는 유지관리자가 코드 품질과 소프트웨어가 예상대로 작동하는지 확인하는 데 관심이 있음을 나타냅니다. 높은 테스트 적용 범위와 모든 커밋 또는 풀 요청에 대해 테스트를 실행하는 CI(지속적 통합) 파이프라인을 갖춘 프로젝트를 찾으세요.


  7. 종속성 및 라이선스 : 고품질 프로젝트에는 해당 라이선스와 함께 명확한 종속성 목록이 있어야 합니다. 이는 유지관리자가 프로젝트의 법적, 운영적 측면에 주의를 기울이고 있음을 보여줍니다.


고품질 오픈 소스 프로젝트 검색을 시작하려면 다양한 도메인에서 인기 있고 좋은 평가를 받는 프로젝트를 집계하는 GitHub의 Awesome Lists와 같은 선별된 목록이나 컬렉션을 탐색할 수 있습니다. 업계에서 잘 알려진 평판이 좋은 조직이나 개발자가 유지 관리하는 프로젝트를 확인할 수도 있습니다.


고품질 프로젝트라도 개선할 수 있는 영역이 있을 수 있다는 점을 기억하세요. 더 많은 경험을 쌓으면 클린 코드에 대한 더 나은 이해가 가능해지고 다양한 오픈 소스 프로젝트의 품질을 평가할 수 있는 능력이 더 향상됩니다.


🤔 이 답변은 다시 한 번 괜찮습니다. 프로젝트 인기나 좋은 문서와 같은 요소가 반드시 깨끗한 코드를 보장하는 것은 아니지만, 이들 모두를 결합하면 괜찮은 프록시가 됩니다. 확실한 보장은 없기 때문에 가능한 한 좋은 프록시일 것입니다. 선별된 목록을 살펴보라는 조언은 품질보다는 인기를 나타내는 지표이지만 합리적인 출발점을 제공합니다. 예를 들어 GitHub 검색은 인기 있고 활동적인 오픈 소스 프로젝트를 찾는 좋은 방법이기 때문에 완전하지는 않습니다. 하지만 클린 코드를 인식하는 것이 매우 주관적이고 어려운 주제라는 점을 고려하면 이 답변은 꽤 괜찮습니다. 더 깊이 파헤쳐 볼 수도 있지만 이 게시물의 길이를 통제해야 합니다...

코드에 주석 달기 - 의심스러운 측면을 명확히 합니다.

💬 당신이 나에게 준 인생 꿀팁 중 하나는 내 코드의 목적과 기능을 설명하는 의미 있는 댓글을 작성하는 것이었습니다. 이에 대해 자세히 설명해주실 수 있나요? 어떤 댓글이 의미 있다고 생각하시나요? 내 모든 코드에 대해 항상 주석을 작성해야 합니까? 댓글을 작성하는 시기와 방법에 대한 좋은 경험적 방법이 있나요?


🤖 의미 있는 댓글을 작성하는 것은 깔끔하고 유지 관리 가능한 코드를 작성하는 데 있어 중요한 측면입니다. 의미 있는 주석은 코드 자체를 읽으면 즉시 알 수 없는 추가적인 통찰력과 맥락을 제공해야 합니다. 댓글을 작성하는 시기와 방법에 대한 몇 가지 지침은 다음과 같습니다.


  1. 복잡하거나 명확하지 않은 코드 설명 : 코드 조각이 복잡하거나 프로젝트에 익숙하지 않은 사람이 이해하기 어려울 수 있는 경우 주석은 구현 이유를 설명하거나 알고리즘에 대한 높은 수준의 개요를 제공하는 데 도움이 될 수 있습니다.


  2. 가정 및 제한 사항 문서화 : 코드가 특정 가정을 따르거나 제한 사항이 있는 경우 이를 주석으로 문서화하는 것이 중요합니다. 이렇게 하면 나중에 다른 사람(또는 본인)이 코드를 수정할 때 발생하는 문제나 오해를 방지하는 데 도움이 됩니다.


  3. 함수 및 클래스의 목적을 명확히 합니다 . 함수 및 클래스 이름은 설명적이어야 하지만 간단한 설명을 통해 함수 또는 클래스의 목적 및 예상 동작에 대한 추가 컨텍스트를 제공할 수 있습니다.


  4. 해결 방법 또는 해킹 설명 : 특정 문제나 제한 사항을 해결하기 위해 해결 방법이나 해킹을 구현해야 하는 경우 의견에 이유와 잠재적인 부작용을 기록하세요. 이는 향후 유지 관리 담당자가 해결 방법의 목적을 이해하고 잠재적인 개선 사항을 고려하는 데 도움이 됩니다.


  5. 외부 리소스 참조 : 코드가 연구 논문, 알고리즘 또는 타사 라이브러리와 같은 특정 리소스를 기반으로 하는 경우 해당 리소스에 대한 참조와 함께 주석을 포함하세요. 이는 프로젝트에 참여하는 다른 사람들에게 상황 및 배경 정보를 제공하는 데 도움이 됩니다.


효과적인 댓글을 작성하는 방법에 대한 몇 가지 팁은 다음과 같습니다.


  1. 간결해야 합니다 . 설명은 짧고 명확해야 합니다. 긴 단락을 작성하거나 코드에서 이미 명확한 정보를 반복하지 마세요.


  2. 주석을 최신 상태로 유지 : 코드가 발전함에 따라 주석이 관련성을 유지하도록 하세요. 코드를 수정할 때 주석을 업데이트하여 코드의 현재 상태를 정확하게 반영하세요.


  3. 명백한 내용을 언급하지 마세요 . 단순히 코드가 수행하는 작업을 다시 설명하는 주석을 작성하지 마세요. 코드 자체에서는 즉시 명확하지 않은 컨텍스트, 근거 또는 설명을 제공하는 데 중점을 둡니다.


모든 단일 행이나 코드 블록에 대해 주석을 작성할 필요는 없습니다. 대신, 가치를 더하고 코드에 대한 이해를 높이는 데 도움이 되는 주석 작성에 집중하세요. 잘 작성된 코드는 대부분 자체적으로 설명이 가능해야 하므로 명확하고 표현력이 풍부한 코드를 작성하는 데 우선순위를 두고 필요한 경우 주석을 사용하여 보완하십시오.


🤔 정말 좋은 답변이네요. 초기 팁이 모호했고 잠재적으로 과도한 설명으로 이어질 수 있는 해석의 여지가 있었지만 이 설명은 이를 잘 설명하고 100% 정확합니다. 그것이 바로 제가 댓글 작성에 접근하도록 조언하는 방법입니다.

결론.

여기저기서 몇 가지 작은 실수가 있었지만 전반적으로 결과는 놀라울 정도로 좋습니다.


일부 답변은 너무 명백했고 일부는 의견의 문제였지만 그 중 어느 것도 명백히 틀린 것은 아니며 많은 답변이 정말 훌륭하고 실행 가능했습니다. 또한 조언의 폭과 다양성이 마음에 들었습니다. 건강 관리에 관한 사항도 포함되어 있었습니다!


초기 답변은 얕습니다. 후속 질문을 통해 최소한 몇 단계 더 깊이 들어가지 않으면 많은 가치를 가져오지 않습니다. 하지만 이 흐름에 익숙해지면 꽤 순조롭게 진행됩니다. 사전에 너무 많은 정보에 압도당하지 않고 점차적으로 탐색하여 관심이 있거나 이해하지 못하는 주제에 대해서만 더 깊이 알아볼 수 있습니다. 예를 들어 책을 읽거나 강의를 듣는 것보다 실제 인간 멘토와 함께 일하는 것과 더 유사하다고 말하고 싶습니다.


실제 인간 멘토에 비해 ChatGPT로 작업할 때 부담이 조금 더 큽니다. 인간은 당신의 목소리 톤, 얼굴 표정, 신체 언어에서 더 많은 단서를 포착할 수 있으며, 당신의 행동에 반응하여 토론을 보다 적극적으로 이끌 수 있습니다. 그러나 ChatGPT로 작업할 때 포착할 수 있는 유일한 단서는 직접적인 질문입니다. 따라서 경험의 질은 멘토의 경험이나 감성 지능이 아니라 명확한 질문을 공식화하는 능력에만 달려 있습니다. 즉, 적절한 질문을 하는 방법을 배우는 것은 그리 어렵지 않으며, 그렇게 한다면 상호 작용에서 여전히 많은 가치를 얻을 수 있습니다.


초보자의 경우 더 까다로운 부분은 얕은 답변에서 더 깊은 답변으로 이동하기 위해 정확히 무엇을 질문해야 하는지 파악하는 것일 수 있습니다. 특정 분야에 대한 심층적인 전문 지식이 없다면 이는 분명하지 않은 경우가 많습니다. 그러나 "이 답변을 선택한 이유는 무엇입니까?", "더 자세히 설명할 수 있습니까?", "이 답변이 정말 최선입니까?", "와 같은 보다 일반적인 "드릴다운" 질문을 하는 방법을 배우면 이러한 문제를 완화할 수 있습니다. 이것이 유일한 좋은 대답인가?", "장단점은 무엇인가?", "대안은 무엇인가?", "비슷한 기술이 더 있는가?" 등이 있다. 이와 같은 질문을 잘하는 것은 요구 사항을 명확히 하거나 팀원과 브레인스토밍을 할 때, 심지어 실제 인간 멘토와 함께 일할 때 등 일상적인 업무에서도 도움이 될 것입니다. 따라서 그 자체로 가치 있는 훈련입니다.


요약하자면 이렇게 제한된 테스트에서 관찰한 바에 따르면 확실히 추천하고 싶습니다 .


실제 인간 멘토를 완전히 대체할 수는 없지만, 멘토에 액세스할 수 없다면 반드시 ChatGPT를 사용해 보시기 바랍니다. 멘토가 있더라도 ChatGPT를 훨씬 더 쉽게 사용할 수 있으므로 두 가지를 모두 활용할 가치가 있습니다. ChatGPT로 시작한 다음(더 자주 사용) 실제 멘토에게 답변을 평가하고 확장하도록 요청하거나 더 간단한 사례를 위해 ChatGPT를 고수하면서 더 까다로운 영역을 더 깊이 탐구할 수 있습니다.


또한 해당 지역에서 배울 내용에 대한 높은 수준의 개요부터 시작하여 해당 지역의 전반적인 상황을 이해한 다음 ChatGPT를 사용하여 선택한 주제를 더 깊이 파고드는 것도 도움이 될 수 있습니다. roadmap.sh제가 작성 중인 가이드 와 같이 개요를 제공하는 좋은 리소스가 많이 있습니다.