내가 개발자라는 것에는 아직 적응하지 못함
어떤 분야의 신입사원이든 한 달 차일때는 꿈에 오늘 했던 업무들이 나오기 마련이다. 나는 오늘도 파라미터들이 여기저기로 날라다니고 시뻘건 오류들이 화면을 가득 채운 꿈을 꾸었다. 아마 잠꼬대도 좀 했을지 모른다. 업무가 과중해서 그런 것은 아니다. 단지 매일매일 만나는 새로운 코드들을 소화시키느라 뇌가 바쁜 것이다. 입사 후 한달 동안은 계속 내가 맡을 프로젝트에 대해 공부했다. 그리고 종종 있는 작은 유지 보수에 투입되어 그 중에서도 작은 부분을 맡아서 처리했다. 솔루션을 가지고 있는 회사에 입사하면 당분간은 유지보수에 투입되는 것인가 보다. 그래도 다음 주 부터는 새로운 개발 프로젝트에 들어가게 되어서 기쁘고 떨린다.
SI에 입사한 학원 동기들은 이제 하나 둘 파견을 나가기 시작한다. 집을 기초부터 지어본 친구들은 빠르게 실력이 늘겠지. 나는 지금까지는 계속 기존 코드에 의지해서 일을 하고 있다. 아무래도 유지 보수를 하다 보니 전체 코드와의 통일성도 생각해야 하고 비슷한 코드가 있으면 가져다 쓰는 것이 더 편하기 때문이다. 그래서 실력이 계속 제자리일까봐 걱정도 된다.
어쨌든 여차저차 회사 분위기에 적응을 해나가고 있는 이 시점에, 작고 귀여운 첫 월급도 받았겠다, 문득 입사 후 약 한달 반 동안 내가 어떻게 업무에 적응하기 위해 노력했는지 정리 해봐야겠다는 생각이 들었다.
나는 우선 맥북과 친해져야만 했다.
9살때 처음 386 컴퓨터를 만진 이후로 25년 동안 윈도우만 써본 나인데... 회사에서는 갑자기 맥북 유저가 되어야 했다. 맥북의 모든 인터페이스가 낯설었지만 다행히도 나는 아이폰과 아이패드를 쓰고 있었던 사람인 것이다. 세 기기가 기가 막히게 연동되는 맛에 취해 왜 진작 맥북을 사지 않았는가..하며 후회하고 있다. 물론 아직 터미널이라는 장벽은 넘지 못했지만 차차 친숙해져서 왜 개발자들이 맥을 그토록 선호하는지 깊이 느껴보고 싶다.
특히 인텔리제이!!! 지난 9개월 동안 이클립스가 최고인 줄 알고 살았다. 책, 강의, 블로그 모든 곳에서 이클립스를 쓰고 있었기 때문이다. 그런데 실무에서는 인텔리제이라는 더 강력한 개발툴이 있었다!! 인텔리제이는 자동완성 기능이 훌륭하고 이 파일 저 파일 코드 흐름따라 이동하는 것이 매우 편하다. 그리고 rainbow bracket 플러그인 설치하면 되게 예쁘다! ㅋ
하지만 아직 이클립스에서 완벽히 벗어나지 못한 것인지 인텔리제이 단축키가 안 익어서 일일히 마우스로 드래그해서 코드 위치 옮기고 복사하고 그러는 중이다. Key promoter X라는 플러그인을 받으면 내가 인텔리제이 상에서 어떤 동작을 할 때마다 그것의 단축키를 화면 하단에 알려준다. 그리고 매일 아침 프로그램이 시작될 때 나오는 오늘의 팁도 그냥 넘어가지 않고 하루에 단축키 하나씩은 익히기 위해 노력하고 있다.
System.out.println 혹은 console.log로만 디버깅 했던 시절을 벗어나자.
지금 나는 코드 작성하는 시간이 2라면 디버깅 하는 시간이 8이라고 할 정도로 디버깅에 많은 시간 낭비를 하고 있다. 이것은 결코 퀄리티 있게 시간을 쓰고 있는 것이 아니다. 내가 2시간 정도 끙끙거리던 것을 사수는 한 십분만에 후루룩 고쳐주었다. 내가 몰라서 해결 못하는 에러도 있지만 디버깅을 효율적으로 하지 못하는 탓도 크다. 변수에 어떤 데이터가 어떻게 들어가야 하는지 보기 위해 코드 한 줄 수정하고 계속 서버를 재시작 했었다....ㅜ
학원에 다닐때는 이론 익히고 프로젝트 만드느라 디버깅 잘하는 것이 크게 중요하다고 생각하지 못했었는데 알고보니 버그라는 놈은 시간 잡아 먹는 도둑이었다. 이제는 기초적인 디버깅 방법을 익혀서 잘 활용하기 위해 노력하는 중이다.
많은 개발자들이 개발 블로그를 운영하신다. 정보 공유의 차원도 있겠지만 한 번 했던 삽질을 또 하고 싶지 않아서 블로그에 기록해 놓는것이다. 나도 그렇게 멋지게 포스팅 하고 싶지만 천하의 게으름뱅이인 나는 일단 메모장에 '오늘의 실수'라는 제목으로 오답 노트를 만들고 있다. 거창하게 쓰지 않는다. 내가 헤맨 부분, 아예 생각도 못한 부분 등을 나눠 적고 해결방법도 써놓는다. 보통 한 실수 당 4~5줄로 정리해 놓는다. 아직은 크게 복잡한 실수가 없어서 글로만 쓰는데 나중에는 자세한 코드도 캡처해서 붙여놔야겠다. 이렇게 간단하게라도 거의 매일(== 거의 매일 실수한다는 뜻) 정리해놓으니까 내가 얼마나 비슷한 실수를 반복하는지 알게 되었다. 나의 뇌에 고착된 논리의 흐름을 바꾸려면 오답노트를 한참은 더 써야할 것 같다.
입사 전에는 스프링, JSP 등을 써보지 않았었기 때문에 인강을 듣고 공부를 했다. 보통 인강을 들으면서 실습용 프로젝트를 만들어보게 되는데 일부러 회사 코드와 비슷한 구조로 연습용 프로젝트를 만들었다. 아직 업무는 주어지지 않고 그냥 회사 코드만 공부하고 있어야 하는 시기에 매우 유용했다. 연습용 프로젝트에 실무에서 쓰이는 특정 기능도 간단하게 구현해 보고 새로 배운 것들이 있으면 연습해 보았다. 예를 들어 내가 짠 것보다 훨씬 간단한 쿼리문을 발견하게 되었을 때, 그 쿼리문으로 디비에서 값을 불러와서 화면단에 그래프까지 그려보는 식으로 연습해보는 것이다. 지금은 아주 조금 바빠져서 이 연습장 프로젝트를 잘 안쓰지만, 처음에 스프링 프레임워크와 회사의 비즈니스 로직을 동시에 익혀야 할 때 유용하게 잘 썼다.
그래도 회사 생활 경험이 있어서 나름 꼼꼼하게 일을 잘 한다고 생각해왔다. 그렇다. 개발 빼고 다른 부분에 있어서 나는 제법 꼼꼼하다. 근데 아직 개발할때만큼은 왜이렇게 덤벙거리는지 모르겠다. 따옴표, 괄호, 대소문자 같은 것들을 빼먹거나 잘못 쓰는 일이 허다하다. 나누기 연산을 할 때 항상 분모가 0인지 체크하지 않고, 원하는 데이터가 Null값일 경우 어떻게 할 건지 생각하지 않는다. 그래서 이런 간단하지만 자꾸 까먹는 내용들을 체크리스트로 만들어놓고 커밋하기 전에 마지막으로 늘 다시 한번 확인한다.
이 외에도 인강 듣고 검색하고 가끔 자바책도 읽고 하면서 한 달여를 보냈다.
되게 정신 없이 산 거 같은데 써놓고 보니 별 건 없다.
신입 개발자의 첫 한달은 정신 없이 흘러가는 것인가 보다.
이렇게 한 달 두 달 쌓여간 시간들이 지나면 나도 '개발자'라는 명함이 더이상 어색하지 않은 날이 오겠지!