본문 바로가기
개발일기/Seminar

Deview 2014 후기

by 유주원 2014. 12. 5.

매년마다 꼭 빼놓지 않고 참가하는 개발자 컨퍼런스 중의 하나가 바로 NHN에서 주최하는 Deview 컨퍼런스이다.

올해 막바지에 이르러서야 후기를 쓰다니;; 나도 참...



매년 느끼는 거지만 새파란 화면에 DEVIEW라는 하얀색 글씨는 먼가 빨려들것만 같은 마력을 지니고 있는 것 같다.



올해도 어김없이 송창현 센터장님의 키노트가 시작되고.. 

위 사진의 저 3개의 네모박스는 각각 SHARING, EXCELLENCE, GROWTH를 나타낸다.

DEVIEW의 기본 취지를 나타내는 표현이라 할 수 있겠다.


1 session - 행복한 프로그래머를 위한 철학



개발자가 아니더라도 누구나 한번쯤을 해봤을 고민이다. 

'나는 지금 행복한가??'

이 세션에서는 개발자가 행복하게 일을 하기 위해 어떻게 해야 하는지를 6가지의 요소를 들어 설명하고 있다.


우선 첫째로 자존감 확립.

일을 하다보면 통제할 수 있는 영역과 통제할 수 없는 영역으로 나뉜다.

통제할 수 있는 영역은 자신의 믿음, 자신의 생각에 대한 외부 반응, 자신의 업무 등을 들 수 있고

통제할 수 없는 영역은 고객, 기획 변경, 동료 및 상사, 건강 등이 자신이 통제할 수 없는 영역이라고 할 수 있겠다.

이런 통제할 수 없는 영역에 영향을 받아 자기 자존감을 잃어서는 안된다는 것을 여기서는 강조하고 있다.

자신의 자존감을 확립할 수 있는 방안으로는, 

1. 있는 그대로의 나를 받아들이자.

2. 통제할 수 있는 일을 해냄으로써 자신감을 회복하자.

3. 코드를 리뷰함으로써 지난 날의 나 자신과 대화하자.

4. 실패를 끝이 아닌 단지 하나의 과정으로 생각하자.


두 번째 행복 요소로는 지속적 발전을 들 수 있다.

자신이 지속적으로 발전하고 있음을 느낌으로써 행복감을 느끼는 것이다.

지속적 발전의 예로는, 지난 코드를 다시 살펴보는 것도 있을 수 있겠고, 코딩 외의 육체 활동 등을 통해 자신이 발전되고 있음을

느낄 수도 있겠다.


세 번째는 화에 대한 통제이다.

화가 발생하는 요인은 상대방이 합리적이지 못할 때 화가 발생할 수 있다.

하지만 사람이란 합리적인 존재가 아니라 합리화하는 존재라고 한다. (by 레온 페스팅거)

또한 화가 발생하는 요인으로 근거 없는 낙관론을 들 수 있다.

상대방을 통제할 수 없는데 상대방이 기대하는 대로 움직일 거라는 근거 없는 낙관이 화를 발생시킬 수 있다.


네 번째는 미래에 대한 집착을 버리는 것이다. 

사람이 미래에 집착하는 이유는 미래에 대한 막연한 불안감을 가지고 있기 때문이다.

하지만 지금 불안감을 가지고 있다고 해도, 미래에는 어떠한 다른 문제가 닥칠지 모르기 때문에, 현재에 대해 행복한 것을

실천하는 것이 좋다고 말하고 있다.


다섯번째는 논리적 오류를 방지하는 것이다.

a. 붉은 청어 오류

ex ) Q: 이 코드는 이런 문제가 발생할 것 같은데요?

      A: 아 이거 본부장님 승인 받은거라 문제 없어요..

b. 성급한 일반화의 오류

c. 선결문제 요구의 오류

ex) 이 코드는 검증할 필요가 없다. 왜냐하면 내가 짰으니깐

d. 확증 편향의 오류

ex) 한쪽에서는 맞는 것만 내세우고, 다른쪽에서는 틀린것만 내세우는 문제.

     기획자는 기획 의도만 내세우고, 개발자는 개발 의도만 내세우는 문제.

이런 오류들을 방지할 수 있으면 행복한 개발자로써의 한걸음을 디딜수 있을 것이다.


마지막으로 실천적 지혜를 활용하는 것이다.

아는 것을 단지 아는 것으로 끝내는 것이 아니라 실천을 함으로써 그 지혜를 활용할 수 있다면 행복한 개발자가 

될 수 있을 것이다.


2 session - 네이버 모바일 홈을 움직이는 반응형 무한 스크롤의 비밀


솔직히 이번 세션은 정확히 이해를 하지 못했다. 앱에서 페이지 나눠서 계속 호출하면 그게 무한 스크롤 아닌가?

일단 발표자가 설명한 네이버 모바일 홈 개편의 장점으로 아래와 같은 설명을 곁들였다.

1. 카드 UI형으로 변경 했는데, 카드는 사용자에게 빠르게 이야기를 전달한다.(by Paul Adams)

2. 카드는 다양한 화면 디자인에 scalability가 높다.

3. 무한 스크롤을 구성하는 방식에는 virtual scroll 과 browser scroll이 있는데 browser scroll이 성능이 더 좋다.

(이건 웹쪽 관련 얘기인것 같음 -_-;;)


3 session - Automated Recognition of Alzheimer's Disease from wearable Devices: Big Brain Data and Big visual Data



이번 세션은 핫이슈가 되고 있는 사물 인터넷 분야라고 할 수 있다. 기기에서 사람의 뇌 전류 시그널을 측정 및 분석하고

그 분석된 결과로 뇌 전류를 수정해주는 치매 예방 기기에 대한 설명이었는데 눈길이 가는 제품이었던 걸로 기억한다.

원래는 1인칭 컴퓨터 비전을 이용하여 비디오 데이터를 추출하고 비디오 데이터에서 특징 데이터를 추출해서 해당 비디오가 

어떤 범주에 포함되는지를 분류(classifier)하는 기계학습 쪽 업무를 하였는데, 여기에 대한 입력 값을 비디오 데이터 대신

뇌파 데이터로 수정해여 해당 제품을 개발하였다고 설명하고 있다.

기계학습, 머신 러닝이 재미가 있고 미래 전망이 밝은 분야임은 확실한 것 같다. 


4 session - 안드로이드 동시성 프로그래밍 - RxJava를 확용한 Functional Reactive Programing


 

요새 안드로이드 개발을 한창 진행하고 있기 때문에 해당 session에 대해 많은 관심이 갔다.

내가 사용한 volley에 대해서도 나오고, picasso도 나와서 반가왔던건 사실..

현재의 concurrent package에 대한 개괄적인 설명이 이루어 졌고, 단점에 대한 설명도 있었다.

AsyncTask 같은 경우에는 background에서 예외가 발생했을 시 메인 UI에서 표현할 방법이 없기 때문에 

사용하지 말것을 당부하기도 했다.

RxJava같은 경우엔 발표자 말이 너무 빨라서 제대로 알아 들을 수가 없었다.

나중에 따로 찾아봐야 할 것 같다.

그냥 이번엔 이런게 있었다는 정도로만...


5 session - 간결하고 효율적인 안드로이드 앱 구조와 개발


발표자 블로그

몇 가지 개념에 대한 설명이 이루어졌다.

Application 객체의 경우 가장 lifecycle이 길기 때문에 오래 사용될 변수는 여기에 저장하는 것이 좋다.

또한 Activity에서의 static 변수 정의시 static 변수가 날라갈 수 있다고 한다.(?????)

그래서 static 등의 지속적인 변수는 Application 객체에 저장하는게 옳다고 한다. (왜 사라지지 -_-;;)

코드 간결을 위해 inheritance, reflection, generics, annotation 사용을 강조.

annotation 남발 시 메모리 점유가 늘어날 수 있는데(쿠팡 재직자가 질문) 메모리냐 코드 간결화냐의 

trade-off를 잘 생각해서 사용해야 할 것이라는 설명을 했다.

(코드 간결 보다는 메모리 절약이 더 중요하지 않을까??)

위의 발표자 블로그를 보면 발표자가 설계한 안드로이드 코드가 있는데 그 코드를 이용해서 개발을

하면 좀 더 간결하고 가독성 있는 코드를 구현할 수 있을 것이다.


6 session - Android L


새로운 디자인. 새로운 runtime..

사실 runtime은 그렇게 와닿지 않는다.

내가 와닿는건 material design인데 주로 runtime에 대한 설명이 주를 이루었다.

기존 dalvik에서 android runtime으로 대체가 되었다고 한다.

또한 ui thread modeling 기법에서 render thread 기법으로 변경되었다고 한다.

ui thread model은 ui thread에서 모든 이벤트 처리를 하는 것을 말한다. 이전 포스팅에서 설명한 cross thread와 같은 개념

인 것 같다.

render thread는 윈도우 폰의 compositor thread와 비슷하다고 하는데 compositor thread가 몬지 잘 모르겠음 -_-;;

JIT 컴파일러에서 AOT 컴파일러로 변경되었고,

Garbage collection의 성능도 변화되었다고 말한다.

나중에 Android L에 대해 더 깊게 설명한 기회가 있기를 기대하며.. 내가 이해한 부분은 여기까지만..


Interesting booth



항상 사람들이 붐비던 booth.

http://www.miniinthebox.com/ko/neje-diy-google-cardboard-virtual-reality-3d-glasses-with-nfc_p1838318.html

아마 위의 링크 형태의 안경을 좀더 이쁘게 꾸민게 아닐까 싶다.

여성분도 좀 이뻤음...