Friday, January 2, 2015

생활속의 개발 그리고 코딩

프로그램을 만들고 코딩을 하고 재미를 찾는 걸 직업으로 하고 있는 이상,
그것을 더 많이 즐기기 위해 일 이외의 다른 활동을 한다는 것은 더 즐거운 일이 될 것이다.

하지만 안타깝게도 난 그런 적이 별로 없었다.
그런 적이 별로 없었다는 얘기는 업무 시간 이외에 그런 재밌는 코딩을 하기 위해 해본 것들이 별로 없다는 것이다.
놀랍게도 그걸 업무 시간 이외에 한다기 보다는 그냥 업무시간에 했던 것 같다.
일을 일로서만 하는게 아니라 문제를 해결하기 위해 엄청난 의지를 발휘하고 그것을 해결했을 때의 재미를 찾기 위해 힘을 쏟는다는 얘기이기도 하다.

며칠 전
아내가 내게 개발얘기는 아닌데 엑셀로 뭔가 하는데 자꾸 죽는다는 얘기를 했다.
필요한 데이터가 거의 10만개인데 그걸 엑셀에 붙여 넣고 lookup 함수를 쓰면 응답 없음이라고 하다가 죽는다는 것이었다.
그런데 여기서 개발의 의지가 나왔다는 건

  • 데이터 10만개
  • lookup 함수
  • 엑셀 프로그램이 죽는다
이런 키워드를 봤을 때 뭔가 감이 왔다.
  • 데이터 10만개를 준비하고
  • 매칭 로직을 돌려서 (굳이 엑셀의 lookup이 아니기 때문에 각 언어가 지원하는 함수 사용)
  • 엑셀이 아닌 다른 방법으로 결과가 나오게
하면 될 것 아닌가?

그래서 여러 조건을 물어봤다.
거기 개발자는 그런거 못하느냐 부터 해서, DB 아는 사람 없냐 까지...

사실 DB 쓰면 그냥 되는 거긴 한데, 
거기 개발자들도 그렇게 까지는 안한다고 그랬다.

게다가 DB는 아내도 잘 모르고 구경해 본 적도 없고 쓰지도 못하기 때문에
DB 스크립트를 짜줘도 돌리지 못할 것이고 해서

그냥 내가 그런 프로그램을 만들어 주고 싶다는 생각이 들어서
"그냥 내가 만들어 줄께, 주말에 같이 해보자."
해서 만들었다.

그러면 조금 느리긴 하겠지만 파일을 읽어와서 매칭을 시키고 그걸 다시 파일로 쓰게 만들면 될 듯 싶어서
주말에 아내와 함께 컴퓨터를 보고 만들어 줬다.
요구 조건에 대한 이해와 분석에 30분 정도 걸린 것 같고
그에 맞는 코딩을 해서 결과를 내는데 30분 정도.
2시간 정도는 그 결과를 사람이 볼 수 있는 UI를 만드는데 쓴 것 같다.

사실 업무로 하기에는 이런 건 기본적인 거고
이미 데이터 양이 많으면 DB, 그리고 인덱스 이정도만 해 주면 금방 될텐데
모르는 사람에게 쓰게 하기에는 실행 가능한 프로그램으로 전달해 주는게 좋을 수도 있을 것 같다.
물론 파일을 읽어와서 매칭하는 루프문을 도는데 시간이 좀 걸리는게 단점이긴 하지만.

결국 업무 시간이 아닌 시간에 개발을 했다는 건데
딱히 싫다거나 재미없지는 않았다.
내가 알고 있는 기술을 가지고 누군가에게 도움이 되는 프로그램을 만들어줬다는 게 뿌듯하면 그 뿐이니까.