알지 못하며 그 사실도 모르는 자, 바보로다. - 그를 멀리하라!
알지 못하나 그 사실을 아는 자, 못 배운 자로다. - 그를 가르치라!
알고 있으나 그 사실을 모르는 자, 잠든 자로다. - 그를 깨우라!
알고 있으며 그 사실을 아는 자, 깨우친 자로다. - 그를 따르라!
- 이자벨 버턴 부인(Lady Isabel Burton)(1831~1896)이 저서 "The Life of Captain Sir Richard F.Burton" 중에서 인용한 아랍 속담
이 책의 목표는 우리가 전문 소프트웨어 개발이라는 분야의 새내기로서 맞닥뜨리게 될 힘든 결정의 시기에 도움을 주고자 하는 것이다.
초년병 시절에 봤었더라면 조금 더 도움이 되지 않았을까 하는 생각이 드는군.
패턴 언어는 그것을 사용하는 각 사람에게 새롭고 독특한 건물을 무한히 다양하게 창조할 수 있는 힘을 부여한다. 이것은 그가 통상적으로 사용하는 언어가 그에게 무한히 다양한 문장을 창조하는 힘을 주는 것과 마찬가지다.
- 크리스토퍼 알렉산더, "The Timeless Way of Building", p.167
소프트웨어 장인정신 선언
뜻을 품은 소프트웨어 장인으로서, 우리는 소프트웨어 개발을 수련하고 다른 이들의 학습을
돕는 것으로 전문적인 소프트웨어 개발의 기대치를 높이고 있다. 이와 같은 작업을 통해 우리는 아래와 같은 결론에 이르렀다.
우리는 동작하는 것을 넘어서 잘 짜인 소프트웨어에,
변화에 대응할 뿐 아니라 지속적으로 가치를 더하는 일에,
개인들 그리고 그 사이의 상호작용에 더해서 전문가들의 공동체에,
고객과의 공동 작업 뿐 아니라 생산적인 파트너십에 가치를 둔다.
즉, 우리는 왼편의 항목을 추구함에 있어서 오른편의 내용이 필수불가결함을 알게 되었다.
-------------------------------------------------------------------------------------------------------------------------
견습과정은, 기예를 통달하겠다는 필생의 열정을 서서히 불어넣는다는 점에서 중요하다.
이는 끊임없이 배우고자 하는 열정을 점점 쌓이게 하며, 그런 과정 속에서 견습생은 탁월한 개발자가 될 수 있다. - 피트 맥브린, "Software Craftsmanship"
견습과정이란 무엇인가?
학습 상황이란 본질적으로, 자기가 무엇을 하고 있는지 정말로 알고 있는 누군가르 ㄹ도우면서 배워가는 상황이다. - 크리스토퍼 알렉산더 외, "A Pattern Language", p.413
우리는 견습 개발자들을 양성하는 데 필요한 시간을 감수해야 한다. 왜냐하면 우리가 당면한 문제는 희소함이 아니라 풍부함에 있기 때문이다. (중략)
오늘날 개발자들은 필요 이상으로 많지만, 좋은 개발자는 부족하다.
- 피트 맥브린, "Software Craftsmanship", p.93
특정한 기술 분야에 집착하지 말고, 개별 상황에 알맞은 해법을 고를 수 있도록 광범위한 배경 지식과 경험을 충분히 쌓아두어야 한다. - "실용주의 프로그래머", p.xviii
첫 번째 언어
훌륭한 표기법은 두뇌로부터 모든 불필요한 일을 덜어줌으로서 좀 더 높은 수준의 문제에 자유롭게 집중할 수 있도록 해주면, 실제로 인류의 지적 능력을 고양시킨다. 어떤 업계든 그 속에서 쓰이는 기술적인 용어들은 사용법을 훈련 받은 사람들이 아니면 이해하기 힘든데, 이 용어들이 어렵기 때문에 그런 것은 아니다. 오히려 그런 용어들은 언제나 일을 더 쉽게 만들 목족으로 고안되어 왔다.
- 알프레드 노스 화이트헤드, "An Introduction to Mathmatics"
흰 띠를 매라!
대개 발걸음 하나하나마다 새로 시작한다는 느낌이 들어야 한다.
이것이 초심이며, "되고 있음"의 상태다.
- 순류 스트키(Shunryu Suzuki), "Zen Mind, Beginner's Mind"
위로 오르기 위해서는 당신이 이미 잘 하는 것을 내려놓아야 한다. 그리고 골짜기로 미끄러져 내리기도 하면서 단단히 디디고 선 곳을 떠나야 한다. 만약에 이미 잘 하는 것을 내려놓지 않는다면, 꾸준히 진전할지는 몰라도 고지에는 결코 오를 수 없을 것이다.
- 제리 와인버그, "Becoming a Technical leader", p.42
열정을 드러내라
장인들은 소프트웨어 개발이라는 기예를 기꺼이 배우고자 하는 열성적인 견습생만 채용한다. 견습생들은 소프트웨어 장인정신 개념에서 필수적인 부분이다. 그들은 일에 대한 의욕과 배움에 대한 추진력을 가지고 와서는 다른 모든 이들에게 퍼뜨리기 때문이다.
- 피트 맥브린, "Software Craftsmanship"
전반적인 이해력은 서로 다른 여러 수준의 경험이 상호 연관될 때 더욱 높아질 수 있다. 그 무엇도 당연하게 여기지 않는 신참들과, 알 것은 다 안다고 생각하는 고참들이 더 자주 밀접하게 소통할 때가 거기에 해당된다.
- 칼 와익,칼린 로버츠, "Collective Mind in Organizations", p.366
견습생은 장인들로부터 배움을 얻지만, 장인도 견습생에게서 배운다. 열정이 있는 초보자는 장인을 스스로 일신하게 할 뿐 아니라 외부에서 들여온 새로운 아이디어로 장인의 의욕을 불러일으킨다. 잘 선택된 견습생은 마스터마저도 더욱 생산적이 되게 할 수 있다.
- 피트 맥브린, "Software Craftsmanship"
구체적인 기술
지식을 가진 것, 그리고 그 지식을 써서 소프트웨어를 만들어 내는 역량과 실무 능력을 갖춘 것은 다르다. 여기에 장인정신의 역할이 있다.
- 피트 맥브린, "Software Craftsmanship"
무지를 드러내라
내일 나는 더 어리석게 보일 필요가 있으며, 거기에 대한 느낌도 더 나아질 걱이다. 가만히 있으면서 일이 어떻게 돌아가나 살피는 것은 별로 효과가 없는 것 같다.
- 제이크 스크럭스(Jake Scruggs), "My Apprenticeship at object mentor"
무지에 맞서라
만일 우리가 독립성을 가치 있게 여긴다면, 현재 체제의 지식, 가치, 사고방식에 내 생각을 맞추려는 경향이 점점 늘어가는 것이 불안하다면, 우리는 자신의 유일함에 대해 스스로 방향을 잡아가는 법에 대해, 자발적으로 학습하는 법에 대해 배울 수 있는 환경을 조성하고자 할 것이다. - 칼 로저스(Carl Rogers), "On Becoming a Person"
깊은 쪽
무참한 실패를 맛본 적이 한 번도 없다면, 당신은 뭔가 가치 있는 일을 시도했던 적이 한 번도 없었다고 봐야 한다.
- 크리스토퍼 호킨스, "So You Want To Be a Software Consultand?"
한발 물러서라
당신이 가려는 곳을 바라본 다음에 지금 어디쯤 있는지를 보면, 항상 터무니 없다는 생각이 들 겁니다. 그러고 나서 당신이 걸어왔던 길을 돌아보고 있노라면 그 속에서 어떤 패턴 같은 것이 드러날 거예요. 그 패턴으로 당신의 앞길을 비추어 본다면, 가끔은 그 무엇인가를 찾아낼 수 있을 겁니다.
- 로버트 퍼식(Robert Pirsig), "Zen and the Art of Motorcycle Maintenance"
Posted by 홍반장