본문 바로가기
생각 정리/독서

2024-01. 소프트웨어 장인

by Jiyoon-park 2024. 1. 17.

24년도의 첫번째 책. 소프트웨어 장인

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=66925855&start=pgooglemc

 

소프트웨어 장인

소프트웨어 장인에 대한 이야기. 프로그래머와 프로그래밍 관련 팀 또는 조직에 도움이 될만한 이야기를 풀어 놓았다. 생산성이 높은 프로페셔널, 자신의 일에 자부심을 갖는 프로페셔널로 도

www.aladin.co.kr

 

* 소프트웨어 장인 정신이란 무엇일까?

- 도자기 장인이다

- 자신의 도자기에 책임감을 가질 것.

- 더 훌륭한 도자기를 만들기 위해 끊임없이 갈고 닦을 것.

- 도제를 길러낼 것. (커뮤니티를 위해 노력할 것)

 

* 애자일이란 무엇인가?

- 애자일이란 빠른 피드백 루프를 돌면서 빠르게 문제를 발견해내는 것 → 문제를 해결할 기회 자꾸 얻기

- `피드백 → 문제발견 → 해결 → 피드백 → 문제발견 → 해결` 무한루프~

- 애자일 문화에서 중요한 것은 절차나 도구가 아니다. 

- 애자일이 성공하기 위해서는 기술적 탁월함이 베이스가 되어야한다.

- 발견한 문제를 빠르게 해결하고, 빠르게 기능을 붙일 수 있고, 빠르게 수정 가능한 소프트웨어여야만 한다.

- 그걸 만들기 위해서는 소프트웨어 장인 정신을 가진 자들이 필요하다.

 

* 소프트웨어 장인이 되기 위해서는 어떻게해야 하나

- 내 커리어의 주인은 나다. 커리어에 대한 책임감을 갖기

- 주어진 일을 해내기 위한 딱 그정도의 일이 아니라, 꾸준히 재밌게 `계속` 열심히 할 것

- 펫 프로젝트를 하자. 내가 사장으로 기획자도, 디자인도, 문제 정의도, 소프트웨어 개발도 다 내가 해보기.

- 오픈 소스 기여해보자. 날고 기는 멋진 개발자들의 코드를 들여다 볼 기회

 

* 영웅이 되려하지 말고 프로가 되어라

- 안되는 것을 된다고 하지 말아라

- 안되는 것을 안된다고 말하고, 다른 대안을 내라. 

- 안된다고 말하는 건 다른 팀들도 문제를 인지하고 해결한 방안을 찾을 시간을 벌어주는 것이다


* 동작한다고 다 같은 소프트웨어는 아니다 

- 좋은 품질의 소프트웨어를 만들어야 한다.

- 좋은 품질의 소프트웨어를 만들기 위해서는, 테스트 코드 작성과 리팩토링이 필수이다.

- 따로 테스트 코드를 짜는 이슈 티켓을 생성하지 말아라. 테스트 코드 작성은 별도의 작업이 아니라 기능 개발과 항상 같이 가는 작업이다.

- 레거시를 리팩토링하는 것은 퍼즐 맞추기 게임과 같다.

- 레거시 코드를 각 조각으로 쪼개놓고 비슷한 것끼리 모아 모서리부터 맞추기 시작하면 조각의 그룹이 보이고 점점 큰 부분이 읽힌다.

- 레거시 코드는 피할 수 없다. 피할 수 없다면? 즐겨라. 코드 퀄리티가 좋아지는 게 눈에 보일수록 재미를 알게될거다

 

* 좋은 기술적 문화

- TDD를 하고, 페어프로그래밍을 하고, 지속적 통합을 하고, 리팩토링을 하고, 피드백 루프를 빨리 하는 등의 문화를 만들어야한다.

- 빠른 피드백 루프, 요구사항과 비용에 대한 더 나은 이해, 지식 공유, 줄어드는 버그, 전체적으로 자동화되고 릴리즈가 빨라진다.

- 새로운 문화를 팀 내에 처음 정착시킬 때에는 설득이 필요하다.

- 막연히 이거 좋아~ 가 아닌 이런 문화가 가져올 실질적 이점들을 강조해서 이야기하자. 

 

* 중요한 것은, 자율성/성장/목적의식이다.

- 내 커리어는 내 것이다. 금전적 가치 보다는 나의 커리어를 위해서 일해라

- 소프트웨어 장인으로서 성장할 수 있는 환경의 회사로 가야한다. → 자율성이 보장되는 회사들/애자일한 회사들

- 워터폴 방식으로 내가 해야할 것이 무엇인지만 내려오고 동기가 싱크되지 않은 채로 일하면 그냥 코딩 짜는 기계

- 내가 이 일을 왜 해야하고, 이게 회사에 벌어다주는 이득은 무엇인지, 이 일을 할지 말지, 혹은 다른 방법으로 풀어낼 순 없을지 소프트웨어 엔지니어로서 고민할 것. 그리고 최적의 선택을 스스로 할 수 있는 자율성이 존재하는 곳에서 일할 것.

* 기술혁신을 위해서는 개발자가 노력해야한다
- 팀 내 기술 혁신을 불러일으키기 위해서는 기술 혁신에 의지가 있는 팀원들이 앞서 모범을 보이고, 팀 내 문화로 이끌어야한다.

- 테스트는 기능 개발과 같이 가는 하나의 작업이다
- 리팩토링이나 TDD에 대한 작업 일정을 따로 허락받으려하지 말고 기능 개발 작업 일정 속에 잘 녹여 써라

 

* 회사의 커리어와 소프트웨어 장인으로서의 커리어는 차이가 있다

- 직장은 급여 이상의 의미가 있다.

- 직장은 커리어를 위한 지속적인 투장이다.

- 항상 더 많은 것을 제공하고, 더 많은 일을 수행해서 내 주변에 내가 할 수 있는 최선의 도움을 주도록 해라

 

 

 

 

'생각 정리 > 독서' 카테고리의 다른 글

2024-04. Clean Code  (0) 2024.09.02
2024-03. 오브젝트 (1)  (1) 2024.02.08
2024-02. 객체지향의 사실과 오해  (2) 2024.02.02
부자 아빠, 가난한 아빠  (0) 2022.09.06
위대한 나의 발견, 강점 혁명  (0) 2022.07.04