상세 컨텐츠

본문 제목

IT회사 이스트소프트, 3년차 알약 개발자(프로그래머)의 하루

PEOPLE

by ESTsoft 2011. 2. 10. 08:45

본문


2011년 2월 8일(화)의 일기



9:00 출근준비.


조금은 늦은 시간인 9시에 일어났다. 원래는 9시까지 출근이지만 야근자에게 주어지는 특권(?)인 지연 출근 제도가 있기 때문에 오늘은 11시까지 나름 여유롭게 출근할 수 있다. 매일 야근하고 칼같이 출근하는 대다수의 동종업계 친구들을 보면 정말 나이스한 일이다.

어제는 밤 11시정도까지 급한 요구사항 처리를 하느라 야근을 했다. 연휴가 끝난 후라 역시 일이 많을거라고 예상은 했다. 보통 개발자라면 낯설지 않은 일이다. 그래도 미리 작성해둔 테스트 코드 덕분에 오늘 QA팀에게 정식으로 받게 될 테스트는 무리 없이 통과할 것 같다.

 

정말 나는 깔끔한 사람이다. 이렇게 깨끗한 기숙사라니...!


회사 기숙사에서 살기 때문에 회사까지 출퇴근 시간은 매우 짧다. 일어나서 대충 씻고, 옷 입고 출근을 한다. 출퇴근거리가 가까워(그렇다고 합리화중이다) 외모는 별로 꾸미지 않는다. 아… 이래서 개발자 같다는 소리를 많이 듣는 건가…;; 뭐 그래도 괜찮다. 난 개발자니까… (슬픈데? ㅠㅠ)
 


10:40 출근완료.


회사다...내가 다니는 회사


'이스트소프트'에 오기 전에 다른 회사에서 1년 넘게 개발자로 일하다가  여기 와서 2년 정도가 되어가고 있으니 난 소위말해 3년차 개발자다. 완전한 신입도 아니고, 그렇다고 팀장급도 아닌... 아직도 배울것은 많고 해야할게 많은 사람이다. 여튼 회사가 마음에 드는 점은 사장님도 개발자 출신이고 임원진들도 다 개발자 출신 분들이라 개발자들에 대한 배려가 좋다는 것이다. 컴퓨터 사양도 쿼드코어 CPU를 사용할 정도로 매우 좋은 편이다.


 

14인치 모니터일때는 정말 몰랐다. 모니터를 3대쓰는 사람도 있는데... 난 그냥 듀얼로...


모니터는 역시 22인치!! 거기에 복장도 프리 …개발자들이 업무를 하는 환경은 이전 회사와 비교했을 때 훨씬 괜찮은 것 같다.

11시까지 출근이지만 조금 일찍 나왔다. 카페테리아에서 가져온 빵 조각을 입에 물고 커피를 든 채로 내 자리로 간다. 어제 야식으로 먹다가 남겼던 마지막 피자 한 조각이 눈앞에 아른거린다... 그냥 다 먹을걸!


11:00 (오늘은 짧은) 오전 업무 시작.


내 친구..소희...는 아니고 비주얼스튜디오...;;


어제 밤새 돌려놓은 테스트 PC에서 결과를 받아본다. 다행히 잘 통과했다. 그리고는 나의 친구이자, 동반자인 ‘비주얼 스튜디오’를 실행시킨다. 지금까지도 그랬고 이후에도 내 인생에서 앞으로 생길(꼭 생길거다…) 여자친구보다 더 오랜 시간 함께할 녀석…  이젠 좀 지겹기도 하지만

1) 그래도 반갑다 친구야…
2) 가끔 버전업이 될 때마다 나름 신선한 재미가 있다. 
3) 그래서 요즘은 이클립스에서 Python도 해보고 있다.



소심하게 찍어봤다


내가 속해있는 팀은 ‘알약커널개발팀’이다. 다양한 개발 분야가 있지만 그 중에서 운영체제의 커널 레벨 프로그래밍을 담당하는 곳이다. 조금 더 내가 하는 일을 말해보자면, 알약의 실시간 감시와 방화벽 개발을 한다고 할 수 있다.


물론 직업병인지 모르겠으나... 가끔 McCafe를 McAfee로 착각하는 경우도 있긴 하다



오전에는 어제 작업 메모를 보면서 무엇을 어디까지 했는지, 그리고 오늘 해야 할 일은 무엇인지를 정리해둔다. 개발이라는것이 딱딱 떨어지는 그런 것이 없기 때문에 업무량과 하루하루의 목표치를 정하고 달성하는 것이 참 중요한 것 같다. 예전에는 개발은 ‘건축’을 하는 것으로 생각했었는데, 요즘에는 건축이 아니라 하나의 ‘생물’을 키우는 것 같은 느낌이랄까?

대략 오늘의 업무 목표를 생각하고, 참고할 수 있거나 즉시 사용이 가능한 소스 코드가 있는지를 확인해본다. 우리 회사는 하나의 제품을 완성해서 패키지화 하기 때문에 장기간에 걸쳐 손질된 많은 라이브러리들이 있는데, 이럴 때 도움이 많이 된다.



11:50 점심시간.


물론 이런 점심은 아니다. 이건 지난 종무식때 사진...;;;

 
점심시간이다.
회사에 사람들이 많다 보니, 당연히 여자직원들도 많기는 하다. 많은 여성분들이 나와 같이 밥을 먹기를 원하겠지만...그래도 왠지 밥은 남자들끼리 빨리먹는것이 정석인 느낌… (이것은 결코 내가 인기가 없다거나 하는 것에 대한 핑계는 아니다…아마도…)

11시 50분에 정확히 시작하는 점심시간은 12시 20분이면 거의 완료된다. 밥 먹으러 가는 시간 5분, 밥 나오는 시간 5분, 먹는 시간 10분, 돌아오는 시간 10분이면 충분할 듯… 항상 밥을 빨리 먹다보니 점심시간은 좀 여유롭다. 게임존에 가서 레이싱게임의 최고봉 그란투리스모를 신나게 한번 밟아주고 다시 자리로 돌아온다.

점심시간..게임존에서 쉬는 사람들도 있고, 게임하는 사람도 있고, 탁구치는 사람들도 있고... 다양하다



12:50 오후 업무 시작.


오후 일과는 그야말로 코딩의 연속!

이라고는 했지만, 실제로는 설계 혹은 디자인 측면에서 고민하는 시간도 만만치 않다. 현대의 소프트웨어 개발은 복잡도와의 싸움이라는 말이 있다. 작업이 계속될수록 코드 베이스가 커진다. 코드는 점점 이해하기 어려워지고 비대해져 간다. 이럴수록 지속적으로 추상화 레벨을 높여 전체 로직을 이해하는 데 필요 없는 정보는 숨기고, 리팩토링을 통해 조금씩 커져가는 클래스와 메소드를 분리하여 이해하기 쉽고 변경에 유연한 코드로 만들어야 한다. 이게 개발자의 일이고 현재까지 내 경험상 뼈저리게 느끼고 있는 점이다.

소문에는 회의 중에 뭘 적더니 바로 코딩해서 나왔다는 그런 전설의 개발자들도 있다고 하는데, 그런 사람 있으면 정말 한번 만나보고 싶다. 어떻게 그렇게 할 수 있는지를…(부러우면...지는거다...)

암튼 지금하는 업무를 좀 써보자면... (써달라고 해서 쓰는데, 개발자분들이 아니시면 패스하셔도 됩니다) 

지금 하고 있는 업무는 기존에 작성된 모듈을 개량하는 것이다. 기존 코드는 오래 전에 작성된 것이라 현재 버전에 맞게 수정될 필요가 있었다. 특정 목적에 맞게 작성되었는데 다른 곳에서 사용을 할 수 없다는 문제가 있다. 또 기존에 사용하고 있던 API 대신 우리가 작성한 라이브러리를 호출하도록 변경할 필요가 있다.

코드를 들여다 본 결과 여러 가지 문제가 있었다. 가장 큰 문제는 가독성이었다. 매직 넘버와 중복된 코드가 섞여 있어서 코드의 흐름을 따라가는데 어려움이 있었다. 두 번째 문제는 앞의 문제 때문에 발생된 것으로, 코드의 의도 파악이 힘들다는 점이었다. 세 번째 문제는 가용성이었다. 이 코드를 사용하기 위해서는 내부 구조에 대한 지식이 있어야만 했다. 그 외에도 LSP(Liskov Substitution Principle) 위반, 예외 처리의 문제 등이 보였다. 이렇게 보면 문제가 많은 코드를 만든 것 같지만, 실제로 작성하는 사람에게는 다 눈물없이는 들을 수 없는 사연들이 있는 법이다.

이 문제를 한번에 해결하려고 했다간 야근야근 열매를 섭취할수도 있기 때문에, 먼저 매직 넘버를 상수 변수로 치환하고 중복된 코드를 조금씩 제거하기 시작했다. 어느 정도 코드의 흐름이 보이기 시작했다. 그 다음은 의도 파악이다. 코드가 무슨 일을 하는지는 그냥 보면 알 수 있지만, 그 의도를 알 수 없으면 코드를 이해할 수 없다. 작성자에게 코드를 작성한 배경과 의도를 물어보아 메모해두었다.

다음으로 LSP 위반을 처리했다. 자식 클래스가 부모 클래스의 멤버 변수와 메소드에 접근하기 위해 상속을 한 것으로 보였다. 두 클래스를 뜯어내다 보니 어떻게 바꿔야 할지 난감했다. 결론적으로 Has-A 관계인 것으로 보였다. 나중에 다시 조립하기로 하고 일단 분리 작업을 완료했다.

작업을 진행하면서 중간 중간에 보이는 API들은 미리 작성된 라이브러리로 치환하거나 Indirection으로 호출되도록 수정했다. 이렇게 하면 API와의 종속성이 끊어져서 자동화된 테스트가 가능해진다. 말은 쉽지만 리팩토링에서 가장 어려운 것이 바로 종속성 끊기가 아닌가 싶다. 중간중간 가독성을 증가시키기 위해 이름 변경을 자잘히 했다.

마지막으로 가독성과 가용성을 증가시키기 위해서 몇 가지 메타포를 생각해냈다. 로우 레벨의 구현을 모두 감추고 추상화된 클래스들을 만들고, 객체들이 서로에게 메시지를 전달하는 형태로 바꾸었다.





17:00 간식타임과 함께하는 팀스터디.


오후 5시가 되면 모든 이스트소프트 사람들이 즐겨찾는 간식타임이다. ('모든'은 아니겠구나...다이어트 하는 사람도 있고, 저녁에 약속있는 사람도 있다고 하니...) 이 시간에는 주로 소시지와 김밥을 하나씩 들고 옹기종기 모여서 팀미팅이나 짧은 스터디등을 진행하기도 한다. 아...그렇다고 뭐 그렇게 형식적이거나 아카데미컬한건 아니고, 그냥 간식을 먹으면서 이런저런 이야기들을 많이 나눈다.

신입사원의 경우에는 팀원들과 좀 더 친하게 될 수 있는 기회이기도 하고, 막히는 부분에 있어서도 이것저것 물어보기도 하고... 팀시피릿!을 강화한다고 해야할까?



18:30 슬슬 퇴근준비.


해가지면...어서 나가고 싶다...


간식타임이 끝나면 다시 자리에 와서 업무가 있으면 업무를 하고, 거의 업무가 끝났으면 정리를 한다. (오늘은 일찍가기로 마음먹었어!!)

나의 경우 퇴근을 앞두고는 어디까지 했었는지 나만의 체크리스트를 항상 만든다. 그래야 내일 출근해서도 바로 이어서 할 수 있을 테니까… 물론 하루 차이는 별 문제 없을지도 모르지만 주말끼거나 이번 연휴와 같이 오랫만에 출근하면 잊어버릴 때가 많다. (나만 그런가…)

체크리스트를 만들고 업무를 정리하면서 서서히 퇴근을 준비하는 모드로 변경한다.
오늘은 일찍 간다. 주초부터 연속으로 야근을 하게 되면 오히려 작업 능률이 떨어지기 마련이다.
많은 사람들이 궁금해하는게 이 부분인 것 같다. 매번 주위에서 물어보거든...

"이스트소프트는 야근 많아요?"

이럴때 뭐라고 답해야할지 참 난감한데, 개인적인 느낌상 주변에 동종업계에 있는 친구들과 비교해보면 우리 회사는 야근이 그리 많은것 같지는 않다. 매일 밤샘코딩하는애들을 보면...;; 그리고 늦게 까지 야근하면 다음날 늦게 출근이 가능하니... 이 부분은 회사정책상 '능률성과 생산성'을 중요시하기에 좋은 점 같다.

암튼 이번 주 금요일에는 전사적으로 진행하는 ‘개발자세미나’에서 ‘리팩토링’을 주제로 발제를 해야하기에 그 내용도 좀 준비를 해야하고… 오늘은 늦게 출근해서 일찍 퇴근하니 하루가 무지하게 짧아보이네... 다음에 언제한번 야근할때 엄청나게 긴 하루일과를 써보고 싶다.

물론 집에 일찍 간다고 해서 데이트가 있지는 않다…
여자 친구 따위…
개발자세미나 자료 좀 준비하다가 '드림하이'나 봐야겠다…
어제...수지가 택연이와 뽀뽀하는 장면을 보고 눈물흘리는 삼동이의 마음이 나와 같았다고 해야할까...;; 흑;;
퇴근퇴근...

ps..물론 난 기숙사에 와서 개발자세미나 준비는 커녕...써달라고 요청받은 이 일기를 쓰느라 시간 다보냈다...;;; -_-


- written by JC

관련글 더보기

댓글 영역