서론잠깐 모임이 중지되었던 독서토론 모임이 다시 열렸다. 원래는 개발과 커뮤니케이션 관련 주제였는데, 이번에는 서비스(제품)라는 확장된 주제였다. 회사에서 개발자들과 소통만 하는게 아니라, 다른 직군의 동료들과도 소통 하기 때문에 오히려 좋다고 생각했다. 한가지 아쉬운(?)점은 나는 이제 제품 개발자가 아니라 플랫폼 개발자다. 뭐 이것도 좋게 생각하면 독서토론을 하면서 제품에 대한 감을 잃지 않을 수 있다. 본론이번 모임은 사람이 너무 많았다.. 그래서 좀 부담되었다. 확실히 나는 친하지 않은 많은 사람들 앞에서 얘기하는게 부담된다. 자리도 빈자리 없이 꽉꽉 채워 앉아야했다. 아이스브레이킹이번에도 역시나 아이스브레이킹이 있었다. 이번에는 6명?정도로 조를 나누고 왼손으로 30초씩 돌아가면서 한명의 얼굴을..
이전에 읽은 새로운질서라는 책과는 전혀 다른 스타일의 책이였다. 책의 난이도도 낮고 항목이 하나하나 나뉘어져 있어서 읽기에는 수월했다. 내가 최근에 책을 읽으면서 느낀 한가지가 있다. 나는 책의 저자가 의도한 주제대로만 읽지 않는다. 발표가 주제여도 AI가 주제여도 결국 다른 무언가 꽂히는게 있다면 그 부분에 대해 깊이 파고든다. 책의 전체 흐름을 파악하고 따라가는 것도 중요하지만 이렇게 읽고 생각해보는 것도 나쁘지 않은 방식같다. 이전에 읽은 책만큼 인상깊지는 않았지만 나에게는 읽어서 도움이 되는 정도의 책이였던 것 같다.너무 다양한 섹션들이 있어서 요약하기가 조금 애매한데 내가 이 책에서 중점적으로 본건 사람에 대한 이해다. 멘탈 모델, 무의식적인 결정, 방어적인 태도 이런 것들은 결국 사람에 대한 ..
마음의 이상주의는 이성의 현실주의와 양립할 수 있으며 전자가 후자를 고귀하게 만든다는 것을 그는 평생에 걸쳐 증명하려고 애썼다. 위 한 문장만으로 이 책을 읽을 가치가 있다고 느꼈다. 나는 슬픈 영화를 봐도 울지 않는 사람인데 눈물이 날뻔했다. 나는 이성의 현실주의에 가까운 사람이다. 그래서 비판적 사고와 긍정적 사고를 하는 사람이라고 생각해왔다. 어쩌면 내 긍정적 사고는 마음의 이상일지도 모른다. 그리고 비판적 사고는 이성의 현실주의와 맞닿아있는 것 같다.우리 모두는 이상과 현실을 모두 바라본다. 사람에 따라 이상과 현실을 바라보는 비중이 다를뿐이다. 인간이란 원래 그렇지만 최근들어 이분법적인 사고와 그에 따른 갈등이 늘어나는 것 같다. 모두 장단점이 있으니 서로 잘 융화되어서 잘 지냈으면 하는 작은 ..
테스트 구축하기 드디어 나왔다. 테스트코드... 근데 이 책은 테스트에 관련된 책이 아니라서 상세하게 설명하지는 않았다. 그래서 좀 아쉽기도 하지만 테스트로 주제가 빠져버리면 책 한권으로도 부족하기 때문에 어쩔 수 없다고 생각한다. 예시 테스트 코드도 나쁘지는 않지만 좀 부족하다. 게다가 프론트엔드에서 테스트는 또 다른 얘기다. 자가 테스트코드의 가치 테스트를 작성하기 가장 좋은 시점은 프로그래밍을 시작하기 전이다. 테스트를 작성하다 보면 원하는 기능을 추가하기 위해 무엇이 필요한지 고민하게 된다. 구현보다 인터페이스에 집중하게 된다는 장점도 있다. 게다가 코딩이 완료되는 시점을 정ㄹ확하게 판단할 수 있다. 테스트를 모두 통과한 시점이 바로 코드를 완성한 시점이다. 켄트 벡은 테스트부터 작성하는 습관을 ..
코드에서 나는 악취 이번에도 세부적인 내용은 적지 않겠다. 그 중에서도 중요하다고 생각한 몇가지만 적어보겠다. 그리고 가장 중요한 것은 코드를 작성할 때 생각을 하면서 짜는 것이다. 생각없이 코드를 적으면 악취를 풍긴다. 최대한 냄새를 풍기지 않게 주의하면서 코딩을 하자. 기이한 이름 코드를 명료하게 표현하는데 표현하는데 가장 중요한 요소 하나는 바로 이름이다. 마땅한 이름이 떠오르지 않는다면 설게에 더 근본적인 문제가 숨어 있을 가능성이 높다. (너무 많은 역할을 하고 있지는 않은지 생각해보자) 네이밍은 엄청나게 중요하다. 진짜로 엄청엄청. 변수명을 보고 유추하기 어렵다면 그건 잘못된 네이밍이다. 설계가 잘못되었는지 두 가지 이상의 역할을 하고 있는지 이런것들을 생각하는 것도 중요하지만 그것과는 별개로..
리팩터링 원칙 리팩터링 리팩터링 하는데 정의가 무엇일까? 정의는 다음과 같다. 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다. 여기서 겉보기 동작은 그대로 유지한 채. 라는게 중요하다. 성능을 개선하고 기능을 추가하는 거은 리팩터링이 아니다. 우리는 커밋을 할때도 기능 추가와 리팩터링 두 개의 모자를 구분해서 바꿔써야한다. 대부분의 회사에서 하는일은 유지보수다. 그리고 기능추가를 하려고 하는데 코드가 지저분할 경우가 있을 것이다. 그럴때는 먼저 리팩터링을 하자. 대단한 리팩터링을 얘기하는 것이 아니다. 함수가 좀 크다면 함수를 나누고 변수명이 모호하다면 변수명을 바꾸고 이런 기본적인 것들이라도 먼저 적용하면 훨씬 깔끔해진다. 이 이후에 코드를 보면..
배경 리팩터링2라는 책을 예전부터 알고 있었다. 개발바닥의 이동욱님을 통해서 알게되었고 꼭 스터디를 열어서 공부해야겠다고 생각했다. (클린코드, 함께 자라기, 객체지향의 사실과 오해, 오브젝트 등도 기회가 있다면 하고싶다.) 친구랑 우연히 얘기하다가 둘다 이 책으로 스터디를 하고 싶어한다는 것을 알게 되었고 스터디를 시작하게 되었다. 그리고 회사에서도 이 얘기를 하자 같이 하고 싶다고 한 두분이 있었고 회사 동료분의 친구까지 합쳐서 5명이 스터디를 하게 되었다. 이 책을 읽는 이유 사실 할 공부도 책도 너무 많다. 그 많은 책중에서 리팩터링이라는 책을 선택했다. 그 이유는 모두가 리팩터링이라는 것이 꼭 필요하다고 생각하기 때문이다. 특히 회사를 다니면 엄청 공감하게 된다. 작은 프로젝트에서는 그냥 하면 ..
책내용 1. 객체지향과 인지 능력 인간은 본능적으로 세상을 독립적이고 식별 가능한 객체의 집합으로 바라본다. 많은 사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임이라고 말하는 이유는 객체지향이 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 인간의 기본적인 인지 능력에 기반을 두고 있기 때문이다. 세상을 더 작은 객체로 분해하는 것은 본질적으로 세상이 포함하고 있는 복잡성을 극복하기 위한 인간의 작은 몸부림이다. 인간은 좀 더 단순한 객체들로 주변을 분해함으로써 자신이 몸담고 있는 세상을 이해하려고 노력한다. 즉, 객체란 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것이다. 객체지향 패러다임의 목적은 현실 세계를 모방하는 것이 아니라 현실 세계를 기반으로 새..
