2021-06-03

Jin·2021년 6월 3일

Facts

  • 알고리즘 문제 풀이

Feelings

능력을 키우자. 서러워서 못살겠네. ㅋㅋ
아무튼 긍정적으로. 또다시 도전!

감정적으로 너무 동요한게 반성이 된다. 그냥 죽어라 하면되지. 뭐가 어렵다고. 가자.

Findings

모델과 구현

제조업은 소프트웨어 개발 분야에서 인기 있는 은유다. 이 은유로부터 한 가지 추론할 수 있는 점은 고도로 숙련된 엔지니어는 설계를, 덜 숙련된 노동자는 제품을 조립한다는 것이다. 이 은유는 소프트웨어 개발은 모든 것이 설계다라는 한 가지 단순한 이유로 많은 프로젝트를 엉망으로 만들었다. 모든 팀원에게는 각기 전문화된 역할이 있지만 분석과 모델링, 설계, 프로그래밍에 대한 책임을 지나치게 구분하는 것은 MODEL-DRIVEN-DESIGN 과 상충한다.

모델링

사용자의 활동에 도움되는 소프트웨어를 만들기 위해 개발팀은 사용자의 활동과 관련된 지식 체계에 집중해야 한다. 이를 위해 갖춰야 할 지식의 폭은 위압적일 수 있다. 개발팀은 그러한 정보의 양과 복잡성에 압도될 수 있다. 모델은 이러한 부담을 해소하기 위한 도구다.

생각해보면 대학 시절에 그렇게 좋아하던 물리도 자연에 대한 모델링일 뿐이었다. 거시적 세계에서 미시적 세계로 넘어가면서 뉴튼 역학의 모델링에서 양자역학의 모델링으로 넘어가는게 재미있었던 기억이 난다. 유체역학이나 동역학 재료역학 연속체역학 모두 생각해보면 실험적으로 증명된 모델을 학습했었을 뿐이다.

소프트웨어에서도 역시 모델링이 활용된다. 이번에는 모델을 학습하는게 아니라, 모델을 만들어낸다. 사용자에게 필요한 프로그램을 만들기 위해 도메인에 대해 모델링을 한다. 불필요한 정보는 감추고 중요한 정보는 드러낸다. 모델링에 대한 검증은 과학에서의 그것과 비슷하다. 지속적으로 모델을 실험대에 올리고 유용한 모델인지를 검증한다.

그러고보면 면접볼때, 모델을 직접 만들어본적이 있나요? 라고 질문을 받았었지.

어쨌든, 모델링 연습은 알고리즘 문제부터 출발해보자. TDD 도 연습하고 모델링도 연습하고. 단, 흉내내기가 아니라, 모델링이 정말 문제를 푸는데 엄청 도움이 되게 수행해보자.

Affirmation

  • 나는 자신을 믿는 사람이다.

0개의 댓글