처음 처음 | 이전 이전 | 1 | 2 |다음 다음 | 마지막 마지막
학교에서 알려주지 않는 17가지 실무 개발 기술 - 문자열 인코딩부터 웹 필수 지식까지
이기곤 지음 / 한빛미디어 / 2020년 4월
평점 :
장바구니담기


이 책의 목차를 보고 신입 때가 많이 생각났다. 아무것도 모르는 시절, 이런저런 문제들을 어찌어찌 해결하던 날들 말이다. 내 컴퓨터에선 잘 보이던 웹 페이지가 다른 컴퓨터에선 깨져서 인코딩을 수정했던 일들, 날짜 계산을 하는데 갑자기 1970년이 나와서 당황했던 경험. 그래서 이 책은 반갑다. 개발하면서 많은 시간을 할애하진 않지만 잘못 쓰면 문제가 생길 수 있는 주제들에 대해 친절하게 설명하고 있다. 왜 Java 클래스의 hashCode()를 구현해야 하는지, 암호화할 때 MD5는 사용하면 안 되는지, 단순히 '이렇게 하면 된다'가 아닌 기술의 히스토리 알고 나서 '이런 이유 때문에 이렇게 하면 된다'라는 지식이 쌓이면 개발을 하는데 더 풍요롭게 일 할 수 있다고 생각한다.

UUID를 사용하지만 어떤 원리로 문장열이 생성되는 건지, JSON과 YAML을 사용하지만 그 이유가 무엇인지 생각해본 적이 없다면 이 책을 읽는 것을 추천한다. 이미지를 DB에 저장할 수 있는 방법이 있을까? 이런 고민을 하다 보면 BASE64라는 키워드를 만나게 되고 잘은 모르지만 BASE64를 사용해서 문제를 해결하기도 할 것이다.

이 책에서 소개하는 기술을 모두 사용해보거나 외울 필요는 없습니다. 이러한 기술이 있다는 것만 기억하면 됩니다.
더 나아가 언제 사용하는 게 가장 적합한지도 알아두면 더 좋겠습니다.

저자의 말에 쓰인 이 두 문장이 책의 목적을 말해준다. 우리는 이 책에서 설명하는 지식을 최소 한 번 이상 경험하며 일을 해나가겠지만 제대로 알지 못하고 개발한다면 언젠가 문제가 발생하거나 문제 해결에 어려움을 겪을 수도 있다. 어쩌면 이런 문제가 있는지도 모른 채 지나갈 수도 있다. 하지만 이 책을 한 번 읽고 나면 코드에서 더 많은 것을 보고 깨달을 수도 있지 않을까 싶다.

이 책에서 소개하는 기술을 모두 사용해보거나 외울 필요는 없습니다. 이러한 기술이 있다는 것만 기억하면 됩니다.
더 나아가 언제 사용하는 게 가장 적합한지도 알아두면 더 좋겠습니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
리팩터링 2판 (리팩토링 개정판) - 코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기
마틴 파울러 지음, 개앞맵시 외 옮김 / 한빛미디어 / 2020년 4월
평점 :
장바구니담기


블라인드 앱의 IT 엔지니어 게시판에는 코드의 품질을 탓하는 글들이 자주 올라온다. 전임자가 남긴 코드를 유지보수 해야하는 상황에서 어디서부터 손대야할지 모르겠다거나, 협업을 해야하는 개발자의 코드가 마음에 안든다거나 하는 글들이다. 나 역시 비슷한 경험이 있다. 지난 프로젝트에서 경험이 많은 개발자와 협업을 해야하는 상황이었는데 그 분에게 많은걸 배웠지만 코드 작성 방법에 있어서 서로 다른 방법을 추구했다.

// 변수 선언과 할당의 분리는 어떤 상황에선 개발자의 의도와 다른 동작을 초래한다.
String foo;
foo = "mypath";

정답이 있는 건 아니지만 최선은 추구해야 할 것이다. 내가 신경 쓰이는 부분은 위와 같이 변수의 선언과 할당을 분리하는 것이다. 과거 학교에서 C 언어를 처음 배울 땐 함수에서 쓸 변수를 최상단에 선언하고 나중에 할당을 했지만 최근에는 변수의 이력을 선언까지 왔다 갔다 하며 이력을 살펴봐야 하고, 중간에 변수의 값이 어떻게 변경될지 알 수 없기 때문에 변수를 할당할 때 초기화(할당)를 하고 최소 선언과 할당을 나누더라도 최대한 가까운 곳에 코드를 배치하게 권장하고 있다. 하지만 이는 스택오버플로에서도 질문이 올라올 만큼 현재도 여러 스타일이 혼재해있는 게 현실이다.


남의 코드를 수정하는 건 민감한 문제이다. 어떤 개발자들은 코드에 자신을 투사해서 다른 사람이 자신이 작성한 코드를 수정하면 자존심이 상하는 것은 물론 고성이 오가기도 한다. (SI 프로젝트에서 자주 봤다..) 그렇다고 수정할 수 있을 때 수정하지 않으면 나중에 소스코드를 인계받을 때 아래와 같은 마음이 된다. 위의 선언과 할당 분리는 최초 작성한 코드에선 문제가 없어도 기능이 추가되고 유지 보수하면서 코드를 수정할수록 코드가 오동작할 가능성이 커지게 된다. 코드를 읽기 힘든 건 덤이다.


이런 상황에서 코드를 넘겨받으면 어떻게 해야 할까? 설계 문서가 있으니 괜찮다고 생각하면 안 된다. 설계 문서와 이를 구현한 코드가 다를 땐 더 큰 혼란이 온다. 넘겨받은 코드가 깔끔하면 좋겠지만 대부분은 그렇지 않다. 특히나 SI 프로젝트에선 기한에 쫓겨 개발하기 때문에 경험상 코드의 품질을 기대할 수 없는 경우가 대부분이었다. 운영팀으로 4년 정도 일하면서 비슷한 고민을 많이 했다. 코드를 넘겨준 개발자를 원망할 때도 있었고, 차마 건들 수 없어서 새로 만든 코드도 있었다. 그렇게 소스코드는 거대한 스파게티가 된다.


그러던 중 리팩터링과 TDD에 관한 세미나를 참여할 기회가 있었다. 기존에 존재하는 복잡도 높은 코드를 어떻게 유지 보수하기 쉬운 코드로 수정할 수 있을까. 몇 시간 동안에 리팩터링에 대한 간단한 기법을 배우고 어떻게 해나가야 할지 배웠다. 유용했지만 ‘과연 실무에서 리팩터링을 해나갈 수 있을까?’라는 질문은 여전히 떨칠 수 없었다. 그러던 중 마틴 파울러가 쓴 리팩터링의 2판이 나왔다는 소식을 접했다. 2판을 쓰면서 예제 언어를 자바스크립트로 바꿨지만, 이 책에서 말하는 기법들과 리팩터링의 원칙은 모든 언어에서 적용할 수 있는 지식이다. 예제를 따라가며 리팩터링을 학습할 수도 있고, 필요할 때마다 리팩터링 기법을 여기저기 찾아다니며 적용할 수도 있다.


동일한 코드가 주어졌더라도 개발자마다 생각하는 리팩터링 방향은 다를 수 있다. 그럴 수밖에 없는 게 코드에 정답이란 건 없으니까, 우린 우리가 옳다고 생각하는 방향으로 최선을 다할 뿐이다. 하지만 절대 원칙은 있다. ‘코드가 전과 같이 동작해야 한다’는 것. 마틴 파울러는 테스트를 통해 동작의 일관성을 유지해야 한다고 말한다. 테스트 코드 작성을 통해 어떤 단위 기능의 동작에 대한 명세(specification)를 대신할 수도 있다. 어떤 사람들은 테스트 코드를 작성하면 개발 생산성이 떨어진다고 주장한다. 당연히 코드 작성량이 배가 되지만, 이를 통해 우리는 안정감을 얻을 수 있다. 세상에 변하지 않는 건 없다. 코드도 그렇다. 실시간으로 변하는 요구사항에 맞춰 코드를 작성하다 보면 망망대해에 방향 잃은 배에 탄 것처럼 혼란스럽고 외로울 때가 있다. 이때 테스트 코드는 목적지를 가리키는 나침반이 돼줄 것이다.


복잡한 코드, 알 수 없는 코드를 작성한 사람을 원망하는 건 그만하자. 이제 앞으로 나아가야 할 때이다. 조금씩 리팩터링을 해보자. 내가 수정하는 파일만이라도 보이스카웃 규 칙을 생각하며 리팩터링 해보자. 물론 쉬운 일이 아닐 것이다. 하지만 누군가는 해야 하는 일이니까 지금부터라도 해보는 건 어떨까?


이 글의 제목과 내용은 나에게 하는 말이다.




댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
출판사가 OK하는 책쓰기 : 악마 편집자가 신랄하게 알려준다! - 책 기획, 책 쓰기, 글쓰기, 마케팅, 저작권을 한 권에
최현우 지음 / 한빛미디어 / 2020년 2월
평점 :
장바구니담기


이 글에는 스포일러가 포함되어 있습니다.

최근에 목표가 하나 생겼다. IT 관련 책을 쓰는 것이다. 기술서가 될 수도 있고, 에세이 같은 책이 될 수도 있겠다. 지금은 책을 쓰기엔 턱없이 부족하다고 생각하지만, 내가 IT 업계에서 오랜 기간 일한다면 책을 쓸 수 있는 사람이 되지 않을까 막연히 생각해보는 것이다. 책을 쓰려면 전문적인 지식은 당연하고 쉽게 설명할 수 있는 표현력과 책을 쓰려는 목적과 열정이 있어야 할 것이다. 책을 쓰고 싶은 이유는 공명심이다. 그리고 책을 쓸만한, 아는 게 많은, 훌륭한, 본받을만한 사람이 되고 싶은 내 소망이기도 하다.



'출판사가 OK 하는 책 쓰기'의 저자인 최현우 편집자님은 이런 마음을 가진 나 같은 사람을 타깃으로 책을 썼다. 서문에서 책을 쓸만한 자질을 가졌는지부터 시작해서 출판계의 현실, 베스트셀러가 얼마나 힘든 건지, 실제로 책을 집필하는 과정이 얼마나 험난한지(1장)에 대해 이야기하며 나의 환상을 와장창 깨뜨린다. 그럼에도 불구하고 책을 써야 하는 이유에 대해 역설하고 단순히 책을 쓰는 것을 넘어 집필하는 사람뿐만 아니라 독자와 출판사를 만족시킬 책을 쓰는 방법에 대해 설명한다.


내가 가장 도움이 된 내용은 7장: 미운 글 피하기이다. IT 특성상 영문 정보를 다뤄야 하는 상황이 많다. 최신 기술은 대부분 영어권에서 시작하고, 커뮤니티나 블로그도 영문을 피하기 힘들기 때문이다. 나도 그렇고 많은 사람들이 원문 번역을 많이 시도하는데, 내가 힘든 부분은 원문의 의도와 내용을 그대로 전달하면서 읽기 쉬운 글을 만드는 것이다. 아무래도 전문 번역가가 아니고 영어에 친숙하지도 않은데 영문을 봐야 하니 번역을 해도 무슨 말인지 모르겠는 글이 나올 때가 많다. IT 서적이 많이 나오는 출판사의 편집자 셔서 그런지 이런 고통을 많이 겪으신 것 같다. 흔한 번역투 로 언급한 내용은 모두 나를 포함해서 IT 정보를 번역하는 사람들이 한 번씩 읽어봐야 하는 필수적인 내용이다. 책에 나온 경우만 고쳐도 훨씬 더 읽기 쉬운 글이 될 것이라 확신한다. 적어도 이 열두 가지 경우는 고쳐나가자라는 마음으로 조금씩 개선하겠다고 생각해본다.


출판사 디자이너인 아내를 통해 책이 만들어지는 과정과 그 사이의 이야기를 듣다 보면 모든 책이 항상 유익하진 않다는 걸 생각해보게 된다. 저자는 ‘자기만족의 책은’ 독자와 출판사에게 아무런 이로움을 주지 못한다고, 차라리 자비출판을 하는 게 낫다고 일갈하기도 한다. 책 쓰기가 적성에 맞지 않는다면 힘들고 성과도 얻기 힘들 것’이라고 냉정하게 조언하기도 한다. 그만큼 책을 쓰는 일은 힘들고, 그렇게 만든 책이 사람들의 사랑을 받는 건 더 힘들다.


그럼에도 책을 써야 할까?

그렇다면 어떻게 써야 할까.
책을 쓰려고 마음먹었으면 제대로 열심히 써야 하지 않을까?


이 책과 함께 한 걸음씩 걸어가다 보면 그런 책을 쓸 수 있을까?
조금은 가까워질지도 모르겠단 생각을 해본다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 


5개의 상품이 있습니다.

Head First Design Patterns- 스토리가 있는 패턴학습법
에릭 프리먼 외 지음, 서환수 옮김 / 한빛미디어 / 2005년 9월
28,000원 → 25,200원(10%할인) / 마일리지 1,400원(5% 적립)
2020년 01월 07일에 저장
구판절판
클린 코드 Clean Code- 애자일 소프트웨어 장인 정신
로버트 C. 마틴 지음, 이해영.박재호 옮김 / 인사이트 / 2013년 12월
33,000원 → 29,700원(10%할인) / 마일리지 1,650원(5% 적립)
양탄자배송
밤 11시 잠들기전 배송
2020년 01월 07일에 저장

실용주의 프로그래머
앤드류 헌트 & 데이비드 토머스 지음, 김창준 외 옮김 / 인사이트 / 2014년 3월
25,000원 → 22,500원(10%할인) / 마일리지 1,250원(5% 적립)
2019년 12월 17일에 저장
구판절판
객체지향의 사실과 오해- 역할, 책임, 협력 관점에서 본 객체지향
조영호 지음 / 위키북스 / 2015년 6월
20,000원 → 18,000원(10%할인) / 마일리지 1,000원(5% 적립)
양탄자배송
밤 11시 잠들기전 배송
2019년 12월 17일에 저장



5개의 상품이 있습니다.

댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기
 
 
 
처음 처음 | 이전 이전 | 1 | 2 |다음 다음 | 마지막 마지막