개발자는 코드로 말합니다

저는 개발자에게 중요한 능력이 코드, 협업, 전달 세 가지에 있다고 생각합니다. 어떤 우선순위를 정하든, 개발자는 항상 코드에 많은 가치를 두어야 한다는 점은 변하지 않습니다.

코드는 단순한 도구를 넘어섭니다.

개발자들의 사고방식과 작업 방식을 반영하는 중요한 요소이기 때문인데 다음과 같은 이유들로 인해 개발자들은 코드로 말하는 것을 선호합니다.

  • 명확성과 정확성: 자연어는 모호할 수 있지만, 코드는 명확한 규칙과 구조를 가지고 있어 오해의 여지가 없습니다. 개발자는 코드를 통해 자신의 의도를 정확하게 전달할 수 있습니다.

  • 효율성: 복잡한 개념이나 로직을 코드로 표현하면, 이를 이해하는 사람들은 빠르게 그 내용을 파악할 수 있습니다. 이는 개발자들 뿐만 아니라 특정 도메인 전문가 간의 협업을 원활하게 하고, 문제 해결 속도를 높입니다.

  • 재사용성과 유지보수성: 잘 작성된 코드는 수정하기 용이하기 때문에 다른 프로젝트나 업무에서도 재사용될 수 있으며, 개발자들이 효율적으로 작업할 수 있도록 도와줍니다.

  • 자동화와 도구 활용: 예를 들어, 코드 가이드 준수, 번들링, 테스트 등등 개발 업무에 도움을 주는 도구와 함께 사용하면 코드의 품질을 높일 수 있습니다. 이는 개발자들이 더 나은 코드를 작성하고, 오류를 줄이는 데 도움을 줍니다.

  • 글로벌 커뮤니케이션: 개발자들은 서로 다른 언어를 사용하더라도, 코드를 통해 의사소통할 수 있는 전 세계적으로 통용되는 언어입니다. 이는 다양한 배경을 가진 개발자들이 함께 일할 수 있도록 합니다.

  • 문제 해결 능력 향상: 코드를 작성하는 과정은 문제를 분석해서 구조화하고, 단계별로 해결하는 과정입니다. 개발자들은 코드를 통해 문제 해결 능력을 향상시키고, 더 나은 솔루션을 찾습니다.

개발자들은 코드를 통해 새로운 아이디어를 구현하고, 독창적인 솔루션을 만들어낼 수 있습니다. 하지만 함께 고객과 일하는 사람들을 위해 코드와 제품을 공유할 때 그 가치는 더욱 의미가 있습니다. 이는 개발자들에게 큰 만족감을 줍니다. 제가 HandStack 프로젝트를 만들고 유지하는 이유입니다.

공유함으로써 얻는 가치는 중요합니다.

프로젝트의 성공 가능성을 높이기 위해 개발자들이 더 나은 협업 환경을 쉽게 조성하고, 동일한 목표로 함께 일하는 것은 매우 중요한 요소입니다. 다음은 그 이유들을 설명한 내용입니다.

  • 협업과 팀워크 향상: 새로운 프로젝트를 시작할 때, 기술적인 부분에 대한 공감대를 먼저 형성하면 팀원들이 서로의 작업을 이해하고, 더 잘 협력할 수 있습니다. 이는 프로젝트의 진행 속도를 높이고, 더 나은 결과물을 만들어내는 데 도움을 줍니다. 팀원들은 각자의 강점을 발휘하여 문제를 해결하고, 더 나은 솔루션을 찾을 수 있습니다.

  • 코드 품질 향상: 표준화된 소스코드 가이드라인은 다른 개발자들이 작성한 코드를 참조하고 리뷰하거나 코드의 품질을 일관되게 만들며, 버그를 줄이는 데 도움을 줍니다.

  • 지식 공유와 학습: 지식 공유는 팀 전체의 역량을 높이는 데 중요한 역할을 합니다. 새로운 기술이나 방법론을 배우고, 이를 실제 프로젝트에 적용할 수 있습니다.

  • 유지보수와 확장성: 여러 개발자가 코드를 이해하고 수정할 수 있기 때문에, 특정 개발자에게 의존하지 않고도 프로젝트를 지속적으로 발전시킬 수 기회가 열려있습니다. 이는 프로젝트의 안정성과 유지보수와 확장성이 향상됩니다.

  • 투명성과 신뢰성: 프로젝트의 투명성이 높아집니다. 팀원들은 프로젝트의 진행 상황을 명확하게 파악할 수 있고, 이는 신뢰성을 높이는 데 도움을 줍니다. 투명한 코드는 팀원들 간의 신뢰를 구축하고, 더 나은 협업 환경을 조성합니다.

  • 문제 해결 속도 향상: 문제를 빠르게 해결할 수 있습니다. 여러 개발자가 동시에 문제를 분석하고 해결책을 제시할 수 있기 때문에, 문제 해결 속도가 빨라집니다. 이는 프로젝트의 진행을 원활하게 하고, 일정 준수를 가능하게 합니다.

  • 창의성과 혁신 촉진: 다양한 아이디어와 관점이 반영될 수 있습니다. 팀원들은 서로의 아이디어를 바탕으로 새로운 접근 방식을 시도하고, 창의성과 혁신을 촉진하며 더 나은 결과물을 만들어낼 수 있습니다.

의도와 내용을 전달하는 방법을 알아야 합니다.

협업을 원활하게 하고, 코드의 품질을 높이는 데 중요한 것은 자신만의 루틴을 만들고 공유하는 겁니다. 다음과 같이 개발자들은 코드의 의도와 내용을 효과적으로 전달할 수 있습니다.

  • 주석 작성 최소화: 주석을 통해 코드의 목적, 동작 방식, 사용된 알고리즘 등을 설명할 수 있습니다. 개인적으로는 주석은 선호하지 않습니다. 주석보다 다른 개발자들이 코드를 이해하는 데 간결하고 명확하게 작성하는 것과 미사용되는 코드를 삭제하는 것이 중요합니다.

  • 명확한 변수 및 함수 이름 사용: 변수와 함수의 이름을 약어를 사용하지 않고 명확하게 짓는 것은 코드의 의도와 내용을 전달하는 데 큰 도움이 됩니다. 의미 있는 이름을 사용하면, 코드의 목적과 동작 방식을 쉽게 이해할 수 있습니다. 예를 들어, calculateTotal이라는 함수 이름은 함수가 총합을 계산하는 역할을 한다는 것을 명확히 전달합니다. 변수와 함수는 하나의 기능을 담당하도록 개발합니다.

  • 코드 구조화: 함수나 클래스를 적절하게 분리하고, 코드 블록을 논리적으로 배치하면, 코드의 가독성이 높아집니다. 이는 다른 개발자들이 코드를 이해하고 유지보수하는 데 도움을 줍니다.

  • 문서화: 코드와 함께 문서를 작성하는 것도 중요한 방법입니다. 문서에는 코드의 전체적인 구조, 주요 기능, 사용 방법 등을 설명할 수 있습니다. 특히, API 문서나 사용자 가이드는 다른 개발자들이 코드를 이해하고 사용하는 데 큰 도움이 됩니다. 특히 MarkDown 문법은 개발자에게 문서화에 들어 가는 많은 시간을 절감 시켜줍니다.

  • 코드 리뷰: 코드 리뷰는 다른 개발자들과 코드를 공유하고 피드백을 받을 수 있는 좋은 방법입니다. 코드 리뷰를 통해 코드의 의도와 내용을 명확하게 전달하고, 개선점을 찾을 수 있습니다. 이는 코드의 품질을 높이고, 개발자들 간의 협업을 촉진하기 위해 정기적인 업무 문화로 만드는 것이 필요합니다.

  • 테스트 코드 작성: 테스트 코드를 통해 코드의 동작 방식을 검증하고, 예상되는 결과를 확인할 수 있습니다. 이는 코드의 안정성과 신뢰성을 높이는 데 중요한 역할을 합니다. 개인적으로 단위 테스트 케이스 보다 기능 테스트를 위해 반복적으로 요청을 재현하고 검증하는 테스트 코드를 만드는 것을 선호합니다.

  • 코드 컨벤션 준수: 일관된 스타일과 포맷을 사용하면, 다른 개발자들이 코드를 이해하고 유지보수하는 데 도움이 됩니다. 코드 컨벤션은 팀 전체의 코딩 스타일을 통일하고, 협업을 원활하게 합니다.

  • 예제 코드 제공: 예제 코드를 제공하면, 코드의 사용 방법과 동작 방식을 쉽게 이해할 수 있습니다. 예제 코드는 많은 문서화 보다, 다른 개발자들이 코드를 활용하는 데 도움을 줍니다. 이는 특히, 라이브러리나 프레임워크를 개발할 때 유용합니다.

코딩 능력은 개발자의 핵심 업무입니다.

개발자의 가치는 설득이 아니라 증명입니다. 이는 바로 결과를 보여줄 수 있는 직업으로, 실질적인 성과를 만들어냅니다. 코드가 바로 개발자가 가장 중요하게 생각해야 할 부분이라고 할 수 있습니다.

협업은 팀원 간의 소통을 통해 더 나은 결과물을 만들어낼 수 있게 도와줍니다. 프로젝트를 진행하면서 다른 개발자와 의견을 나누고, 문제를 함께 해결하는 과정은 필수적입니다. 코드, 협업, 전달의 균형을 맞추는 것이 중요합니다. 그래야만 최상의 결과물을 만들어낼 수 있습니다.

약간 극단적으로 표현하면 코드 스킬은 본인의 주 업무이고 협업, 전달 능력은 다른 사람을 위한 부 업무라고 볼 수 있기 때문에, 개발 성향이 강한 개발자는 코드에 집착하며, 관리 성향이 강한 개발자는 코드보다 협업, 전달에 우선순위를 둡니다.

시간이 지남에 따라 본인의 커리어를 위해 다양한 선택을 해야 할 때, 지금까지 무엇에 가치를 두었고 앞으로 무엇에 더 가치를 둘 것인지 항상 생각하는 것이 좋습니다.

Marp와 OBS Studio를 활용하여 HandStack을 처음 사용하는 개발자들을 대상으로 동영상 자료를 만드는 중입니다. 아쉽게도 개인 사정상 정기적으로 컨텐츠를 올리기 어렵지만 꾸준히 올리도록 하겠습니다.

2개의 좋아요

제목을 보니 개발자는 아니신 모양으로 보이는데,
내용을 보니 개발자 같으시네요…

정의 내리기인지
의견 제시인지
원론에 대한 개념 정리인지
알리기 위함인지
주장하기 위함인지

글의 목적도 알수 없고
피드백도 없어서
도대체 무슨 글인지 모르겠습니다.

2개의 좋아요

참고로 slog 올린글은 아마 seo 검색예외라 구글링해도 해당글이 서치가 안되긴 합니다

1개의 좋아요

TDD와 코드 리뷰로 악용하는 사람들이 많아 (일종의 코딩 갑질?) 요즘 들어 조금 부정적인 생각이 듭니다
개발자 자살사건들 보면 보통 과도한 코드 리뷰와 인격 모독이 관련이 많아 더욱 그런 생각이 드네요
그래도 좋은 내용 감사합니다

그래도 글 올리실 때마다 보고 어느정도 읽었다고 생각하는데 아직도 핸드스택이 뭐하는건지 잘 모르겠습니다… 써보고 싶은데 어려울거 같네요

개발하며 이런생각하면 안되겠지요,

몇개월 살펴본 결과 이분은 커뮤니티 목적에 맞지 않은 활동을하고 있다고 결론내렸습니다.

일방적인으로 자기가 하고 싶은말만 할 뿐입니다. 결정적으로 피드백 하는걸 한번도 본적이 없습니다. 당연하겠죠. 왜냐하면 사람들과 "커뮤니케이션"한다는 전제하에 글을 올리는게 아니기 때문입니다. 좋게 말해도 주말내내 혼자서 떠드는 목사님 예배말씀 같은거일까요?

쓰시는 내용도 큰 주제만 적고 세부내용은 GPT를 이용해 쓴걸로밖에 안보입니다. 읽어보면 누구나 알법한 뻔한 이야기만 계속하고 있습니다. 대화의 주제가 난이도가 있냐 없냐 이런걸 말하는게 아닙니다. 자신만의 디테일한 가치관이나 생각 고뇌 이런것이 글에서 전혀 보이지 않아요. 정말 기계가 작성한걸로 보입니다.

그럼 이런글을 쓰는 이유는 무엇일까요? 자연스래 매번 글 하단에 올려두는 개인 프로젝트에 눈이 갑니다. 간단히 말해 프로젝트 광고이겠죠.

이런 개발 커뮤니티 사이트에 개인 프로젝트를 홍보하고자 활동하는게 잘못이라고 생각하진 않습니다. 하지만 커뮤니티의 본질을 해친채 일방적인 자기 홍보만 하는 활동은 옳지 않습니다.

글을 쓰면서 자꾸 출퇴근길 지하철 출입구앞에 전단지 나눠주는 아주머니들이 생각나네요. 전혀 받고 싶지 않은데 자꾸 전단지를 권하는 그 모습…

분명 운영진에서 댓글로 경고를 하시는거까지 봤는데 안하무인으로 똑같은 활동을 하고 계시네요… :melting_face: :melting_face:

2개의 좋아요

이글 댓글이요

안녕하세요. 닷넷데브 운영진 남정현입니다.

올려주신 글은 계속해서 내용을 발전시켜나가는 것을 전제로하는 Slog 게시판의 콘텐츠 구성에 부합하는 내용이 아닙니다.

이번 글까지는 다시 한 번 프로모션 게시판으로 옮겨드리겠습니다. 그러나 계속해서 커뮤니티 회원 분들의 부정적인 피드백이 지속되는 경우, 적절한 소명과 개선을 해주셔야 합니다.

아울러 댓글로 의견을 달아주신 회원 여러분들께도 감사드립니다. 다만, 상호간에 비난이나 불필요한 감정 다툼이 되지 않도록, 아래 CoC 내용을 참고하시어 건전한 커뮤니티 활동을 부탁드립니다.

고맙습니다.

CoC 참고 - 온라인 커뮤니티 행동 규범

  • 당신이 존중받기 원한다면, 상대방도 존중해주세요. 모두가 동시에 합의에 이르게 되지는 않습니다. 그러나, 의견의 불일치가 형편없는 행동이나 매너에 대한 변명이 될 수는 없습니다. 우리는 모두 이따금씩 좌절을 겪게 될 수 있습니다. 그러나, 좌절로 인해 개인적인 공격을 해도 되는 것은 아닙니다. 사람들이 불편해하거나 위협을 느끼는 커뮤니티는 생산적인 커뮤니티가 될 수 없다는 점을 기억해두는 것이 중요합니다. 우리는 닷넷데브의 일원들이 닷넷데브 외부 사람들은 물론 커뮤니티 내부의 다른 일원들과 커뮤니케이션을 할 때 존중받기를 기대합니다.

  • 효과적인 커뮤니케이션을 위해 노력해주세요. 우리가 모두 동일한 스킬 수준에서 동일한 언어를 말하지는 않습니다. 분명한 커뮤니케이션은 오해를 피하는데 도움이 될 수 있으며, 언어 해석이 각자 배경에 따라 다를 수 있음을 기억하는 것도 도움이 될 수 있습니다. 맥락을 이해하는 것도 중요합니다. 막연한 추측보다는 질문을 통해 분명한 의미를 확인하는 것이 더 낫습니다. 사회적으로, 기술적으로 의견의 불일치는 항상 있을 수 있지만, 커뮤니티 회원 여러분들께서는 불일치를 건설적으로 해결해 주실 것이라 기대합니다. 따라서 상호 공격, 트롤링, 개인적인 공격, 반복되는 논쟁, 악의적 신고 등은 피해 주시기 바랍니다.

1개의 좋아요

아울러, 좀 더 커뮤니티 회원 분들의 지지와 참여를 이끌어내기 원하신다면, 지금과 같이 개발 일반론에 관한 내용을 제품 홍보에 섞는 것은 공감을 얻기 어려워보입니다.

제품 홍보에 집중하기 원하신다면 Hands-on 예제와 코드 샘플, 그리고 우수 적용 사례를 누구나 쉽게 따라해볼 수 있도록 준비해서 널리 알릴 수 있도록 준비하시는 것은 어떨지 의견 드려봅니다.

핸드스택의 포지션이 ABP.IO (https://abp.io/) 같은 제품이라면 기존에 시장을 석권하고 있는 다른 유명 제품이나 프레임워크의 마케팅 전략, 제품 로드맵을 검토하면서 충분히 채택할 만한 요소들이 많이 있을 것이라 생각합니다.

4개의 좋아요