Korea Evangelist

Developer & Platform Evangelism, Microsoft Korea

June, 2014

  • Korea Evangelist

    앱 개발 모임 시즌4 에피소드4

    • 2 Comments

    10452360_771374619574226_559842894757059932_n

    앱 개발 모임 시즌4��� 4번째 모임 후기입니다.

    앱 개발 모임이 현재 변화를 고민하고 있습니다. 이번 모임에서는 앞으로 앱 개발 모임을 어떻게 확대해 나가면 좋을지에 대한 토론을 했습니다

    새로 참가하는 분들이 매 모임에서 더 많은 것을 배워가고, 더 많은 사람들이 참여하기 위한 형식을 찾기 위해서요. 디자이너도 참여한다 던지 중급 개발자도 참여할 수 있는 방안을 고민 중인데, 좀 더 구체화가 되면 자세히 말씀 드릴게요. :)

    10366159_771374536240901_7141592659852127229_n

    토론을 하고 나서는 항상 그러하듯 개인 프로젝트 공유시간을 가졌습니다. 일단 제가 먼저 기획과 디자인에 도움이 될만한 정보를 공유 드렸어요.

    10291224_771374696240885_418874020254148038_n

    특히 PowerPoint+Visual Studio 조합에서 사용할 수 있는 Storyboarding이라는 기능을 기획할 때 사용할 수 있다고 소개시켜드렸는데 다들 좋아하시더라고요.

    다음으로는 지난 모임에 처음 참석하셨던 송형근님이 앞으로 만들고 싶은 게임 앱을 잠깐 소개해 주셨습니다.

    10462938_771374866240868_593256301865960022_n

    기존에 아이폰 용으로 만든 것이 있는데 이걸 윈폰용으로도 만들어 보고 싶다고요. 하지만 OpenGL을 지원하지 않아서 DirectX를 사용해야 할까 고민 중이라고 하네요. 저희 모임의 DirectX 장인 유영철 님이 계셔서 어려운 부분이 있어도 해결할 수 있지 않을까 싶어요.

    다음은 이종인님이 현재 진행 중인 DesignMe 신버전의 디자인 과정을 소개해 주셨습니다.

    WP_20140612_20_03_29_Pro

    Adobe의 InDesign 툴을 이용해서 디자인을 진행하는 과정이 신선했습니다. 개발 부분은 소셜 네트워크 인증을 붙이는 것을 진행하였는데 Windows Runtime API가 잘 되어 있어서 쉽게 할 수 있었다고 합니다.

    다음은 역시 신입 회원인 강한별님이 현재 제작 중(60% 개발)인 가계부 앱을 공유해 주셨습니다.

    WP_20140612_20_16_20_Pro

    현재 소프트웨어 공학 전공의 대학생이고 처음 윈폰 앱을 개발해 보고 있는데, 학교에서는 자바를 주로 가르치지만 본인은 C#과 윈폰이 적성에 맞는 것 같다고 하네요.

    마지막으로 DirectX 장인 유영천님이 직접 개발하신 3D MMORPG 엔진 기반의 게임을 유니버설 앱으로 포팅하고 있는 이야기를 들려주셨습니다.

    10411972_771374802907541_8234954560064438037_n

    게임 엔진도 직접 만들다 보니 포팅 해야 하는 dll이 무척 많아서 이 작업을 하는데 무려 3일이나 걸렸다고 합니다. 포팅 과정에서 렌더링을 제외하면 코드 수정이 많지는 않았고, 결과적으로 게임을 실행시키는데 성공해서 사용자 입력을 처리하는 부분만 해결하면 된다고 하네요. 사실, MMORPG 게임이라 윈폰에서 터치로 하기에는 불편하겠지만 개발자의 도전 정신으로 어떻게든 Windows와 Windows Phone 스토어에 꼭 올려 보는 것이 목표라고 해요. 참고로 이 프로젝트를 위해서 Nokia 1520 디바이스를 60여 만원을 주고 개인적으로 구입했다고 합니다. 대단한 열정이죠.

    이번 모임에서 발표하신 분들 중에 지난 주에 비해 가장 많은 발전이 있었던 유영천님과 이종인님께 유료앱을 구매할 수 있는 기프트 카드를 드리기로 했습니다.

    개인 프로젝트 공유 시간이 끝나고 소그룹 모임을 진행했습니다.

    텔레그램 소그룹은 저와 문찬 님만 참석을 하셔서 온라인에 공유한 것(프로토콜 문서 번역 / UI 구조 살펴보기)으로 대체하고 영천님과 국내 개발자의 DirectX 기피증에 대해서 잠깐 토론을 했네요.

    image

    점프스타트 소그룹은 지난 주에 전달한 자료의 숙제 검사(?)를 하고 새로운 실습자료를 전달했습니다. 50%의 참석자가 숙제를 마치셨다고 해요. 앱 개발 모임의 GitHub 그룹 저장소에 실습 자료가 실시간으로 공개되어 있으니 참고하세요.

    _989

    오늘은 비교적 일찍 9시 10분에 모임을 마치고 새로온 분들과 친해질 수 있는 치맥 뒷풀이를 진행했습니다. 앱 개발을 하면서 고민하는 여러 가지 이슈들로 의견을 나누는 즐거운 시간이었습니다.

    이번 후기는 여기서 마치겠습니다. 앱 개발 모임에 참여하시고 싶으신 분은 언제든지 환영입니다. 자세한 내용은 앱 개발 안내서를 참고하세요.

  • Korea Evangelist

    테크데이즈 미니 토요세미나 발표자이신 김희준님을 미리 만나 보았습니다.

    • 0 Comments

    오늘은 카카오에서 PC용 카카오톡 개발자로 근무하고 계신 김희준님을 만나 보았습니다.

    김명신: 안녕하세요. 오랜만에 뵙습니다. 모르시는 분들을 위해서 간단히 본인 소개를 부탁 드려도 될까요?

    김희준: 네, 저는 현재 카카오에서 PC 버전의 카카오톡헤이리북카페을 개발하고 있는 김희준이라고 합니다. 카카오에 합류한지는 6개월 정도 되었고요, 이전에는 마이크로소프트에서 핵심 개발자 지원 팀에 3년간 김명신 부장님과 같이 있었고, 그 이전에는 윈도우 Device Driver를 개발하는 회사에서 근무하였습니다. 2000년부터 개발을 시작했고, 중간에 학교에 다녀온 것을 제외하면 10년차 개발자라고 말씀드릴 수 있을 것 같네요.

    김명신: 무엇보다 이번 테크데이즈 미니 토요세미나에 모실 수 있게 되어서 영광입니다. C++11이다 C++14이다 하여 전 세계적으로 C++ 커뮤니티에서는 C++이라는 언어가 새롭게 조명되고 있음에도 불구하고 국내에서는 개발자를 위한 이렇다 할 자리가 없었는데, 테크데이즈 미니 토요세미나를 통해서 C++ 이야기를 전달할 수 있어서 얼마나 다행이지 모르겠습니다. 먼저 간단한 질문을 하나 드려 보고 싶습니다. 도대체 C++이라는 언어는 어떤 장점이 있을지요?

    김희준: 사실 C++을 사용하는 많은 개발자들이 동의하시겠지만 C++ 언어의 최고의 장점은 역시 성능입니다. 다른 언어에 비해서 컴퓨터와 가장 지근거리에 있는 언어이고, C++을 사용하였을 때 컴퓨팅 파워를 최대한으로 끌어 낼 수 있다는 것이 가장 매력적인 부분이라고 생각합니다. 최근 마이크로소프트가 주최하는 GoingNative라는 행사에서도 Hurb Sutter가 유사한 질문을 한적이 있었어요. 그 때도 역시 C++을 사용하였을 때 얻을 수 있는 최고의 장점은 Performance가 아니겠는가라는 대체적인 공감이 있었지요. 하지만 그 외에도 C++은 상당히 스펙트럼이 넓은 언어입니다. 국내에서는 주로 게임 분야에서 많이 사용되고 있는 것이 사실이지만 전세계적으로 살펴보면 게임뿐 아니라 의료, 공학, 엔터테인먼트, e-commerce 등 다양한 분야에서 C++ 언어가 사용됨을 알 수 있습니다. 그리고 최근 모바일 분야를 필두로한 플랫폼의 다양화가 IT분야의 큰 화두인데요, 역설적일지 모르겠으나 C++은 이처럼 다양한 플랫폼이 상존하는 상황에서 Portability를 고려할 때 최상의 언어입니다. 상용 플랫폼들 중에 C++을 지원하지 않은 플랫폼은 거의 없기 때문이지요. 게다가 최근 C++98/03에 머물러 있는 표준 규격이 C++11으로 완전히 재편 되었을 뿐 아니라 C++14 규격도 상당부문 표준화가 진척된 것으로 알고 있습니다. 기존에 C++ 언어가 가지는 단점 중에 하나로 다양한 라이브러리나 프레임워크 등의 부족을 꼽는 부분이 있었는데요, 최근 C++ 표준화 기구의 움직임을 보면 정말 다양한 라���브러리가 지원될 것으로 보입니다. 이렇게 되면 Cross Platform을 지원하는 가장 강력한 언어가 될 수 있으리라 봅니다.

    김명신: 일부 개발자들 사이에서는 C++ 언어는 배우기 어려운 언어다. 그리고 시대에 뒤쳐진 언어다라는 이야기가 있습니다. C++ 언어가 너무 복잡해서 그런 것은 아닐까요?

    김희준: C++은 매우 강력한 기능들을 갖추고 있고, 다양한 형태로 활용할 수 있기 때문에, 이런 부분이 잘못 비추어진 것은 아닐까 합니다. 게다가 C++의 문법이나 구현 방식들을 교묘하고 현학적으로 사용하는 경우가 간혹 있는데 이는 C++의 강력함을 과도하게 사용한 결과입니다. 실제로 C++ 언어의 규격을 설명하고 있는 문서의 분량은 Java나 C# 규격 문서와 거의 유사합니다. 규격 문서가 언어의 모든 내용을 정밀하게 나타내고 있음을 고려할 때, 다른 언어에 비해서 과도하게 복잡하다거나 사용하기 어렵다는 측면에서는 동의하기 어렵습니다. 물론 스크립트 언어에 비해서는 상대적으로 복잡해 보일 수 있겠으나, 활용도 측면에서 고려해 본다면 반드시 그런 것은 아니지요.

    김명신: 기존 C++언어에 비해서 C++11/14는 어떤 부분이 개선되거나 변경되었을까요?

    김희준: 워낙 많이 변해서 어떤 부분을 꼬집어 말씀 드리기에는 어려움이 있습니다. 개인적으로는 달라진 기능 모두가 다 중요한 것 같습니다. C++ 전문가들 사이에는 완전히 새로운 언어로 탈바꿈 하였다는 평가를 하기도 합니다. 저 또한 유사한 느낌을 많이 받습니다. 이전의 C++가 마치 C언어의 수퍼셋처럼 비추어졌다면 C++11이나 14이 지향하는 방향성은 이와는 전혀 다르다고 평가할 수 있을 것 같습니다.

    김명신: 국내에서는 특히나 게임 산업이 발달해서인지 C++ 개발자의 비중이 높은 편입니다. C++ 개발자로서 계속 C++만 하면 될까요? 아니면 여러 가지 다른 언어들도 같이 살피는 것이 좋을까요?

    이태리우피치희준: 저는 개인적으로 C++ 언어를 많이 쓰고, 좋아하는 언어이지만, JavaScript나 Python과 같은 언어도 비교적 즐겨 쓰는 편입니다. 이러한 스크립트 언어들을 익혀두면, 특정분야에서 상당한 생산성 향상 효과를 볼 수 있습니다. 특정 언어 하나를 고집하기 보다는 수행해야 하는 업무에 맞추어서 여러 언어들을 사용할 수 있다면 좋지 않을까 생각합니다.

    김명신: 그렇군요. 하지만 여러 언어들을 능통하게 잘 구현할 수 있다는 것은 쉽지 않은 일임에 분명한 것 같습니다. 계속해서 새로운 기술을 익혀야 하는 것이 개발자로서 주어진 숙명 같은 것은 아닐까 생각도 드는데요, 개발자가 가져야 하는 기본 소양이랄까 자질이나 능력 같은 것에는 어떤 것이 있을까요?

    김희준: 개발자에게 가장 중요한 것은 원리를 알고자 하는 호기심이 아닐까 합니다. 호기심이 없으면 깊이 있게 살펴볼 수 없고, 결국은 수박 겉핥기 식의 공부가 될 수 밖에 없습니다. 넓게 아는 것도 좋지만 개발자라면 기본적으로 깊이 있는 공부가 필수라고 생각하는데, 원리를 찾고자 하는 호기심 어린 시각이 없이는 깊이 있는 공부를 하기란 쉽지 않을 것 같습니다. 개인적으로 초보 개발자 분들에게는 디버깅을 깊이 있게 공부하라고 조언을 많이 하는 편입니다. 디버깅이라는 것이 단순히 버그를 찾고 수정하기 위한 절차일 뿐 아니라, 결국 코드의 동작원리를 규명하고 그것을 따라 갈 수 있는 가장 좋은 도구이기 때문입니다. 이를 통해서 하나를 깊이 있게 살펴보다 보면 다른 것들도 크게 다르지 않다는 기본적인 원리를 찾아내곤 하지요.

    김명신: C++ 코드를 접하다 보면 과도하게 복잡하게 작성된 코드들을 자주 보게 됩니다. 물론 말씀해 주신 것처럼 디버깅을 통해서 그 원리를 알고 따라갈 수는 있겠습니다만, 항상 그런 여유가 주어지는 것은 아닌 것 같아요. 개인적으로 선호하는 코드 작성 원리랄까 스타일 등이 있을까요?

    김희준: 그 점에 대해서는 저도 개발을 하면서 많이 바뀌었는데요, 처음 개발을 시작할 때에는 우습게도 어려운 코드가 좋다고 생각했습니다. 멋있게 보이기도 하였고요. 하지만 시간이 지나면서 이런 시각은 상당히 많이 바뀌었습니다. 지금 생각에는 “자가설명적(self-describing) 코드”를 작성할 수 있다면 좋지 않을까 생각합니다. 추가적인 문서가 없이도 코드만 살펴보아도 코드의 작성 의도가 한눈에 읽히는 그런 코드가 좋은 것 같아요. 물론 이렇게 작성하는 것이 쉬운 것은 아니겠지요. 말을 잘 하는 사람이란, 쉬운 단어로 정확히 내용을 전달하는 사람이라 하더군요. 저는 소스 코드 또한 그래야 한다고 생각합니다. 현학적인 코드 보다는 쉬운 코드가 훨씬 더 낫다고 생각합니다.

    김명신: 쉬운 코드가 좋다라는 의견에는 저도 상당부문 동의하는 부분입니다. 하지만 실제로 다양한 분야의 개발자 분들을 만나 보면, IT의 활용도만큼이나 개발 자체를 바라보는 시각도 다양한 것 같습니다. 국내 개발자 분들에게 전하고 싶은 말씀이 있으실까요?

    김희준: 저도 개발을 바라보는 다양한 시각이 있다는 것을 알고 있습니다. 실제로 최근에 어떤 모임에 참가하여 중견 개발자분이 하시는 이야기를 듣고 깜짝 놀란적이 있는데요. 코드는 지금 당장 돌아갈 수 있도록 짜면 그만이다라고 말씀하시더라고요. 저는 이러한 시각에는 동의할 수 없습니다. 국내 솔루션들이 대부분 버전 1.0이 나오고는 발전하는 못하는 이유가 당면한 문제 해결을 위해서 단기적인 시각으로 문제를 바라보기 때문이 아닐까 합니다. 문제 해결의 방법은 상당히 다양할 수 있기 때문에, 여러 가능성을 열어두고, 장/단기1적인 대응 방안을 비교 분석하여 올바른 방향성을 모색해야 한다고 생각합니다. 단기적인 처방만으로는 발전을 도모하기 어렵다고 생각합니다.

    김명신: 오늘 말씀 감사합니다. 인터뷰를 하다 보니, 발표하실 세션이 더욱 기대가 되는군요.

    김희준: 제 세션에서는 C++11의 새로운 규격을 설명하기 보다는, 그러한 규격을 어떻게 활용할 수 있는가에 대한 실용적인 측면을 다루고자 합니다. 아직 준비가 많이 부족합니다. 열심히 준비해야 할 것 같습니다.

    김명신: 감사합니다. 수고 많으셨습니다.

    테크데이즈 미니 토요세미나 안내

Page 1 of 1 (2 items)