레이블이 잡담인 게시물을 표시합니다. 모든 게시물 표시
레이블이 잡담인 게시물을 표시합니다. 모든 게시물 표시

2015년 12월 3일 목요일

실패한 경험

누군가 '실패한 경험과 그 실패로 배운 점은?'이라고 묻는다면?


마치 면접 상황에서 마주치게 되는 질문이라는 느낌을 받았을 거라 생각된다.
애플 면접에서 듣게 되는 33가지 질문
몇가지 흥미로운 퀴즈도 있고, 하루가 지난 지금까지 머리속에 남아 있는 질문도 있다.
바로 위에서 말한 실패한 경험에 대한 것이다.


실패한 경험이야 잠깐의 고민에도 몇가지가 떠오르지만, 그 실패 후 배운 점은 무엇 인가에 대한 대답은 쉽사리 찾아지지 않았다. 그래서 계속 머리속 한 귀퉁이를 차지하고 있다가 이렇게 갑자기 글을 쓰게 만든 것 일지도 모르겠다.

첫번째는 준비 없이 시작한 학원이다.

사회 초년생 시절 다니던 회사를 그만 두고 잠시 아는 분의 학원일을 도와준 적이 있다. 그러다 별 준비도 없이 부모님 돈을 가져다가 같은 학원을 하나 차리고 운영하게 되었다. 프랜차이즈로 운영되는 곳이었고 지인 분의 도움을 받아가며 하면 충분히 운영 가능 하리라 생각했다. 또 당시 나름 유행하던 곳이라 돈도 제법 벌 수 있을 것이란 기대도 했다.

하지만 현실은 상상과는 너무 달랐으며 나의 능력 밖의 일이라고 생각되는 것 역시 너무 많았다. 그리 유쾌한 사람도 아닐 뿐 더러 그날 처음 본 학부모와 자연스럽게 대화하면서 설득하고 영업(!) 하는 것이 너무도 힘들었던 것이다. 게다가 3,4개월 마다 광고를 계속 하면서 수입도 거의 없이 현상 유지만 되는 상황이 계속 되었다.
결국 다른 분에게 학원을 넘기고 손해만 남긴채 접었던 기억이 있다.

가장 큰 실수는 나름 사업을 시작한다고 하면서 신중하지 못했으며, 대부분의 일을 지인에게 의지한채 시작했다. 결국 나의 일이며 내가 해야할 일들이었는데, 사전 조사, 관련된 지식 모든 것이 준비되지 않은 채 분위기에 휩쓸려 시작하고 당연히도 실패를 했다.

[학원 운영을 했던 일]
[반성:쉽게 생각해서 할 일이 아니었다. 조사, 공부, 준비 모든 것이 부족했다.]

두번째는 엔진 포팅에 관한 일이다.

당시 진행 중이던 프로젝트의 성과가 미진해서 잠시 다른 업무를 맡은 적이 있다. 다른 팀에서 만들던 Drawing 엔진을 가져다가 저사양 터치 패널에 포팅하는 일이었는데, 계속 우선순위에 밀려 일정만 까먹고 있다가 얼마 남지 않은 상태에서 나에게 넘어 왔다.

업무 설명을 듣는 순간 "아 X 밟았구나"라는 생각이 들며 실패가 뻔히 예상되었다. 거의 다 지난 개발 기간과 제대로 확인 되지도 않은 요구사항들, 성능이 파악되지 않은 단말기등 모는 상황이 최악이었고, 위에서 요구하는 동작(뒤에 확인 한 사실이지만 하드웨어 담당 업체가 원하는 동작도 아니었다.)은 하드웨어가 지원할 수 없는 상태였다.


당연히 일정내에 할 수 없었으며, 일정이 더 있다고 해도 원하는 동작을 구현할 수 없었다. 당시 팀장에게도 연구 소장에게도 구현 할 수 없다고 했으나 내 의사가 제대로 전달되지 않았는지 별다른 조치가 없는 채 일정이 지나버렸고 대표이사에게 까지불려가서 문책을 당해야 했다.

Drawing 엔진을 요청한 회사의 담당자들과 모여 회의를 진행하고 요구사항을 정확히 정리하는 일이 그 후에 있었으며, 그들이 원한 수준의 동작은 금새 구현해 주었다.

당시 해당 프로젝트를 맡았을 때 상황 파악이 끝나면 그 즉시 불가능 하다는 것을 정확히 전달하고 해결 방법을 제시했어야 했다. 위의 경우에서는 담당자들을 불러 요구사항을 정확히 확인 하는 것이었다. 당시의 난 불가능한 상황을 보고 했으니 나의 역할은 거기까지다 라고 생각하고 책임을 회피했었던 것 같다.


[Drawing 엔진 포팅에 관한 일]
[반성:불가능 한 일은 불가능한 원인을 정확히 보고하고, 그 해결책을 제시하거나 찾기 위한 적극적인 행동이 필요했다]

실패 그 후.. 

너무나 당연한 말이겠지만, 실패 후 무엇을 얻었는가는 매우 중요하다. 위의 기사를 우연히 발견하지 않았다면, 지난 실패는 그저 안 좋은 추억으로만 남은 채 어쩌다 그 일이 기억나면 이불킥을 날리는데 사용되는 걸로 끝났을 것이다.
실패하게된 원인을 찾아보고 그걸 반복하지 않기 위해 그리고 또 똑같은 상황에 마주친다면 어떻게 할 것인가를 고민해봐야 할 것이다. 마치 오류를 찾아 디버깅 하듯이...

2011년 2월 28일 월요일

2010년 계획과 2011년 계획

2010년 계획

12시 취침 4시에 기상하기
시간관리 30분 단위로 하기, google 캘린더에 사용시간 기록하기
- 시간관리 및 기록 취소


C#
- 사용시간 기록부(?) 만들기


SICP 다 보기


바탕화면용 웹 페이지 만들기
- 요일별 탭
- 요일별 할 일 목록 및 해당 문서 혹은 사이트 링크
- 편집 가능


Python / PHP
3rd party lang 하나 더 익히기(haskell, Erlang 등 함수형 언어, smallTalk)


struts & ibatis
ORACLE


추가
- java ANT 관련
- cc 에 디버그 정보 넣듯 javac도 가능한 방법 찾아볼것

위의 계획은 2010년 초에 하나씩 생각날 때 마다 적었던 것 들이다.
시작만 하고 끝나버린 것도 많고 시작도 못한 항목도 있다.

작년 다니던 회사의 업무가 많지도 않았고 업무시간에도 여유가 있어서 과도하게
계획을 잡았다.

올해는 어느새 2개월이 지나는 동안 회사 업무와 이젠 같이 살게된 두 아들 핑계로
아무런 계획이나 목표도 없었다.

작년 계획했던 것 중 완료한 것은 하나도 없지만 목록을 가지고 있는 것 만으로도
사소한 부분이나마 얻으며 지날 수 있었기에 올해도 늦었지만 하나씩 추가해야 겠다.

2010년 11월 11일 목요일

오랜만에 책 구매

회사를 옮기고 이것저것 새로이 배워야 할게 많아졌다는 핑계로 거의 책을 안 보고 있었다.
거기다 폴더폰을 사용하다 스마트폰으로 바꾸게 되니 책은 뒷전이고 남는 시간은 스마트폰 가지고 노는데 다 허비했다.

이때 팀원들이 스터디 필요성을 이야기 하면서 'GoF 디자인 패턴! 이렇게 활용한다' 라는 책을 선택해 오전에 스터디를 하기로 했다.
디자인 패턴을 언제 한번 봐야겠다 생각하던 차에 올커니 하고 몇권을 더 구매해서
현재 읽히길 기다리고 있는 책이 3권


이나 있다.

어릴때 부터 책에 대한 욕심?이랄까 책을 사기만 하면 내 지식이 되는 느낌?이랄까
해서 책사는데 주저함이 없다.
덕분에 읽지도 못하고 있는 CODE COMPLETE 2ed 을 덥석 사버렸지만..

Head First 책은 Head First C# 을 처음 봤는데 구성이 신선하고 쉽게 읽을 수 있어서 괜찮았다. 물론 책 구성상 깊이 있는 설명이 부족한게 사실이지만 처음 접하는 분야의 책은 Head First 로 시작하는게 상당한 장점이 있다고 생각된다.
그래서 이번에도 Head First Design Pattern 을 구매했고
인사이트의 블로그 추천! 소프트웨어 엔지니어링 책 100선에서 두권 다 꽤 높은 순위에 있기도 해서 주저 않고 했다.

 

뭐 어쨌거나 책을 좀 열심히 보자 뭐 그런 이야기다.

2010년 7월 30일 금요일

사이냅소프트 2010년 상반기 추가 채용 퀴즈 - 1

외부 라이브러리나 프레임워크는 쓸 수 없습니다
- 입력된 발사각도와 초기속도를 가지고 포탄의 궤적을 그립니다.
- 궤적은 x축을 따라 8픽셀씩 이동하면서 y축 값을 asterisk 문자로 찍어줍니다.
- 화면의 크기는 600 x 400 으로 하며, 화면을 벗어난 궤적은 보여주지 않습니다.
- 타겟의 위치는 x축상의 300 ~ 600픽셀 사이에서 랜덤하게 정합니다.
- 적당한 오차범위 내에서 궤적이 타겟에 일치하면 메시지를 보여줍니다.
- 1 pixel 은 0.1m
사이냅소프트 2010 상반기 추가채용에 지원하기 위해 풀어야 하는 퀴즈다. 관심을 가지고 있는 회사라 당연히 퀴즈를 풀어보았다.
퀴즈를 정리해서 구현해야 할 부분을 뽑아내면
  1. 포탄의 각도와 속도를 입력하면 포탄이 날아간다.(x축 8픽셀마다 포탄을 표시한다)
    1. 포탄은 각도와 속도를 가진다.
      - 포탄을 화면상에서 이동시키기 위해 각도와 속도를 통해 가로속도, 세로속도로 변환한다.
    2. 포탄은 x축 8픽셀마다 표시된다.
      - x축의 이동거리는 0.8m 로 고정하고 y축의 이동거리를 이에 맞게 보정한다.
  2. 포탄은 날아가면서 중력의 영향을 받는다.
    1. 포탄의 가로속도는 고정된다.
    2. 포탄의 세로속도는 중력에 따라 속도가 변한다.
      - y축의 이동거리를 중력값으로 보정한다.
  3. 정해진 크기의 화면 밖으로 나간 포탄은 보여주지 않는다.
  4. 포탄이 오차범위 내로 타겟에 접근하면 메세지를 보여준다.
와 같다.
1.1 을 구현하기 위한 테스트코드는

function testGetVerticalVelocity() {
var bullet = new Bullet(90, 10);
assertEquals("when degree is 90, VerticalVelocity is equals Velocity", 10, bullet.getVerticalVelocity());
var bullet = new Bullet(0, 10);
assertTrue("when degree is 0, VerticalVelocity is 0", 0.0001 > bullet.getVerticalVelocity());
var bullet = new Bullet(23, 10);
var expected = 10 * getSin(23);
assertEquals(expected, bullet.getVerticalVelocity());
}

function testGetHorizontalVelocity() {
var bullet = new Bullet(90, 10);
assertEquals("when degree is 90, HorizontalVelocity is 0", 0, bullet.getHorizontalVelocity());
bullet = new Bullet(0, 10);
assertEquals("when degree is 0, HorizontalVelocity is equals Velocity", 10, bullet.getHorizontalVelocity());
bullet = new Bullet(23, 10);
var expected = 10 * getCos(23);
assertEquals(expected, bullet.getHorizontalVelocity());
}


물론 getSin, getCos 은 라디안 값으로 바꿔서 Math.sin Math.cos 을 사용하면 되겠다.

1.2 는 각 세로, 가로 속도를 보정해야한다. 즉 가로 속도는 8px/[시간] 으로 표현되고 일반적인 1초에 이동하는 pixel 이 아니라 8pixel 을 이동하는 시간을 계산하고 계산된 시간으로 세로속도도 표현한다.

function testGetVerticalDistanceForPixelUnit() {
var bullet = new Bullet(0, 8);
assertEquals(0, bullet.getVerticalDistanceForPixelUnit());
var bullet = new Bullet(45, 10);
assertEquals(8, bullet.getVerticalDistanceForPixelUnit());
var bullet = new Bullet(23, 10);
assertEquals(3.4, bullet.getVerticalDistanceForPixelUnit());
}
function testGetNewHorizontalDistance() {
// 속도에 상관없이 수평이동거리는 항상 0.8m 즉 8px 이다.
var bullet = new Bullet(0, 10);
assertEquals(8, bullet.getHorizontalDistanceForPixelUnit());
var bullet = new Bullet(0, 50);
assertEquals(8, bullet.getHorizontalDistanceForPixelUnit());
var bullet = new Bullet(45, 10);
assertEquals(8, bullet.getHorizontalDistanceForPixelUnit());
}

이사하다

기존블로그에서 이사했다.
가장 큰 이유는 syntax highlighter 가 이글루스에서는 쓸 수 없다는거.
Blogger 와 T-story 중에서 고민하다가 결론은 Blogger로