ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • iOS 개준생을 위한 클론코딩 하는 방법(독학하는 방법)
    내 이야기/취업정보 2022. 4. 16. 17:45
    반응형

    안녕하세요 ~

    우아한형제들에서 iOS개발자로 일하고 있는 레인스톤입니다:)

     

    오늘은 개발자 취업을 준비(독학)하고 있는 분들을 위해!

    클론코딩(학습 & 취업준비)을 어떻게 하는 게 좋을지 상세히 알아보고자 합니다.

     

    클론코딩

    흔히 말하는 클론코딩은 다음과 같은 방식인데요.

    강의자가 코딩을 하며 설명하고 학습자는 코드를 똑같이 받아적는다.

    이런 방법으로 개발을 배우면 실력을 늘리기 매우 어렵습니다.

    물론 아주 기초단계에서는 주입식 교육이 필요할 수도 있지만...

    이미 문법을 어느정도 숙지한 상태에서는 주입식 교육에서 반드시 벗어나야합니다!

     

    학습을 위한 클론코딩

    학습을 위해서는 코드를 카피하는 게 아니라 앱을 카피(?)해야합니다.

    앱 개발자는 말 그대로 앱을 만드는 일을 하는 사람입니다.

     

    학습과정에서 다양한 앱을 만들어보면서 기술을 익히는 것이 가장 현업에 가까운 학습방법입니다.

    그렇다면 앱 개준생이 할 일은 다양한 앱을 만들어보는 것인데...

    나는 디자인도 못하고 기획도 못하는데 무슨 앱을 만들어야 하는 거지? 라는 문제에 부딪히게 됩니다.

     

    이 때 필요한 것이 앱을 카피하는 클론 코딩입니다.

    배달의 민족, 카카오톡, 당근마켓 등 이미 존재하는 다양한 앱을 따라 만들면서 학습하는 방법이죠.

     

    내부 코드구현을 모르는데요?

    이미 존재하는 앱은 훌륭한 기획, 디자인 지침이 된다. 여러분은 코딩만 하면 된다!

    라고 말했을 때 제가 살짝 충격을 받은 질문이 있었습니다.

    내부 코드를 볼 수 없는데요?
    구현이 어떻게 됐는지 알고 따라서 만드나요?

    음... 내부 코드를 보고 받아적기만 한다면...

    강의자의 코드를 받아적는 학습방법(주입식 교육)과 다른 점이 없겠죠?

     

    기업 입장에서 본인들이 만든 앱의 코드를 공개할 이유가 없듯이(공개하면 안됩니다 ㅎㅎ)

    학습을 하는 입장에서 그 앱의 내부 코드를 뜯어볼 이유도 없습니다.

     

    코드를 보고 받아 적는 게 아니고!

    어떻게 구현하면 될지 생각해보는 게 중요합니다.

     

    수동적인 태도에서 벗어나자!

    그렇다면 우리가 해야할 일은 무엇일까요?

    바로 스스로 생각해보는 일입니다.

    자세히 예를 들어 살펴볼까요?

     

    제 포트폴리오에 들어간 앱입니다 ㅎㅎ

     

    예를 들어 이런 앱을 그대로 따라서 만들고 싶다고 가정해봅시다.

    위에 빨간색으로 표시된 부분은 무엇을 활용해 구현했을까요?

     

    • 반복되는 UI
    • Horizontal Direction

     

    위 두 가지 특징으로 짐작해보면 UICollectionView를 사용했을 것 같네요!

    그러면 UICollectionView를 활용해서 빨간색으로 표시된 부분을 구현해주면 됩니다.

     

    근데 실제 앱에서는 UICollectionView로 구현하지 않았으면 어떡하나요?

    이런 질문을 받은 적도 있는데, 그건 중요하지 않습니다.

     

    TableView를 활용해서 Horizontal Direction을 구현했다고 해도 전혀 문제되지 않습니다.

    심지어는 아예 collectionView나 tableView를 사용하지 않아도 문제가 되지 않습니다.

     

    본인이 생각하기에 해당 UI를 구현하기 위해 가장 적절한 방법을 고민해보고 구현하면됩니다.

    collectionView, tableView, stackView 등 무엇을 사용했던 그 이유가 중요합니다.

     

    면접에서 이건 왜 collectionView로 구현하셨나요? 라는 질문에 대답할 근거가 있는 게 중요합니다.

    나는 어떠한 이유로 어떠한 기술이 적절하다고 생각해서 그 기술을 활용해서 구현했다! 라고 말할 수 있어야합니다.

    그게 정답인지 아닌지, 실제로 그 앱이 나와 같은 방식을 사용해서 구현을 했는지는 중요하지 않습니다.

     

    저는 위에 빨간색으로 표시된 부분을 collectionView를 활용해서 구현했지만

    3개로 한정되어 있는 UI를 표현하면 되기 때문에 UIButton + UIStackView를 활용해도 전혀 문제가 없는 것처럼 말입니다.

     

    정답은 없다, 결과보다는 과정

    결론적으로 어떠한 앱을 따라서 만들면서 개발을 배우는 방법은 결과보다는 과정이 중요합니다.

    그 앱이 실제로 어떻게 구현되어 있는지 어떠한 기술 스택을 사용했는지 '정답'을 찾으려고 하면 안됩니다.

     

    해당 앱이 구현되어 있는 방법은 그 앱을 구현한 개발자들의 선택일뿐이지 정답은 아닙니다.

    얼마든지 다른 방법이 있을 수 있고 그 방법을 고민하는 과정에서 우리는 성장합니다.

     

    집중해야할 점은 앱을 완성시키는 것도 아니고 정답을 찾는 것도 아닙니다.

    나는 왜 A라는 방법을 통해 이 앱을 구현했는지 고민했던 과정과 근거를 설명할 수 있어야합니다.

     

    끗!

    어딘가 설명이 부족한 거 같은 느낌!?

    근데 뭐가 부족한지 모르겠네요... ㅎㅎ

     

    더 궁금한 점이 있다면 댓글 남겨주세요!

    그럼 오늘 하루도 화이팅:)

    반응형

    댓글

Designed by Tistory.