소프트웨어 장인 독후감 프로페셔널리즘, 실용주의, 자부심
Description: 소프트웨어 장인이라는 책을 읽고 느긴점을 기록해봅니다. 이 책에서는 커리어적으로, 자기 계발, TDD 적인 이야기를 많이 다룹니다.
현재 노트: KR-410.10 e 소프트웨어 장인 독후감 프로페셔널리즘, 실용주의, 자부심
상위 분류: KR-410.10 개발자로서 한 번쯤 생각해볼 고민들
소프트웨어 장인 프로페셔널리즘, 실용주의, 자부심
https://www.yes24.com/product/goods/20461940
소프트웨어 장인정신을 한줄로 요약하면? 프로페셜리즘
소프트웨어를 공산품으로보고 개발자를 장인으로 보는 관점. 어떤 기술이나 능력같은 것 보다는 마음가짐에 가까움
책을 읽으며 인상 깊었던 대목들
오래 전에 작성한 코드를 지금와서 고칠 부분이 안 보인다면, 그것은 그 동안 배운 것이 없다는 뜻이다
-> 공감. 코드란 끝이없는게 작성한 코드를 1시간뒤에 봐도 고칠점이 보이는 경우가 있다. 그런데 오래 전에 작성한 코드가 고칠 부분이 안 보인다? 그것은 그 때 당시와 보는 눈
이 같다고 생각한다. 고칠 부분을 보는 눈
그것이 바로 스스로 성장했다는 것을 확인하기에 가장 확인하기 쉬운 지표다
아니로 라고 하는 방법 배우기
-> 작자는 영웅이 된다는 생각에 무리하게 밤새,야근작업을 하며 일정을 수행하였지만 결론적으로는 아무것도 남는것도없고 수행도 못했다고 한다. 여기서 장인의 마음가짐이 나온다
바로 아무 의문없이 무리한 일정을 그대로 따르기만하는 것은 프로페셔널한게 아니다
단, 아니오
에는 하나 이상의 대안이 필수다
코드는 기계장치라기보다는 유기물이다. 마치 정원을 돌보듯
-> 내가 생각하던 방식은 예전에 어디서 들었던 코드는 내버려두면 녹이 슨다
이다. 참 적절하다고 생각하는게 같은 코드라도 시간이 지남에 따라 관리해주지 않으면 안되기 때문이다. 단순하게 버전업데이트도 그렇고, 미쳐 발견하지 못했던 버그가 생길 수도 있고, 또는 새로운 모듈등과의 연동 때문일 수도 있다. 그런점에서 공감이 가면서도 조금더 나아가 유기물이라는 표현이 인상 깊었다. 정원의 꽃이나 나무처럼 배치해야되고(시스템 설계), 벌레가 생기면 치워줘야(버그 픽스)되고 필요한 경우 가지치기(리팩토링)등 유사한점이 많다는 생각이 들었다. 앞으로 코드를 비유할 때 이 표현이 더 좋을듯
코드 수정에 나 또는 다른사람이 두려워하지 않게 만들기
-> TDD를 설명하면서 저자가한 말이다. 이 부분이 참 인상깊었는데 TDD의 필요성을 좀 더 이해한 느낌이 들었기 때문이다. 대부분 남이 만든 코드를 건드는 경우가 현업에서는 대부분이라고 한다. 그런 케이스 중에서도 이전 개발자가 어떻게 돌아가게 만들었는지 모르는 코드에 새로운 기능을 추가해야한다고 생각해보라. 두렵다고 느껴진다. 하지만 TDD와 같은 방식을 통해 이런 두려움을 없애준다고 하니 필요한 개념이라고 느껴졌다
커리어를 몇년짜리 프로젝트라 여기고 어떻게 관리할지 생각해보자
요구사항을 파악하고, 작은 작업 단계마다 프로젝트의 목표를 재평가하며 필요한 경우 수정해야한다.
-> 커리어를 막연한 어떤 것이라고 생각하기보다는 이렇게 받아들이는게 좀 더 구체적인 방식이라는 느낌이 들어 인상깊었다. 커리어를 큰 프로젝트로 보고 그 프로젝트의 요구사항을 정리하면서 작은 단위로 쪼개다 보면 큰 그림, 작은 그림, 내가 그리고 싶은 커리어를 파악하는데 도움이 될 것 같다
스스로 생각해볼 질문 잘 작성된 소프트웨어란? 소프트웨어 프로젝트에서 가장 어려운 부분은?
-> 저자가 면접을 볼 때 마인드맵방식을 사용하면서 묻는 가장 기초적이면서 중요한 2가지 질문이라고 한다. 나중에 한 번 시간 날 때 생각해볼 것 같다...
스스로도 무엇을 할지 잘 모르겠으면 사람을 만나봐라
-> 막연하게 느껴지는 본인에게 던진 질문이기도했다. 프로그래밍을 하고 싶은 이유는 그저 프로그램으로 내가 계획한 무엇인가를 구현에서 돌아가는게 좋았기 때문이다. 그래서 소프트웨어 아키텍트라는 말이 참 잘어울린다고 생각한다. 건물을 지을 떄는 터를 잡고, 건축 시공목적, 실제 공사시 재료, 타공 기법, 사람, 도구, 중간에 자연재해나 법적분쟁등 다양한 것들을 해결하여 건물을 짓고 사용자들은 그 건물을 이용하게 된다.
소프트웨어도 비슷한게 처음에 어떤 목적인지 명세를 작성하고, 어떤 프레임워크, 라이브러리, 프레임워크 등을 전부 계획하고 설계하고 그 프로그램들을 사용자가 이용하게 만든다.
이런 것을 좋아하여 개발자가 된다고 하다보니 쉬운 파이썬 부터 시작하여 취직하기 쉬운 JS를 익히며 프론트엔드와 백엔드 개발자 그 애매한 풀 스택 개발자로 취업 준비중인 자신을보며 항상 어느포지션에 왜 하고 싶은지에 대해 스스로 생각해보게 된다. 하지만 답을 찾기 어려웠는데 이 방법이라면 좀더 현실적인 답을 찾기 쉬울 것 같다.
지역 커뮤니티 행사, 커피챗등 사람을 많이 만나봐라
-> 좀 더 적극적으로 해 볼 만한 췽버과 성장을 위한 태스크 요소로서 추가
페어프로그래밍 많이 해봐라
-> 페어프로그래밍을 하면서 IDE사용, 단축키, 프로그램 설계 등을 배운다고 저자는 말한다. 나중에 해볼 커뮤니티 목록에 추가