본문 바로가기
SW

소프트웨어 장인 - Part 1 : 이념과 태도 (7 ~ 8장) (Software Craftsman)

by 라꾸스떼(YR) 2019. 12. 11.
반응형

[이전 장]

https://yrok.tistory.com/entry/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%9E%A5%EC%9D%B8-Software-Craftsmanship-Part-1-%EC%9D%B4%EB%85%90%EA%B3%BC-%ED%83%9C%EB%8F%84-5-6%EC%9E%A5

 

소프트웨어 장인 - Part 1 : 이념과 태도 (5 ~ 6장) (Software Craftsmanship)

[5장] 영웅, 선의 그리고 프로페셔널리즘 '우리는 프로페셔널하지 못했다. 우리가 왜 그 일을 하는지 스스로 묻지 않았다. 고객이 실제로 무엇을 원하는지 이해하려 하지 않았고 다른 대안을 제시하지도 않았다...

yrok.tistory.com

[7장] 기술적 실행 관례

[올바른 일 vs 올바른 실행] - p147

저자는 다음과 같이 애자일 방법론과 실행 관례에 대해서 정의하였다.

애자일 방법론 - 피드백 루프를 만들어준다. 변화와 싸우는 것이 아닌 변화 자체를 내재화한다. 빠르고 짧은 피드백 루프를 제공하여 '올바른 일'을 실행하고 있는지 점검하도록 도와준다.

실행 관례 - 작업 진척도를 시각화하고, 즉각적으로 업무를 계획하거나 우선순위를 조정하고, 최소 시장 충족 기능(MMFs)에 집중하고, 백로그를 관리하고, 스탠딩업 미팅을 하고, 번다운 차트를 만들고, 사용자 스토리와 시나리오를 쓰고, 제품 수용 기준을 정하고, ‘작업 완료’가 무엇인지 정의하고, 크로스펑셔널 팀을 운영하고, 정기적으로 시연을 한다. 기술적 실행 관례들은 일을 '올바르게' 하고 있는지 알 수 있게 해준다.

따라서 올바른 '일'을 올바르게 '하는지' 둘 다 확인되어야 하는데 있어서 애자일 방법론, 실행 관례가 그 의미를 갖는다.

도입에 대해 검토를 해볼 필요가 충분하지 않을까?

 

[상황 논리]

-

 

[익스트림 프로그래밍의 역사] - p150

단위 테스트 / 지속적인 통합/ 공동 오너십 등 여러 개념들이 존재한다. 하지만 결론은 '소프트웨어 장인정신'이다.

 

[실행 관례와 가치] - p151

'모든 팀 구성원들은 원활한 정보 소통, 빠른 피드백, 빠른 결과물 생성, 실수 예방, 고객 만족, 최선을 다하지 못하거나 배우지 못하는 것에 대한 부끄러움을 느낄 줄 아는 것, 이러한 것들에 가치를 느껴야 한다. 빠른 피드백 루프, 요구사항과 비용에 대한 더 나은 이해, 지식 공유, 줄어드는 버그, 전체적으로 자동화되고 릴리즈가 빨라지는 일들이 기술적 실행 관례를 도입함으로써 얻을 수 있는 가치들이다.'

이 책을 필독서로 지정하고 싶다...ㅎㅎ... 우선 나부터 실천하자.

 

<실행 관례를 통한 가치 창출> - p154

XP 실행 관례(www.xprogramming.com/what-is-extreme-programming) 참조.

 

<자동화된 테스트>

-

 

<테스트 먼저>

-

 

<테스트 주도 개발> - p156

그동안 말로만 들어오던 테스트 주도 개발에 대해 언급되었다. 하지만 해당 주제로만 내용이 매우 길어지므로 책에서도 깊게 다루지는 않는다.

후속으로 리뷰할 책인 '테스트 주도 개발 (Test-Driven Development:By Example)'을 통해 공부 및 정리할 것이다.

 

<지속가능한 통합> - p158

자동화된 테스트가 우선이다. 그후 자동으로 고려가 될 사항이다.

 

<페어 프로그래밍> - p159

페어 프로그래밍이 과연 가능한 개념일까 싶었는데... 근래 들어 그 효과(?)를 체감하기도 해서 생각이 바뀌었다. 때때로 도입할 필요가 있다. 충분히...

 

<리팩토링> - p160

캠핑 장소를 처음 발견했을 때보다 더 깨끗하게 남겨두라. - 보이스카웃 규칙

엉망인 코드가 많을수록 엉망인 코드가 늘어나는 속도도 빨라진다. - 깨진 유리창 법칙

'레거시 애플리케이션을 대상으로 일을 할 때, 전체 시스템을 한꺼번에 새로 작성하고 싶은 욕구를 조심해야 한다. 이럴 때는 수정되는 부분에 한정해서 리팩토링을 집중하는 것이 더 나은 접근 방법이다. 애당초 코드를 수정할 필요가 없다면, 리팩토링해야 할 이유도 없다. 보이스카웃 규칙은 모든 것이 아니라 해당 부분을 이해하여 변경할 필요가 있을 때, 적용해야 한다.'

몇 번 전체 코드를 고치려고 시도해본적이 있다. 번번히 실패... 당연한 결과였던 것이다. 계획을 세워 부분 정복을 해나가도록 해봐야겠다.

 

[책임감] - p162

장인 정신은 곧 작품에 대한 책임감이라고 생각한다. 책임감이 있었다면 작품을 대충 만들겠는가?

 

[실용주의] - p162

'무언가를 절대적인 진리로 바라보는 것은 바람직하지 않다. 항상 우리가 무엇을 하고 있고 그것을 왜 하고 있는지 질문해야 한다.

소프트웨어 장인으로서, 우리의 일에 항상 최선의 기술, 도구, 절차, 방법론 그리고 실행 관례를 선택할 수 있도록 개방적인 사고 방식을 가져야 한다.'

개발자라면 개방적인 사고가 필수적이다. 기술적 꼰대가 되지 않도록. 고인물이 되지 않도록 부단히 노력하자 :)

 

[8장]길고 긴 여정

[브라질 어느 십대 소년의 이야기] - p167

'나의 커리어가 내게 얼마나 중요한지 깨달았다. 편안하고 익숙한 상태에서 벗어나 나를 발전시키고 배울 수 있는 기회를 지속적으로 찾아야만 한다는 것을 깨달았다. 나의 인생이고 나의 커리어이고, 내가 주인이어야 했다.'

그렇다. 커리어의 주인은 자기 자신이다. 본인이 책임져야 한다. 공부를 더 이상 미루지 말자.

 

[결단과 집중]

어디로 가고 있는지 모르고 있다면, 결국 가고 싶지 않은 곳으로 간다. - 요기 베라

 

<어디로 가야 할지 모른다면> - p169

커리어에 대해 방황을 하고 있다면 저자의 조언을 한번 따라 보자.

1/4/6 을 시작하였고, 2/3/5/7 나아가 8까지 도전해볼 참이다. :)

1. 익숙하고 편한 것에서 벗어나 새로운 것을 공부하고 기술적 지식을 확장한다.

2. 지역 커뮤니티에 정기적으로 출석하거나 행사에 참여한다.

3. 다른 개발자, 비즈니스맨들과 교류한다.

4. 새롭게 배운 것, 지금 하고 있는 것들에 대해 블로깅한다.

5. 오픈 소스 프로젝트에 참여한다.

6. 프로젝트를 만들고 공개한다.

7. 컨퍼런스에 참석한다.

8. 컨퍼런스에서 연사로 나선다.

 

[투자로서의 일터] - p171

커리어도 일종의 투자라고 본다면... 나의 투자는 옳은가에 대해 정기적인 점검이 필요하다...

 

<당부의 말> - p172

'커리어에서 옳고 그른 것은 없다. 지식은 영원하고 돈과 안정은 영원할 수 없다는 것만은 마음에 새기고 있어야 한다. 어떤 이유에서든 직장을 떠날 때 남는 것은 오로지 지식과 경험뿐이다.'

하지만 충분한 돈은 날 만족...

 

[자율성, 통달, 목적의식] - p173

'돈은 충족되어야 할 기본 조건이고, 지식 노동자를 움직이는 것은 자율성, 통달, 목적의식 이렇게 세가지이다. 

1. 자율성 - 우리가 무엇을, 어떻게, 언제할지 통제할 수 있는 상태. 제대로 된 애자일 개발 환경이라면 이러한 것들이 보장되어야 한다.

2. 통달 - 더 나은 프로페셔널, 더 나은 인간이 되기 위해 계속 배우고 진화하는 것을 뜻한다.

3. 목적의식 - 지금 하고 있는 일이 중요하고 무언가를 더 나아지게 하고 있다고 느끼는 것을 뜩한다. 아무런 이해없이 시키는 대로 일하는 것의 반대 개념이다.' - 원동력:동기부여에 대한 놀라운 진실

 

[회사 안에서의 커리어] - p175

어느날 문득 높은 직위에 있다하더라도 다른 회사에서는 좋은 조건으로 갈 수 없는 퇴물이 되어 다니는 회사에만 목을 매는 붙박이 신세가 된다.

= 자신의 무능력이 드러날 때까지 승진하려는 경향 - 피터의 원리

고인물이 되지 말자. 블로그를 시작한 동기이기도 하다.

 

[요약] - (책 발췌)

1. 기술적 실행 관례를 따르는 것은 노력과 비용이 수반된다. 새로운 실행 관례에 팀이 익숙해지는 데는 학습 곡선이 필요하다. 처음에는 당황하고 불편해 작업이 느려질 가능성이 높다.

2. 실행 관례에 대한 도입을 이야기하기 전에, 먼저 우리가 이루려는 것이 무언인지 논의해야 한다. 소프트웨어 개발/납품 절차 중에서 어떤 부분을 얼마만큼 개선하길 원하는가? 이러한 것이 정의되고 나면 그것을 달성하기 위해 어떤 실행 관례를 도입할지 말할 수 있다.

3. 일에 대한 보상을 받는 프로페셔널이라면 고객에게 가치를 제공할 의무가 있다.

4. 장인이라면 일을 선택할 때 자율성, 통달, 목적의식을 쫓아야 한다.

5. 좋은 일감을 얻을 수 있는 위치에 도달하려면 커리어의 개발 과정 중에 많은 집중과 결단력이 필요하다. 성공적인 커리어는 공짜로 오지 않는다. 스스로 만들어 나가야 한다.

 

[다음 장]

https://yrok.tistory.com/entry/%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%9E%A5%EC%9D%B8-Software-Craftsmanship-Part-2-%EC%99%84%EC%A0%84%ED%95%9C-%EC%A0%84%ED%99%98-9-10%EC%9E%A5

 

소프트웨어 장인 - Part 2 : 완전한 전환 (9 ~ 10장) (Software Craftsmanship)

[9장] 인재 채용 [전형적인 채용 공고] - [인터뷰할 시간이 없다는 변명] - [틀에 박힌 직무 요건] <참고 정보로 필요한 직무 요건> - <일은 단순히 일이 아니다> - [추천 채용] - [커뮤니티의 활용] - [효과적인..

yrok.tistory.com

반응형

댓글