데일리 미션/Article

Article : 3달 만든 코드를 모두 엎고 배운

pipiiiiii 2024. 7. 3. 14:03

https://yozm.wishket.com/magazine/detail/2613/

 

3달 만든 코드를 모두 엎고 배운 것 | 요즘IT

창업한 다음, 제품을 처음부터 다시 만들기로 결정한 시점은 이미 프로젝트를 시작한 지 두 달이 지난 후였습니다. 처음부터 다시 코딩을 시작한 지 5주가 지나 알파 버전으로 서비스를 개시했

yozm.wishket.com

 

 

<아티클 내용 요약>

무엇을, 왜만드는가?

  • 문제 정의
    성장은 공통 주제다. 그리고 마음처럼, 기대만큼 성장하지 못하는 과정 역시 흔한 현상이다. 사람마다 차이가 있다 해도 성장하기 위해 지난한 과정을 거쳐야 하는 것을 보면 우리는 같은 클래스를 상속받은 게 분명하다. 

    어떻게 학습하냐는 질문에 나오는 대답은 크게 세 가지로 분류할 수 있다.
    - 스스로 어떻게 학습하는지 모른 채 열심히 한다.
    - 스스로 어떻게 학습하는지 알고 있으며 열심히 한다. 그러나 엉뚱한 방법이라는 건 모른다.
    - 스스로 효과와 효율이 좋은 학습 체계로 학습한다.    

    세 번째 분류에 속하는 이는 극소수다. 스스로 학습 체계를 구축한 이는 이 중에서도 소수인데, 대개 좋은 사수나 팀을 만난 덕에 자신도모르는 새 체계를 구축하게 된다. 

    '나는 어떻게 학습하더라?' 이 질문으로 풀어야 할 문제를 정의했다. 
  • 고객 정의 
    학습 비법은 특별하지 않다. 특별한 건 실천이다. 의지만으로 실천하는 것은 어렵다. 
    성장에 목말라하거나 지난한 상태에 빠진 이들이 실천하도록 도울 수 있지 않을까?라는 질문으로 고객을 정의했다. 

 

 

효과적인 학습 방법

  • 학습을 효과적으로 만드는 실천법
    예습은 대부분 효과적이지 않다. 오히려 학습을 방해한다. 예습은 본 학습 과정에서 그내용을 이미 학습한느낌이 들게 한다. 학습한 느낌 때문에 학습을 중단하는 경우가 매우 많다. 사람들은 학습한 느낌을 학습이라 속은 채 넘어간다. 

    복습은 효과적이다. 우리는 학습이 끝나고 10분만 지나도 이를 망각하기 시작한다. 한 시간 후에는 벌써 반이나 망각하고, 그 다음날에는 학습했다는 사실이 흔적처럼 느낌으로 남아 있을 거다. 복습으로 흐릿해지는 기억을 누적시켜 이를 강화해야 한다. 

    복습은 다소 불편을 느낄 만한 강도로 점진적으로 반복해야 한다. 
    틀렸다는 불쾌감, 실은 제대로 학습하지 않았다는 진실을 마주하는 불편함을 기꺼이 맞이해야 한다. 
    학습 내용을 기억에서 인출하려면 부하가 일어난다. 이 때 생기는 과열을 극복해야 하고 이런 과정을 반복해야 한다.

    학습 과정에서는 자기 생각, 나만의 언어로 메모하여 정보를 잘 압축하고 부호화한 다음, 색인해야 한다. 또한 학습으로 풀어낼 문제를 정의할 수 있어야 한다. 

    마지막, 학습을 할 때는 적시에 피드백을 받아야 한다. 틀린 학습을 반복하고 있지 않은지 관찰하고 교정해야 한다. 
  • 간단하지만 실천하기 어려운 이유
    이러한 실천법은 얼마든지 많이 도출해 낼 수 있다. 이를 구성하는 주요 줄기는 크게 달라지지 않기 때문이다. 그러나 우리의 뇌는 집요하리만큼 에너지 최적화를 지향한다. 착시를 겪을지언정 에너지를 들이는 상황을 어떻게든 피하려 한다. 효과적인 학습 원리는 단순하지만, 에너지가 많이 들어간다. 이런 뇌의 거부 반응이 실천을 어렵게 만든다.   

 

 

고객을 만나다

  • 오늘도 평화롭고, 아무 일도 일어나지 않습니다. 
    학습법에 대한 학습을 마친 다음, 정의한 문제를 해결할 방향을 잡았다. 소프트웨어로 학습 효과를 높이는 수단과 환경을 제공하는 것이다. 고객을 만나 제품을 개선하자는 야심 찬 마음으로 MVP라는 서비스를 개시했다. 
    그러나 MVP는 문제를 조금도 해결하지 못했다. 낮은 효율로 열심히 학습하며 미미한 효과를 보는 사람은 많았고, 그들 중 누구도 만든 서비스를 이용하지 않았다. 
    검색 크롤링 봇보다 사람이 직접 방문하는 일이 더 많았지만 그들에게 전혀 기여하지 못한것이다. 
  • 3주 파일럿 프로그램
    초조한 마음으로 코딩도 더 하고 콘텐츠도 보강했지만 효과는 없었다. 이유를 몰랐다.
    1인 창업 주제로 하는 온라인 워크숍에 참여했다. 워크숍에서는 소프트웨어 엔지니어링을 할 줄 모르는 이들이 여러 도구와 방법으로 자신의 아이디어를 고객 손에 쥐여 주고 있었다. 이들은 고객이 내는 돈으로 피드백을 받고 있었다. 

    이 때 정신이 들었다. '사람들은 학습법을 익히면, 효율적으로 학습할 수 있다'는 가정은 구글 드라이브와 디스코드로도 충분히 검증할 수 있다는 걸 깨달은 것이다. 코딩할 때가 아니라는 걸 자각하고 곧바로 웹사이트 빌더로 랜딩 페이지를 만들었다. 목표한 수만큼 학습 참가자를 모집했고, 3주 단위 파일럿 학습 프로그램을 진행했다.

    그 결과, 목표보다 높은 수료율을 달성했다. 
    수료 후 진솔한 피드백도 여럿 받았다. 혼자서는 알다가도 모를 그런 문제를 눈 앞에 마주하자, 코딩만 해오던 3개월이 후회가 되었다. 또, 그 때 깨달았다. 이 코드로는 새로이 정의한 문제를 효율성 있게 해결하기 어렵겠다는 것을. 그래서 결정했다 '뒤집어엎자'

 

 

좋은 코드는 어떤 코드일까?

엔지니어링은 공학, 과학 기술을 응용하고 활용해 문제를 해결하고 과제를 달성하며 운용하는 활동이다. 해결해야 하는 문제, 달성해야 할 과제는 다르게 표현하면 '가치'다. 그러므로 문제와 과제의 대상, 즉 고객이 있어야 이를 해결하고 달성하여 가치를 전달할 수 있다. 

엔지니어링의 수단은 다양하다. 코드를 작성하는 일은 그 다양한 수단과 방법 중 하나에 불과하다. 고객에게 전달할가치를 가장 효과적으로 엔지니어링 하는 방법이 코딩이라는 걸 확인한 다음, 그 다음에 코드를 작성해도 전혀 늦지 않다. 엔지니어링의 쓸모에 기여하지 않는 코드는 죽은 코드에 그치지 않는다. 죽은 코드는 오히려 진짜 엔지니어링을 방해하기도 한다. 

정의한 문제에 동의하고, 새로운 문제 해결 방법에 공감하는 고객을 찾는 것이 먼저다. 
이어 고객과 함께 제품을, 가치를 만들어야 한다. 

 

 

 

 

 

<알게 된 개념>

효과적인 학습 방법과 학습 방법을 알면서도 하기 어려운 점에 대해서 알게됐다. 

학습은 결국 반복과 복습, 그리고 내가 잘 알지 못하는 것을 인정하고 다시금 배울 자세인 것 같다.

 

아티클을 본 후의 나는 지금 공부 하고 있는 방식이 잘 하고 있는 것인지 모르겠고, 모르는 것을 알지만 눈가리고 아웅하는 모습으로 계속 기초만 공부하는 것같다는 생각이 든다. 이제는 더 나아가는 공부와 어떻게 복습을 할 것인지를 생각해봐야겠다.