글쓰는 개발자가 되자.

최근에 들어 실력과 경험은 많지만 자신의 실력을 오로지 자신의 운영하는 서비스나 회사에만 불사르고 계신 개발자 분들에게 경험, 기술을 공유해보라고 설파하고 있습니다. 넘사벽 수준으로 글을 잘 쓰시는 개발자 분들도 많이 있지만 반대로 자신의 지식, 경험을 글로 표현하는데 어려움을 겪고 있는 개발자 분들 많이 있습니다. 스스로 평가해보면저도 그렇게 글을 잘 쓰는 편은 아니지만 평균 정도 수준에 많이 쓰는 개발자 중의 한명이라고 봅니다.

최근 판교 연예인 개발자 한분이 페북에 좋은 개발자가 되려면 어떻게 하는게 좋을까요? 라는 질문에 여러 답변이 올라왔습니다.

good_software_engineer

여러 답변들이 있었는데 "새로운 것을 계속 배울 수 있는 호기심", "입이 아닌 손으로 개발", "스스로 꾸준히", "나와 반대로 하면 된다", "먼저 좋은 사람이 되어야 한다" 등 좋은 댓글들이 많이 달렸습니다. "좋은" 이라는 단어에 대해 약간의 거부감을 느낄실 분들이 있을 것 같아서,  질문을 조금 바꾸어 "개발자라면 어떤 소양을 가지고 있는 것이 좋을까?" 생각해 봤습니다.

  • 프로그램 개발 능력: 당연한 말씀
  • 커뮤니케이션 능력: 꼰대처럼 하면 안되지만 자신의 의견을 정확히 전달하고, 남의 의견을 잘 청취하며(제가 이 부분을 좀 못하기는 합니다), 서로 다른 이견이 있을때 절충, 타협, 설득을 잘하는 능력
  • 영어: 저한테 최근 2 ~ 3년 동안 가장 시련을 주고 있으며, 풀지 못하고 있는 숙제입니다.  오픈소스 프로젝트에 참여하기 위해서도 영어는 기본이고, 기술 관련 글을 읽기 위해서나 동영상을 보기 위해서도 영어는 기본입니다.
  • 글쓰기: 이번 컬럼의 주제이기도 한 글쓰기. 제가 생각하기에 글쓰기는 마법과 같습니다. 글쓰기를 잘하면 하고 싶은 일을 할 수 있고, 돈도 벌 수 있고, 유명해질 수 있습니다. 즉, 부와 명예 그리고 성취감까지 많은 사람들이 세상을 살면서 원하는 모든 것을 얻을 수 있습니다. "그러면 너는 그런 것들을 얻었냐"라고 물으시면 서두에서 방어 차원에 언급한 것 처럼 저는 글쓰기를 아주 잘 하지는 않습니다. 그저 보통 수준이고 즐기는 정도입니다. 그래서 글쓰기를 안하거나 못해도 개발을 하는데는 지장이 없지만 내가 원하는 일을 하려고 할때는 글쓰기가 많은 도움을 줄 수 있습니다.
  • 체력: 글쓰기 항목까지만 쓰면 이 글을 위해 뭔가 끼워맞춘 듯한 느낌이 나서 하나 더 추가 했습니다.

나이 많은 개발자가 옛날 이야기를 하면 꼰대가 될 가능성이 많은데 어쩔수 없이 저도 옛날 이야기를 한번만 하겠습니다.

필자의 경우 처음에는 그럭저럭 지내는 개발자였지만 전설의 네띠앙 시절의 개인 홈피를 만들어서 글을 시작했습니다. 그때 주소가 아마 "http://my.netian. com/~babokim" 이었을 겁니다. 여기에 쓴 글이 계기가 되어 책을 출판하게 되고, 회사내에 다양한 기술 커뮤니티 활동을 하게 되었습니다. 이런 기반을 통해 더 깊은 기술을 접할 수 있는 Hadoop을 만나게 되었고, 오픈 소스 활동을 하였으며, 이런 과정에서 2권의 책을 더 쓰고, www.jaso.co.kr 블로그에 10년 이상 글을 쓰고 있습니다.

이렇듯 글쓰기는 저의 프로그램 인생의 동반 친구였으며, 많은 도움을 준 조력자 였습니다.

왜 글을 써야 하나?

제가 생각하는 왜 개발자가 글을 써야 하는지에 대한 이유입니다.

  • 글쓰기는 공유 활동이고, 공유 그 자체가 소프트웨어 산업입니다.
    • 소프트웨어 분야는 이전 전통적인 산업 분야와는 비교할 수 없을 만큼 빠르게 성장 하였으며, 다른 산업 분야 이상으로 삶을 바꾸고 있습니다. 이것이 가능했던 원인 중의 하나는 오픈과 공유일 것입니다. 전체 역사를 통틀어, 전체 산업을 통틀어 소프트웨어 산업 만큼 이렇게 혁신적이고 과감하게 오픈하고 있는 시대나 분야는 없었습니다.
    • 많은 서비스는 무료이고, 몇백억 이상의 가치가 있는 제품의 기술을 무료로 공개하고 있으며 이런 기술 공유를 통해 빠른 시간안에 성장을 했습니다.
    • 이런 산업 분야에서  메인 스트림에 들어가거나 성공을 하기 위해서는 공유, 오픈은 기본 항목입니다.
  • 글쓰기는 자신의 기술을 완성시켜 줍니다.
    • 다른 분은 어떨지 모르겠지만 저는 프로그램을 할때 가끔 이유는 모르겠지만 이렇게 만들면 원하는 결과가 나오는 경우 그냥 무심코 배포를 합니다. 새로운 기술을 익힐 때에도 마찬가지 입니다. 게으름은 인간의 기본 본성이라고 생각하는 사람 중의 한명입니다.
    • 글쓰기는 이런 게으름 빠져 있는 나에게 "왜?" 라는 질문을 던져 줍니다.
    • "Java8 Stream의 parallel 처리" 라는 글을 쓰기전에 필자는 ForkJoin 프레임워크가 있는지도 몰랐습니다. 그냥 stream.parallel() 이렇게 호출하기만 했을 겁니다.
    • 글이라는 것은 남에게 읽혀지기 위해 쓰여집니다. 따라서 글을 쓸때의 마음은 가능한 정확한 내용을 쓸고자 합니다. 이를 위해 평소에는 아무런 생각없이 지나치던 내용들도 이것은 왜 이렇게 되는지에 대해 고민하고 자료를 찾아보고, 심지어는 소스 코드까지 살펴보게 됩니다.
    • 글쓰기는 자신의 지식, 경험을 남에게 공유하기 위함이라고 하지만 실제로는 자신을 위한 정리가 더 큰 소득이 됩니다.
  • 글쓰기를 통해 유명해질 수 있습니다.
    • 동양적인 사고에서는 겸손이 미덕이지만, 자신의 경험과 지식을 글을 이용하여 외부에 알리는 활동도 중요합니다. 이제는 적극적으로 자신을 홍보해야 하는 시대입니다. 다른 글을 자신의 지식인 것처럼 꾸미거나 하는 것은 나쁘지만 잘 정리된 글을 통해 충분히 유명해질 수 있습니다.
    • 유명하다는 것은 단순히 명예만 얻는 것이 아닙니다. 자신의 주장에 공신력이 쌓이고 이런 공신력을 기반으로 자신이 하고 싶어 했던 일, 만들고 싶어 했던 아키텍처, 구현해보고 싶었던 서비스, 솔루션을 주도적으로 만들 수 있는 환경을 스스로 만들어 낼 수 있습니다.
  • 이외에도 수 많은 장점이 있습니다.
  • 물론 단점도 있습니다. 단 하나 시간을 투자해야 합니다. 이 글을 쓰고 있는 지금 1AM 입니다.

글을 쓰기 위한 팁

최근에는 글쓰기 환경이 더 나빠지고 있습니다. 회사 업무에서 조차 A4 한장 이상 프리 스타일로 글을 쓰는 경우가 거의 없습니다. 대부분의 보고는 단문의 메일과 짧은 문장과 그림, 도표로 구성된 프리젠테이션 자료 등을 사용합니다. 회사 업무 외에서는 페이스북, 트위터 등에 글을 쓸때 대부분 짧은 단문을 주로 사용하고 있다. 심지어 핀트레스트와 같은 서비스는 사진으로 자신을 표현하고 텍스트는 해쉬태그인 명사 몇개만 등록하는 것으로 끝납니다. 글을 잘 쓰실 수 있는 분들도 이렇게 짧은 문장 사용에만 익숙하다 보니, 긴 글을 만드는 방법을 잊어 버리고 있습니다.

think_talk_discuss

(이미지: https://tribecomics.com/quick-writing-tips-for-your-upcoming-writer/)

여기 필자가 글을 사용할 때 주로 사용하는 몇가지 팁을 정리 해보겠습니다.

  • 표현하지 않고 머리속에 있으면 글이 안됨
    • 그래 이제 나도 글을 써봐야지. 라는 마음가짐으로 워드나 구글 Docs에 New Document를 합니다. 그 이후 커서만 쳐다 봅니다. 제목을 쓰고, 다시 지우고 이렇게 반복만 합니다. 내일 조금 더 써봐야지...
    • 이런 상황에서는 바로 글을 쓰려고 하기 보다는 주변 개발자와 여러가지 기술에 대해 말로 토론을 해보는 것을 추천합니다. 글보다는 말하기가 훨씬 쉽습니다. 말보다는 생각이 훨씬 더 쉽습니다. 그래서 우리는 생각에만 머무르고 있는 경우가 많습니다. 주변 동료나 커뮤니티에 참여해서 그냥 재미있게 토론을 하는 중에 어느 정도 생각이 정리 됩니다. 그렇게 정리된 생각을 조금씩 글로 표현해 주면 됩니다.
    • 이 단계가 조금 개선되면 "생각 -> 말 -> 글" 이 아닌 "생각 -> 글"로 바로 표현할 수 있게 됩니다. 지금 이 글도 처음에는 몇가지 주제만 생각을 가지고 글을 쓰기 시작했습니다. 글을 쓰는 도중에 생각이 정리 되면서 다시 글로 표현되는 활동이 자연스럽게 반복되고 있는 것입니다.
    • 보통은 회사에서 미팅이나 회의를 짧게 끝나는 것이 좋다고 하는데 저는 반대로 생각합니다. 회의에서 대화나 토론이 없는 일방적인 보고나 지시 회의라면 당연히 짧거나 없는게 좋겠죠. 하지만 여러가지 방안이 있고 그 중에 선택을 해야하거나 아이디어나 기획안을 만들어야 하는 회의하면 참여원 모두가 말을 많이 해야 한다고 생각합니다. 필자의 경험으로 말을 많이 하면 하는 도중에 생각이 정리되고 그 정리된 생각으로 다시 다른 생각이 나타나고, 다른 사람의 말을 듣는 동안 그 말로 다른 생각이 연결되게 됩니다.
    • "자신의 생각에 대한 정리가 글쓰기에는 가장 중요한데 생각의 정리를 머리속에서만 정리하면 정리가 안되고 말이나 글로 표현해야 정리가 된다." 이게 글쓰기의 핵심이라고 생각합니다(필자의 경우에는).
  • 글은 Sentence가 아닌 Paragraph가 모인 것이다.
    • Sentence는 하나의 문장입니다(이 문장처럼). 문장 하나로 문맥을 마무리 지으면 독자들은 글쓴이의 의도나 흐름을 파악하지 못합니다. 따라서 의미 있는 하나의 단위를 표현하기 위해서는 문단(Paragraph)으로 표현이 되어야 합니다.  Paragraph는 여러개의 Sentence가 모여서 만들어 집니다.
    • 글쓴이가 하고자 하는 표현 그 자체를 하나의 Sentence로만 표현하는 것이 아니라, 그 주위를 감싸는 Sentence 를 배치시켜 글쓴이의 의도, 상황, 이유 등을 통해 독자의 이해를 얻어야 합니다. 영어 작문 시간에는 반드시 이런식의 작문을 배우게 됩니다.
    • 한가지 적용해 볼 수 있는 방법은 Paragraph 에서 나타내고자 하는 주제에 대해 5w 1h(who, when, where, what, why, how) 중 몇개를 선택해서 각각을 Sentence로 만들어 보는 것입니다.
    • 이렇게 만들어진 Paragraph가 여러개 모여 하나의 글이 구성된다.
  • 공감 유도
    • 글은 쓰는 행위는 일방적인 통보가 아니라 공감을 얻는 행위이기 때문에 내가 쓰고자 하는 메인 주제에 대해 공감을 얻어 내는 장치나 있거나 글의 전개시켜야 합니다.  즉, 설명하는 본문에 이르기 전에 독지와 공감할 수 있는 장치(내용)이 있어야 한다는 겁니다.
    • 기술적인 글의 경우 도입부에서 부터 바로 주제로 들어가는 경우가 많습니다. 대부분의 독자가 알고 있는 평범한 주제가 아니라면 이 주제의 글을 쓰게 된 배경은 표현해주는 것이 좋습니다.
    • 그리고, 독자들이 이런 정도의 기본 내용을 알 것이라고 가정하지 말고, 설명하고자 하는 주제에 대한 개요를 간단하게 설명합니다.
    • 한 주제에 몇 개의 서브 주제나 중요한 용어 등이 나오는 경우에도 이들에 대해 각각이 나타날 때 친절하게 설명을 해줍니다. 이때, 설명이 너무 장황하거나 길어지는 경우 독자들이 주제에 집중하기 어려울 수도 있기 때문에 2 ~ 3개의 sentence로 설명하고 더 자세한 내용은 참고 레퍼런스를 추가 합니다.
  • 작문 수업을 듣는 것도 대안이 될 수 있다.
    • 필자가 학교 생활을 할때에는 체계적으로 작문 수업을 배워본 기억이 없습니다. 학교에서 가르치기는 했어도 그때 당시에는 왜 필요한지를 몰랐기 때문에 배우지 못했다고 생각할 수도 있을 것입니다. 최근 영어 공부를 하면서 필리핀, 미국에서 작문 수업을 들었는데 그때 배웠던 내용들이 한글 글쓰기에도 많은 도움이 되고 있습니다. 한국 작문 수업은 어떤지 모르겠지만 필요하면 영문 작문 수업은 들어보는 것을 추천합니다.
  • 글 중에 오류가 있거나, 정확하지 않은 지식을 표현하는데 있어 두려워 하지 말라.
    • 기술 관련 글을 쓰다보면 모호한 부분과 확신이 안되는, 확인이 안된 내용에 대해서는 쓰기가 애매한 경우가 있습니다. 그 내용이 빠지면 전체 글의 흐름이 연결이 안되고, 넣을 경우 잘못된 내용일 수도 있고.
    • 이런 경우 불확실성 그 자체를 글로 표현하고, 독자의 양해를 구하면 됩니다. 그러면 독자들이 답을 주는 경우가 대부분입니다. 물론 일부 독자들은 그것에 대해 비난을 할 수도 있습니다.
  • 어렵더라도 맞춤법, 띄워쓰기 등 글의 기본 룰은 지켜야 한다.
    • 맞춤법, 띄어쓰기, 구어체 사용하지 않기, 쉼표/마침표 등의 사용, 주어와 동사의 매칭 등

  • 비난에는 반응하지 마라.

    • 글을 외부에 공개한 이후부터는 비난, 칭찬 등에 무던해야 합니다. 물론 사람의 마음이 그렇게 쉽지 않기 때문에 비난의 글에는 마음이 상할 수 있습니다. 대부분의 상황에서는 비난의 글에 직접적인 댓글로 반응하지 않는 것이 현명한 선택이 되는 경우가 많습니다.
    • 비난의 글 중에 본문의 잘못된 부분에 대한 지적 등이 있으면, 본문을 보완하고, 본문 내에 잘못된 부분을 알려준 댓글 작성자에게 감사의 글을 남기는 것이 최대한의 대응이 되어야 합니다.
    • 정확하게 잘못된 경우가 아니고 토론으로 전개되는 경우 토론에 적극적으로 개입할 수도 있고, 소극적으로 개입할 수도 있는데 어느쪽이 더 좋다고 단정하기는 어렵습니다. 필자의 경우에는 소극적인 개입을 좋아합니다. 이유는 다른 독자들의 반응을 적극적으로 얻어 낼수 있기 때문입니다.

  • 지금까지 글쓰기가 왜 중요한지와 글쓸때 도움이 될 만한 필자의 경험을 정리했습니다. 개발자들 사이에 통하는 변하지 않는 진리가 하나 있습니다. 개발을 배우는 가장 좋은 방법은 백견이불여일타(百見而不如一作) 입니다. 글쓰기기도 마찬가지 입니다. 지금 접어 놓았던 블로그 계정을 열어 글을 쓰시면 됩니다.


    Popit은 페이스북 댓글만 사용하고 있습니다. 페이스북 로그인 후 글을 보시면 댓글이 나타납니다.