개발자 99% 커뮤니티에서 수다 떨어요!
노션에서 적었던 것을 여기에 옮겨 적은 내용입니다.
프로그래머들은 늘 유지보수 모드에 있다.
DRY - Don’t Repeat Yourself
돌아가는 길이 지름길이다.
개발자간에 적극적이고 빈번한 소통을 장려하는 것.
관련 없는 것들 간에 서로 영향이 없도록 하라.
코드의 결합도를 줄이고 응집도를 높여라
수정한 버그나, 추정치들을 기록하고 분석해라.
우리가 프로젝트 초기에 항상 최선의 결정을 내리는 것은 아니다.
의존도를 잘 정의하고 추상화한 인터페이스를 통해 감추자.
목표물을 찾기 위해 예광탄을 써라. 예광탄 개발 방법은 점진적인 접근 방법이다.
프로토타입은 제한된 몇 가지 질문에 답할 목적으로 설계되기 때문에 실제 제품보다 훨씬 적은 비용으로 빠르게 개발할 수 있다.
문제 도메인에 가깝게 프로그래밍하라. 더 높은 추상화 수준에서 작업함으로써 사소한 구현의 세부사항들을 무시하고 도메인의 문제들을 푸는 일에만 정신을 집중할 수 있다.
복잡한 문법에 대한 트레이드오프 대상은 확장가능성과 유지보수다. 현재의 고통을 참고 더 복잡하지만 가독성 좋은 언어를 채택하는 편이 좋다.
추정치를 물었을 때 자신에게 물어보아야 할 첫 번째 질문은 답변이 사용될 상황이다. 사용하는 단위가 결과의 해석에 차이를 가져온다.
상대방이 무엇을 묻고 있는지에 대해 이해해야 한다.
요청한 것이 무엇인지 이해한 후에는 대력적이고, 꾸밈없는 모델을 만들어라. 모델은 개발을 하는 동안 디딤대가 되어줄 뿐 아니라 시스템을 어떻게 구현해야 할 지에 대한 대략적인 그림을 제공해 줄 것. 그러나 모델을 만드는 것은 추정 프로세스에 부정확성을 야기. 간결함과 정확성을 맞교환 하고 있는 것.
모델을 컴포넌트로 나누어라. 나누면서 모델에 영향을 미치는 매개변수를 규명해라. 매개 변수에 값을 주어라. 답을 계산하라. 추정치를 기록해서 분석해라.
점증적 개발을 이용해 추정의 정확도를 높이자.
앞부분의 내용이 추상화를 꼭 하자고 나를 다독이는 느낌이었다. DRY의 경우도 반복되는 부분들을 추상화 해서 뽑아내면 자연스럽게 사라질 문제들이다. 직교성 또한 추상화를 최대한 한다면 서로 연관되는 일 없이 직교성을 유지할 수 있을 것이다. 결국 추상화를 잘하면 유연하고 실용적이고 재사용성이 높은 개발을 할 수 있다는 걸 얘기하고 있는 것 같다.
애자일처럼 아니 애자일의 얘기를 해주는 것 같다. 모든 프로젝트는 처음에 설계된대로 흘러가지 않고 사용자의 요구사항은 계속해서 바뀌므로 한 번에 설계를 끝낸 후 그것대로 만들다가 한 번에 뙇! 하고 보여주는게 아니라 지속적으로 개발한 사항을 공유하고 피드백 받아야 한다는 걸 얘기한다. 그래야 바뀐 요구사항에 따라 개발 방향을 바꿀 수도 있고 현재 진행 상황을 보고 더 나은 방향을 고객들과 의논할 수 있기 때문이다. 그러면서 개발자 역시도 제품에 대해 생각하고 좋은 아이디어를 내고 신뢰도가 높아진다고 생각한다. 또 이렇게 짧은 공유 주기를 가짐으로써 해당 제품의 도메인에 대한 이해도 역시 높아진다.
그리고 이렇게 짧은 주기로 개발을 반복하다 보면 자신이 하고 있는 일을 훨씬 더 잘 파악할 수 있고 일정이나 요구사항에 대한 추정을 더 잘 할 수 있게 된다. 개발하기 어려운 부분의 경우 다른 대안을 찾아 의견을 공유할 수도 있고 일정이 오래 걸리는 것을 사전에 인지시켜줄 수도 있다는 점이 개발하는 사람들의 제품에 대한 애정도 높일 수 있다.
2장 실용주의 접근법에서 7가지 접근법에 대해 이야기를 했는데 결국 하나하나 따로 보는게 아니라 모두가 연결되어 있다고 생각한다. 즉 이 중에서 하나의 접근법만 사용하는게 아니라 상황에따라 여러 개를 한 번에 도입해서 좋은 제품을 만드는 게 좋은 개발자, 실용주의적인 개발자가 되는 길이라고 생각된다.