아무것도 모르는 사람은 어디서 부터 시작하면 좋을까요?



더 편하게 보시려면 여기를 눌러주세요.

개발을 처음 시작한 사람에게 공감하기에 저는 너무 많은 개발을 했습니다. 그래서 개발을 처음 배우시는 분들을 다시 개발을 가르쳐드리면서 시작할 때 초심자가 어떤 어려움을 겪는지 배워서 정리 해 보았습니다.

정리를 해 보자면, 개발을 처음 시작하시는 분들이 iOS 개발을 시작하는데에는 크게 3가지가 없어서 시작을 하지 못했습니다.

  • 프로그래밍적 사고
  • 기초 문법지식
  • UI를 그리는 방방법

중요한 포인트는, 개발을 처음 배우는 사람은 본인이 위의 것 중 어떤 것을 몰라서 개발을 못 하고있는지 알지 못합니다. 이 글을 읽고 그 빈 부분을 알아갔으면 좋겠습니다. 혹시나 제가 놓치고 있는 부분이 있다면 알려주세요! 빈 부분에 채워서 정리해 놓겠습니다 🙂

프로그래밍적 사고

프로그래밍적 사고의 정의를 찾아보면 “문제를 정의하고 그에 대한 답을 기술하는 것이 포함된 사고 과정 일체”라고 나옵니다. 우리가 마주하고 있는 현상에서 문제를 정의해놓고 그 문제를 해결하기 위한 방법을 찾아내면 일련의 순서가 있는 것을 발견할 수 있습니다. 이 순서로 문제를 해결하면 되겠다라는 생각이 든 시점에 우리는 순서도라는 것을 그려야 합니다. 순서도를 단계별로 그리면서 로직을 짜게 됩니다.

순서도를 짜는 훈련이 되어있지 않으면 개발을 할 수 없습니다. 왜냐하면 프로그램을 만들려면 로직,즉 순서도가 존재해야하는데, 이 로직을 만들 힘이 없으면 진행이 불가능하기 때문입니다. 문제는 이러한 상황에 처해있는 사람이 있다면, 스스로가 어떤 점이 부분이 부족한지 모르는 상태일 확률이 높고 무작정 개발을 시작하면서 지루함이나 괴로움을 느끼고 있을 확률도 높습니다. 자연스럼게 힘든 경험을 하고 개발을 그만두게 될 것 입니다.

희망적인 소식은 프로그래밍적 사고를 할 수 있는지 없는지 아는 방법은 매우 쉽습니다.

우리 주변에 있는 기계를 하나 떠 올리고 종이에 그 기계가 돌아가는 로직을 그리고 실제 내가 사용자가 되어서 문제없게 사용할 수 있는지 그려보면됩니다. 쉬운 예를 들어봅시다. 우리주변에서 쉽게 볼 수 있는 기계를 예를 들어보면 자판기가 있습니다.

돈을 넣지 않고 사고싶은 음료수를 눌렀을 때, 돈을 모자라게 넣고 눌러본다면, 돈을 넘치게 넣고 내가 원하는 음료를 눌렀을 때, 등등 우리가 자판기를 사용했던 경험을 바탕으로 순서도를 그려보면 됩니다.

이렇게 해보면 생각보다 순서도를 그리는 방법은 어렵고 개발을 하기전에 이렇게 순서도가 머릿속에 그려지도록 훈련을 해야한 다는 것을 느낄 수 있게 됩니다.

프로그래밍적 사고를 기르는 방법은 굉장히 많습니다. 하지만 그 중에서 개발을 몰라도 할 수 있는 즐거운 방법을 알고있어서 소개합니다. 애플에서 제공하는 스위프트 플레이그라운드 입니다.

https://www.apple.com/kr/swift/playgrounds/



조금 더 시작하는 것을 돕기위한 영상도 가져와보았습니다.

[개발하자] #5 플레이그라운드 앱 사용법

순서도를 그려보는 연습들이 게임으로 되어있어서 접근이 쉬우며, 개발을 몰라도 처음부터 따라하면서 익힐 수 있습니다. 이 게임의 목적은 Swift 문법을 배우는게 아닌 프로그래밍적 사고를 기르는데 있습니다. 그러므로 각 단계별로 내 머릿속에 로직을 짜보고 실제 그대로 동작하는지 검증을 하는데 집중하면 좋습니다.

이 외에도 찾아보면서 자신에게 맞는 프로그래밍적 사고를 하는 훈련을 하면서 프로그래밍을 할 준비를 해야합니다.

기초 문법

개발을 시작하는 사람에게 프로그래밍 언어, 기초 문법이란 프로그래밍적 사고와 병렬로 학습해야하고 꼭 알아야 하는 기본으로 알려져 있습니다. 하지만 문법은 기본이라고는 했지만 첫 부분 부터 끝까지 한 번에 이어서 공부를 해야한다고 한 적은 없습니다. 우리가 익숙하게 공부했던 방법이 책을 펴서 처음부터 끝까지 공부했던 방법이었고 이 또한 그렇게 해야한다고 오해했을 뿐이죠.

기본 문법은 꼭 알아야 하지만 우리가 머릿속에 가지고 있는 순서도를 세상에 구현할 수 있을 정도로 학습하면 됩니다. 너무나 두꺼운 문법책에 압도당할 필요도, 처음부터 끝까지 한 번에 할 필요도 없습니다.

왜냐하면 문법의 용도는 우리의 프로그램이 우리가 생각한 로직대로 동작하도록 하는데 있기 때문입니다. 반복을 하거나 조건을 판별하거나 더 나아가 코드 블록을 만드는 방법을 학습합니다. 이 문법의 학습의 목적이 무엇인지를 잊으면 안됩니다.

이미 위에서 소개된 도구인 Swift Playground를 사용하면 Swift 언어의 문법을 배울 수 있습니다. 하지만 그것 보다는 애플에서 공식으로 제공하는 공식문서를 읽어서 익히는 것이 더 정확하고 꼼꼼한 내용들을 배울 수 있습니다.

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/thebasics/

내가 문법을 얼마나 알고있는지 파악하는 방법도 어렵지 않습니다. 위에서 만든 순서도를 실제 동작 가능한 프로그램으로 만들어 보면됩니다. 이 때 필요한 지식이 2가지 처럼 보입니다. 사용자의 입력을 받아서 처리해주는 UI를 그리는 방법 그리고 문법지식. 만약 내가 UI를 그릴 지식이 없다면 학습하기 좋은 타이밍입니다. 너무 복잡하지 않은 UI를 그리는 방법을 공부해서 로직을 동작하게까지 이어서 만들어 본다면 너무나 재미있을 것입니다.

UI를 그리는 것이 중요하지 않다면 콘솔에서 동작하도록 프로그램을 작성하면 됩니다. 옛날 컴퓨터 게임처럼 숫자를 입력해서 내가 하고 싶은 것들을 전달하고 값을 입력하고 실제 결과화면을 출력해주면 됩니다.



문법을 다 알고 개발을 시작하면 수월하지 않냐는 질문에는 수월하다고 답할 수 밖에 없습니다. 하지만 문법을 다 알기까지의 시간과 노력이 너무 많이듭니다. 우리는 바쁘고 시간이 없는데 언제쓰일지 모르는 문법을 미리미리 공부하느라 시간과 에너지를 쓰는 것은 너무나 비효율적인 방법입니다.

문법의 핵심인 로직을 짜면서 불편하거나 힘든 부분이 있다면 문법을 더 공부할 타이밍입니다. 그리고 내가 짠 코드를 더 낫게 만드는 방법또한 문법을 공부하는 것 입니다. 필요한 그 때 그 때 하면됩니다. 물론 불안하고 허전하고 믿기 어렵겠지만, 이 방법이 효율적입니다. 개발을 하면서 내가 궁금한 것 더 알고 싶은 지식 위주로 학습을 시작하면됩니다. 정해진 순서나 중요도 보다는 나의 필요에 의해서 학습을 이어나가봅시다.

UI 그리기

결국 프로그램은 사용자를 만나게됩니다. 그렇기에 사용자가 쓸 수 있는 유저인터페이스인 UI를 만들 수 있어야 합니다. 주문 버튼이나, 상세 페이지를 보여주는 네비게이션들이 이에 해당합니다. 프로그래밍적 사고가 있어도 기초 문법에 대한지식이 있어도 잘해지지 않는 또 다른 영역입니다.

기본적으로는 iOS개발에서는 화면을 그리는 방법을 알아야 하기 때문에 포토샵을 처음 배울 때 기능을 하나씩 다 써보면서 그리듯이 컴포넌트를 그려봐야합니다. 그 다음에는 이 것들을 조합해서 하나의 화면을 구성해내 복잡한 화면을 그리는 방법을 연습해야합니다. 이 다음에 여러 화면을 엮는 점차 복잡한 것들을 그려나가야 합니다.

화면을 그리는 것에 왕도는 없습니다. 정답도 없습니다. 그렇기에 다양한 화면을 많이 그리고 반복적으로 그려보면서 나만의 화면그리는 순서나 방법을 만드는 것이 중요합니다. 정답은 없지만 기본적으로 제공해주는 것들이 가진 기능들을 잘 이해한다면 활용하고 응용하기 수월할 것 입니다. 그리고 화면을 그리는데 의도나 이유를 잘 담아낼 수 있다면 한 층 더 좋은 화면을 그릴 수 있을 것입니다.

어떤 화면들을 그려보면 좋을까요?

정답은 없지만 크게 2종류를 추천드리고 싶습니다.

일단은 애플에서 만든 기본앱들을 따라 그려보는 것을 추천합니다. 이유는 애플에서 만들었기 때문에 기본 컴포넌트들로 만들어져있을 확률이 높고(모든 화면을 기본 컴포넌트로 그리지는 않았습니다.) 위에서 언급한 애플의 철학과 의도를 담은 화면이기 때문입니다. 사용자 중심의 디자인 그리고 여러가지 의도가 담겨있는 화면을 그려보면서 나도모르게 습득하고 익숙해지는 것이 중요하다고 생각합니다.

나머지는 내가 쓰고있는 앱 중에 하나를 따라 그려보는 것입니다. 결국에 나는 누군가가 사용할 앱의 화면을 만드는 일일 할텐데, 내가 지금 쓰고있는 앱의 화면을 그릴 수 있을 정도가 된다면, 화면 그리기에서는 이미 많은 부분 학습이 끝난 상태일 것 입니다.

물론 고려해야하고 공부해야할 부분은 많지만 처음 시작하는 사람들이 놓치고 있는 부분을 정리했기때문에 지금 다루지는 않겠습니다

정리

개발의 학습을 어려워 하는 분들에게 너무나 쉽게 이거 한 번 만들어보는게 어때요? 이거 한 번 공부해 볼래요 라고 말했던 것 같습니다. 다시 떠올려보면 백지의 IDE를 보았을 때 그래서 난 뭘하면 실력이 늘지? 그래서 나는 뭐가 부족한 것이지? 어떻게 내가 모르는 것을 알 수 있지? 했었던 것 같은데, 아무도 알려주지 않았었고 그래서 남에게 알려주기까지 시간이 걸리는 것 같습니다. 시간이 지나면서 좀 더 촘촘하게 인지하겠지만 충분히 잘 정리된 것 같아서 개발을 시작할 때 막막한 느낌이 있다면 위의 3개를 중점적으로 시작해보면 어떨까 합니다.

댓글

이 블로그의 인기 게시물

[IOS] AppDelegate는 뭐하는 녀석이지?

[git] git의 upstream과 origin 헷갈리는 사람 손!

[git] Github 이슈 라벨(issue labels)