121

about me

내 이야기

프로그래밍을 시작한 경위와 본격적으로 투신하고 생업으로 삼기로 결정한 이야기를 해주세요.
1. 어릴 때부터 무언가 만들거나 고치는 것을 좋아했음. (전기 기술자인 아버지 영향)
2. 유년시절에는 종이접기 홀릭 (김영만 아저씨)
3. 고교시절에는 루빅스 큐브 홀릭 (퍼즐 개조, 매커니즘 연구에 관심이 많았음)
4. 원래 화학을 전공하고 싶었다. 분자끼리 결합해서 물질이 만들어지는게 신기해서. 입시때 1지망/2지망은 화학과 쓰고 3지망을 컴퓨터학과 썼는데 3지망만 붙음.
5. 학교가 맘에 안들어서 재수를 했는데 실패. 군대 감.
6. 군 전역 후 복학. 학교 과제로 C언어로 연결리스트로 전화번호부를 만들며 밤을 샜는데, 그때 프로그램이 재밌는거구나 느낌. 이때 어릴 때부터 만들고, 고치고, 연구하고 했던 경험들이 새록새록 떠오르면서 난 개발자 해야겠다 생각함.

좋은 개발자가 되기 위해 갖추어야 한다고 생각하는 덕목 셋을 고르고 그 이유를 말해주세요. (예를들어 책임감, 꼼꼼함, 유연성 등등)
1. 전문성
- 학원 몇개월 다녀놓고 개발자로 취업할수 있다! 식의 광고 때리는 학원들이 이상하다고 생각한다. 피아노학원 6개월이면 당신도 피아니스트! 라고 하는 경우는 없다.
- 개발자도 마찬가지라고 생각한다. 현실적으로는 몇개월 개발 공부 해서 취업이 가능한 게 프로그래밍이긴 하지만, 이후에 꾸준히 전문성을 키우지 않으면 결코 좋은 개발자가 될 수 없다고 생각한다.
- 첫 직장에서 소위 말하는 '영웅개발자'와 같은 팀장님이 계셨는데, 그분은 매달 기술서 원서를 4권 이상씩 읽는 분이었다. 매일 아침 일찍 카페에 가셔서 공부하신 분인데, 그의 꾸준함과 열정은 내게 큰 영향을 주었다.

2. 의사소통
- "내 할 일만 잘 하면 되지!"는 굉장히 위험할 수 있다.  에고(ego)가 들어가기 시작하는 순간 팀의 분위기도 안 좋은 방향으로 흘러가게 된다.
- 오히려 내 생각을 코드로 쓰고, 공유하고 피드백 받는 것이 나를 발전시키는 일이라고 생각한다. 사람들을 말로 설득시키려고 하면 시간만 낭비되고 개발할 시간도 오히려 줄어든다.
- 또한 의사소통은 변화무쌍한 스타트업 세상에서 (또한 변덕스런 클라이언트들에 대항하기 위한) 필수불가결한 요소라고 생각한다.

3. 성실함
- 개발자는 4가지 종류로 나뉜다고 한다. 똑똑하고 게으른, 멍청하고 게으른, 똑똑하고 성실한, 멍청하고 성실한. 이중에 베스트가 똑똑하고 게으른 개발자라고 이야기한다. (가장 위험한 건 멍청하고 성실한 개발자다.)
- 사실 본인은 성실하다는 이야기를 많이 듣는 편인데, 본성은 그렇게 성실한 편은 아니다. 굳이 성실해진 이유를 생각하자면 "나중에 더 귀찮아질까봐 미리 공부한다" 이다. 결국에는 내 본성은 게으르다! 라는 것을 이야기하고 싶다.
- 코드를 작성할 때도 나중에 다시 소스를 봤을때 해메기 싫어서 비슷한 부분은 묶고, 너무 뭉친 부분은 나누면서 읽기 쉬운 코드를 만들기 위해서 노력한다.
- 물론 이렇게 해도 레거시 코드는 발생하는게 개발 일이지만, 좀더 편하게 작업하기 위해서, 그리고 나중에 똑같은 고생을 하지 않기 위해서 성실함(을 가장한 게으름)은 개발자의 덕목이라 생각한다.

기술 경향을 파악하고 업무 역량을 강화하기 위한 본인의 학습 방법을 구체적으로 설명해주세요.  
1. 공부
- 신입이 되어 2년차까지는 당시 회사의 팀장님을 따라 아침마다 카페에 가서 기술서를 읽었다.
- 모르는 것은 팀장님께 질문하고 답변을 받기도 했다. (물론 알아듣기는 벅찼다.)
- 이것이 습관이 되어 출근 전 1시간은 꼭 개발 공부를 한다.

2. 번역 & 블로그
- 번역된 글들은 블로그에 정리되어 있다. (https://devtimothy.tistory.com/)
- 번역을 하고 나서 페이스북 개발자 그룹에 이곳저곳 올리면, 글에 따라서 좋아요 수와 블로그 방문자 수를 집계할 수 있다. 때로는 생각지도 못한 번역글이 뜨거운 반응을 얻을 때도 있고, 중요한 원리라고 생각한 글이 오히려 관심을 못 가질 때도 있다. 이를 통해서 국내 개발 트렌드를 넌지시 아는 편이다.
- 또한 번역용 글감을 찾기 위해서 자연히 외국 사이트를 뒤적이게 된다. 그러면서 해외에서 어떤 트렌드가 핫한지 알 수도 있고, 또한 내가 관심있는 기술들 (요새는 graphql) 의 최신 정보들도 알게된다.

3. 토이 프로젝트
- 토이 프로젝트는 실무에 기술을 적용하기 전에 가볍게 만들어보는 것을 목표로 한다. 내 프로젝트는 github (https://github.com/yunseop-kim) 저장되어 있다.
- 이직 후에 처음 만들었던 것이 firebase를 이용한 채팅 앱이었다. 회사에서 firebase realtime database를 사용중이었는데, 채팅 앱을 만들어보면서 기술에 대한 이해를 할 수 있었다.
- 회사 내에서도 토이 프로젝트와 같이 산출물을 만들어내는 경우가 있었다. 일을 하다보면 바쁠때도 있지만 안 바쁜 시기가 찾아오기도 한다. 그때 회사용 간이 프로젝트를 하나 만들어서 총무 직원을 위한 웹앱을 제작한 적이 있는데, 이때 안드로이드 개발자가 서버 개발을 해보기도 하고, 서버 개발자가 프론트엔드 개발을 하는 등의 업무 교환을 통해 개발에 대한 이해를 돕기도 하고, 또 새로운 기술을 도입해보는 테스트베드로서 역할을 했다.

지난 개발 프로젝트들의 아쉬운 점이 있었다면 무엇이고 개선 방안은 뭘까요?  
1. 초기 단계
- 나는 레스토랑 예약 서비스를 개발하면서, 초기단계에서부터 서버 구축 및 관리자 페이지 구축을 했다. Opentable 이라는 해외의 예약 서비스를 참고로 해서 개발을 하였는데,  대표님은 Opentable과 유사하게 개발을 해나가고자 하였다.
- 외국 실정에 맞게 개발된 Opentable의 서비스를 그대로 본떠오려고 하니 국내 실정에 맞게 개발하는 것이 고역이었다. (예를 들면, 새벽까지 운영하는 매장에서의 예약 처리, 다수의 테이블에 한 예약 고객이 앉는 경우 등)
- 초기 단계에서 Opentable의 기능을 본떠 만들어놓은 것들이, 서비스를 시작한지 2년이 넘은 시점에서 하나둘씩 발목을 잡는 경우가 많이 생겨났다.
- 개선 방안: 린 스타트업의 모습에 맞게, 빠르게 개발해서 배포하고, 고객들의 피드백을 받아서 소프트웨어 품질을 개선해 나갔더라면 지금의 앱 모습이 많이 달라지지 않았을까? 생각한다.

2. 레거시 코드
- 서비스 개발 초기에, 예약 수정 API를 구축하면서 안드로이드 개발자와 의사소통 중에 충돌이 일어난 것이 발단이었던 것 같다.
- 예약을 수정하는 경우의 수가 굉장히 많다. 시간, 인원, 테이블, 상태(착석, 노쇼, 대기 등) 등... 서버 측에서는 당연히 기능이 분리되어야 한다는 주장을 했고, 안드로이드 개발자는 코드 작성의 어려움을 토로하며 1개의 API로 모두 다 하기를 원했다.
- 열띤 공방 끝에 결국에는 안드로이드 개발자가 원하는 대로 예약 수정은 단 하나의 API로 모든 수정이 이루어졌다.
- 서비스가 점점 커지면서 이 한개의 API에 포인트 적립, 알림톡 발송 등의 요구사항이 추가되면서 한개의 API에서 86개의 분기, 800줄이 넘는 코드 분량을 가진 레거시 중의 레거시를 갖게 되었다.
- 코드는 뚱뚱해지면서 관리가 점점 어려워졌고 기능 개발하여 고도화하는 단계에서도 어려움이 많이 있었다.
- 물론 현재는 리팩토링을 해서 기능 분리가 이루어진 상태이지만, 초기 단계에서 안드로이드 개발자와 소통을 잘 했었더라면 이런 일이 줄지 않았을까 싶다.
- 개선 방안: 끊임없는 리팩토링, 팀원간의 의사소통

좋아하는 시나 소설, 노래 중심으로 자신을 자유롭게 소개해 주세요.
안녕하세요, 저는 레스토랑 예약 솔루션 테이블링에서 개발을 하고 있는 김윤섭이라고 합니다. 저는 <불멸 (이문열)> 이라는 소설을 중심으로 제 소개를 하고자 합니다.
소설 선정 이유
<불멸>은 이문열님이 안중근 의사에 대해 쓴 소설로, 안중근 의사에 대해서 알게 되고 존경하게 된 계기를 마련해 준 책입니다. 사실 사람이 어떤 사람을 존경하고 따르게 되는 이유는 각자 다르겠지만, 내가 갖고 있지 않은 무언가가 그 대상에게 있다면 끌리고, 따르고 싶게 되기 마련이지요. 나와는 확실히 다른 안중근 의사의 모습을 보면서 저는 그를 동경하게 되었습니다.
사실 군 전역 전까지 저는 이렇다 하게 잘하는 것 하나 내세울 게 없고, 자신감 없는 청년이었습니다. 안중근 의사를 보면서 존경하게 된 이유도, 나는 하지 못할 것 같은 일을 그는 했기 때문입니다. 이 소설을 접하게 되었을 때가 당시에 집안 사정이 녹록지 않았는데, 군대 버프 + 안중근 버프로 이 시기를 잘 이겨낸 것 같습니다. 안중근 의사라는 한 사람의 인생을 통해서 많은 사람들이 자유를 누리게 되었던 것과 같이, 나도 누군가를 위해서 무언가를 할 수 있는 사람인 것을 깨닫게 되었습니다.

Think Big
군대를 다녀온 남자라면 다들 한번쯤 겪게 되는 것이 군대 버프입니다. 보통은 3개월정도면 민간인으로 리셋된다고들 하는데, 저는 안중근 버프 + 군대 버프를 통해서 비교적 길게 버프가 지속되었던 것 같습니다. 학교 복학 후에도 주변 사람들에게 바른 생활 사나이나 FM이라는 말을 자주 들었습니다.
안중근 버프 + 군대 버프로 인해서 생겼던 결심 중 하나가, 돈을 많이 벌어서 통일 후에 미래의 지도자들을 키우는 국제학교를 평양에 설립하겠다는 결심이었습니다. 또 학교 다니는 동안에는 학과에서 우수한 성적을 유지하면서 장학금을 타면서 학교를 다니니, 학교 다니는 동안에 이 결심은 꾸준히 지속되었습니다.
학교 졸업 후에 입사했던 회사에서 저는 멘토와 같은 개발자를 만나게 됩니다. 당시 개발팀장님이신데요, 이분을 통해서 개발자로서의 꾸준함과 성실함을 배우게 되었습니다. (매달 원서로는 4권 이상의 책을 읽으시고 아침마다 1시간 일찍 나와서 공부하셨습니다.)
소프트웨어와 아키텍쳐 등 다양한 방면에서 해박한 지식을 가지고 계셨던 팀장님을 보면서, 나도 저런 개발자가 되고 싶다는 생각을 하게 되었던 것 같습니다. 경력을 이어가면서 내가 막다른 길에 부딪힐 때에, 냉철한 판단과 통찰력으로 제게 조언해주시는 모습이 제게는 매우 인상깊었습니다. 팀장님을 보면서, 소프트웨어 개발자로서의 청사진을 가지게 되는 계기가 되었던 것 같습니다.

작게 시작하기
팀장님이 추천해주셨던 책들을 읽다보니 너무 어렵고 제가 따라가기에는 벅찬 것들이 많았습니다. RFC 문서나 REST API 논문 같은 문서를 읽어보는 것을 추천해주셨는데, 꼬꼬마 개발자가 관록있는 시니어 개발자를 따라가려고 하니 뱁새가 황새 따라가다가 다리 찢어지는 격이었던 것 같습니다.
이직을 하고, 지금 회사에 와서 작게 시작하기에 대해 배운 것 같습니다. 사실 RFC 문서나 REST를 온전히 잘 따라서 만든 소프트웨어라도 사용자가 안 쓰면 아무 소용이 없기 마련입니다. 이곳에 와서 처음 구축한 게 <파트너 센터> 라는 웹 어플리케이션인데 (배민의 사장님 페이지와 비슷한 역할이라 생각합니다.), 이 앱을 만들면서 그동안 가지고 있던 소프트웨어에 대한 오해가 많이 깨졌던 것 같습니다.
배달의민족 앱의 초기 단계에서는 주문이 들어오면 매장에 직접 전화를 걸어 주문했다는 이야기는 이제 유명해진 일화이지요. 제가 만든 초기단계의 <파트너 센터>도 마찬가지였습니다. 완벽하고 아름다운 모습은 아니었지만, 직원들은 하나하나 옷을 입어가는 앱의 모습을 보며 매우 좋아해주었고 칭찬해주었습니다. 사실 별 것 아닌 일이지만 이전 회사의 경험과 비교해 볼때 저는 신선한 충격이었습니다.
사실 이곳 저곳 스터디나 모임 같은 것들도 많이 나가봤지만, 사실 제게는 이렇다할 개인 프로젝트를 가지고 있지 않았습니다. 완벽해질 수 없는 걸 알면서도 완벽해질 것을 기대하고 소프트웨어를 만드려고 하다보니 도리어 금방 포기해버리게 되었습니다.
요새는 작게 여러가지 앱을 만드는 시도를 하는 것 같습니다. 현 회사에 입사 당시, 회사에서 Vue와 Firebase RealTime DB를 사용하고 있었는데, 채팅 앱을 만들며 실무에 금방 적응할 수 있었고, 서버 사이드 렌더링이 필요한 모바일 웹앱 프로젝트에 들어가기 전에는 nuxt를 이용한 간단한 Todo 앱을 제작하며 실무에 적용할 수 있었습니다.
요새는 레스토랑 대기(순번)관리 앱을 개발 진행 중인데요, 회사의 사이드 프로젝트로 짬나는 시간에 개발했던 것인데, 지금은 이 앱을 통해서 스페인클럽, 토끼정 등의 유명한 매장을 비롯한 많은 매장의 계약을 체결하는 데 도움이 되었습니다. 작게 시작하기의 좋은 열매가 아닌가 생각합니다.

마무리
글이 길었지만, 이 글을 통해 말하고 싶었던 제 자신은 성실하고 꽤 괜찮은 사람이라는 것입니다. 전역 후에 호프집을 운영하며 겪은 경험과, 레스토랑 예약 서비스를 개발하며 겪었던 경험은 꽤나 값진 것이었던 것 같습니다.
요새는 블로그(https://devtimothy.tistory.com/)에 번역 글을 올리는 것을 즐겨 하고 있습니다. 오셔서 댓글로 격려해주시면 감사하겠습니다.
이상으로 소개 글을 마칩니다. 긴 글 읽어주셔서 감사합니다. (_ _)

Project & Activity

대외활동
2013-03 ~ 2013-12

한이음 BIG 프로젝트

한국정보산업연합회에서 주관하는 한이음 BIG 프로젝트 결과보고회에서 베스트 프로젝트 기획상 수상.

"나의 인생 마일스톤, 나의 미래 그리기" 라는 주제를 가지고 발표하였음

발표 보고서: https://drive.google.com/file/d/0B4YVq0GBU9XrRkRVUS14eDRUMVE/view?usp=sharing

2011-03 ~ 2013-12

다문화 예배 필리핀어권 통역

교회 다문화 예배 필리핀어권 통역 봉사활동을 하였습니다.

2005-03 ~ 2006-12

루빅스큐브맞추기 운영진

- 오프라인 정기모임 추진 및 운영, 카페 관리
- 큐브 해법 연구 및 스피드 큐빙, 큐브 개조 등의 강좌 업로드

Education

학력/교육
2007-03 ~ 2016-02

안양대학교 졸업 컴퓨터학과

평점 4.02 / 4.5
성적 우수 장학금 6회

Work Experience

경력
2015-10 ~ 재직 중

엔젠소프트

웹 프로그래머

- IoT 솔루션 웹 API 개발
- 모바일 앱 보안 솔루션 라이센스 관리용 웹앱 개발
- 이상 행위 시스템 (Fraud Detection System) 대시보드 웹앱 개발

Attitude & Ability

특별한 역량
thumb_up
0
Javascript
thumb_up
0
node.js
thumb_up
0
Angular.js
thumb_up
0
Mysql
thumb_up
0
HTML5
thumb_up
0
css3
thumb_up
0
Vue.js

Language

언어
영어 일상 회화가 가능해요.

Portfolio

포트폴리오
2015.3
육아용품 추천 앱 - 수다 (서비스 종료)

- SK플래닛의 T아카데미 서버 전문가 과정에서 진행한 프로젝트
- AWS EC2, Node.js 기반의 API 서버 개발

https://play.google.com/store/apps/details?id=net.soodaa.soodaaproject&hl=ko

2016.5
앱 보안 센터

- 앱 보안 솔루션 라이센스 관리 웹앱
- Gulp, Angular.js

2016.8
이상 행위 감지 시스템

- 이상 행위 감지 시스템
- Angular.js, Grunt, D3.js, Socket.io, Docker

2016.1
IoT 솔루션

- 수목 관리 시스템
- API 서버 개발 (Node.js, Express.js, Angular.js)

Design Showcase

비핸스/드리블
Behance

연결된 Behance 계정이 없습니다.

Dribble

연결된 Dribbble 계정이 없습니다.

Tech Stack & Tool

프로그램/언어

Code Archive

깃허브/비트버킷
GitHub
chat-app-node-socket

typescript, node, express, socket.io

TypeScript 0 0

codeSpitz75

코드스피츠 75

HTML 0 0

codewars

solved codewars katas

Python 0 0

d3act

d3 with React

JavaScript 0 0

express-winston

express.js middleware for winstonjs

JavaScript 0 0

firebaseChatApp

Chatting App based on firebase

JavaScript 0 0

firebaseShortenUrl

url shortening using firebase

TypeScript 5 1

flutter-todo

flutter todo app

Dart 0 0

fp-playgroud

functional programming with javascript

JavaScript 0 0

graphql-playground

graphql, typeorm, mongodb

TypeScript 2 0

moment

Parse, validate, manipulate, and display dates in javascript.

JavaScript 0 0

my-first-blog

Django Blog App

Python 0 0

nuxt-todo

todo app using vuejs and nuxt

JavaScript 2 0

oneday_onecommit

oneday_onecommit_angular_project

JavaScript 0 0

personal

personal git data

JavaScript 0 0

sequelize-koa-todo

api server using sequelizejs, koa

0 0

snake_dice

snake dice game is korean old board game.

JavaScript 0 0

todo

하고싶은 것, 떠오르는 것들을 적어놓는다.

1 0

translations

번역 글 모음

4 0

vue-typescript-starter

vue-typescript-simple-example for starters

JavaScript 0 0

vue-typescript-todo

todo app based on typescript, vue.js, firebase

JavaScript 3 0

Bitbucket

연결된 Bitbucket 계정이 없습니다.

기업문화 엿볼 때, 더팀스

로그인

/