본문 바로가기

기타/테크 세미나

NAVER TECH CONCERT 2020: Mobile

- 발표자료 :  https://www.slideshare.net/NaverEngineering  

- 라이브 영상 :  https://tv.naver.com/naverd2 

신입 iOS 개발자 개발업무 적응기

김상민 - clova 앱 개발 담당 (iOS 개발자 (since 2020.01) - 2018.03 개발 공부 시작

비전공자에서 네이버 입사까지

독학으로 잘 개발이 잘 안맞나 싶을 때 스터디, 해커톤, 프로젝트를 하였음. 꾸준히 참여하며 점차 실력이 오르고 나도 할 수 있다는 자신감과 동기부여가 생겼음. 취직하려고 하니까 코딩테스트, 면접이라는 산이있었음. 알고리즘 공부를 하면서 주먹구구식으로 알고리즘을 외워서하면 문제를 꼬아버리면 할 수 없게 됐다.그래서 알고리즘에 대한 본질적인 이해를 하려고 했다.

면접에 대한 준비

1) 많이 말해보기

 - 면접 스터디

 - 녹화 및 녹음

 

2) 포기하지 않기

 - 자신이 생각해본 접근방법 및 한계점

 - 힌트 요청면접 질문시 대부분 모르는 문제였다. 끝까지 알려는 자세를 보였다.

 - 논리 적인 설명

-  풀이에 대한 뒷받침

 

입사하고 현업 배치까지

1) 신입 코드데이

- 네이버와 신입의 코드를 맞춘다.

2) 테크 쉐어

- iOS 교육

- Swift Basic부터 전체적인 내용들 교육

3) 부트 캠프

- iOS + 백엔드 + 2주 -> 메신저 어플 만듬

어떤 업무를 하고 있나요?

- 유지보수 + 기능 개발

- 신입들은 비지니스 로직을 파악하면서 swiftlint, deprecated, Optional Value Casting등 Warning 수정업무 진행

- 프로젝트 구조 파악이 처음이 어려웠다.

- 뷰 디버깅을 활용해서 쉽게 찾았다. (뷰 디버깅 사용시 뷰 계층이 나옴 브레이크포인트를 잡고 봤다.)

- 리팩토링

1) Open Source

- Version Update

버젼 업데이트시 성능상 이슈나 확인되지 않은 에러가 생길 수 있어서 사전 점검을 해야함 

- Swift Version Dependency

기존 코드 동작 파악 및 전체 흐름 그리기 -> 수정 시 영향도 파악

오픈 소스 뜯어보기 -> 내부 로직 파악

해당 코드를 대체할 수 있는 OS 지원 framework 확인

기존 프로젝트 코드 중 대체할 수 잇는 코드 확인 -> 중복된 기능을 가진 코드를 작성하지 않기 위해

 

2) Legacy Code

기존 코드 동작 확인

리팩토링 할 작업 목록 CheckList 작성

리팩토링 시 항상 재사용성, 의존성 등을 고민


내가 개발한 기능이 실제 배포되기까지

1) 스펙 협의 - api, 디자인, UX/기획

2) 개발 - 협의된 스펙에 맞추어 구현

3) 코드 리뷰 - 코딩 컨벤션, 아키텍쳐, 클린 코드

4) QA - 버그 수정, 기획, 디자인 이슈 확인

5) 배포

성장하기 위한 고민

1) 질문 - 질문도 똑똑하게 하자!

- 질문하기 전에 검색 및 시도해보기

- 질문할 내용 미리 정리해보기

- 시도해봤던 방법들과 실패했던 내용들 간단히 공유하기

2) 동기 부여

- 예전에 작성했던 코드들 다시 보기

- 알림 설정하기

3) 공부

다른 사람에게 설명할 수 있는 코드 작성하기

사이드 프로젝트

1) 주제 찾기

- 사용해보고 싶은 기술 이용

- 자동화

- 편소에 불편했던 점 개선

2) 기한 설정하기

- 너무 각박하게는 하지 말자 스트레스다.

- 공부한 내용 정리

- 정리해도 기억 잘 안나는 경우가 많고 잘 찾아가고 직접 문서를 작성해서 더 정리가 잘되고 표현하는 연습을 통해서 더 잘 이해가 됬던거 같습니다.

성능을 고민하는 슬기로운 개발자 생활

네이버 웹툰 장수한

1. 구현된 로직이 동작할 환경은 어떤가

2. 적절하게 자료구조가 사용되었는가

3. 작성된 로직의 복잡도는 어떻게 되는가

 

map, filter 전부 반복문이라 시간 복잡도 N이다.

Case.xocdeproj = 좋은 동료로 거듭나기 위한 노하우

홍창남 네이버 앱 개발

https://hcn1519.github.io

업무

notification 전달하기

무슨일을 하고 있는지 전달

- 업무에 집중하고 지금 무슨 일을 하는지 다른사람에게 잘알릴 수 없는 경우가 생길 수 있다. 이러한 경우에 업무가 잘되지 않는 경우가 생김 그래서 zenhub과 같은 협업모듈을 사용

개인의 노력

- 작업 계획을 공유 ex)앱 전반에서 사용할 수 있는 Extension을 제작해보려고 합니다. -> 이미 있는데 몇 가지 부분을 보완해서 반영하면 좋겠다.

 

질문하기

좋은 동료는 어떤 질문을 할까 ..?

- 논란의 질문하기.. -> 왜 이런것까지 물어보나요?, 왜 미리 물어보고 안했어요?

질문은 직관적이고 좋은 커뮤니케이션 수단, 프로젝트 규모가 커질 수록 중요성이 높음

커뮤니케이션은 쌍방의 시간을 사용하기 때문에 작업효율성이 저하되는 경우가 생긴다.

 

- 좋은 질문? - 답변하기 좋은 질문

구체적이고 명료한 질문 -> 질문하기 전 퇴고하기 (명확한 의도 전달)

많이 고민한 것으로 보이는 질문

무엇을 물어볼까? - 궁금증 구체화

어디까지 해 보고 질문할까? - 시도의 범위

 

- 알면 알고, 모르면 모르고 명확한 대답과 확실한 태도를 보이자

모른다고 얘기하는 것의 두려움

모르면 모른다고 확실히 얘기하는 용기

잘못된 대답/전달을 하였을 때 빠르게 정정하기

 

일하면서 많이 들어오는 질문 중 하나

iOS에서 이 기능 가능해요?

언제나 공식문서와 코드를 통해 확인하기

 

코드리뷰

None of your Business? One of my Business!

작은 것이라도 적극적으로

You are not your cod(feat. 프로그래밍 심리학)

코드에 대한 지적은 너에대한 지적이 아니다.

칭찬에 인색하지 않기

성장

- 개발자의 과제 중 하나는 성장

- 공유하기

- 주제에 대해 자세히 공부

- 전달하는 방식에 대해서도 고민

- 자연스럽게 성장

- 공유받은 사람은 공유자의 지식이라 생각

- 관심사를 찾고, 디테일 강해지기

- 매년 쏟아지는 다양한 주제

- 모든 지식을 완벽히 아는 것의 어려움 -> T자형 탐색

디테일 강해지기

- 구글링으로 쉽게 알 수 없는 부분

- 관련 문서의 깊은 한 구석에 있거나

- 코드를 직접 확인해야 알 수 있거나

- 직접 테스트해봐야 알 수 있거나

맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게하기

이재성 네이버카페

여러 방법이 있다.. 추후 동영상 공개가 나오면 그것을 보고 하자.! ㅎ