ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머의 길, 멘토에게 묻다] - 10
    Notes/Book 2020. 10. 3. 07:28

    앞으로의 포스팅은 책에서 소개하는 패턴 언어 중 마음에 드는 구절을 소개하는 방식이 될 것이다.

     

    능력의 폭을 넓혀라

     

     

    상황

    당신은 기본적인 기술 몇 가지를 익히게 되었다.

    문제

    소프트웨어 개발에 대한 당신의 이해는 협소하며, 그 마저도 일상 업무와 연관된 저 수준의 세부사항에 너무 집중되어 있다.

    해결책

    당신은 지금껏 착실하게 빨대로 마시고 있던 셈이다. 하지만 견습과정 중에는, 대부분 개발자에게 열려 있는 "정보의 소방 호스"로부터 들이켜야만 하는 시기도 있다. 새로운 정보를 얻고자 자기 능력의 폭을 넓히는 단계는 견습생에게 아주 중요하며, 가끔은 압도됨을 느낄 수도 있다. 당신은 새로운 지식을 이해하고 간직하며 적용하는 방법뿐 아니라 효과적으로 흡수할 수 있는 테크닉도 발전시켜 가야 한다. 이 패턴은 익숙하지 않은 주제를 다룬 소프트웨어 개발 서적 한 권을 읽는 정도를 의미하지 않는다. 이 패턴은 다양한 차원에 걸쳐서 새로운 지식과 경험을 찾아가는 활동을 수반한다.
    예시를 들자면, 유수의 기업의 개발 블로그 보기, 유명한 개발자들이 관심을 기울이는 분야 찾아보기, 신기술을 사용하는 지역 사용자 그룹에 참여하기, 책을 읽고 저자에게 감사의 말과 질문을 담아서 연락해보기 정도가 있다.
    견습 과정 중에 학습과 다른 일에 대한 우선순위가 바뀌어 가면서, 언젠가는 결국 프로젝트 작업에 집중하기 위해 소방 호스를 꺼야 할 때가 온다. 하지만 당신의 견습과정 중에 적어도 이 패턴을 한 번은 활용해야 한다. 이 패턴이 중요한 이유가 이 과정에서 습득할 지식 때문만은 아니다. 바로 이 패턴 자체가 습득해야 하는 기술이기 때문이기 때문이다. 숙련공과 마스터들은 이 패턴으로 경력과 장인정신을 진일보시킬 기회를 모색하며, 특히 새로운 기술 분야에 진입하고자 할 때 이 패턴을 활용한다.
    어떻게 능력의 폭을 넓힐지 이해했다면, 다음 단계로는 언제 그것을 실행에 옮길 것인지 알아야 한다. 새로운 정보를 수집하고 소비하면서 거기에 사로잡혀 버릴 가능성도 있는데, 이는 소프트웨어 업계에서 가장 왕성한 활동을 벌이고 있는 사상가들의 최신 아이디어를 접하기가 쉬어지면서 더 커졌다. 이 패턴은 사려깊게 적용해야 한다. 자신의 학습은 가속화되겠지만 개발 속도는 늦춰지기 때문이다. 그러므로 수개월 이상 적용했을 때는 점차 느려진 개발 속도 때문에 학습이 가져오는 효과 또한 줄어들 것이다. 

    일과 학습

    포비는 말씀하신다. 우테코 1기 과정을 수료한 후에 NextStep 과정을 진행하시는 크루들이 있다고. 그분들께서는 우테코 과정 중에 열심히 미션을 하셨지만 직장과 NextStep 미션을 동시에 수행하시는 지금은 미션 완료율이 낮다고. 그만큼 어려운 일이다. 일과 학습을 병행하기는.
    지금 나도 마찬가지다. 학습을 주로 하고 있지만 서비스 근로를 진행하며 3기 모집 페이지를 만들고 있다. 그러다 보니 따로 시간을 마련해야 주어진 학습량을 채울 수 있다. 직장을 가지게 되면 얼마나 더 노력해야 따로 공부할 수 있을까? 생각을 달리 해야 한다. 공부할 수 있는 환경을 구성해야 한다. 혼자서 힘들다면 마음 맞는 친구들과 함께!

     


     

    연습, 연습 또 연습

     

     

    상황

    당신은 지금 하는 일에 더 능숙해지고 싶으며, 새로운 분야에서 구체적인 기술을 개발하고자 한다.

    문제

    당신의 일상적인 프로그래밍 환경에는 실수해 가면서 배울 만한 여지가 없으며, 늘 무대 위에 서 있는 것 같다.

    해결책

    실수해도 마음 편한 환경에서, 방해 받지 않고 기예를 연마할 시간을 확보하라. 이상적인 경우라면 멘토가 당신의 강점과 약점에 기초한 연습 과제를 부여할 것이다. 과제를 다 끝내면 멘토는 당신과 함께 객관적인 척도로 당신의 수행 능력을 평가하고 나서 다음 과제를 같이 고민할 것이다. 그런 다음 당신의 멘토는 다른 학생들을 가르친 경험을 활용해서 새롭고 더욱 도전적인 과젤르 고아해낼 것이다. 이 과제를 통해 당신은 자기 역량에 대해 성찰하고, 더 효율적인 작업 습관을 찾아내며, 여러 가지 지식을 한층 추상적인 단계로 모으고 그런 관점에서 사물을 볼 줄 아는 능력을 개발할 것이다. 시간이 흐르면서 이런 일련의 연습 과제들은 당신의 강점을 연마하고 약점을 교정해줄 것이다. 유감스럽게도 우리는 이런 이상적인 세계에 살고 있지 않으며, 견습생들은 같은 효과를 거두기 위해서 자기가 가진 자원에 의존해야만 한다. 
    우리는 소프트웨어를 만들며 업무 중에 연습을 한다. 그것이 업무 중에 실수를 하는 원인이다. 우리는 직업적인 일과 연습을 구분할 방법을 모색해야 한다. 우리에게는 연습을 위한 시간이 필요하다. 코드 카타(태권도의 품새)를 찾아보라. 코드 카타를 수련하는 도장까지도 존재한다고 한다.(우테코가 이런 도장이 아닐까 싶다) 적절한 수준의 과제를 거듭 반복함으로써 우리는 자신의 기술을 연마하며, 우리 몸과 마음이 TDD와 단순한 설계의 규율에 감응하도록 훈련한다. 코딩 도장은 우리에게 스트레스 없는 쾌활한 분위기에서 소프트웨어를 개발할 수 있는 장소와 시간을 제공한다. 출시 일자도 없고, 제품화 이슈도 없다. 우리는 이런 시간 속에 짧은 피드백 루프를 넣을 필요가 있다. 연습이란 이론적으로 좋은 것이지만, 주기적인 피드백을 받지 못한다면 오히려 나쁜 습관을 들이는 데 공을 쓰고 있을 수도 있기 때문이다.
    마스터들은 연습을 하며 조금씩 차이를 준다. 요점은, 기억에 의존해서 기술을 연마하지 않으며, 가장 단순한 숙련된 행위를 할 때 조차도 미묘한 차이를 발견해 내는 것이다. 연습을 계속 하는 행위만으로는 고착되기 십상이다. 연습 이휴의 피드백, 어떤 연습을 하는지에 대한 자각도 중요하다. 그리고 매일 연습할 것을 올바르게 선택하는 것도 반복되는 수련 행위 그 자체만큼이나 중요한 기술이다. 수련 시간에 사용할 흥미로운 과제를 확보하는 방법은 오래된 책을 통해서 얻을 수 있다. 

    연습의 중요성

    은 아무리 강조해도 지나치지 않는다. 우테코를 시작하기 전에 계속 잡아왔던 파이썬을 이제는 문법을 찾아보며 사용한다. 꾸준하게 연습하지 않았기 때문이다. 대신 꾸준하게 자바를 연습했고 숙련도는 올라갔다(아직 많이 부족하다) 하루의 일과도 마찬가지다. 아침에 일찍 일어나서 운동을 하는 습관을 기르고 있는데 이 또한 연습의 결과라고 생각한다. 어느 정도 연습이 진행되면 정신적인 근육이 탄생하게 되고 그 결과 굴곡이 있더라도 꾸준하게 수행할 수 있다.
    하지만 매일매일 나태하게 하루를 보내기를 연습한다면 어떨까? 극단적인 예시지만 꾸준하게 수행할 수 있을 것이다. 다만 올바른 선택이 아닐 뿐.

    댓글

Toneyparky Blog