본문 바로가기
SW

[끝] 소프트웨어 장인 - Part 2 : 완전한 전환 (15 ~ 16장 + 부록) (Software Craftsman)

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

[이전 장]

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-13-14%EC%9E%A5

 

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

[13장] 배움의 문화 [잘못된 방향으로 동기 부여하기] - p244 '사람들에게 새로운 절차나 새로운 실행 관례를 강제한다고 조직을 변화시킬 수 없으며 우리는 배움의 문화를 만들어 내야 한다.' 배움의 문화까지는..

yrok.tistory.com

[15장] 실용주의 장인정신

[품질은 선택사항이 아니다]

-

 

[좋은 품질은 비싸고 시간이 오래 걸릴까] - p289

'프로'라면 XP와 애자일이 기본이다.

 

<테스트 주도 개발이 항상 필요할까>

아직 TDD에 대한 경험이 전무하고 개념에 대해 부족하다. 다음 '테스트 주도 개발 (Test-Driven Development:By Example)' 책 리뷰를 통해 제대로 학습을 하고 정리해 볼 예정이다.

 

[리팩토링] - p292

'리팩토링을 위한 리팩토링은 시간낭비다. 할 일이 없어서 시간이 남아 도는 것이 아니라면, 특별한 이유도 없이 코드를 열어서 재정리하는 일은 아무런 의미가 없다. 레거시 코드를 대상으로 작업할 때는 최소한 수정한 부분만큼은 원래 보다 깨끗하게 만들어 놓아야 한다.

새로운 기능을 추가할 때마다 코드를 분석하고 필요한 경우 리팩토링을 하여 레거시 코드가 새로운 기능을 자연스럽게 받아들일 수 있도록 해야 한다. '확장에는 열려 있고 변경에는 닫힌' OCP 원칙을 준수할 수 있도록 코드를 리팩토링한 후에 신규 기능을 추가한다.

TDD의 레드/그린/리펙터 라이프 사이클에 맞추어 작은 리팩토링들을 연속해서 적용한다. 먼저 동작하게 만든 후 점진적으로 개선해 나간다.'

저자의 말을 본받아 '프로 정원사'가 되어 열심히 코드 관리에 힘쓰고 있지만, 잘 된 리팩토링에 대해서는 물음표이다.

'테스트 주도 개발' & '클린 아키텍쳐' & '디자인 패턴' 열심히 학습하여 기준을 확립해야겠다.

 

[소프트웨어 개발 방법의 한 가지 예] - p293

'장인이라면, TDD와 같은 XP 실행 관례들을 절대 불변의 진리라고 믿어서는 안 된다.' => 뜨끔...

끊임없이 공부하자... 후..

 

[비즈니스 돕기] - p299

<단순하고 빠른 솔루션>

TDD에 입각하여 테스트를 늘려 설익은 아이디어를 딴딴하게 하자.

 

[소프트웨어 프로젝트는 우리를 위한 것이 아니다] - p299

'"나는 내가 뭘 하는지 알고 있고 나는 테스트를 작성할 필요가 없다."라는 태도는 이기적이고 오만한 것이다. 프로젝트를 수행한 사람들이 떠나간 후 그것을 유지보수할 사람들을 고려해야만 한다.'

이 점을 늘 유의하면서 일을 해야 한다 생각한다.

때때로 이런 생각이 들곤 한다. '창피하지 않나...? 이게 과연 최선일까? 나중에 누군가가 내 욕을 하고 있겠구나...' 

그런 일이 없도록 노력하자...

 

[비범함과 평범함]

-

 

[단순한 설계를 위한 네 가지 원칙] - p301

'1. 모든 테스트를 통과해야 한다.

2. 명료하고, 충분히 표현되고, 일관되어야 한다.

3. 동작이나 설정에 중복이 있어서는 안 된다.

4.메서드, 클래스, 모듈 수는 가능한 적어야 한다.

⇒ 1. 모든 테스트의 통과 / 2. 중복의 최소화 / 3. 명료성의 최대화 / 4. 구성요소의 최소화

이 접근 방법이 도메인 기반 설계, SOLID 원칙과 결합되면 꽤 괜찮은 코드를 만들어 낼 수 있다.'

도메인 기반 설계와 SOLID 원칙은 무엇이냐.. 공부할게 끝없이 나온다.

추후 공부할 것에 추가!

 

<디자인 패턴>

'GoF의 디자인 패턴' 열심히 공부하자.

 

<패턴을 위한 리팩토링>

-

 

[장인정신과 실용주의] - p306

장인정신 - 실용주의 = NULL

 

[16장] 소프트웨어 장인으로서의 커리어

[장인의 길] - p309

'열정. 이 단어 하나가 모든 것을 요약한다. 장인이 된다는 것은 새로운 것에 대해 호기심을 가지고 실험한다는 것과 같은 의미다. 진정한 소프트웨어 장인은 가장 먼저, 코드 작성이 아니라 문제 해결에 집중한다. 코드를 짤 때는 높은 품질의 코드를 작성하는 데 집중한다. 테스트 가능하고 쉽게 이해할 수 있으며 수월하게 유지보수할 수 있는 코드를 작성하는데 집중한다.'

어찌 보면 저자가 말하고자 했던 책의 요약본이다. 이보다 잘 요약될 수 있을까?

 

<정직과 용기>

정직함은 용기에서 나오지 않을까? '프로'라면 커리어에 있어서 정직함을 사수해야 한다. 그 바탕에는 용기가 필요하고.

그래야 고객과의 진정한 동반자 관계를 이룰 수 있지 않을까?

 

[커리어의 진전] - p313

'개발자들을 고급 기술을 가진 프로페셔널로 인지하지 못하는 회사들은 그들을 위해 일할 장인을 구할 수 없을 것이다.'

제발 좀...

 

<다른 커리어 사다리>

-

 

[여정과 이정표] - p316

<커리어 만들어 나가기>

1. 나의 커리어로부터 나는 무엇을 원하는가?

2. 그것을 성취하기 위한 다음 단계는 무엇인가?

3. 이 일은 나의 커리어 방향과 합치하는가?

4. 내가 이 회사에 줄 수 있는 가치의 양은 얼마나 되는가?

5. 그러한 투자에 대한 이익은 무엇인가?

6. 그러한 투자는 대략적으로 얼마 동안 지속되어야 하는가?

7. 내가 되고자 하는 프로페셔널에 이르는 데 이 일은 어떻게 도움이 되는가?

8. 이 일에서 나는 자율성, 통달, 목적의식을 가질 수 있나?

9. 나의 고용주와 생산적인 동반자 관계를 맺을 수 있나? 양측 모두 가치 얻고 행복할 수 있나?

'앞으로 나아가지 못하고 정체되어 있다고 느낀다면, 무언가를 배우거나 스스로 일을 즐기지 못한다면, 그때는 움직여야만 한다.'

고인물이 되지 않기 위해 만든 블로그의 취지다. 물론 지금 움직인다는 말을 하는건 아니다!(아직은...)

정체된다. 매너리즘에 빠졌다. 라는 느낌이 들때면 위 9가지 질문에 대해 스스로 답해보자.

 

<원하는 바를 모른다면 어떻게 해야 할까>

-

 

[다양성]

-

 

[소프트웨어 장인의 사명] - p322

저자는 장인의 사명에 대해 거창하게(?) 말하였지만...

그냥 별거 없고 각자 하고 싶은 것에 집중하고, 커리어를 '프로'답게 투자하고 관리하여 고객에게 가치를 전달하면 되는 것 아닐까 싶다.

 

[요약] - (책 발췌)

1. 품질은 비싼 것이 아니다. 스킬 부족이 잘 작성된 코드를 비싼 것으로 만드는 원인이다.

새로운 스킬, 새로운 실행 관례, 새로운 기술을 배우고 마스터하는 것은 병목점이 된다.

2. 장인으로서 우리의 역할은 특별히 이슈가 되지 않을 정도까지 품질 비용을 낮추는 것이다. 그렇게 하기 위해서는 좋은 실행 관례들을 마스터하고 실용주의적인 입장을 취할 필요가 있다. 서로 다른 맥락에서 각각의 실행관례들이 어떤 가치가 있는지 이해해야 한다.

3. 열정과 사명을 가지고 자신의 커리어를 스스로 꾸려 나가야 한다.

 

 

[부록] 소프트웨어 장인정신에 대한 오해와 설명

[소프트웨어 장인과 소프트웨어 개발자]

-

 

[장인정신 ≠ 엘리트주의]

-

 

[견습생, 숙련공, 마스터]

-

 

[마스터 장인]

-

 

[근시안적 개념으로 보는 시선] - p326

린, 애자일, 장인정신은 모두 짧은 피드백 루프를 통해 가치를 전달하는데 집중한다.

 

[장인정신과 XP] - p326

'장인정신은 이데올로기이고 XP는 방법론이다. 이데올리기는 가치, 태도 행동양식을 다루고 방법론은 실행 관례와 특정 문제의 해결을 다룬다. XP 역시, 자체적인 추구 가치가 있다(단순함, 소통, 피드백, 존중, 용기). 하지만 XP는 실행 관례들의 집합으로서 더 많이 알려져 있다. 장인정신은 프로페셔널리즘에 집중한다. 프로페셔널한 태도는 우리가 사용하는 실행 관례와 단단히 엮여 있다.'

XP를 통해 장인정신을 실현한다 일까?

 

[실행 관례와의 관계]

-

 

[애자일 코치와 관리자]

-

 

[소프트웨어 도제 제도]

이런 문화가 자리잡으면 커리어 생활에 색다른 재미(?)가 있지 않을까 싶기도 하다. 물론 꼰머는 금지...

 

[비유로 인한 문제]

-

 

[갈무리]

https://yrok.tistory.com/manage/newpost/24?type=post&returnURL=https%3A%2F%2Fyrok.tistory.com%2Fentry%2F%25EC%2586%258C%25ED%2594%2584%25ED%258A%25B8%25EC%259B%25A8%25EC%2596%25B4-%25EC%259E%25A5%25EC%259D%25B8-Software-Craftsmanship-%25EA%25B0%2588%25EB%25AC%25B4%25EB%25A6%25AC

 

TISTORY

나를 표현하는 블로그를 만들어보세요.

www.tistory.com

 

반응형

댓글