일단, 어떤 개발자가 되고 싶은가? 에 대한 답변은 뒤로 두고,
시작은 비전공자인 제가 '개발자'란 직업을 선택하게 된 이유와 지금까지의 성장 과정을 말씀드려 보려고 합니다.
읽다 보면 어떤 개발자가 되고 싶은가? 에 대한 제 개인적인 생각인 답변도 있으니 참고해주세요.
기능경기대회 입상.
어릴 때부터 꿈이 삼성 엔지니어가 되고 싶었기에, 인문계로 가지 않고,
고등학교를 공고로 가게 되면서, 1학년 때부터 기능경기대회 입상 코스를 밟았다.
기능경기대회라고 한다면, 고등학교 대표로 선발되면 각지의
고등학교 대표들과 기능경기대회를 치르는 시스템이다.
그렇기에 열심히 공부하고 준비하여, 학교 대표로 선발되어 1학년 때부터 3학년 때까지
기숙사 생활을 하며(주말 없이), 명절 당일을 제외한 나머지 기간들은 전부 학교에서의 생활을 3년간 하였다.
(우리 고등학교가 유독 힘들게 돌리는 편이라고는 하였다.)
그런 3년의 생활을 버티며, 결국 기능경기대회에 입상도 하였다.
고등학교 졸업을 시기가 왔을 때는 바로 취업하려고 하였지만, 그보단 대학교에 가서 좀 더
공부를 해보고 싶단 생각이 컸기에 그 당시 취업을 하지 않고, 대학교로 가게 되어 대학교 생활을 하였다.
하지만, 대학교 생활은 그리 쉽지만은 않았다.
고등학교 3년간 기능대회 연습을 하여서일까, 남들이 알아야 하는
기본적인 부분들이 좀 부족하다고 느꼈기 때문이다.
예를 들면, 미분, 적분, 등등 … 이런 부분이 부족하였기에 대학교 공부가 좀 어렵다고 느껴졌긴 하였으나,
이런 부분을 채우기 위해 내가 더욱더 뛰어야 한다는 마음으로 정말 열심히 하였다.
항상 쉬는 시간마다 교수님에게 질문하러 교수님 방에 찾아갔으며, 그 당일에 이해가 안 되는 것이 있다면,
공강시간 or 공강인 날이라도 학교에 나와 교수님에게 여쭤보며, 시험 기간이 아니어도 저녁 11시까지 남아
도서관에서 공부를 하고 집에 가는 생활을 반복하였다.
그렇게 한 결과, 처음에는 정말 꼴찌로 달리다가 점점 성적이 오르게 된다는 것을 느꼈고,
그 순간부터는 재미를 느껴 더욱 열심히 할 수 있게 된 것 같다. (계속하다 보면, 이 생활마저 적응한다)
그렇게 시간이 지나, 총성적을 보면 알 수 있다.
밑에 있는 사진처럼 좋은 성적을 받을 수 있게 된 것이다.
하지만, 이 점수는 절대 나 혼자서는 받지 못하는 점수이다.
처음부터는 잘 몰랐기에, 항상 교수님 방으로 찾아가 질문을 받아주셨던 교수님과
강의 시간에 부족한 부분을 물어보면 친절하게 대답해 줬던 동기들이 아니었으면,
절대 나 혼자서는 못 이뤄낼 점수이다. (나는 정말 운이 좋다고 생각한다)
대학교에서의 학회장 경험.
누구 앞에서 말하고, 발표하는 것을 상당히 부끄러워하는 나였지만,
이런 학회장 경험을 통해 모두의 앞에서 발표도 할 수 있는 사람이 되었으며,
학생들과 교수님들 사이에서의 자연스레 리더십과 커뮤니케이션 능력도 기를 수 있었지 않았나 싶다.
힘들었던 점은, 학생들 사이에서의 논란거리가 가장 힘들지 않았나 싶다.
어떤 이벤트가 있는 날이면 교수님분들과 스케줄을 정해서 결정하게 된다면, 꼭 그 스케줄을 마음에 들지 않는
학생들이 있다... 그러면 소문이 돌아, 뭐든지 학회장 탓으로 가버리는 경우가 많았다. ㅎ...
이런 점에 대해서, 그 문제가 생겨난 학생들과 따로 시간을 가져
대화를 통해 상황을 풀어가고 하였던 경험들이 생각난다.
그리고 나는 봉사 다니는 걸 좋아해서, 학회장을 한다면 선택적으로 봉사를 다닐 수 기회가 생긴다는 것이
나에게는 상당히 좋았다. 힘드신 할머니, 할아버지분들을 도와드리는 일들이 몸은 좀 힘들지만,
오늘도 누군가 에게 내가 도움이 되었다는 게 너무나 행복했다.
취업에 성공하여, 일을 하고 있던 어느 날.
우리 부서 옆으로 IT 부서원들이 잠깐 오게 되었다. IT 개발자분들은 어떤 일을 할까? 궁금증이 생겼었다.
나 같은 경우, 반도체 엔지니어로 취업하여 있었으나, 몹시 개발자라는 분들이 궁금했다.
왜냐면, 정말 딴 세상 사람들과 같이 보였기 때문이다. ㅋㅋ 그렇기에 먼저 다가가 개발자 두 분께
커피챗을 요청하여 개발자에 대해 들었는데, 그 당시를 다시 되새겨 보면 엄청 설렜던 기분이 들었다.
아직도 기억나는 것은 내 손으로 직접 사용자들이 사용할 수 있는 기능들을 직접 만들고, 중요한 데이터를 관리하며,
사용자들에게 더욱더 좋은 환경을 제공해 줄 수 있도록 개선하며, 끊임없이 공부해 간다는 점에서 너무나 매력적인 직업이라고 느껴졌기 때문이다. 그렇게 나 또한 개발자를 해보고 싶단 생각을 가지게 되었고, 퇴사를 결심하고 제2의 인생을 위해 개발 공부를 시작하게 된 것이다. 그렇다면, 스스로에게 이런 질문을 던질 수 있을 것이다. "개발자로서의 최종 목표가 뭐야?" --> 그 답변은 밑에서 설명하겠다.
"개발자로서의 최종 목표가 뭐야?"
나는 무언가 시작하기 전에, 그 선택지에 대한 최종 목표를 생각하고 움직인다.
그래야 목표가 생기고 동기부여가 되고, 흔들리는 순간이 온더라도 이겨 낼 수 있다고 생각하기 때문이다. 이 질문에 대한 답변은 여러 가지 답변이 나왔었지만, 현재의 기준으로 말씀드려 보자면, 저는 "함께 일하고 싶은 개발자"가 되고 싶다. 개발이란 혼자 하는 직업이 아니란 걸 공부하면서 깨달았고, 또한 나는 일을 하게 된다면 다른 사람들에게 내가 알고 있는 지식을 공유하고 싶으며, 공동체 환경에서 같은 목표로 열정을 가지는, 팀원들과 커뮤니케이션하는 걸 좋아한다. 그런 면에서 본다면 개발자란 직업이 나의 원하는 점을 만족시켜줬지 않나 싶었다.
함께 일하고 싶은 개발자가 되려면 여러 조건들이 필요하다.
개발에 대한 지식이 많고, 문제 해결을 잘하며, 열린 마음으로 상대방의 지식을 받아들일 줄 아는 사람이어야 할 것이다. 그렇다고 자신의 의견에 용기가 없는 그런 사람이 아닌, 자신의 의견에도 근거와 명확한 설명을 바탕으로 상대방을 설득시킬 줄 아는 그런 사람이 되어야 할 것이다. 또한 할 줄 아는 것이 개발뿐만 아니라, 공동체 환경에서 같은 목표를 가지고 그 목표에 열정이 있고 일하는 것을 함께 즐기면서 성장하는 사람이야 할것이다. 그렇기에 결론은 함께한다는 사실이다. 개발을 좋아하고 잘하는 것도 중요한 부분이라고 생각하지만, 팀에 분위기를 흐리지 않으며, 함께 소통하고 성장하는 환경, 즉, 팀 전체의 성장을 위해 노력하는 사람, 공동의 목표를 위해 나아가는 사람이 함께 일하고 싶은 개발자라고 생각합니다. 내 생각을 이렇게 풀어 봤지만, 정답이 아닐 수도 있다. 하지만 내가 생각하는 함께 일하고 싶은 개발자란 이런 자세, 마인드를 가진 사람이라고 생각한다.
비전공자 + IT 지인 없이 시작하다
비전공자가 혼자서 공부한다면 물론 잘하는 분들도 많겠지만, 나는 아니었던 것 같다.
지금 생각해 보면, 가장 큰 문제는 프로그래밍을 직접 작성해 보지 않고, 오로지 책 or 강의로만
공부하고 이해되었으면, ‘오케이’ 하고 넘어가려 했던 것이 가장 큰 문제인 것 같다.
그렇게 혼자 계속 공부를 하다 보니, 잘하고 있는 건지도 모르고겠으며,
주위에도 개발자 지인분들도 계시지 않았기에 공부를 어떻게 공부해야 하는지,
기술을 배운 걸 어떻게 적용해야 하고, 어느 부분을 정확히 알고 있어야 하는지,
이런 부분에 대해 모르겠으니 너무 답답했다.
인프런 - 김영한 님의 강의를 봤지만, 강의들은 땐 이해가 잘 되었기에, "내가 다 알고 있구나" 착각하며,
직접 기능 구현을 하려고 하니 막막함이 생기고 하였습니다.
그러다 유튜브에서 개발 영상에 대해 설명해 주시는 분을 어쩌다 보게 되었는데,
"저분을 한번 만나 뵙고 답을 정확히 듣고 싶단 생각을 하여, 해당 유튜버님의 영상 댓글에 장문의 편지처럼...
저의 고뇌를 글로 잘 풀어서 작성하여 커피챗이 한번 가능한지 여쭤봤던 기억이 있습니다. (하하…)
"그렇게 일주일 정도 지났나?"
간절한 마음이 닿았는지 흔쾌히 개발 유튜버님께서는 알겠다고 해주셨고, 부산에서 -> 서울까지
커피챗 하러 갔던 기억이 있습니다. 그렇게 방향성에 대해서는 알게 되었던 계기가 되었습니다.
(다시 한번 너무 감사드립니다.)
나는 뭐든지 "이왕 시작하는 거 잘하고 싶다는 생각이 크다" 즉, 그냥저냥 그저 그런 개발자로 남아 있고 싶지 않았다.
그렇다고, 주위에 개발자 지인이 있는 것도 아니고, 컴공과 인 또래 지인도 없고,,
공부방법과 내 역량을 높일 방법에 대해 항상 궁금하고 또 궁금했었다.
그렇게, 개발자 커뮤니티에 질문도 많이 하고 하였으나,
"음, 그래 대충 큰 그림을 알겠어! 좋아 이렇게 해보자!"
까지는 좋았으나, 진정 현실에 부딪힌 결과는 나 혼자 생각하고, 나 혼자 판단하여 틀린 방법이어도,
지금은 이렇지만 "시간이 지나면 괜찮아지겠지" 하며, 허송세월 보내게 된 것이다.
그리고, 자신과의 타협을 보는 순간들이 많았다.
"그래, 이 정도 깊이 이해했으면 됐지 ~"
"이정도로만 이해해도 코드 작성하는데 문제 없잖아?"
정말 위험한 발상이다.
지금 생각해 보면 "깊이에 '깊'도 하지 않았다
"그렇게 공부할 거면, 하지를 말던가 뭐 하는 거야"
그렇기에, 요즘은 커뮤니티 개발자 오픈톡방이라는 곳에 질문도 자주 하며, 열심히 개발 공부를 하고 있다.
(꾸준히 하는 건 잘하는 타입) 그렇게 다시 마음 잡고 시작하게 되었다. 지나간 것은 어쩔 수 없다.
그리워한다고 해서 돌아오는 것도 아니다. 지나간 것은 지나간 대로 두고, 실수를 반복하지 않으면 되는 것이다.
‘성장’ 이란 뭘까?
내가 생각하는 개발은 공부할 건 많고, 뛰어난 개발자들은 정말 많다는 것을 항상 느낀다.
물론 누구보다 잘하기 위해서 공부하는 것은 아니지만, 그래도 다른 사람들과 비교를 하면서,
현재 내가 어느 위치에 있는가는 판단 할 수는 정도의 선은 필요하다고 생각한다.
이런 여러가지의 생각들이 나 자신을 더 혼란스럽게 만들었기에, 멘토님에게 질문한 적이 있다.
멘토님의 답변 → "개발도 스포츠이다"
멘토님의 개인적인 생각으로는 개발을 학습한다는 것은
일종의 스포츠를 배우는 것과 비슷하다는 비유와 함께 설명 해주셨다.
즉, 우리가 평소에 학습하는 영어, 국어 등의 과목을 학습하는 것과 다르다는 말씀을 해주셨다.
머릿속에 자리잡다.
지금까지의 나의 공부 방법은 서적 또는 영상을 보면 자연스레 성장할 것이라는 착각에 빠져 있었다.
정말 그것들이 내 것인 줄 알고 있었기에, 프로젝트를 해보려고 하였지만,
전혀 손도 대지 못했다는 상황이 많았다.
그렇게, 내가 생각하고 개발이란 것은 일종의 스포츠라고 생각하고 있다.
실전을 게을리하면 실력이 늘지 않는 스포츠처럼 개발도 마찬가지라고 생각한다.
결국 “진짜” 지식이 되려면 작은 프로그램이라도 만들면서 실전 감각을 키워야 한다.
누군가 나에게 해준 얘기가 있다
"실수는 성장의 촉진제와 같아서 다양한 실수를 해보는것도 중요하다"
"그렇지만, 같은 실수를 반복하지 않는것도 중요하다"
마치며
개발하면서 느낀 것은 아주 사소한 것을 얻기 위해서도 큰 노력이 필요하다는 느낌이 들었다.
사실 당연하고 정직한 방법이지만, 그래도.. 혹시나 지름길은 있지 않을까 항상 생각했다.
돌이켜보면, 항상 더 좋은길을 찾고 싶다는 마음에 길을 찾다가 방황하는 시간이 더 많았던것 같다.
그렇지만, 지금은 무엇인 잘못되었는지 대해 나만의 기준을 세웠고,
그 기둥을 기준으로 넓혀가고 있는 중인것 같다.
즉, 이렇게 했을때의 전 과 후를 비교해 본다면 남의 말에 쉽게 흔들리지 않는다.
예를 들어, 지금까지의 나는 주위에서 “오브책트 책 꼭 읽어야 한대” , “이팩티브 자바 책은 필수래” 이런 말들에
나 또한 뒤쳐질까봐 “아, 꼭 읽어야 하는구나“ 생각하며 다른 사람들이 좋다고 하는건 뭐든 다 하려고 했다.
이런 자세가 물론 좋을 수도 있다.
하지만, 현재 내 레벨을 알고, 현재 내가 무엇이 필요한지부터가 먼저이지 않을까 생각든다.
현재 나는 지금 개발 공부를 하면서, 스프링 시큐리티 부분이 막혀서 해매고 있는데,
이팩티브 자바 책 좋다는 소문에 이팩티브 자바에 대해 힘을 쏟는다면 그게 맞는걸까?
개발이 매력 있다고 생각하는 이유는 정답은 없지만, Best Practice가 존재하는 점이라고 생각한다.
이는 인생과도 비슷하게 느껴지며, 끊임없이 공부하는 이유이기도 하다고 생각한다.
그리고 우테코 프리코스 과정을 진행하면서 느낀 게 있다.
나는 유지보수가 쉽고 가독성 좋은 코드를 작성하는 것에 흥미가 간다는 것이다.
- 해당 부분의 일부분을 메서드로 뽑는 게 좋을까?
- 해당 클래스에 책임이 너무 많은가?
- 컨벤션은 괜찮은가?
- else 문을 가급적 피하라고 하는 이유는 무엇일까?
즉, 이런 당연하게 생각하고 쓰던 것들을 왜 가급적 피하라고 하며, 코드의 일부분은 메서드로 뽑는
이유들에 대해 고민 하는 게 재밌었다. 그리고 내가 작성한 코드를 남들이 쉽게 이해할 수 있으며,
시간이 지나, 내가 다시 봤을 때 이해할 수 있는 코드를 작성하고 싶다.
후회 없이 최선을 다 해보자.
부단히 노력하다 보면, 좋은 개발자가 될 것이다.