|
안녕하세요? 요즘 들어 더 나은 프로그래머가 되고 싶은 욕구가 더 많아지고 있는 글 쓰는 개발자, 품격 있는 직장인 부자입니다. 개발자로 일을 한 지 꽤 많은 시간이 지났지만 아직도 뭔가 많이 부족한 것 같고, 특히 최근에는 발전하는 것이 없다고 느낀 날이 많아서 현타가 오기도 하는 때가 많았던 것 같아요. ![]() 업무에 쫓겨서 밀려들어오는 일만 처리하다 보니 더 효율적이고 좋은 방법을 공부하고 찾아내려는데 투자하는 시간이 많이 줄어들게 되었던 것이 아닌가 싶습니다. 바쁜 일이 좀 끝나면 아주 기본서부터 시작해서 강의와 책들을 다시 하나씩 섭력해 보려고 합니다. 아직 완전히 정독하지는 못했지만 오늘 소개할 책 『더 나은 프로그래머 되는 법』도 그중 하나입니다. 오랜만에 비 오는 날 카페에 앉아서 책 전반적인 내용을 천천히 훑어봤습니다. 예전에는 맞는 말이지만 공감하지는 못했을 내용들이라고 생각되는 것들이 지금은 많이 와닿습니다. 평소에 고민했던 것에 대한 답과 조언이 많이 담겨있었어요. ![]() ![]() 책 『더 나은 프로그래머 되는 법』의 대상 독자와 목차 5개의 큰 PART로 구성되어 있습니다. 이 책의 저자는 개발자를 포함해 업계 전문가들 전체에게 도움이 될 것이라고 자신 있게 말하고 있습니다. 상당히 실용적인 책이라고 생각됩니다.
![]() ![]() 똥통 같은 코드를 처리하는 방법 늪과 같은 코드, 코드가 너무 촘촘해서 고치기도 어렵고 바꿔보려고 하면 많은 에러를 뱉어내는 것을 똥통으로 표현합니다. 실제로 내가 이런 코드를 작성해 내는 개발자가 중 하나일 수도 있지만... 어쨌든 우리 개발자들은 이런 코드를 발견하면 잘 처리하고 이겨내야 합니다. PART 1의 챕터 7에서는 똥통을 어떻게 잘 처리할 수 있을지 재밌게 다루고 있습니다. 실질적인 예가 없어서 아쉽기는 하지만 생각을 많이 하게 해주는 부분이었습니다. ![]() ![]() 다른 직업군들보다 유독 더 많은 것을 공부할 수밖에 없는 것이 IT업계 그리고 특히 개발자들이라고 생각합니다. 공부하는 것을 더 좋아한다기보다는 하지 않으면 살아남을 수 없을 정도로 빠르게 변화하고 오래된 기술은 사양되는 경우가 많기 때문이죠. 파트 3에서는 우리가 어떻게 공부하고 무엇을 배우며 습득할지 실마리를 던져줍니다. 제가 얼마나 공부를 안 하고 있는지 반성하게 되는 파트였어요. ![]() ![]() '독립적인 파트에서 일을 하다 보니'라는 핑계로 혼자만의 규칙을 가지고 코딩을 하는 경우가 많습니다. 그런데 이 규칙도 제대로 문서화되어 있지 않다 보니 자주 바뀌고... 알면서도 잘 안되는 버전 관리와 개발 규칙에 대해서 다시 한번 상기해 주는 내용도 책에서 잘 설명하고 있습니다.
코드를 무조건 짧게 하는 것이 좋은 것은 아닐 수 있지만 단순해야 할 코드가 단순하지 않는 것은 문제가 있고 실수할 여지가 충분히 있겠죠. 아주 쉬운 예이지만 실제로 위와 같은 코드를 많이 발견하게 됩니다. 당장 다음 주부터 개발 중에 위 그림과 같은 부분이 없는지 살펴봐야겠습니다. ![]() 코드는 나 혼자만 보기 위해서 작성하는 것이 아님을 명심해야 합니다. 그리고 현재의 나뿐만 아니라 미래의 나를 같은 사람으로 보지도 않아야 합니다. 인간은 망각의 동물이란 것을 개발을 하면 할수록 확실하게 느끼게 됩니다. 유지 보수를 위해서 어떤 코드를 어떻게 작성해야 할지 고민이 많아지네요. ![]() 이 책의 장점 중 하나는 위 사진과 같이 '생각해 보기'와 '연습해 보기'가 해당 챕터에서 배운 내용으로 꽤 구체적으로 되어 있다는 점입니다. 어떤 부분이 부족한지 무엇을 생각해야 할지 짚어줘서 더 많은 생각을 하게 만들어줍니다. ![]() ![]() 책의 마지막 Appendix에는 국내 개발자 8인의 이야기가 담겨있습니다. 업계의 선배들을 직접 만나보거나 이야기해 볼 수 있는 기회를 갖기는 정말 어렵지만 이렇게 책을 통해서 다양한 노하우들을 배울 수 있으니 좋은 것 같습니다. 짧은 내용이지만 같은 고민을 해 본 개발자라면 많은 부분을 공감하고 읽을 수 있을 겁니다. ![]() 책을 곱씹어 보면 나의 개발자로서의 발전을 어떻게 진척시킬 수 있을지 고민하게 합니다. 이번 여름에는 한 단계 더 발전하는 시간을 책을 통해서 고민하고 공부해 봐야겠다는 생각이 많이 드는 하루입니다. ![]() 다행인 점은 이 책을 읽는 (저를 포함한) 개발자들은 누구나 코드에 신경을 쓰고 있음을 증명한다고 생각합니다. 신경을 쓴다는 것이 더 나은 코드를 만들고 있다는 것을 의미하지는 않지만 말이죠. 그럼에도 조금은 더 발전할 수 있지 않을까요? "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
![]() 만감이 교차하게 만드는 책이랄까. 그저 발갛게 빛을 내고 있는 숯에 바람을 불게 만든다고 할까. 이 책을 읽고 있으면 다시 열심히 해야겠다는 생각이 든다. 살아오면서 훌륭하게 코딩을 하지는 못했지만 더 나아지려고 노력은 분명했으니까. 우리는 코드보다 시퀀스가 더 중요한 메카트로닉스 쪽에 가까워 코드 자체도 보수적이었지만 이런 책을 볼 때마다 뭔가 두근댄다. 개발자로서의 할 일과 자세 그리고 함께 일하는 방법 그리고 약간의 위로까지 담고 있는 이 책은 한빛미디어의 지원으로 읽어볼 수 있었다. 사실 이런 책은 굉장히 딱딱하고 건조하다. 잘하기 위한 방법은 대체로 비슷하고 굉장히 엄격한 자기 계발서처럼 만능을 요구하기 때문이다. 누구는 날 때부터 코딩을 잘했을까 싶지만 하나씩 고치지 않으면 향상되지 않는다. 그럼에도 안타까운 것은 커다란 소프트웨어 조직에서 직접 겪을 수 있는 경험은 테스트 서버도 없는 작은 회사에서 공부만으로 해결되지는 않는다. 이 책의 시작도 크게 다르지 않았지만 왠지 모를 유쾌함이 있다. 우린 서로 쓰레기 같은 코드를 내뱉고 있고 버그 사냥을 나선다. 똥통에 뒹굴기도 한다. 내가 남의 코드에 하소연할 때 다른 이도 나의 코드에서 헤매고 있을지도 모른다. 그저 나 스스로 잘하려고 노력하는 편이 낫다. 언어는 굉장한 속도로 새로운 것들이 발표된다. 그것은 모두 자신만의 장점을 가지고 있다. 하나만 제대로 아는 것도 중요하지만 적어도 두 개 정도는 깊숙이 공부해 보는 것도 나쁘지 않다. 서로의 단점을 보완할 수 있을지도 거다. 반대로 어떤 프로그램이라도 의미는 있을 거다. AI가 판치는 지금의 세상에서도 어셈블러나 기계어를 배우는 것도 이해의 측면에서 괜찮은 선택이며 결국 누군가는 하고 있을 일이다. 새벽에 거리를 청소하는 청소부들처럼 눈에 띄지 않지만 꼭 필요한 존재다. 여러 테크닉적인 글보다 자세에 대한 얘기가 좋았다. 물론 코딩하는 자세 같은 것도 있다. 조는 자세나 좌절하는 자세 밤샘하는 자세 같은 것도 있어 유쾌했다(미소를 짓지 않을 수 없다!). 그리고 개발자로서 프로그래머로서 살아가는 자세에 대한 얘기도 좋았다. 코딩이라는 것도 결국 언어다. 언어라는 것은 사랑할 때 즐겨 쓸 때 잘하게 된다. 코딩은 일이기도 하다. '더 열심히'하는 것보다 '더 현명하게'일할 필요가 있다. 내가 잘할 거라는 착각도 버리고 가져다 쓸 수 있으면 가져다 쓰고 살 수 있으면 사는 것도 방법이다. 비용 대비 실적을 얘기할 수 있는 건 결국 일이기 때문이다. 소프트웨어로 산다는 건 끊임없이 공부해야 한다는 것과 같다. 순간순간 새로운 기술들이 쏟아지기 때문이다. 결국 이런 상황을 받아들이는 태도가 중요하다. 어쩌면 언어를 사랑하는 감정이 더 중요할지도. 책은 프로그래머 자체의 삶에 대한 얘기며 더 나아가 조직에서의 프로그래머가 할 일을 얘기하기도 한다. 챕터마다 다른 얘기가 있다. 위로받고 싶다거나 멘털을 잡고 쉽다면 뒷 부부만 읽어도 될 듯하다. 시중에 나온 굉장히 빡빡한 문장으로 가득 찬 책들과 달리 여유가 있으면서도 할 말은 하는 책이다. 위트 있는 선배 같은 책이었다. |
![]() "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." 해서, 최대한 책을 펼쳐놓는 형태로 리뷰를 작성해 보려고 합니다. 그 중에 자신에게 맞는 부분이 있다면 책을 선택해 보시면 될 것 같습니다. ^^ 1.이 책의 내용 소프트웨어 개발자로서의 삶 전반에 대한 것 - 코드의 각 줄을 어떻게 설계할 것인지에 관해 다룬다. - 더 낫게 일하기 위한 실질적인 기술을 소개한다. - 작업에 도움이 되는 효율적인 태도와 접근 방법들에 대해 서술한다. - 프로그래머가 소프트웨어 업계에서 살아가기 위해 필요한 절차적이고 조직적인 부분에 대한 비법과 조언을 설명한다. 2.대상 독자 - 취미로 개발을 공부하는 일반인 - 신입 개발자 - 경험 많은 개발자 - 업계 전문가 - 어떤 수준의 개발자에게도 도움이 될 것 3.이 책을 읽기전에 갖추어야 하는 것 - 더 나은 프로그래머가 되고자 하는 마음 4.이 책의 구성 1부 you.write(code); 2부 연습을 통해 완벽해진다 3부 개인적인 일로 받아들이기 4부 일 끝내기 5부 사람의 일 - 생각해보기 - 연습해보기 5. 이 책을 읽기전에 들었던 이 책에 대한 생각 - 더 나은 개발자가 되기 위한 태도와 생각방법에 대해 고민해 볼 수 있지않을까? - 다른 사람들은 어떻게 더 나은 개발자가 되기를 바라고 있을까? - 더 나은 개발자가 되기 위한 궁극적인 방법에 대해 알 수 있지 않을까? - 개발자란 어떤 사람인가? - 개발자란 무엇을 하는 사람인가? - 개발이란 무엇이고, 어떻게 하는 것이 개발을 더 잘할 수 있는걸까? - 개발을 더 잘한다는 건 뭘까? 6. 이 책에 대한 한 줄 평 사람이 어떻게 성장하고 발전하고 학습해야 하는가에 대한 이야기 7. 이 책을 읽고나서 이 책에 대한 소감 평범한 프로그래머와 훌륭한 프로그래머의 차이는 바로 '태도'에 있다. 프로다운 접근방식을 취하고 최고의 코드를 작성하려는 태도로부터 훌륭한 프로그래밍은 태어난다. 이 책의 경우에는 생각하게 하는 질문들이 많은 게 좋은 것 같다. 가령, 평범한 프로그래머와 훌륭한 프로그래머의 차이는 무엇인가? 또한, 어떤 방법이 옳다고 이야기를 하기보다는 무엇을 할 것인가를 생각하고 그에 맞는 방법을 상황에 맞게 선택하면 된다고 이야기한다. 이 책의 가장 큰 장점은 생각을 많이 하게하는데 있다고 본다. 그리고 개발적인 부분들도 있지만 읽다보면 자기계발적인 부분 초보자 단계 -> 발전된 초보자 단계 -> 능숙한 단계 -> 능수능란한단계-전문가 단계등 학습모델에 대한 부분도 정리가되어 있어 자신이 학습이 어느정도 단계인지를 판단해 볼 수도있다. 그리고 배움에 대한 이야기도 나온다. 배움의 가장 효과적인 방법 중 하나는 가르쳐 보는 것이라든가. 배우기 위해서 핵심은 실천이라든가 하는 것들이 나온다. 이런 종류의 책중에 좋은 책들은 결국에는 사람이 어떻게 하면 발전을 할 수 있는가가 정리되어있다. 결국에는 무엇이든 사람이 하는 것에는 태도와 학습, 성장 이런걸 어떻게 할 수 있는지가 정리되어 있다고 본다. 이 책에도 개발적인 부분에서 생각해야 할 것들도 있지만, 꼭 그것만이 있는 것이 아니라 사람 자체가 무언가를 잘하기위해서 성장하기 위해서 나아가기 위해서 무엇을 중요하게 생각하고 실천해야 하는지가 잘 나타나있는 책이라고 생각한다. |
더 나은 프로그래머 되는 법(한빛미디어, 피트 구들리프 저) ![]() 책 소개저자 : 피트 구들리프(Pete Goodliffe) 제목 : 더 나은 프로그래머 되는 법 번역 : 최원재, 강전희, 안재덕, 남윤화 출판사 : 한빛미디어 출간 연도 : 2024. 04. 원문 제목 : Becoming a Better Programmer 페이지 : 총 516쪽 www.yes24.com https://www.yes24.com/Product/Goods/126110870 책의 구성5개의 부로 구성된 책은
을 주제로 총 39개의 챕터와 국내 개발자 8인의 이야기로 구성되어 있다. 주니어 개발자로써 갖는 많은 생각 중 하나는 '자기 개발'과 '성장'에 대한 고민이다. 더 나아가기 위한 고민은 프로그래밍 언어의 사용으로 표현되는 코드와 코딩에 대한 더 좋은 코드를 작성하는 것으로 시작해, 업무의 능률 상승 및 팀에 긍정적 시너지를 도출하는 것, 마지막으로 하나의 프로젝트를 무사히 완수하는 것으로 이어진다. '더 나은 프로그래머 되는 법'은 개발자를 대상으로 하는 자기계발서이다. 지난 2015년 출간되었던 ' 훌륭한 프로그래머 되는 법(한빛미디어)'의 개정판인 이 책은 '소프트웨어 개발자'에 초점을 두고 '개발자의 삶'을 설명한다. ![]() 1부 | you.write(code) 에서는 개발자 업무의 시작점인 '코드 작성'을 설명한다. 코드를 적게 사용하고 오류를 고민하며, 코드 테스트에 대한 선배 개발자의 조언을 담고 있다. 특히 Chapter.11의 '테스트하기'가 기억에 남는데, 해당 파트는 테스트가 무엇이고 언제 실행하며, 무엇을 테스트 해야하는지를 자세하게 안내한다. "작성해야 할 만큼 중요한 코드라면 테스트해야 할 만큼 중요한 것이다."라는 언급을 통해, 테스트를 진행함으로써 문제점을 파악하고 코드 설계 개선에 대해 고민해 보아야 한다고 조언한다. ![]() 2부 | 연습을 통해 완벽해진다 에서는 소프트 개발 절차와 코딩 업무에 대한 접근 방법, 그리고 다른 개발자와의 협업에 대해 설명한다. 소프트 개발의 정의를 시작으로 프로그래밍 팀의 규칙에 대해 언급한 뒤 프로그래밍에 필요한 리펙토링과 버전 관리를 설명한다. ![]() 3부 | 개인적인 일로 받아들이기 에서는 좋은 프로그래머가 되기 위한 자세, 태도를 '개인'의 시점에서 설명한다. 어떻게 배울 것인지, 동기 부여에 대하여, 그리고 프로그래머의 삶에서의 '윤리'에 대해 설명한다. ![]() 4부 | 일 끝내기 에서는 가장 좋은 방법으로 훌륭한 코드를 만들어 내는 방법에 대해 설명한다. 해야 하는 것만 하며, 빠르게 진행한다. 우선순위를 설정하며 문제를 미루고 쌓아두지 않는 법을 안내한다. 마지막 5부 | 사람의 일 에서는 '협업'에 대해 설명한다. 다른 사람들과 효율적으로 일하는 방법과 다른 사람들에게 배우는 방법의 설명을 통해 더 나은 개발자가 되는 법을 안내한다. 마치며회사에서 제공하는 업무 가이드라인 혹은 신입(이직) OJT는 해당 업무를 중심으로 기술된다. 개발자의 시선 보다는 프로젝트의 수행을 중심으로 개발 업무가 설명되기 마련인데, 이에 반해 '더 나은 프로그래머 되는 법'은 '개발자'에 초점을 둔 '더 좋은 개발자'가 되는 방법을 설명하는 책이다. 개발자가 사용하는 언어인 '코드'로 부터 시작하여 개발자들의 '협업'으로 마무리 함으로써 개발자의 삶을 관통하는 실질적인 조언들로 주니어 개발자인 나에게는 많은 공감과 생각을 하게 하였다. (부록에 실린 국내 개발자 8인의 이야기 역시 현업의 선배 개발자의 경험담을 통해 훌륭한 프로그래머가 되기 위해 필요한 것들을 조언해 준다.) 개발자로써 성장을 고민한다면 혹은 더 좋은 개발자가 되기를 생각하고 있다면, '더 나은 프로그래머가 되는 법'의 일독을 추천한다.
#한빛미디어 #더나은개발자되는법 #나는리뷰어다 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
국내개발자의 8인 인터뷰도 수록되어 있어서더 나은프로그래머가 되는법을 배울 수가 있습니다. 이 책은 지금 바로 실천할 수 있느 선배 개발자의 39가지 노하우를 가르쳐 줍니다. 그렇기 때문에 더나은 프로그래머가 될 수가 있는 것이라고 할 수가 있습니다. 실제로 더 나은 프로그래머가 되는법에서는 코드를 적게쓰면서 줄여서 코드를 좀 더 좋게 쓰는법을 소개를 해줍니다. 실제로도 어떻게 해야 소스를 더욱 더 간결하고 좋게 쓸수 있는지 배울 수가 있는 만큼 중요합니다. 프로그래머를 시작하게 되면 다양한 소스코드를 작성하게 됩니다. 거렇게 작성하고 남의 코드를 보면서 어떠한것이 중요한 코드인지 그리고 어떻게 작성해야하는지 알수 가 없습니다. 그래서 이책에서는 하지말아야할것과 해야될것을 말해줍니다. /************************************************** * 더나은 프로그래머 되는법 * 주석 작성 * 이렇게하는것을 좋지 않다. 가학적 자세 * 유지보수성이 안좋다. *****************************************************/ 실제로 이렇게 주석을 작성하는것을 안좋은 예라고 직접 설명을 해줍니다. 직접적으로 코딩상태에서 올바른 코드를 어떻게 하는지보여주는 좋은 예라고 할 수가 있습니다. /* 기존 코드 * if(a||(!a && b)) { //완전복잡하잖아 } /*개선된 코드*/ if(a||B){ // 코딩양이 줄여들었음 } 현재코드량을 보면 간결하게 줄어들것을 볼 수가 있습니다. 코드내용을 해석하자면 a 또는 b가 값이있다면 들어오는것 입니다. 더나은 프로그래머가 되는법 에서는 확실히 소스의 줄이는 법을 알켜줍니다. 언어마다 다르지만 의사코드와 설명으로써 좀 더 나은 프로그래머가 되는법을 제시하고 있습니다. 프로그래머는 예술적으로 코드를 작성하는것을 염두에 두어야 할지도 모르겠습니다. 자신이 하는 코드를 보다 좋게 하여야합니다. 가령 제품이라고 한다면 우리는 조금더 신경을 쓰고 잘 만들려고 노력할것입니다. 코드 역시 그렇게 해야 된다는것입니다. 효과적인 버전관리를 하여아합니다. 우리는 회사의 올바른문서가 있다면 확실한 버전관리를 하여야 합니다. 그렇게 하지않으면 어떠한것이 어떻게되어 있는지 알수가 없기 때문입니다. 그렇기 때문에 항상 문서, 코드들은 버전관리가 되어야 합니다. 끝나야 하는것과 끝내는것을 무엇인가 프로그램은 다수의 하위 시스템으로 구성됩니다. 그리고 프리랜서를 이용합니다. 그런데 하나하나 연계까지 봐야 프로그램이 끝마친다고 할수 있습니다. 하지만 현실은 그렇지 못한 과정이 많습니다. 더나은 프로그래머가 되는법을 다양한예제와 이해를 통해 더 나은 프래그래머가 되는법을 제시합니다. 개발자라면 이 도서를 적극 추천합니다. |
|
안정화된 개발이란, 코드의 input 대비 ouput이 항상 일정함만을 의미하지 않는다. 진정한 의미에서 안정화된 코드란, 내가 아닌 다른 누군가가 나의 코드를 이용하여 신규 기능을 추가하거나 서비스를 개발할 때에도 안정적인 결과가 나오는 것을 안정화된 개발이라 한다.' 1인 개발자라면 솔직히 코드의 컨벤션이나 변수 명명 규칙, 함수 명명 규칙 따위 등에 대해서 크게 신경을 쓰지 않아도 된다. 어차피 나 혼자 볼 코드이고 나 혼자 유지 보수할 코드인데, 위의 것들에 대해서 그리 신경 쓸 이유가 있을까? 하지만 회사나 스타트업에서 다 함께 일을 하게 되면 위의 부분은 전혀 다른 이야기가 된다. 왜냐하면 더 이상 이 코드는 나만의 것이 아니기 때문이다. 정확히 말해서는 내가 이제껏 해왔던 개발 문화는 나만의 개발 문화가 아니게 되기 때문이다. 연차와 경력이 쌓이고, 여러 플랫폼을 오가며 개발을 할수록 개발자들은 자신만의 개발 철학과 문화를 형성하기 시작한다. 특히 기술 스택에 있어서 말이다. 다만, 이러한 기술 스택에 초점을 둔 성장에는 큰 문제점들이 있다. 가령 몇 가지 예를 들자면 협업이라는 관점에서 누군가 나의 코드를 유지 보수할 때, 누군가 나와 함께 코드 리뷰를 할 때, 누군가 기능을 추가할 때 참고하라고 내가 만든 기능을 문서로써 공개할 때, 그동안 다양한 기술 스택의 전문성을 쌓는 데에만 집중한 나머지 협업이라는 관점에서는 연차 대비 기대했던 협업이라는 관점의 점수는 낙제점을 받을 가능성이 높다. 이 책은 그동안 개발자들이 간과하기 쉬웠던 협업이라는 관점에 초점을 두어 '초보, 중급, 고급 개발자'들이 반드시 알아야 하는 내용에 대해서 친절히 가이드 한 책이다. 더욱이 실무자들이 자신들의 겪었던 경험을 토대로 집필한 책이기에 단순히 이론이 아닌, 실제로 언제든 우리가 대면할 수 있는 리얼 월드에서의 상황을 책에 고스란히 녹여냈다는 점에서 의의가 크다. 【책의 구성】 "더 나은 프로그래머 되는 법"의 구성은? 책의 구성은 간단 명료하다. 처음에는 이론과 배경에 대해서 설명하고 이후 저자들이 해당 챕터에서 독자가 좀 더 깊게 사유해 봤으면 하는 내용에 대해서 질문하고, 마지막에는 가상의 시나리오를 통해 독자 본인이 어떠한 상황에 놓였다는 가정하에 어떻게 해결할지 등에 대해서 고민하는 내용으로 마무리하고 있다. 이 책의 내용은 모두가 주옥같고 의미 있으며, 정말 필자가 주니어 개발자로 돌아간다면 한 달 간격으로 반복해서 읽었을 법한 내용으로 가득 차 있다. 반드시 읽어보시길 권장한다. 챕터 1~2 : 코드에 신경 쓰기 - 정돈된 코드 유지하기 개발자에게 코드는 개발이라는 인생을 통틀어 때려야 땔 수 없는 인생의 동반자의 느낌이라 할 수 있다. 또한 코드는 개발자의 정신세계를 대변하는 언어이며 그의 철학을 녹여내는 수단이기도 하다. 그런 코드를 이용하여 우리는 프로그램이라는 집을 짓고, 그 프로그램에는 수많은 사용자가 오가며 흔적을 남기게 된다. 코드는 돌아가야 한다. 옛날에도 그렇고 지금도 그렇고 가장 중요한 부분이다. 아무리 아름답고 깔끔하고 위대한 철학이 담긴 코드더라도 그 코드가 바르게 동작하지 않는다면, 그 코드는 단순 단어를 나열한 무엇인가?에 불가하기 때문이다. 하지만 코드가 앞서 말한 것처럼 돌아가는 데에만 치중하게 되면 그 코드는 유지 보수의 관점에서 그리고 협업의 관점에서 에러투성이의, 아무도 이해할 수 없는 그런 사고뭉치로 전락해버리고 말 것이다. 그렇기에 우리는 인생의 동반자 코드를 모두가 함께 돌아가는 프로그램이 될 수 있도록 가꾸고 보듦는 법을 배워야 한다. 챕터 3 : 코드 적개 사용하기 어떤 개발자는 코드를 길게 쓰는 것을 코드의 미학이라 생각하는 사람들이 있다. 보다 복잡하고 보다 이해하기 어렵고 보다 고상한 나만의 코드.. 필자는 그것을 "코드로 아트를 한다!"라고 종종 표현한다. 코드로 아트를 할 수 있다. 하지만 아트는 보는 사람마다 해석이 다르며, 이를 통해 세계관을 넓히고 세상의 경계를 허물기 위해서 하는 것이다. 하지만 코드는 아트가 될 수 없다. 코드는 서비스이며 서비스는 현실의 경계를 허물기 위해서 보단, 현실에서 일어나는 무엇인가의 문제를 효율적으로 해결하기 위한 것이기 때문이다. 이 챕터를 읽는다면 확실히 이런 부분에 대해서 왜 코드를 간결히 사용해야 하는지에 대해 이해할 수 있다. 【 더 나은 프로그래머 되는 법을 읽고 나서 】 개발자의 시장이 옛날과는 비교할 수없이 성장한 것이 요즘이다. 그만큼 개발자의 처우도 좋아졌고 개발에 임하기에 좋은 환경이 되었음을 의미한다. 다만, 개발에 임하기 좋은 환경이 된 만큼. 개발에게 필요되는 역량 역시 덩달아서 증가하고 있다. 특히 요즘과 같이 소프트웨어 한 개의 복잡도와 규모가 점점 거대해지는 시국 속에서 1인 개발자 혼자서 만드는 소프트웨어의 퀄리티는 굉장히 한정적일 수밖에 없다. 그 말은 즉, 이제는 프로그래밍을 함에 있어서 협업은 필수불가결의 요소라 할 수 있다는 점을 밑바탕에 깔고 시작해야 됨을 의미한다. 협업을 하기 위해서는 단순히 알고리즘을 잘 짜고, 문제를 본인의 인사이트와 뷰에서 쉽게 해결하기만 하면 안 된다. 누군가 나의 코드를 보았을 때, 그리고 누군가와 커뮤니케이션을 할 때, 이곳에서 발생하는 비용을 최소화하고 함께 이해하기 쉬운 코드를 만들기 위해 분투해야 함을 의미한다. 즉, 나만의 코드가 아닌. 우리 모두의 코드가 될 수 있도록 노력해야 하는 시대가 바로 지금인 것이다. 본 도서는 "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. |
|
이 책은 개발자로서 성장하고 더 나은 프로그래머가 되기 위한 실용적인 조언을 제공하는 책으로 선배 개발자들의 39가지 노하우를 담고 있다. 책의 구성은 다음과 같다. 1. you.write (code) 코드의 품질을 높이기 위한 방법과 가독성과 유지보수성을 고려하며 간결하고 효율적인 코드 작성하는 방법을 알려준다. 2. 연습을 통해 완벽해진다: 소프트웨어 개발의 본질과 규칙 그리고 안정적이고 신뢰할 수 있는 코드 관리를 위한 방법 제시하고 있다. 3.개인적인 일로 받아들이기 끊임없는 학습과 자기 개발의 중요성, 프로그래머로서의 윤리와 책임을 강조하고 있다. 4.일 끝내기 '더 열심히’보다는 '더 현명하게’를 지향하며, 프로젝트의 성공적인 마무리를 위한 전략을 제공한다. 사람과의 관계를 중요하게 여기며, 긍정적인 사고와 태도의 중요성을 강조한다. 'YES24 리뷰어클럽 서평단 자격으로 작성한 리뷰입니다' #리뷰어클럽리뷰 |
|
근래들어, 모든 IT 이슈들은 AI와 연관되는 것 같습니다. 대부분은 장밋빛 미래에 대한 이야기들이지만, 이면에는 다수의 직업이 AI 때문에 사라지게될 것이라는 예측이 자리잡고 있기 때문에 장밋빛을 장밋빛으로만 볼 수 있는 상황은 아닙니다. 게다가, 올해 초, 두바이의 국제회의에서 엔디비디아, 젠슨 황 CEO는 '아이들에게 더이상 코딩을 가르칠 필요가 없다'고 말해서 이목을 집중시켰습니다. 이 발언은 결국, AI의 장밋빛 미래를 장밋빛으로 보지 못하고 있었던 프로그래머들에게 또다른 충격을 던져줬습니다. '올것이 오고 있구나!' 뭐 이런 류의 탄식을 자아냈으니까요. 정말 AI가 프로그래머들을 대체하게 될까요? 제가 생각하는 결론을 먼저 말씀드리면, 절대 그렇지 않을 것입니다. AI는 프로그래머를 대체 할 수 없습니다. 코딩이라는 행동은 단순히 인간의 의도를 컴퓨터에게 이식시키는 것만 있는게 아닙니다. 세상에 있는 문제들을 컴퓨터에 이식할 만한 체계로 해석하는 사고가 전단계에 자리잡고 있어야 코딩이 가능하거든요. IT업계 전설중에 한분인 프레드릭 브룩스는 자신의 저서인 <맨먼스 미신>의 20주년 기념판에 <은총알은 없다>라는 논문을 포함시켰는데요. "은총알"즉 소프트웨어 개발 분야의 모든 문제를 한번에 해결할 수 있는 해결책은 없을 거라는게 브룩스의 주장이었습니다. 브룩스는 그렇게 주장하는 이유로 소프트웨어 개발에는 "본질적 작업(essential task)"이 필요 하기 때문이라고 했습니다. 최초의 전자식 컴퓨터라는 에니악이 30톤짜리 거대한 본체를 움직이기 시작했었을 무렵부터, 소프트웨어 개발 환경의 개선은 언제나 "본질적 작업"에 해당하는 것보다 "부차적작업(accidental task)"에 집중되어 왔습니다. 하드웨어를 좋게 만들거나, 프로그래밍 언어를 진화시키는 것과 같이 말이죠. 그런 활동은 개발자가 코딩하는 환경을 좋게 만들어 줄수는 있지만, "본질적 작업"을 개선하는 데는 크게 도움을 줄수 없었습니다. AI도 마찬가지입니다. 프로그래밍 언어를 습득하지 않아도 코딩을 할 수 있을 만큼 진보한다고 해도 AI는 "본질적 작업"을 대체할 수는 없습니다. <더 나은 프로그래머 되는 법>은 "본질적 작업"을 할 수 있는 프로그래머의 사고 체계를 연마하게 하는 다양한 조언들을 제시하는 책입니다. 제대로 된 코드를 작성하고 이를 유지하려면 개발자가 어떤 마음가짐으로 코딩을 해야 하고, 유지해야 하는지를 말하고 있습니다. 이는 "부차적 작업"의 행동양식을 변화하는 조언이자 이면에 있는 "본질적작업"을 더 잘하는 소프트웨어 개발자가 되게 하거든요. 정말 이렇게까지 코딩에 대해 깊이 생각하고 조언할 수 있을까 싶을 정도로 세세한 조언들이 나오는 책이라서 정말 인상 깊었습니다. 게다가 저자인 "피트 구들리프"가 본인의 첫 저서가 <코드 크래프트>라고 밝히는 부분을 읽으면서는 다소 충격을 받았습니다. 약 15년전쯤 제가 읽고 크게 감명을 받았던 책이었거든요. 지금까지 개발자로 살아가면서 가장 크게 영향을 미쳤던 책을 나열한다면, 아마 다섯손가락 안에 들을 만큼 훌륭한 저서였습니다. <더 나은 프로그래머 되는 법>을 읽으면서 크게 공감할 수 있었던 원인도 아마 <코드 크래프트>의 내용이 제 개인적인 일상과 생각에 영향을 많이 미쳤기 때문이 아닐까 싶더군요. 책의 뒤편에는 한국인 개발자들 8명의 조언이 함께 실립니다. 그중 제가 주목 했던 인터뷰는 염재현님의 인터뷰였는데요. 염재현님의 저서 <디스커버리 Go 언어>라는 책을 재미있게 읽었던 기억도 있고, 인터뷰에서 "생성형 AI의 시대에는 프로그래머들이 테스트 주도 개발을 해야 합니다"라고 주장하신 것 때문입니다. 이는 <더 나은 프로그래머 되는 법>에서도 공감했던 부분인데요. 테스트 주도 개발(TDD)은 소프트웨어 개발 프로세스의 일부 이전에 개발자의 사고 방식을 변화 시키는 방식이라고 생각하기 때문입니다. 테스트가 사고를 바꾼다고? 라고 반문 하실 수 있겠지만, 이건, <테스트 주도 개발>에서도 언급됩니다. <테스트 주도 개발>에 <리팩터링>의 저자인 마틴 파울러가 첨언한 이야기를 보면 TDD는 "공 한개로 저글링" 하는걸, 느끼게 해주는 방식이라고 합니다. 복잡한 논리의 전개가 코딩이라면, 그 논리 전개를 간단하게 해체 하는 방법이 TDD이고 그래서 "공 한개로 저글링"하는 것 같다고 표현한 것인데요. 다시말해 TDD는 개발자의 사고방식에 영향을 미치는 개발 기법인 셈입니다. 그리고 TDD를 꾸준히 진행하다 보면, "본질적 작업"을 잘 할 수 있는 사고 방식을 연마하게 되는 것이죠. 구들리프 역시 <더 나은 프로그래머 되는 법>에 TDD를 언급합니다. "25장 테스트 주도 개발자"에서 인데요. 테스트 주도 개발을 하는 게 "기술 연마"와 관련되어 있다고 말하고 있습니다. "본질적 작업"은 소프트웨어 개발자의 고유 영역이고, 이 본질적 작업을 잘 할 할 수 있는 사고(생각)기술은 더 나은 프로그래머가 되는 실천법에서 습득해 갈 수 있습니다. 그 결과로 우리는 AI가 많은 사람의 직업을 빼앗는 중에도 살아남는 개발자가 될 겁니다. "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
![]() 선배 개발자의 39가지 노하우가 들어있는 <더 나은 프로그래머 되는 법>. 더 나은 방법으로 일하는 것에 고민이 많은 찰나에 이 책을 읽게 되었다. 저자는 '피트 구들리프'로 프로그래머이면서, 소프트웨어 개발 칼럼리스트이고, 음악가이며 작가라고 한다. 무척이나 다재다능하신 것 같다. (아마도) 현재 '더 나은 프로그래머 되기'라는 칼럼을 매거진에 기고하고 있으신 것 같다. 그 칼럼을 바탕으로 만들어진 것이 아닌가 생각한다. 그리고 또 하나 흥미로운 점은 이 책의 옮긴이는 4명이나 되는데, 사내 게임 길드로 시작하여 길드원들이 번역을 함께 해 만들어진 책이라는 것이다. 좋아하는 것을 하면서, 업무와 관련된 일로 확장한 좋은 예가 아닌가 싶다. ![]() 더 나은 프로그래머가 된다는 의미는 뭔가 추상적이다. 그럼에도 각자 더 좋은 사람이 되고 싶은 만큼, 더 나은 프로그래머가 되기 위한 방향에 대해 생각해 볼 수 있을 것이다. 책을 통해 생각해 볼 수 있는 더 나은 프로그래머가 되기 위한 길은, 문법에 대한 단순한 이해나 기본적 설계의 통달이 전부는 아니라는 것이다. 왠지 프로그래밍은 혼자만 하는 일로 생각되기 쉽지만? 생각보다 더 다양한 사람들과 유기적으로 소통한다. 그러기 위해서 일하는 방법이나 일을 대하는 태도, 그리고 코드에 접근하는 방법과 기법 등에 대해 더 많은 것을 알고 있어야 한다. 물론 이게 결코 쉽지는 않아 보인다. 무엇이든 관심을 갖고 노력하는 게 필요한 것 같다. 아무튼 이 책에서 다루는 주제들은 '소프트웨어 개발자로서의 삶 전반에 대한 것'이라고 한다. 코드를 어떻게 작성하면 좋을지에서부터, 일에 국한된 것이 아닌 삶을 어떤 마음으로 바라볼 것인지에 대한 것도 들어 있다. 경력자인 저자의 말이 정답은 아닐 거다. 사실 삶이라는 것 자체에 어떤 정답이 있는 것은 아니니? 하지만 경력자의 경험이니만큼, 수용할 것은 수용하면서 나의 경험도 만들어가는 게 좋지 않을까 생각해 본다. ![]() 대상 독자는 취미로 개발을 공부하는 일반인부터 신입 개발자나 경험 많은 개발자, 업계 전문가 등을 막론하고 누구에게나 도움이 될 것이라고 한다. 주니어라면 앞으로의 방향에 대한 고민과 어떤 태도로 업무를 해야 하는지에 대한 궁금증을 가지고 읽어볼 수 있을 것 같다. 나 또한 그런 마음과 더 나은 업무를 하고 싶다는 마음으로 읽었던 것 같다. 현실적으로 주변에서 이런 팁 같은 것을 얻기는 쉽지 않은 일이니 말이다. 아! 이 책을 읽기 전에 필요한 유일한 선행 조건이 있는데, 그것은 '더 나은 프로그래머가 되고자 하는 마음'이라고 한다. ![]() 이 책은 총 5부로 나누어져 있다. 1. you.write(code); 2. 연습을 통해 완벽해진다 3. 개인적인 일로 받아들이기 4. 일 끝내기 5. 사람의 일 1부에서는 코드베이스부터 이야기를 풀어나간다. 코드 작성 시 중요한 기법과 좋은 코드를 어떻게 작성할 수 있는지에 대한 팁 같은 걸 얻을 수 있다. 2부에서는 프로그래밍 연습에 대해서 다룬다고 한다. 더 나은 코드를 고안하는 데 도움이 되는 기법 같은 것에 대해 알 수 있다. 3부에서는 효율적으로 배우고, 번아웃을 피하는 법 등에 대해서 볼 수 있다. 4부에서는 목표에서 벗어나거나 일정을 지연시키지 않고 정해진 시간 안에 업무를 완수하는 방법에 대해 설명한다. 마지막으로 5부에서는 소프트웨어 업계에서 다른 사람들과 협업하는 방법에 대해 설명한다. 그리고 추가적으로 국내 개발자 8인 인터뷰 또한 뒤쪽에 수록되어 있다. ![]() 각 챕터의 제목 아래에는 해당 챕터와 관련이 있는 것 같은 명언도 적혀져 있다. 그리고 위에서 설명한 부분 중에 중요한 내용은 TIP으로 한 번 더 설명을 해주기 때문에, 같이 읽어보면 좋을 것 같다. 나는 읽다가 나중에 다시 읽고 싶은 부분에는 형광펜으로 밑줄을 그었다. 원래는 색연필로 했었는데, 다시 볼 때 생각보다 눈에 들어오지 않아 눈에 잘 들어오는 형광펜으로 바꿨다. 위에서 밑줄 그은 부분은 코드뿐만 아니라, 모든 것에 적용되는 말이 아닐까. 좋은 코드를 작성하려면 코드에 엄청난 노력을 들여야 하듯이, 뭔가 이루고 싶은 게 있으면 그만큼의 노력이 필요하겠지. 너무 당연한 말이지만, 때때로 그 당연한 말을 잊고 살기 때문에 적당한 타이밍에 복기해 주는 게 필요할 듯하다. ![]() 한 챕터가 끝날 때 [마치며] 부분이 있다. '생각해보기', '연습해보기', '쉬어가기', '참고'가 있어서 적당히 생각해 보며, 참고하기 좋으니 읽어보고 적용을 해보면 좋을 것 같다. ![]() 사실상 회사에서 하고 있는 현재의 프로젝트가 실직적인 나의 프로그래밍 첫 프로젝트였다. 그런데 시작하고, 1개월이 지났을 때까지도 다 함께 공유하는 코드 컨벤션 같은 게 없었다. 혼자만 하는 게 아니라, 여러 사람과 함께 하는 프로젝트이니 규칙 같은 게 필요하다고 생각했다. 그래서 깃 커밋을 할 때 컨벤션 같은 걸 찾아서 이렇게 했으면 좋겠다고 내가 제안하고 공유했었다. 물론 코드 컨벤션은 아니지만 그래도 같은 규칙을 공유하니 훨씬 보기 좋다는 것을 깨달았다. 혼자 하면 사실 누가 보는 게 아니라 크게 상관이 없겠지만, 협업을 하면 분명 중요한 것 중에 하나인 것 같다. 사람이 많아질수록 원래 규칙도 필요한 법이니 말이다. 특히나 코드 같은 경우에는 나도 나이지만, 시간이 흘러 또 다른 누군가가 유지 보수를 할 때를 대비하며 작성해야 하는 게 좋지 않은가 다시 한번 생각해 본다. ![]() 정말 이 부분을 보고, 삭제한 소스들이 있어서 적어 본다. 6월에 예정된 것은 고도화 프로젝트이다. 1차 때도 참여하기는 했었는데, 그때 프로그래밍을 했던 건 아니다. 하지만 6월에는 1차 때 소스를 바탕으로 나도 프로그래밍을 하게 될 것 같아서, 깃에서 소스를 받아서 살펴보고 있는 중이다. 이 프로젝트 초반에는 버전 관리 없이 로컬로 소스를 관리했었는데, 그러다 보니 수정이 되었던 것도 이력을 확인할 수 없다는 게 조금 쉽지 않다는 것은 나의 넋두리다. 다시 본론으로 돌아와, 이전에 작업을 하시던 분이 로컬로 관리를 하시면서 기존에 있는 소스 파일을 복사해서 백업을 해뒀던 것이었다. 그래서 원본 파일 'Hello.java'가 이렇게 있는데, 그 아래에 'Hello.java.backup' 이런 식으로 파일이 하나씩 더 있는 것들이 있었다. 그걸 보고도 그냥 두고 있다가, 이 부분과 다른 챕터를 읽다가 어차피 삭제해도 이력 관리는 되고 있다는 것을 깨달아 그냥 과감히 삭제했다. 대신 커밋을 할 때는 기능을 추가하거나 수정한 것과는 별도로, 삭제한 소스 코드만을 따로 관리하는 게 필요했다. 아무튼 그렇지 않아도 소스 파일이 많은데, 이렇게 백업 파일까지 있으니 보기가 쉽지 않았었다. 이렇게 삭제를 하니 정말 몇 십 개를 삭제한 것 같은데, 패키지 내의 파일들이 훨씬 보기 쉬워진 것은 말할 것도 없다. 이번에는 단순하게 파일들만 삭제를 했지만, 앞으로 하고 싶은 건 현재 코드를 더 읽기 좋으면서도 유지 보수가 쉬워지는 방향으로 리팩터링 해보는 것이다. 잘 해봐야겠다. ![]() 흔히들 프로그래머는 끊임없이 배워야 하는 직업이라고들 한다. 하지만 프로그래머만 그럴까? 어떤 업무에서 더 나은 방향으로 일을 하고 싶다면 누구든 배워야 한다고 생각한다. '이러해야 한다~'라고 해서, 모두가 다 그렇게 하는 것은 아니지만! 그럼에도 열심히 하면서 잘 하는 사람들은 그만큼 노력하고, 배우는 것을 보면 확실히 배워야 하는 건 맞는 것 같다. 그 배운 걸 잘 적용하고, 내 것으로 만든 후에 그것을 잘 설명할 수 있다면 그건 정말로 내 것이 되었다고 할 수 있겠다. 그렇다면 업무적인 것만 배우느냐? 아니다. 업무적인 것을 배우면서 취미로 배우고 싶었던 것도 배워보고, 관심이 있었던 것도 배워보면서 적당한 균형을 맞추면 된다. 지난번에 컨퍼런스 가서 느낀 건 진심으로 배움의 열정이 넘치는 사람에게서는 그 에너지가 뿜어져 나온다는 거다. 저자는 말한다. 배움은 노력하면 나아질 수 있는 분야이기도 하다고 말이다. 배우고 열심히 하면서, 어떻게 하면 잘할 수 있을지를 끊임없이 고민해 봐야겠다. ![]() 그리고 마지막으로 국내 개발자들의 인터뷰를 볼 수 있다. 지난번에 한 세미나 같은 걸 참여해서 들었는데, 거기서 발표하시던 분들 중 몇 명이 이직을 한 후에 좋은 사수를 만났을 때 폭발적으로 성장을 했다고 한다. 하지만 모든 회사에 좋은 사수가 있는 것도 아니고, 심지어 사수가 없는 경우도 존재한다. 그럴 때 필요한 게 이렇게 간접적으로나마 다른 개발자들의 경험을 글로 읽는 게 아닌가 싶다. 국내 8인의 개발자의 경험을 엿볼 수 있을 것 같다. 이미 이 길을 걸은 경험자들의 글을 바탕으로 본인만의 아이덴티티나 방향성 같은 걸 정하면 될 것 같다. 마지막으로 더 나은 프로그래머가 되는 법에 정답이 있는지는 모르겠지만, 더 나은 프로그래머가 되고자 하는 열망이 있다면 한 번 읽어 보며 스스로 생각해 보면 좋을 것 같다. 한빛미디어 서평단 <나는리뷰어다> 활동을 위해 책을 제공 받아 작성된 서평입니다. |
|
이책은 단순히 개발자로서의 기술적인 능력을 향상시키는데 그치지 않고, 더 좋은 프로그래머로 성장하기 위한 39가지의 노하우를 담고 있습니다. 현업에서의 경험들을 토대로 커뮤니케이션, 팀 협업, 문제 해결 방법등 다양한 영역에서의 조언들을 제시하기에 개발자로서 경험이 없는 신입 직장인 부터 한단계 더 나아가고 싶은 개발자분들에게 큰 도움이 될것입니다. |