최근 가장 핫한 TV 프로그램이라고 하면 단연코 '흑백 요리사' 를 꼽을 수 있다.
많은 사람들이 재미있게 본 이 프로그램을 보면서 개인적으로는 다른 생각도 하게 되었다.
"흑백 요리사에 참석한 모든 쉐프들은 다들 많은 노력을 하고 난 이후에 위 자리에 올라왔다. 여기서 배울 수 있는 점은 무엇일까?"
그리고, "각각의 미션들을 보면서 어떤 노력, 얼마만큼의 생각을 평소에 했기에 저만한 결과를 낼 수 있었을까?" 라는 생각이 들었다.
오늘은 개발과 흑백 요리사에 대한 내용을 살짝 곁들여서 이야기를 진행하고자 한다.
음식에 100점은 없다고 생각합니다.
안성재 쉐프는 요리사들의 요리를 평가하면서 "자신은 100점짜리 요리는 존재 할 수 없다" 고 말했다. "모든 음식은 더 나아질 수 있는 가능성이 있기 때문" 이다. 라는 근거를 가지고 계셨다.
이 말을 인용하여 다음과 같은 주제를 이야기하고자 한다.
개발에 100점은 없다고 생각합니다.
나 또한 그렇고 개발을 하면서, 혹은 새로운 기술을 습득할 때 완벽함을 추구하려는 경우가 있다. 마치 특정 기술 혹은 아키텍처에 정답이 있기라도 한 것처럼 해당 기술에 매몰되기도 한다. 하지만, 세상은 끊임없이 발전하고, 기술도 상황에 따라 변화한다. 어떤 기술이나 아키텍처도 영원히 완벽할 수는 없다. 주어진 상황(비용)에 사용 할 수 있는 적절한 기술 및 아키텍처를 선택 할 수 있는 안목을 길러야 할 필요가 있다는 생각이 들었다.
나도 주니어 개발자이지만, 나와 같은 주니어 개발자들에게도 해주고 싶은 말이 있다.
어떠한 기술을 100% 완벽하게 익힐 수 있을 것이라는 착각을 버리자.
주어진 상황에서 무엇을 선택할 수 있는지, 그리고 대안은 무엇이 있는지를 파악하고 주어진 상황에서 최선의 선택을 하자. 두려움에 이론만 파고드는 학습으로는 성장을 이루어 낼 수 없다.
무한 요리 지옥
'흑백 요리사'에 나온 무한 요리 지옥은 하나의 재료를 가지고 계속해서 요리를 만들어내는 미션이다.
개인적으로는 이 미션이 가장 흥미로웠다.
이 주제를 개발로 가져와 보자.
"당신에게 하나의 비즈니스 아이템이 주어졌습니다. 제한시간 안에 개발하여 하나의 상품을 만들어보세요."
이는 개발의 스프린트와 흡사하다는 생각이 들었다.
하나의 비즈니스 요구사항을 해결 할 수 있는 기술적 방안은 다양하다. 앞서 언급했듯이 개발에는 정답이 없고 주어진 상황에서 최선의 선택만이 있다. 여기서 최선의 선택의 결정은 결국 경험에서 우러나온다.
특히, 에드워드 리 쉐프는 한식 요리에 정통하지 않았음에도 불구하고 자신의 경험을 바탕으로 해당 요리 재료를 특색있게 요리하였다. 이는 요리 재료에 대한 이해가 기본적으로 깔려 있었고 비슷한 식감이 무엇이 있는지 자신의 경험에 맞추어서 만들어낸 결과이다. 개발도 이와 비슷하다.
모든 기술의 핵심은 결국 CS이다.
요즘 말이 나오는 모든 다양한 기술들(카프카, 레디스, 엘라스틱 서치 등등)은 CS를 추상화하여 더 쉽게 사용 할 수 있도록 만든 것이다.
결국, 이러한 기술들도 "주어진 문제를 어떻게 해결할 것인가?" 라는 고민을 해결하기 위해 코드로 작성 된 것들이다. 폭넓은 CS 지식을 가지면 기술습득이 수월해지고, 그 사용법은 개발자가 어떻게 만들었느냐 (창의성 있는 요리)에 따라 달라진다.
주니어 시절에는 프레임워크나 라이브러리에 종속되는 경우가 많다. "그게 아니면 해결 할 수 없지 않을까?" 라는 생각을 자연스럽게 가지게 되는것이다.
하지만, 프레임워크와 라이브러리는 어떠한 문제 해결을 도와주는 도구일 뿐이다. 본질적인 문제 해결 방법에 대해 고민할 필요가 있다.
그렇다고 프레임워크를 학습 할 필요가 없다는 것은 아니다. 프레임워크는 좋은 경험치이다. "잘 만들어진 도구를 보고 문제를 어떻게 해결했지?" 를 살펴보는 것은 견습 요리사들이 레스토랑에 가서 "주어진 재료로 어떻게 이런 맛을 낼 수 있지?" 를 경험하는 것과 동일하다고 생각한다.
편의점 재료로 자유롭게 음식 만들기
'흑백 요리사'의 또 다른 미션은 편의점 재료로 자유롭게 음식을 만드는 것이었다.
이 미션의 핵심은 평소 쉽게 접할 수 있는 재료로 새로운 요리를 만들어보는 것이었다.
평상시에 쉽게 접할 수 있는 요리 재료로 색다른 요리를 만들어보는 것. 이 미션의 핵심이었다고 생각하는데, 여기서 또한 학습의 자세를 찾아 볼 수 있다.
사람이라면 자연스럽게 익숙하거나 경험했던 기술을 사용하려고 할 것이다.
익숙한 기술이 구현을 하는데 있어서 빠른 속도로 지금 주어진 상황에서 안정적으로 개발을 해낼 수 있는 선택지 중 하나이기 때문이다.
하지만, 익숙한 것만 고수하면 성장을 할 수 없고 문제 해결을 위한 사고를 확장 해나갈 수 없다.
학습은 적절한 긴장이 필요하다. 너무 쉬운 문제는 생각을 적게 하여 무의식적으로 해결하게 되고, 너무 어려운 문제를 다룬다면 자신의 부족함에 자책하며 의욕이 떨어지게 된다.
자신에게 조금 어려운 문제들을 차근차근 해결해나가다보면 주어진 상황에서 문제를 해결 할 수 있는 선택지가 늘어나고, 이는 문제를 해결하는데 있어서 더 낮은 사이드 이펙트를 발생 시키는 결과물을 만들어 낼 수 있을 것이다. 새로운 것들을 경험하고 시도하는 것을 두려워하지 말자.
요리사는 학습을 어떻게 할까?
'흑백 요리사'를 보면서 문득 이런 생각이 들었다.
"내가 어떤 요리를 먹고 싶을 때 영상을 보고 직접 재료를 사서 요리를 해보고 내가 맛을 보고 평가하는데, 개발 할 때는 어떤 자세로 임하고 있지?"
내가 하고 싶은 요리 혹은 해주고 싶은 요리를 하기 위해 여러 레시피를 보면서 시행착오를 겪고는 한다. "이 맛이 맞나? 무엇이 더 부족했을까? 이걸 더 추가했으면 괜찮았을까?" 라는 고민을 하고는 한다.
실제로 견습 요리사들도 요리를 학습하기 위해 직접 맛보고 해당 레시피대로 요리를 만들어보고, 자기의 색깔을 입혀서 다른 요리로 만든다고 한다.그런데, 개발에 이를 접목하니 내가 프로로서 임하고 있는 영역이 오히려 위와 같은 생각을 덜 하고 있다는 생각이 들었다.
유명한 개발자들이 "어떠한 기술에 대해 좋아요~" 라고 했을 때 직접 시도해보지 않고 "이런 것들이 있구나~" 하고 어딘가 메모만 해둔다거나 머리에 남겨둔다. 우리보다 더 많은 경험을 가지신 시니어분들의 조언이기 때문에 맞을 수도 있지만, 실제로 따라하다보면 장단점이라는 것은 분명하게 존재한다. 이는 직접 경험하지 않고서는 체득 할 수 없는 영역이다.
방대한 지식을 우겨넣는 것보다 시니어 분들의 조언을 내가 직접 몸으로 체득하여 장단점을 찾고 더 좋은 방향을 찾아나가는 것이 사고의 폭을 넓힐 수 있는 좋은 계기가 될 것이라고 본다.
마무리
흑백 요리사를 보면서 개발에 접목 시켜서 보다보니 정말 많은 것들을 배울 수 있었다.
개발이 수많은 연구와 노력 그리고 도전과 경험끝에 어떠한 하나의 결과물을 만들어내는 것처럼 요리도 개발과 다르지 않은 영역이기 때문에 더 몰입해서 볼 수 있었다. 위에서 길게 얘기했지만, 풀어서 요약하자면 다음과 같다.
- 결과물을 만들어 내기 위해 100% 완벽한 답은 없다. 제한된 상황에서 선택 할 수 있는 최적의 선택을 하여 적절한 결과물을 만들어 내는 것 뿐이다.
- 진정한 학습을 위해서라면 직접 해보는 것 만큼 체득 할 수 있는 것이 없다. 단순히 보기만 하지 말고 직접 행하여 결과물을 보고 개선 할 수 있는 것을 자신의 스타일대로 붙여나가자.
- 모든 만들어진 기술은 결국 CS(근본 재료)에 기반하여 만들어진 것들이다. 기본을 충실히 여기며 다양한 경혐을 덧붙여 최적의 선택을 해나가야만 한다.
이번에 작성된 글은 개발을 학습하는많은 개발자들에게 '내가 경험한 바를 쉽게 전달했으면 하는 목적' 그리고 '나 자신의 회고를 위해 작성되었다.' 아직 많은 경험이 없는 주니어 개발자에게 학습의 방향을 제시하는 데 도움이 되었으면 한다.
짧은 회고
오랜만에 글을 작성했다. 트렌비에 취업한 이후 기술 발표와 자료 공유를 회사 내에서 또는 스터디를 통해 해왔다. 외부에 글을 공개하는 데에는 신뢰도 있는 내용과 구조를 만드는 것이 중요하다고 생각했고, 이는 리소스를 많이 소모한다고 생각했다. 하지만 지식을 공유하고 싶은 마음이 꼭 기술적인 것에만 한정될 필요는 없다고 생각했고, 글쓰기도 많이 해봐야 발전한다고 생각했다.
이를 위해 최근 '글또' 모임에 참가하여 글쓰기를 실천하며 더 나은 글을 통해 좋은 영향을 줄 수 있도록 연습하고자 한다. 오늘은 글또 운영자님의 조언을 따라 글을 작성했으며, 생각보다 많은 시간이 들었지만 1시간 정도 소모한 것 같다. 주에 1시간이면 가용 시간의 1%도 되지 않는다. 1~2시간 정도는 투자해도 괜찮지 않을까 생각한다.
작성 시간 : 1시간 4분
'회고' 카테고리의 다른 글
취업, 그리고 앞으로의 여정. (1) | 2024.02.12 |
---|---|
나는 어디로 나아가고 있는가. (0) | 2024.01.18 |
2023년 연간 회고 (2) | 2024.01.01 |
후배들에게 코드 리뷰를 진행했던 회고 (0) | 2023.09.14 |
5월 3주차 회고 (0) | 2023.05.22 |