독도갈매기의 개발 블로그

[좋은 개발자] "책임감"을 가져라. - "책임감"을 가지고 개발하라 본문

좋은 개발자

[좋은 개발자] "책임감"을 가져라. - "책임감"을 가지고 개발하라

독도갈매기 2023. 3. 8. 22:34

평소 학교 생활 중 누누히 강연가가 꿈이라는 말을 이야기 한 덕분에 감사하게도 졸업한 고등학교에서 한번 씩 방과후 강사로 초청 받아 수업을 진행하곤 하는데, 그 때 있었던 이야기 중 하나로 오늘의 이야기를 시작해보려 한다.


나는 수업을 진행할 때 템포를 학생들의 수준에 맞추기 위해 과제를 내주기도 하는데, 과제를 못해온 학생의 말 중 가장 혐오 하는 말이 있다.
그것은 다름 아닌, '몰라서 못했습니다.'라는 말인데

아무런 설명 없이 '몰라서 못했습니다.' 라는 말을 듣기 싫다고 한다면 교육자(강연가)가 목표인 나는 자격이 없을 수도 있다.
나는 '몰라서 못했습니다.'라는 말이 단순히 싫다는 것이 아닌, 그 말을 하는 사람의 책임감을 질책하는 것이다.
'수업에 내용을 이해하였는지', '내어준 과제가 무엇인지' 등을 계속 물어가면서 수업을 진행하다보면,
신기하게도 '이해 하지 못했습니다.' 라는 말은 전혀 나오지 않는다.


수업이 끝난 뒤, 다음 수업날 오기 전까지 아무런 질문 없다가 과제를 확인하면 학생은 아무런 책임감, 죄책감 없이 뱉는다.

'몰라서 못했습니다.'

이해하지 못했는데, 이해했다는 말을 하는 것은 수업 분위기에 휩쓸려 그럴 수 있다고 생각하지만
아무리 생각해도 모르는 내용을 검색, 질문 하나 하려 하지 않고 책임감 없이 '몰라서 못했습니다.' 라고 말하는 것을 보면
정말 시간 낭비 했다는 생각 밖에 들지 않으며, 온갖 짜증이 다 올라온다.
내가 수업을 진행하며 깨닫게 된 진행자와 듣는이의 "책임감"에 대해서는 나중에 기회가 된다면, 다른 글에서 서술하도록 하겠다.


이렇듯 나는 "책임감" 없는 행동을 굉장히 혐오하는 개발자이다.
레거시 코드를 수정하다 보면, 아무런 생각 없이 코드를 작성하는 개발자 들이 있는데 나는 이러한 개발자를 '책임감' 없는 개발자라고 말한다.

성의 없는 변수명

현재 일하고 있는 회사가 연혁이 조금 있어 보통 레거시 코드를 많이 만지게 되는데,
정말 읽으면서 '와 진짜 진짜 엄청나다' 하며 배울게 많은 코드가 있는가 하면 '진짜 책임감 없다' 라는 말을 하며 읽게 되는 코드도 다수 있다.


성의 없는 변수명에 대한 경험을 하나 이야기하자면 실무 코드에서 for 문 초기화 변수명을 i, j, k 도 아닌 x, y, z 도 아닌 i, l, z 이런식으로
규칙 없이 생각나는대로 변수명을 선언한 반복문 코드가 있었다.
이후 유지보수 하는 사람은 전혀 배려하지 않는 개발자로 항상 기억하고 있다.


이러한 정말 성의 없고 "책임감" 없는 변수명은 싫어하는 코드 유형 중 하나이다.
저번 글에서 이야기 한 내용과 같이 나는 컴퓨터에게 다정한 코드 보다 개발자에게 친절한 코드를 좋아한다.
("코드"란 무엇인가)

무의미한 코드 복사 붙여넣기

코드의 중복을 판별하는 관점은 변경 Point & Domain 등의 관점마다 다르겠지만,
이러한 고민 없이 그냥 "편하니까" 복사 붙여넣기(중복)한 코드도 너무 많다.


함수명만 다를 뿐 코드 내용은 모두 같더라도 함수의 변경 Point가 다르다면, 그 것은 다른 코드이며 코드 중복이라 말할 수 없다.
그러나 "책임감" 없는 개발자들은 그런 고민은 전혀 하지 않은 채 간단히 복사 붙여넣기로 개발을 하고, 완성 했다고 말한다.

마무리

결론은 "책임감" 있는 개발자가 되면 된다.
코드 한줄을 작성하더라도, 변수 하나를 선언하더라도, 함수 하나를 복사하더라도
그 코드 한줄이 필요한 이유를 끊임 없이 고민하고 고민하고 고민하라는 이야기이다.
(그 코드의 필요성을 누군가에게 설명할 수 있는 정도의 고민까지가 오버 엔지니어링 전 단계라고 생각한다.)


평소 레거시 코드를 수정하며, 얻은 교훈을 기반으로 코드를 작성할 때 아래와 같은 고민을 수십 번 수백 번 반복한다.

  • '함수에 추가한 매개 변수를 어느 이유로 추가하였는가?'
  • '이런 변수명으로 내가 의미하고자 하는 것을 전달할 수 있을까?'
  • '이 코드는 중복된 코드인가? 그렇다면 변경 Point가 같은가?'
  • '코드를 수정했을 때, 영향도는 최대로 생각했을 때 어느정도 일까?'
  • '함수로 분리하는 것이 코드를 읽을 때 흐름이 더 매끄러운가?'
  • '함수 분리로 인해 너무 오버 엔지니어링이 되지는 않는지?'
  • 등등...
    코드 한줄 작성하면서 이러한 고민 중 하나라도 하고 있지 않다면, 당신은 "책임감" 없는 개발자일 수 있다.
    우리는 '근거'를 바탕으로 문제를 해결하는 개발자이다.
    나는 "책임감" 있게 '근거'를 가지고 개발하는 개발자가 좋은 개발자라고 생각한다.
Comments