어떻게 기술 문제의 도움을 찾습니까?

6045 단어
이 글은 처음에 나의 개인 블로그https://hamatti.org/posts/how-to-ask-help-for-technical-problems/에서 공유되었다.만약 당신이 더 많은 이런 댓글에 관심이 있다면, 나의 다른 블로그 댓글을 보고, 나의 매달 개인 통신을 등록하십시오.
여러 해 동안, 나는 많은 다른 단체와 지역사회에 참여했고, 사람들은 그곳에서 기술 문제에 대해 도움을 구했다.나는 아주 좋은 문제들을 보았는데, 어떤 문제들은 심지어 실제 문제만 해결하는 데도 시간이 오래 걸린다.
이 게시물에서 나는 문제에 대해 도움을 받고 싶은 사람들에게 조언을 해주고 싶다. 왜냐하면 당신의 문제가 서로 다른 일을 포괄할 수 있을수록, 문제와 당신이 무엇을 했는지 설명할 수 있을수록, 다른 사람이 당신을 돕기 쉽기 때문이다.초보자에게는 미지수가 너무 많기 때문에 문제를 제기하는 것이 쉽지 않다는 것을 강조하고 싶다.이 팁들이 네가 지식을 탐색하는 데 도움을 줄 수 있기를 바란다.
이 중 대다수는 채팅 애플리케이션, 포럼 또는 Stack Overflow 등 사이트에 사용되는 비동기 통신으로 프로그래밍과 관련된 문제에 초점을 맞춰 게시물의 범위를 좁힌다.
이 모든 업무의 공통점은 가능한 한 많은 정보를 제공하고, 가능한 한 구체적인 것을 앞당기는 것이다. 그러면 너와 너의 조수가 실제 문제를 되풀이하는 데 하루의 시간을 들일 필요가 없다.

1. 다른 사람에게 도움을 줄 수 있는지 물어보지 마라


당신이 보낸 첫 번째 메시지부터 시작합시다.나는 사람들이 처음에 "누가 나를 도와 XYZ를 만들 수 있습니까?"라고 묻는 것을 자주 본다.
합리적으로 들리죠?그러나 그것은 당신이 도움을 받을 수 있는 능력을 방해할 것이다.
  • 도우미는 그들이 도울 수 있는지 없는지를 알기 어렵다
  • 토론 순환을 불필요하게 연장
  • 예를 들어, 당신은 CSS의 일부 문제를 해결하려고 노력하고 있습니다.만약 당신이 적당한 채팅방 (예를 들어 Discord나 Slack의 개발자 커뮤니티) 에 메시지를 발표한다면, 많은 사람들이 CSS를 알고 있지만, 그들은 당신이 해결하려고 노력하고 있는 정확한 문제를 모를 수도 있다.
    둘째, 이 문제를 묻는 사람은 "네, 무슨 문제가 있습니까?"라고 말해야 한다.심지어 이 문제 자체를 토론하는 데 하루가 걸릴 수도 있다.
    반대로 직접 너에게 묻는 질문."나는 adiv를 다른 div와 맞추려고 했지만 어떻게 맞추는지 모르겠다."이것은 더욱 좋은 시작이다.우리는 이 문장의 뒤에서 어떻게 더 잘 하는지 배울 것이다.
    당신이 이런 질문을 할 때, 누구든지 언제든지 볼 수 있고, 그들이 당신을 도울 수 있는지 더 잘 알 수 있으며, 그들은 즉시 대답을 시작할 수 있다.심지어 다음에 돌아와서 책을 읽고 이야기를 나누기 전에 문제를 해결할 방법을 찾았을 수도 있다.

    2. 당신이 달성하고자 하는 목표를 설명한다


    이것은 분명히 들릴 수 있지만, 자주 누락되고, 기러기가 잘못된 방향으로 가는 것을 찾는 데 도움을 줄 수도 있다.이것은 새로운 개발자와 특히 관련이 있습니다. 왜냐하면 당신은 약간의 잘못된 기술 도구로 뭔가를 하려고 시도할 수 있기 때문입니다.
    당신이 이곳에서 구체적일수록 사람들이 당신의 목표를 이해하는 데 도움이 되고, 이것은 그들이 당신에게 더 좋은 답을 주는 데도 도움이 된다.
    기술의 세부 사항에 주목하기보다는 코드의 효과에 주목하라.

    입력 및 출력 데이터 포함


    만약 데이터를 수신하고 다른 데이터를 출력하는 일을 처리하고 있다면, 입력과 예상 출력에 사용할 데이터 예시를 제공하십시오.만약 여러 그룹의 다른 입력/출력 쌍을 제공할 수 있다면, 조수는 그들의 복구가 당신의 질문에 진정으로 대답했는지 테스트할 수 있을 것입니다. 그러면 더욱 좋습니다.
    예를 들어 정규 표현식이나 validation with Joi 을 처리하고 있다면, 테스트 입력을 제공하면 조수와의 왕복을 크게 줄일 수 있습니다.

    4. 오류 공유


    "내 코드가 작동하지 않는데, 왜?"도움이 되지는 않지만 자주 문제에 부딪힌다.답은 보통'나는 모른다'는 것이다.
    따라서 얼버무리기보다는 가능한 한 구체화해야 한다.구체적인 방법은 당신이 얻은 오류 코드를 공유하는 것이다. (오류를 찾아내는 과정에서 오류 코드가 변할 때마다 공유해야 한다.)경험이 있는 개발자에게 오류는 많은 것을 보여 주기 때문에, 때때로 오류만 보면, 우리는 문제의 소재를 찾을 수 있다. 특히 그것이 매우 흔히 볼 수 있는 문제라면.
    코드 블록에 복사 붙여넣기로 항상 공유해 주십시오. (다음 섹션 참조) 붙여넣기를 더 복사하고 구글에서 우리가 익숙하지 않은 내용을 검색할 수 있기 때문입니다.오류 캡처는 보통 문제를 해결하기 위한 또 다른 장애물일 뿐이다.
    특정 응용 프로그램이나 라이브러리를 사용하는 경우 해당 응용 프로그램이나 라이브러리의 버전 번호를 공유합니다.예를 들어 Django에 문제가 있으면 실행 중인 Django 버전과 Python 버전을 알려 주십시오.프로그래밍 언어와 도구가 끊임없이 발전하고 있습니다. 이것은 아마도 버전의 특정한 문제일 것입니다.

    5. 코드 보여주기


    다음과 같은 몇 가지 이유로 당신의 노력을 보여주는 것이 중요하다.
    우선, 당신이 다른 사람에게 당신을 위해 일을 요구할 뿐만 아니라, 당신이 이미 문제를 해결하려고 시도했고, 정말로 곤경에 빠졌다는 것을 아는 사람이 있다면, 그들이 당신을 돕는 것은 더욱 힘이 될 것이다.
    자주 가르치는 사람으로서 나는 직접적인 답을 주지 않고 사람들이 스스로 답을 찾아내는 방법, 그리고 정확한 정보를 찾는 방법을 배울 수 있도록 도와주려고 한다.만약 네가 단지 직접적이고 완전한 답안을 찾고 있을 뿐이라면 그것은 불가능하다.
    그 다음으로 조언을 해준 사람이 코드가 어떻게 생겼는지 모르면 특정한 문제에 대해 프로그래밍 조언을 제공하기 어렵다.오류가 있거나 어떤 물건이 정상적으로 작동하지 않을 때, 이 점은 특히 중요하다.
    코드를 공유하는 방법은 다르다.HTML/CSS/Javascript 내용에 대해서는 Codepen, 더 복잡한 전단 코드에 대해서는 Codesandbox를 사용할 수 있다.이 두 가지 방법의 가장 큰 장점은 코드를 실행하고 결과를 볼 수 있다는 것이다.대부분의 문제는 코드를 보고 답안을 되돌려주는 것으로 해결되지 않지만, 보통 수정이 필요하며, 이러한 플랫폼이 바로 이런 문제들을 해결하는 좋은 방법이다.
    다른 코드에 대해서는 Pastebin 같은 도구가 있습니다. 모든 내용을 붙여넣고, 문법 하이라이트를 선택한 다음 제출을 누르십시오.또는 코드가 짧으면 Discord/Slack으로 직접 보낼 수 있습니다.이를 위해, 당신의 조수가 당신을 더욱 쉽게 도울 수 있는 두 가지 기교가 있습니다.
    이러한 플랫폼에서 코드를 공유하려면 세 가지 배경 표시로 포장합니다.
    ```
    //당신의 코드는 여기 있습니다
    ```
    Discord에서는 세 번째 기호 뒤에 언어 정의를 추가하여 구문 강조 표시를 추가할 수도 있습니다.
    ```js
    //여기 있는 자바스크립트 코드가 강조됩니다
    ```
    Slack에서 lightning 메뉴에서 구문 강조 표시를 추가할 수 있는 코드 세그먼트를 만들 수 있습니다.

    Slack 코드 세그먼트 모드 및 예제 Python 코드
    (이 기능을 지적해 준 Juri에게 감사합니다)
    이 코드 블록에 공유되지 않은 코드를 읽는 것은 (세 개의 체크 표시로 만든 것) 매우 어렵다.

    6. 최소, 완전, 복사 가능한 예시 만들기


    코드 라이브러리는 통상적으로 크고 복잡하기 때문에 존재하는 모든 코드를 공유하는 것은 이롭지 않다.
    참조:

    Your code examples should be…

    …Minimal – Use as little code as possible that still produces the same problem

    …Complete – Provide all parts someone else needs to reproduce your problem in the question itself

    …Reproducible – Test the code you're about to provide to make sure it reproduces the problem


    나는 그 문장의 모든 내용을 표절하거나 개작하지 않고, 네가 자세히 읽기를 건의한다.
    이것은 내가 생각하기에 우리가 가장 관용을 필요로 하는 일 중의 하나이며, 특히 신입 개발자에 대한 것이다.만약 네가 소프트웨어 개발의 초보자라면, 너의 코드가 작용하지 않을 것이다. 왜냐하면 (어쨌든 이것이 네가 묻는 이유이기 때문에) 이런 예시를 만드는 것은 매우 어려울 것이다.
    하지만 왜 긍정적인 일이 당신의 성공을 도울 수 있는지 통독하고 이해하세요.

    창고가 넘쳐흐르는 아주 좋은 지령기둥 마무리


    좋은 문제는 상기 모든 문제의 결합이다. 직접 일을 시작하도록 요구하고 목표가 무엇인지 설명하며 당신이 겪은 오류를 공유한다. 코드 공유는 이런 문제점을 가져오고 공유의 예시를 최소화하고 완전하며 복제할 수 있도록 한다.
    이 건의들을 실천에 옮기면, 나는 네가 도움을 구하는 경험이 더욱 좋아질 것이라고 보장할 수 있다.한 가지 부작용은 토론을 더 적게 얻는 것일 수도 있지만, 다른 사람들과 시간을 절약하는 것이다. 왜냐하면 그들은 많은 것을 물어볼 필요가 없지만, 그들이 당신을 도울 수 없다는 것을 발견하기 때문이다.
    마지막으로 도움을 받았을 때 고맙다는 말을 잊지 마세요.나는 그것을 자신의 관점으로 첨가하지 않았다. 왜냐하면 나는 지금까지 사람들이 고맙다고 말하지 않는 문제를 만난 적이 없기 때문이다.하지만 도움을 받았는데도 고맙다는 말을 하지 않았다면 앞으로 그렇게 하자.
    나는 도움을 구하는 것이 낯선 사람에게 너의 불완전함을 폭로하는 것이 두려울 수도 있다는 것을 안다.비록 네가 해야 할 일들이 길게 열거되어 있지만, 나는 네가 모든 면에서 완벽하지 않더라도, 네가 물어보도록 격려하고 싶다.이 글의 주요 목적은 네가 생각하지 못했거나 몰랐을 수도 있는 새로운 아이디어를 제공하는 것이다.
    나는 너의 기술 문제가 도움을 받을 수 있기를 바란다.
    (주: 경험이 풍부한 개발자라면 이 모든 것이 좋은 버그 보고서로 바뀌었다는 것을 알 수 있을 것이다. 버그 보고서는 본질적으로 일부 문제를 복구하는 데 도움을 청하기 때문이다.)

    좋은 웹페이지 즐겨찾기