왜 회고 하는가?
사람은 언제나 같은 실수를 반복하기 마련이다. 나 또한 그렇다. 이런 실수들이 반복되지 않도록. 늘 상기시키며 고쳐나가려 한다. 나쁜 버릇도 고칠 수 있고 고쳐나갈 것이다. 이번 년도에는 많은 것을 배웠고 피드백을 많이 받았으며 실패한 경험 공유하기 위해 회고록을 적는다.
Blog [16.12.28 ~ Now]
블로그를 최지훈님 권유로 16.12.28일 부터 시작하여 현재까지 작성하고 있다. 현재는 나도 많은 사람들에게 블로그를 시작하라고 권유를 하고 있는 입장이다. :)
처음에는 나도 많은 글을 적어 많이 찾아오는 블로그가 되고 싶었다. 현재는 지금은 많은 글 보다는 좋은 글을 쓰고 싶은 마음이 더 커졌다. 다양한 기업, 개인 블로그의 글을 읽을 수록 그들의 생각을 배울 수 있었기 때문이다. 앞으로는 나의 생각을 공유하는 글을 많이 쓰도록 노력해야겠다.
조회수 성장세
통계
인기 글
인기 글은 역시나 setting
하는 글이다.
SK Tacademy Server [04.19 ~ 06.23]
Backend에 관심이 많았던 나는 SK Tacademy에 참여하게 되었고 다행스럽게 참여하게 되었다. 실제 코스에 참가하기 전에 인터넷 강의로(Node.js, MonoDB)를 수강해야 했다. 처음 접하는 내용을 정해진 기간 내에 배워야하기 때문에 진도를 맞추기에 급급하였다. 그래도 학교에서 배우지 않았던 내용을 배웠기 때문에 새로웠고 재미있었다. 배우는 내용을 블로그를 한 덕분에 나중에 쉽게 찾아 볼 수 있었다.
코스과정에는 디자이너 / 기획자 / 안드로이드 개발자와 협업하는 팀을 이루게 되었다. 처음으로 디자이너와 기획자들의 요구사항을 받아보기도 하고 나의 문제점을 그들에게 말하기도 하였다. 이 과정에서 정말 커뮤니케이션은 매우 중요하다는 점을 알게 되었다. 생각외로 많은 이야기를 나누고 서로의 의견을 맞추는 과정은 여간 쉬운게 아니였다.
강사님에게 ‘방학때 무엇을 하면 좋을까?’라는 질문을 던졌다. 강사님은 그 질문에 ‘쉬지 말고 개발하기. 어떤 내용(오픈소스, 토이 프로젝트, 프레임워크 공부)이든 상관없다. 쉬면 감이 떨어질 뿐만 아니라 회사에서도 좋게 보지 않는다.’ 강사님 대답 덕분에 나는 뭔가를 계속하려고 노력했다.
쉬지 말고 개발하기. 어떤 내용(오픈소스, 토이 프로젝트, 프레임워크 공부)이든 상관없다.
Naver Corporation [07.03 ~ 08.18]
Naver Summer인턴을 지원하여 운이 좋게 여름방학동안 인턴생활을 진행하였다. 인턴기간동안 정말 얻은 점은 많았고 나는 부족함을 느꼈다. 결과는 아쉬웠지만 그 과정은 너무 소중했다.
프로젝트 시작 전 프로젝트의 필요성(가치 판단)
나의 프로젝트가 진행할만한 가치가 있는가?
가치가 없다면 사실 프로젝트를 진행할 이유가 없다. 프로젝트를 진행할 목적을 찾아야하고 그 목적이 정당화되어야 한다.
프로젝트를 진행하였을 때 얻는 효과가 크지 않다면 사실 진행하는 것도 의미가 없다.
Prototype을 통해 부족한 점, 개선해야 할 점을 찾기.
필요성(가치 판단)을 확인하기 위해 빠르게 Prototype을 만든다. 가치 판단을 하기 위해 만들었던 Prototype을 통해 어느 정도 가치 판단을 하게 되면 어느 점이 부족헀는지, 어느 부분을 개선해야할지 찾는다.
기술에 대한 검증.
사용할 기술에 대해 검증이 필요하다. 각 기술에는 늘 장단점이 존재한다. 우리가 사용할 기술에는 어떠한 장점과 단점이 있는지 알고 진행해야 장점의 효과를 극대화하고. 단점을 보완할 기술을 찾아 보완하기도 한다.
재사용 가능한 코드로 만들기.
가치 판단을 한 Prototype
기반으로 실제 프로젝트를 진행하였다. Prototype에 존재하는 결과물을 분석하는 부분과 DB에 저장하는 부분이 한 Method안에 묶여있었기 때문에 20GB
되는 크기를 분석을 빠르게 하지 못하는 문제가 발생하였다. 하드 코딩을 하면 나중에 코드 재사용을 할 수 없는 문제를 겪었다.
실제 성능을 볼 수 있을 가시적인 시스템을 가장 먼저 구축.
처음에는 콘솔창으로 결과물을 늘 실행해서 확인하여 데이터를 엑셀에 옮기고 그래프로 그려서 확인하는 작업을 거쳤다. 반복되고 시간을 많이 잡아먹는 부분을 해결하기 위해 가장 먼저 결과물을 볼 수 있는 가시적인 시스템을 만들었다.
Iteration을 많이 잡아먹는 부분을 빠르게 자동화 시켜 Iteration을 짧게 만들 것.
많은 시간이 필요하다고 생각된다면 쉬운 길을 찾아보고 구현.
나의 가장 큰 문제점으로 꼽혔던 문제다. 그 길에 빠져 나오지 못하고 하나만 파고드는 성격. 나에게는 주어진 시간이 있지만 나는 그걸 생각하지 않고 진행했었다. 시간과 일에 대한 관계를 고민해보는 계기가 되었다. 많은 시간을 투자할 만한 가치가 있는가?
다른 방법도 충분히 존재하고 찾아보면 그 방법이 더 나은 방법일 수도 있었다.
예전에 팀원들과 스크럼을 진행하면서 각 일에 대해 시간을 부여하는 행위를 했던 기억이 있다. 너무 많은 시간을 잡아먹는다면 목적 달성을 하기 위해 꼭 필요한가?
라고 서로 물어보았다. 필요하다면 그 일을 더 작게 작게 만들어 분담하였고 아니였다면 과감없이 Backlog로 넘겨버렸다.
나는 분명히 그런 행동을 했었지만 인턴기간동안에는 실천하지 못했었다. 앞으로는 그러지 말아야겠다. 정말.
쉬운 길을 택했던 부분을 고도화.
어느 정도 시스템이 갖추어 지면 빠르게 Iteration 돌리며 시스템을 구축하는 과정에서 선택했던 쉬운 방법을 고도화 시키는 부분이다. 알고리즘을 바꿔보기도 하고 다른 방법을 적용해보기도 한다. 조금 더 범용적으로 포함하기도 하고. 조금 더 정확하게. 지속적으로 기능을 고도화하며 프로젝트를 진행한다.
결과물에 대한 검증
결과물에 대한 검증이 필요하다. 내가 만들어낸 결과물에 대해 어떻게 검증하였고 수치는 어느 정도 나왔는지 보여주는게 나의 결과물을 정당화 할 수 있다. 개발기간과 진행상황을 고려해보았을때 여유가 없다면 휴먼 파워도 하나의 방법이다.
Etc
Interface를 사용하는 이유?
- Mockup API을 우선 만들어 협업을 진행하는데 더 좋다.
TCP보다 HTTP를 선호하는 이유
- TCP의 문제점(관리, 유지보수가 힘들다)
e.printstacktrace()
- 서버에 넣지 않는 코드. 서버 장애유발코드.
스크럼 진행방식
- issue / 핵심만 말하기 / 좋았던 점 / 아쉬웠던 점
결과물의 형태는?
- 사용자의 입장에서 사용하기 편하고 보기 좋게 만들자.
최적화는 우선순위가 낮다.
말 습관 고치기
- 친구(용어 대신 나오는 단어) / 그래서 / 이제
얻은 점.
Project
- 프로젝트의 목표와는 다른 부분에 힘을 쏟지 말고
목표에 집중
하며 다가갈 것. - 주니어 개발자가 자주 실수하는 이유.
목표에 접근하다가 다른 부분에 빠져 나오지 못하고 시간을 허비
- 왜 기술을 사용하는지에 대해 알고 진행하기
- 다양한 접근 / 범용
나의 개선점.
- 많은 것을 공유하고 본인이 제대로 그 방향을 가고 있는지 주변 도움을 받으면서 성장하는 모습.
- 혼자만의 동굴에 깊이 들어가지 말것.
- 상대방에 대한 배려.
Good bye 2017. Hello 2018!