인터넷 검색하다가 우연히 발견한 리뷰입니다.https://colevelup.tistory.com/54다음과 같이 댓글을 남겨서 토론도 소개했습니다. 이 내용을 두고도 토론이 생기면 내용이 더욱 풍성해질 수 있다는 생각에 기록을 남깁니다.
안영회 2024-08-29 03:19
윤영로 님께서 <켄트 벡의 Tidy First?> 책을 읽고 저에게 메일을 보내 오셨습니다. 제가 요즘 개발을 하고 있지 않다는 약점도 있고, 여기서 책에 대한 대화가 오고 가면 좋겠다는 생각에 공유를 요청 드리고 허락을 받았습니다. 많은 코드 정리인들의 답변을 기대하겠습니다. 이하는 질문입니다: 질문이 조금 모호했던 것 같아 다시 정리하고자 합니다. 제가 궁금한 것은 "기능 개선과 구조 개선에 대한 PR이 구분될 수 있는가?"입니다. 책의 내용대로 기능을 개선/추가 하기 위해서는 일련의 구조 개선 절차가 선행되어야 한다고 생각합니다. 하지만 이 작업의 단위는 PR이 아니라 커밋 아닌가요?PR은 전체 업무가 완료된 후 보낸다고 알고 있습니다. 예를 들어 "메시지 보내기" 기능 개발이 완료된 후, develop, master 브런치에 PR을 보내면 검토 후 병합하지, 그 과정에서 발생하는 구조 개선 각각에 대한 PR은 안보내지 않나요?책은 마치 "메시지 보내기" 브런치의 하위로 "코드 정리1", "기능 개발1", ... 브런치를 만들고, 각각의 세부 업무가 완료된 후 "메시지 보내기" 브런치에 PR을 보내야 한다고 말하는 것 같습니다. 만약 위의 예시가 맞다면,1. master, develop으로의 PR(기능, 구조 변경사항을 포함한 업무 단위)2. 업무 브런치로의 PR(기능 또는 구조 변경만 포함된 단위)을 구분하여 생각해야 할 것 같습니다. 올바르게 이해한 것인지 궁금합니다.
안영회 2024-05-25 00:35
<Tidy First = 코드 정리 먼저 하기?> 이후에도 한국말다운 표현을 찾는 노력은 계속해야 했습니다. 다음 포기말[1]에서 'messy'가 결정을 하게 재촉합니다.I have to change this code, but it’s messy.Messy ... 엉망, 지저분하다초안 번역은 '엉망진창'으로 했는데, 구글 검색으로 확인한 빈도수와 표준국어대사전의 뜻을 찾아보며 최종적으로 '엉망'으로 바꾸기로 합니다.그런데, 여기서 '지저분하다'의 풀이에 등장하는 '정돈'이란 단어가 <Tidy First = 코드 정리 먼저 하기?> 에서의 결정을 다시 생각하게 합니다. 사실 번역하는 동안 '정리'와 '정돈' 사이를 오갔습니다. 정리와 정돈의 상관관계그리하여 사전에서 두 낱말의 뜻을 찾아봅니다. 제가 해석한 내용은 이렇습니다. 정리에는 '理(다스릴 리)'가 있는데, '理致'와 '道理' 따위에 쓰이는 한자입니다. 그리고 정리의 풀이가 '되게 함'으로 끝난다는 점에서 다스려서 어떤 상태가 되게 하는 일로 볼 수 있습니다.반면에 정돈을 '바로잡아 정리함' 즉, 다스리는 기술이나 방법에 해당한다고 볼 수 있습니다. 최초에는 Tidy First와 같이 프로그램 작동을 위한 코드 작성이 아니라 구조 개선을 위한 일은 '정리'로 쓰기로 합니다. 반면, 뒤에 나올 tydings는 주로 기법이므로 이때는 '정돈'을 쓰는 것으로 했습니다. 그런데, 번역을 통합하여 읽어보니 정교한 구분이 득이 되지 않았습니다. 도리어 다른 말이 쓰이는 부분이 더 헷갈리게 느껴져 결국 '정리'로 통일을 했습니다.형용사의 구분은 덜 중요하다그리고 messy가 여러 번 나오자 이를 '엉망인'으로 쭉 나열하는데 '지저분한'도 같이 쓰고 싶은 충동이 들었습니다. 편향일 수도 있지만, 같은 단어를 자주 쓰면 중요한 개념으로 생각할 수 있다는 생각이 들었습니다.인간관계 그리고 활동 in 인간관계다음으로 등장한 따져 묻기를 요구하는 포기말입니다.Software design is an exercise in human relationships처음에는 'exercise'에 대해 '연습, 훈련, 활동 중에서 무엇을 택하느냐?'의 문제로 보았습니다. 그런데, 'in human relationships'는 exercise의 맥락을 한정하는 구절입니다. 그래서 다시 human relationships에 해당하는 한국말에 대해 빈도 조사를 해 보았습니다.인간관계가 대인관계에 비해 페이지 숫자로 다섯 배 이상 많았지만, 위키백과의 경우는 대인관계를 인간관계 페이지로 포워딩했습니다. 둘은 같은 뜻이지만 '인간관계'의 대표성을 인정한 것으로 보였습니다.그리고 exercise는 네이버 영어사전 풀이의 도움으로 운동이나 연습보다는 활동이 적합하다는 판단을 할 수 있었습니다.인간관계에서 몸을 써서 하는 동작은(exercise) 특정 결과를 가져오기 위한 활동[일]으로 봐야지 기량을 닦기 위한 연습이나 훈련이 주된 목적이라 하기는 어려울 듯합니다. 내친김에 표준국어대사전에서 활동의 뜻도 찾아보았습니다.인간관계 속에서 벌어지는 활동in을 기계적으로 '의'로 번역하려고 하다가 '혹시' 하는 마음에 빈도 조사를 했습니다. 언어에 대한 지식이 부족하여 글로 설명할 수는 없지만, 데이터에 근거해서 '인간관계 속에서 벌어지는 활동'이라는 표현이 분명 (상대적으로) 한국말 다운 표현이구나 판단했습니다. 그래서 번역을 수정합니다.주석[1] <한국말 말차림법>에서 제안한 문장에 대한 토박이 말입니다. 왜 포기말인지는 <언어에 대한 일반이론>에서 일부 답을 얻을 수 있습니다.
안영회 2024-03-18 07:30
개인 브런치에 '<Tidy First?> 번역이 옵션 개념을 가르치다'라는 제목의 글을 쓴 일이 있습니다. 이 책에서 옵션의 개념은 설계를 언제할 것인지 선택하기 위한 근거를 제공합니다. 올바르게 번역하기 위해서 최소한의 배경 지식은 배우지 않을 수 없었습니다. 이와 유사하게 '24장 경제 이론: 시간 가치와 선택 가능성'에는 학습이 필요한 세 가지 개념이 더 있었습니다.하나는 냉동 욕망으로 묘사한 돈의 속성이고, 다른 두 개는 순현재 가치(Net Present Value) 와 옵션 그릭스(options greeks) 입니다. 이 글에서는 책 내용 자체를 다루는 대신에 번역 과정에서 제가 배경 지식을 학습한 방법과 과정을 공유하여 여러분도 빠르게 낯선 지식을 배울 때 일부나마 도움을 드리고자 합니다.James Buchan의 Frozen Desire책 24장에서 James Buchan의 Frozen Desire란 책을 소개합니다. 다음과 같이 번역을 하기 전에 오역을 막기 위해 조사를 좀 했습니다.제임스 뷰찬James Buchan은 『Frozen Desire』(Picador, 1998)에서 사람은 종종 원하는 물건이 있지만 당장 갖고 싶지는 않을 때가 있는데, 돈은 바로 이러한 ‘냉동 욕망frozen desire’을 대변한다고 주장합니다. 한 달 동안 먹을 수 있을 만큼의 가치를 벌었지만, 한 달 치 식량을 저장하고 싶지 않다면, 벌어들인 가치를 저장했다가 일주일에 한 번씩 신선한 상추로 편리하게 바꿀 수 있게 되니 굉장히 편리하게 해 주죠.먼저 책 제목을 구글 검색으로 찾아보았습니다.그러고 나서 책 내용이 어떤 것인지는 구글 제미나이 에 묻는 방법으로 알아 보았습니다.그렇게 얻은 제미나이의 설명에 손때를 묻혀 시대순 그림으로 편집을 해 보았습니다.물론 위 그림이 책을 다 요약했다고 할 수는 없습니다. 그저 맥락이 되는 뼈대를 시대로 단순화한 정보일 뿐이죠. 그 뒤로 이어지는 제미나이의 설명도 의미가 있었습니다.Buchan은 각 시대에 돈이 어떻게 사용되었고, 어떻게 발전했는지에 대한 자세한 내용을 제공합니다. 그는 또한 돈이 사회와 경제에 미치는 영향을 논의합니다.Buchan은 돈이 복잡하고 역동적인 개념이라고 주장합니다. 돈은 단순히 물건과 서비스를 구매하는 수단이 아니라, 권력, 지위, 심지어 행복과 같은 복잡한 개념을 나타낼 수도 있습니다.Frozen Desire는 돈에 대한 흥미롭고 통찰력 있는 책입니다. 그것은 돈의 역사와 의미에 대한 깊은 이해를 제공합니다.생성형 AI로 NPV와 options greeks 알아 보기NPV와 options greeks라는 단어 번역을 위해서도 구글 검색이나 구글 제미나이 활용으로 배경 지식을 습득했습니다.'물론입니다'라는 말이 기분을 좋게 해 주고 신뢰도 주는 듯합니다.AI와 검색 엔진 혼용으로 이득을 보는 경우options greeks는 제미나이만으로는 조금 부족하다고 느꼈습니다. 일단 아주 짧은 시간에 개괄적 이해를 할 수 있게 하는 효율성에서는 높은 점수를 줄만 합니다.설명 중에서 '그리스인'은 greek의 번역 과정에서 생긴 오류라 짐작이 되었습니다. 제미나이를 잘 쓰는 것이 목적이라면 영어로 질문해야겠으나 제 경우는 제미나이 잘 쓰기는 중요성이 낮아서 확인을 위한 질문으로 짐작을 확인했습니다.그리고 이어서 '옵션 그리스의 이해'를 키워드로 구글 검색을 해 보니 상단에 유용한 자료들이 나왔습니다.생성형 AI에게 배워서 질문하기제미나이에 비해 검색 페이지가 갖는 이점은 사람이 시간을 두고 다듬은 페이지이기 때문에 정보들 사이의 관계나 구조, 계층 따위가 잘 드러난다는 점입니다.제미나이의 답변 마지막 두 문장은 생성형 AI가 아니었다면 질문할 수조차 없던 지식이었다는 점을 깨닫습니다. 연초에 개인 브랜치에서 <배경 지식이 부족해도 AI 논문을 빠르게 읽는 법>에서 공유했던 노하우를 활용하게 되네요.이처럼 수학과 과학 분야에서 널리 사용되는 그리스 문자를 사용하여 옵션 그리스라는 개념을 표현하면, 보다 이해하기 쉽고 직관적일 수 있습니다. 옵션 그리스에서 그리스 문자를 사용하기 시작한 정확한 시기는 알려져 있지 않습니다. 다만, 1970년대 후반부터 옵션 거래가 활성화되면서 그리스 문자를 사용하기 시작했다고 추정됩니다.다만, 한글 표현으로는 "옵션 그릭스"라는 표현이 "옵션 그리스어"보다 널리 쓰여서 번역에 쓸 단어로는 "옵션 그릭스"로 결정했습니다.
안영회 2024-03-08 04:28
요즘IT 글로 알린 대로 Kent Beck의 를 번역하고 있습니다. 소식을 들은 어떤 분이 '왕이 귀환'이라고까지 표현했는데, Kent Beck의 정교한 글솜씨를 제대로 풀어낼 수 있을지 확신이 없었습니다.하지만, 사람의 운명은 시간의 제약을 받습니다. 그리고 저는 연말을 보내면서 <인생은 순간이다>에서 읽은 김성근 감독님 글말 덕분에 올해부터 핑계 없는 삶을 실천하려고 합니다. 그리하여 Tidy First 번역은 완벽하게 해 내지 못하더라도, 제가 고민한 내용을 최대한 남겨 제가 할 수 있는 일을 하는데 시간과 노력을 기울이기로 합니다. 걱정하는 대신 말이죠.What Is Tidy First?Preface부터 고민하게 만드는 표현입니다. 최초에 책을 집어 들었을 때와 초안 번역을 끝낸 한 달 사이에 생각이 많이 바뀌었습니다. 번역을 하고 싶은 사람에서 번역하고 있는 사람으로 변모한 상태에서 'Tidy First'에 대한 한국말을 생각나는 순서로 후보를 써 봅니다.코드부터 정리할 것인가?코드 정리를 먼저 할 것인가?코드 정돈 우선할까?책을 읽고 나서 Tidy가 '코드를 정리하다' 혹은 '코드를 정돈하다'의 뜻을 갖는다는 사실을 알 수 있습니다. 하지만, 코드 정리와 동작[1] 수정이 독자들의 머릿속에서도 나뉘어서 이해될 수 있는지 의구심이 들었습니다. 제 의구심을 그림으로 표현했더니 스스로도 더 분명해집니다.첫 번째 후보인 '코드부터 정리할 것인가?'라고 했다가는 지금 어떤 작업을 할 시간인가를 정하는 이 책에서 제안하는 작은 단계에 대한 인식을 모호하게 만듭니다. 동작 수정을 할 때와 코드 정리를 할 때는 기본적으로 상호 배타적이라고 이해해야 할 듯합니다.이에 대해 Kent Beck에게 질문[2]하고 얻은 답변입니다.Correct. Separating "changes to structure" from "changes to behavior" is a big part of the message of the book. Developers naturally seem to lump them together, causing all kinds of problems. And I say "changing" instead of "fixing" because the current behavior may not be broken, just incomplete.정리 vs 정돈 그리고 우선 vs 먼저나머지 두 후보 사이에서는 뜻 자체보다는 한국말 표현으로 무엇이 더 적합할지를 경합하는 상황으로 느껴집니다. 정리와 정돈은 단어 사이의 경합이고, '먼저 하다'와 '우선하다'는 뜻은 차이가 없는 듯하나 성분의 구성이 다릅니다. 하나씩 따져 보기로 합니다.번역을 시작할 즈음인 지난해 12월 2일 베타 리더와 함께 쓰는 두레이 업무 이름을 'Tidying은 뭐라 번역할까? ... 정리정돈? 코드정돈? 코드정돈술?'이라고 짓고 베타 리더들에게 제 의도를 설명한 글을 올린 일이 있습니다.'정리'는 너무 모호하고, 정리정돈은 어릴 적 많이 들어서인지 착 감기고 책에서 말하는 접근과도 유사하다는 느낌이 들었습니다. 제 편향에 갇힐까 봐 찾아보았는데, 네이버 지식백과에서 풍부하게 쓰이고 있다는 생각이 지배적이었습니다.코드 정돈이 아닌 코드 정리하지만, 한 달 정도의 시간 동안 초안 번역을 마친 지금은 '코드 정리'라고 명확하게 한정하는 편이 더 낫다는 생각입니다.반면 아직 '정리'와 '정돈' 사이에서 어떤 낱말을 쓸지는 확정하지 않았습니다. 지금 따려 보려고 합니다. 일단 생각 이전에 경합하는 단어의 사용 빈도를 구글 검색을 통해 알아봅니다.[3]데이터를 보며 근거가 빈약한 제 편향을 극복하고 '코드 정리'로 쓰기로 마음먹습니다.주석[1] 코드와 연결된 behavior에 대응하는 한국말에 대해 '동작', '작동', '기능' 사이에서 고민하다가 최종적으로 '동작'으로 결정했습니다.[2] I am working on Korean words for important concepts. I've been thinking about "Tidy First?" and I'm asking to check my assumptions. It's my understanding that fixing behavior and cleaning up code are basically mutually exclusive, is my assumption correct?[3] 아주 오래전 이 방법을 전수해 주신 임춘봉 훈장님께 고마움을 느끼고 표합니다.
안영회 2024-02-29 23:01
번역서 서문을 쓰면서 좋은 점 한 가지는 원어 서적을 출간하고 나서 관찰했던 내용을 추가할 수 있다는 점입니다. 책을 읽기 전에, 여기 계신 여러분에게 몇 가지 요점을 알려 드리고자 합니다.이 책은 얇습니다. 그런데 얇은 이유가 따로 있지요.제 생각에 IT 서적을 주로 읽는 대부분의 독자는, 보통 많은 분량을 집중해서 읽지 않습니다. 그래서 이 책도 최소한의 분량으로 구성했습니다.여기에 있는 개념은 소프트웨어 설계에 대해 제가 알고 있는(또는 안다고 생각하는) 것의 일부이지만, 제가 가장 자신 있게 설명할 수 있는 개념입니다. 더 많이 쓸 수도 있었으나 그 부분들은 오히려 안 하느니만 못할 우려가 있었죠.이 책은 연작으로 기획 중인 최소 3권의 시리즈 중 첫 번째입니다. 여러분이 이 책의 내용을 적용하는 데 익숙해지고, 제가 추가 개념을 더 잘 설명할 수 있게 된다면 우리는 함께 2권을 더 나은 환경에서 준비할 수 있게 될 것입니다. 물론, 그렇다면 2권에 이어 우리는 또 3권도 준비하게 될 것입니다.숙련된 개발자들 입장에서 보면, 이 책에는 새롭다고 할 만한 내용은 별로 없다고 말합니다. 그런데도 책을 읽고 나서는, 이전보다 더 명확히 스스로 설명할 수 있게 되었다고 고백합니다. 총 3부 중에서 1부에 있는 코드 정리 내용이 여러분에게는 기본에 불과한 것으로 드러나더라도 나머지를 계속 읽어 보기를 권합니다. 책이 얇은 만큼, 코드 정리는 금방 지나가고 대신, 여러분을 성공으로 이끌어 온 몇 가지 기술을 1부 이후에서 새로운 시각으로 설명했기 때문입니다.비숙련 개발자들은 책의 초반부에서 기술 체크리스트를 제시했다고 말하기도 합니다. 코드 정리에 적용할 기회를 하나라도 찾아보세요. 친구들과 함께 포켓몬 게임하듯이 진행해 보세요. 그리고 모두 잡아 봅시다.관리자로서는 엔지니어들이 여러 해 동안 이야기해 온 것을 이제야 잘 이해할 수 있게 되었다고 말합니다. 엔지니어링과 제품 관리자를 대상으로 한 것은 아니지만, 일단 책이 얇잖아요. 그만큼 누구나 빠르게 읽을 수 있는 책입니다.익스트림 프로그래밍(XP)에서 얻은 한 가지 경험은, 국가 문화가 소프트웨어 개발에 미치는 영향이 매우 지대하다는 점이었습니다. ‘한국인으로서’ 여러분과 여러분의 팀에서는 소프트웨어 설계에 어떤 취향을 가질지 잘 모르겠습니다. 그러나 소프트웨어 설계를 형성하는 근본적인 힘은 여러분이 지구상에 어디에 계시던지 똑같이 작용합니다. 결합도는 결합도일 뿐입니다. 미래를 예측할 수 없다고 말하면 그저 미래를 예측할 수 없다는 의미입니다.따라서 여러분은 이러한 저의 아이디어를 받아들이고, 의미 있다고 생각되는 선에서 적용해 봤으면 좋겠습니다. 1년 정도 지나서 다음 편에서 또 뵙겠습니다.켄트 벡,2024년, 샌프란시스코원문 전문도 함께 공개합니다.One advantage of writing the preface for translations of a work is that I can include observations from the release of the book in its original language. Here are some points I'd like you to know before you start reading.This book is short. It's short for reasons, though.I believe most readers only read the first 100 pages of technical books, so I stopped after 100 pages.The concepts here are a fraction of what I know (or think I know) about software design, but they are the concepts I'm most confident in explaining. I could have written more, but the explanations would have been worse.It's the first of at least 3 books. When you have had a chance to get comfortable applying the contents of this book & I have gotten better at explaining more concepts, then we will both be better prepared for book 2. Book 2 will prepare us for book 3.Senior developers have reported that there is little new information for them in this book. However, after reading it they have been able to explain themselves more clearly than before. If the first third, the tidyings, see, basic to you, I invite you to keep reading. Because the book is short, the tidyings will soon be over & you will find new explanations for some of the techniques that have made you successful.Junior developers have reported that the early parts of the book have given them a checklist of skills. Try to find one opportunity to apply each tidying. Make it a kind of Pokemon game with your friends--catch 'em all.Managers have reported being able to better understand what engineers have been talking about all these years. While not directed at engineering & product managers, it's a short book. You can wade through it quickly.One experience from Extreme Programming was the profound influence national culture has on software development. I don't know how being Korean will flavor software design for you & your team. However, the fundamental natural forces shaping software design don't care about your location on a map. Coupling is coupling. Not being able to predict the future is not being able to predict the future.I invite you to take these ideas & apply them in ways that make sense to you. I'll see you in a year or so with the next installment.Kent BeckSan Francisco, 2023
안영회 2024-02-14 07:45