본문 바로가기

기타/테크 세미나

"iOS 앱 개발, 무엇부터 시작해야 할까요?" by 야곰

 

언어와 프레임워크는 구분하는게 좋다.

한국에서 경찰서나 소방서와 소통하는 것은 한글이라는 언어이다.

어떤 시스템과 언어는 구분!

iOS앱을 만들기 위해서는 cocoa touch 프레임워크를 알고 있어야 합니다.

만약에 여러분들이 다음 주 부터 영국에서 살아야 된다.. 그러면 뭐부터 할거에요?

영어를 먼저할 수도 있고 비자나 등등 할 수 도있다.

 

간단한 인사정도는 배우고 가야된다.

클래스나 함수 같은?

 

그런데 영국을 갓는데 나는 hi 밖에 모르는데 hello로 말한다던가 많은 변칙들이 있습니다.

이런 변칙들을 부딪히면서 배우게되는데. 닭이 먼저냐 달걀이 먼저냐 같은 문제이다.

 

초보 입장에서는 언어를 정말 인삿말 정도만 배우고 프레임워크 경험해서 들어가서 내가 더 필요한 것이 뭔가 알아내서 공부하게 될거라 생각합니다.

 

어떤 과정을 거쳐서 들어갔든 간에 항상 부딪히지 않는 문제들이 있다. 

예를 들어 그 나라에 가서 법원에 간다던가 경찰서에 간다던가 생활 속에서 자주 쓰지 않는 드문 케이스들이 있다.

상황극 같은 걸로 환경이나 언어를 배우듯이

 

프로젝트에서 이런 상황이 생기면 이런 기술을 써야겠다. 하면서 배운다.

 

언어나 프레임워크 둘 중 하나라도 제대로 공부하지 않으면 무너집니다. 구조도 엉망이 될 것이고

그래서 나중에 앱을 만들멶서 조금씩 실력을 키우고 싶다면 프레임워크 안에 헤더를 까본다던가 오픈소스를 이용

 

스위프트 기초로 살아갈 수는 있다. 근데 좀 더 깊은 관계를 맺고 이 사회에 완벽히 적응하고 살아가기위해서는 많은 표현들을 알아야 한다.

초보입장에서 어떻게 접근해야 되는가 .. 

상황에 따라 다릅니다.. 창업이나 취업이나. 

창업은 웹앱이나 하이브리드를 배우는 게 좋을 수 있다. 초기에 빠르게 앱을 만들고 소화가 가능하다. 그러다 사업이 안정화 되면 네이티브가 되기도 함

여러분이 에어컨을 샀다고 하면은 에어컨의 작동법을 익히기 위해서 설명서를 봐야되는 것과 똑같다. 

이런 무슨 뻔한 소리를 하냐고 하겠지만 얼마나 여러분이 설명서를 읽지 않으면 이런 소리를 하겠습니까.

그래도 여러분은 진취적이고 깨어있기 때문에 이해할 것이다.

 

초보자의 

문제점은 마음이 급하다. 빨리 뭔가 하고싶고 뭔가 만들고 싶고.. ㅎ

시간이 필요하고 단계가 필요하고 인내하고 기다릴 수 있어야 됩니다.

 

저런 열정은 좋으나 식지 않아야되고 열정과 조급함 만으로 제데로 만들어지지 않는다.

지름길을 찾거나 꼼수를 써서 라이브러라 갖다쓰는 순간 훨씬 더 늦어집니다.

 

프로그래밍 자료보면서 제일 안좋아하는게 치트시트 단축기 뭐, 제일 많이 쓰는 메뉴 뭐 이런 기능을 구현하기 위한 코드

말 그대로 급할 때 쓰는 치트시트이지 장기적으로는 도움이 되지 않는게 많다. 원리를 알아서 쓰는게 아니고 되니까 쓰는거다.

 

남의 치트시트를 쓰는 사람이 되지말고 내가 그런 치트시트를 만드느 사람이 되야한다.

 

 

iOS에서는 애플이 만들어준 설명서가 있습니다.

그 설명서를 먼저 보는게 여러분의 순서입니다.

 

그뒤에 치트시트나 이런거 보는겁니다. 애플의 개발자 문서 보는게 어렵다면 아주 입문정도의 튜토리얼을 보고 나서 애플의 개발자 문서를 보고 뭔가를 만드는게 가장 좋습니다. 애플이 만든 프레임워크니까 애플만큼 잘 설명해 주는 사람이 없을 것입니다.

이게 문학 작품이 아니라서 얘들이 맨날 하는 말만 쓴다. 보다보면 좋다 한글은 오역이 많고 좋지 않다.

 

급하지 않으면 잘 만들어진 앱을 따라 하는 것이 좋다.. 예를 들어 애플이 만든거

이런 앱들은 애플이 정말 잘만든 앱들이다. 

여러분들 혹시 등산이나 마라톤 해보셨습니까. 만약에 내가 이제 등산을 시작해 볼래 하는데 엄청 높은 산을 처음부터 할 수 는 없다.

 

초보자들은 내가 만들고자 하는 앱이 많은 기능들이 들어잇는지 잘 모른다. 애플 내장앱들은 기본 컨포넌트로 잘 만들어진 앱이고 이걸 만들면서 얻을 수 잇는 이득은 친구들 끼리 같이 만들면서 공부하기에도 좋다. 화려하고 외부 라이브러리를 쓰지 않는다. 

여기 있는 앱들만 다 구현할 수 있어도 기본기는 다 만들어집니다. 조그마한 것들을 여러개 만들다보면 어떠한 패턴들이 보입니다.

이런 디자인 패턴을 사용하면 되겠지? 하고 보이고 시야가 넓어짐

내가 만들던 코드를 보면서 정리하고 싶은 코드가 보일 것이다. 맨날 복붙하다보니까 정리하고 싶다.하고 보일 것이다.

 

기능이 구현된다는 것 겉모습에 절대 치중하지 말것 그러면 무너지게 되있습니다.

 

그냥 코드 갖다 붙이는 사람들 예를 들어 시험문제 족보 보고 외우는 사람들은 안에 조금 바뀌면 못푼다.

프로그래머나 아키텍쳐는 그렇지 않다. 백종원 선생님이 요리 레시피 알려주면 그냥 따라하면 된다 근데 거기서 인분을 바꾸거나 일부 재료를 빼거나 하면 요리를 실패하게 된다. 요리 재료에 대한 이해가 없기 때문이다. 재료에 대한 책을 먼저 보고 레시피를 보면서 따라하는게 훨씬 빠르고 정확할 것이다. 이게 개발자 문서고 도큐먼트다.

 

닭이 먼저냐 달걀이 먼저냐 할 수 있지만 문서를 보고 어떻게 하는지 아는 것을 좋아하는 사람이 있고 해보고 나서 문서를 찾는 것을 좋아하는 사람이 있다. 하지만 그 둘 중 하나라도 빼먹으면 사단이 난다. 뭔가 만들어 놨는데 철근이 없는 콘크리트처럼 무너질 것이다.

 

내가 그렇게 앱을 만들고 애플의 앱이나 다른 앱을 클론하면서 하나를 만들었다. 그러면 자랑해야합니다. 옆에 친구에게 이거 만들었어 키보드 내려가는거 하나도 코드로 한땀한땀 만들어야 되는지 몰랐어

주의! 가족들이나 코딩 프로그래밍을 모르는 사람들에게 말하면 안된다. 에개? 한다 그들은 이미 만들어진 카톡이나 여러 게임들을 하고 있기 때문에

프로그래밍을 해본사람들에게 자랑해야 합니다. 만약에 날씨 앱만들었으면 대단하고 잘한 겁니다. 하이텐션으로 칭찬해줘야합니다. 쌍따봉 창차앛앛아짞짜까ㅉ깎짜짞 박수쳐

이런 친구들 있죠? 내가 만들고 싶은 앱이 없어.... 다른 직업을 가질 것을 추천

프로그래머는 만드는 것이 직업인데 만들고 싶은게 없으면 힘듭니다.

 

아까 제가 얘기를 못한게 잇는데 사진앱 클론해보라고 했는데 애플의 앱중 꼭 필요한 기능만 구현하는 것을 목표로 하세요. 모든 기능을 할 필요는 없다 .

 

 

초보는 기획하고 다 구현하기에는 힘들다. 쉽지 않다. 기획자가 디자이너와 많이 싸우는 이유는 이거 인스타에서나 카톡에서 되던데요? 하던 사람들을 때리고 싶어요. 그런 친구들 옆에 있다. 그러면 서서히 멀어지면 됩니다. 그 친구에게 이렇게 얘기해보세요. 페이스북 직원은 몇명이고 월급 얼마나 받을 것 같아? 이건 나혼자 만드는건데 그걸 비교하면 안되지 걔넨 10년을 만들었는데 비교하면 안되지.

(쓰레기들이네;)

내가 잘 쓰고 있는 앱이나 자주 쓰는 앱의 핵심기능만 잘 배워도 좋다.

우리가 쓰는 앱들은 정말 내공이 장난없다 엄청 잘 만든거다.

작게 작게 하나씩 붙여가는 연습을 하면 됩니다.

 

 

제가 앱 기능 똑같이 해서 만들었는데 소송들어오면 어쩌죠? 하는 걱정이 있다.

고소 당할 정도면 여러분 성공한겁니다. 그럴 일이 없어요.

앱스토어에 내 앱하나 추가됬다고 아무도 신경쓰지 않는다. 하루에 앱이 몇천개씩 올라온다. 경험을 위해 올리는 것이다.

홍보? 이런 마음 버리고 그냥 하나 내가 올려봤다 이걸

엣 이게 뭐야? 해도 자랑하세요. 이쯤엔 욕먹을 각오하고 자랑해보세요 ㅋㅋ 6개월동안 앱만든다면서 이것밖에 못했어? 하면 죽빵을 먹이면됩니다.

부코 뒤에 해둠 ㅎ 찡끘

여러가지 측면으로 생각할 수 있는데요. 좋은 개발자는 많습니다.

나쁜 개발자부터 얘기하면 지 얘기만 하는 놈. 기획자가 뭘 가지고 오면 안된다. 일단 뭔가 전문적인 용어를 써서 찍어누르려는 사람이 있다. 어떤 직군이든 어디에서든 상관없다. 컴퓨터 공학은 사람을 위해서 컴퓨터를 사용하는 사람들인데 사람들 끼리 잘 해야한다. 자꾸 다른 사람들이랑 잘 지내지 못하는 사람들이라면 어디서든 환영 받지 못할 것이다. 아무리 코딩을 잘 작성하고 기술이 좋고 하더라도 사람을 위한 것이 아니고 지 잘난 맛에 코딩 짜는 사람 혼자 코딩 짜는 사람은 결국 지친다. 그리고 혼자서 할 수도 없다. 옆에 사람과 슬기롭고 즐겁게 하는 사람이 좋은 사람이다. 커뮤니케이션과 사람의 대한 예의를 선행하는 것이 좋다. 

현업에서 필요한 사람은 프로그래밍을 모르는 사람에게 풀어서 이상황이 어떤 것인지 잘 이야기해주는 사람이 되는 것이 좋다.

질문 자체는 아이러니한게 알고리즘과 최신 기술은 같은 맥락이 아닌데요. 최신 기술에 맞춰 빠르게 변하는게 좋은 개발자인가? 하는 질문 같은데요 이건 내가 속한 조직이나 만드는 앱에 따라서 다릅니다. 스타트업에서는 좋을 수 있다. 하지만 안정성을 위하는 금융권이나 큰 기업에서는 다를 수 있다. 정답은 없습니다.

애플의 가이드라던지 기본 튜토리얼이라던지 대부분 이런 기초개념들을 알고 있다는 전제가 많다. 

객체지향 패러다임 야곰님 강의 유튜브에 있다.

블로그 자료가 틀린 자료가 생각보다 많다 조심해야한다.

(책 추천 : 객체지향의 오해와 진실?? 이엇나 토끼모양 앨리스를 비유해서 설명해주는 책이랬음)

여러분들은 이 답을 알고 있겟죠? 상황에 따라 다릅니다. 정답이 없어요. 프로그래밍에서 정답을 찾지마세요. 모범답안을 찾으려고 하지마세요. 프로그래밍에는 정답이 없어요. 가독성이 좋으면 좋은 코드일 확률이 있지만 가독성이 좋다고 좋은 코드는 아니다. 조직의 성향이나 앱등등에 따라 다르다. 혹시나 입문자들이 좋은 코드가 뭔지. (책 추천 :  읽기 좋은 코드가 좋은 코드다)

qna는 생략 ㅎ