20210107

princess·2021년 1월 8일
0

Clean Code

목록 보기
1/3

1일차(~7P)

코드는 존재한다

코드는 사라질 가망이 없는데 이는 요구사항을 상세히 표현하느 수단이기 때문이다.
코드의 도움 없이는 표현이 불가능하며 추상화도 불가능하다. 결국 정확히 명시를 해야된다는 것이다.

따라서 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업이 필요하며, 앞으로 추상화의 수준과 프로그래밍 언어의 수가 점차 증가할 것이다.
사람들은 대게 요구사항이 모호하여도 의도를 정확히 보고 프로그램을 완벽하게 실행하는 기계가 생겨 코드가 없어질 가능성이 있다고 본다.

요구사항에 더욱 가까운 언어, 정형구조를 뽑아내는 도구가 생성될 수 있지만, 정밀한 표현이 필요하다는 사실은 없어지지 않는다.

나쁜 코드

좋은 코드는 중요하다.

킬러 앱이라는 출시하자마자 큰 인기를 끌었던 앱이 있다. 이 앱은 초창기에 큰 인기를 끌었던 것에 비해 20년이라는 짧은 기간안에 망했다. 이유는 제품 출시 기간이 점점 늘어나게 되었는데, 이는 바로 "나쁜 코드" 때문이다.

출시에 바빠 코드를 마구 짜기 시작했고 결국엔 감당 불가능한 수준의 코드는 엉망이 되었다. 시간에 쫒기고 마음이 바쁘다 보면 나쁜 코드를 생성할 수 밖에 없는 경우가 생기기 시작한다.

우리 모두는 쓰레기 코드를 보면서 나중에 수정하겠다는 생각을 한다.
하지만 돌아간다는 사실에 안도감을 느끼며 안돌아가는 좋으 코드보다 돌아가는 쓰레기 코드가 더 낫다는 생각을 하게 된다.

결국, 그 나중은 오지 않는다.

나쁜 코드의 대가

쓰레기 코드로 인해 고상한 경험은 누구나 있으며 이는 개발 속도를 현저히 떨어뜨리는 원인이 된다.
코드를 고칠 때 마다 엉뚱한 곳에서 하나씩 오류가 생기기 시작하는데 이는 간단한 변경으로 시작했지만 결국 모든 모듈을 고치는 말도 안되는 변경이 되어 버리는 경우가 많다.

코드는 늘 얽히고 설켰고 우리는 이를 해독해 가며 코드를 더한다.

결국 생산성은 0이 되어버리고 이를 극복하기 위한 인력 투입이 진행이 되지만 새로운 인원은 조예가 깊지 않다. 새로운 인원은 관리층의 극심한 압박에 시달리게 되며 이는 결국 나쁜 코드를 생성하는 원인이 되어 다시 생산성이 0으로 돌아가게 된다.

결국 재설계의 요구가 이어지며 이는 기존 시스템 기능을 제공하는 새 시스템을 만드는 것이 목표다.
기존 시스템을 뛰어 넘어야 새 시스템을 대체할 수 있는데 이도 결국엔 시간이 오래 걸리는 경우가 태반이다.

태도

사용자는 현실성을 자문하며 프로젝트 관리자는 관리 일정을 프로그래머에게 도움을 청하게 된다.
결국 우리는 프로젝트 계획에 대한 책임감이 깊다.

좋은 코드를 사수하는 것도 프로그래머의 일이다.

나쁜 코드의 위험을 이해하지 못하는 관리자의 말을 듣는 행위는 전문가 답지 못하다.

원초적 난제

대부분의 프로그래머들은 빨리 가려고 시간을 들이지 않는데, 이 말의 뜻은 좋은 코드를 위해 시간을 들이지 않는 다는 것이다. 결국에 앞서 말한 것 처럼 나쁜 코드는 개발의 시간을 늦춘다. 따라서 기한에 맞추고 빠르게 가기 위한다면 좋은 코드를 위해 시간을 들여라.

느낀점

책을 읽는 1일차 .. 나쁜 코드는 어떤 영향을 미치는 가에 대해 자세히 나와있는 책인 듯 .. 진심 읽으면서 느낀점은 나쁜 코드를 생성하는 사람들의 태도나 상황이 정말 내가 이때까지 겪어오고 생각해 왔던 것들 이었다 .. 누가 내 태도에 대해 연구한듯 .. 읽는 내내 뼈가 맞아 순살이 된 듯하다 ^^ .. 돌이켜 생각해보면 정말 내 코드는 딱 개발 속도를 늦추는 완전 안좋은 코드다 ^^ .. 정말 속상하네 .. 특히 내 코드는 절대 수정 불가능함 .. 고치는 것보다 새로 짜는게 더 빠름 .. 내가 항상 듣던 소리 그냥 고치지 말고 다시 짜 ;; 라고 .. 한번 더 내 코드가 어떤지에 대해 깨닫는 순간이었음 .. 오늘은 ..

profile
성장하는 머신러닝 엔지니어

1개의 댓글

comment-user-thumbnail
2021년 1월 13일

서로이웃추가해요~

답글 달기