여행을 개발하다

개발자로 살아남기1 - 7개월 간의 실무에서 얻은 것들 본문

일상

개발자로 살아남기1 - 7개월 간의 실무에서 얻은 것들

yhtragramming 2020. 1. 11. 13:34

여러분 안녕하세요 : )

 

오랜만에 인사 드립니다.

 

하루하루 즐겁게 살아가는 정영훈입니다.

 

완벽한 변명이 될 수 없다는 걸 알지만, 여러 가지 이유로 블로그 게재를 잠시 중단했었습니다.

 

가장 큰 이유는 실무자가 되고 현업에서 업무를 하다보니, 시간을 쪼개기 어려웠다는 것이었어요.

하지만 무엇보다 가장 큰 이유는 마음 저의 게으름과 의지 문제였다고 생각합니다.

(스스로 많이 반성하고 있는...ㅎㅎ)

 

게재를 다시 시작한다는 의미에서 오늘 제가 공유드릴 내용은 '개발자로 살아남기1',

그 중에서도 현업에서 7개월 동안 프로젝트를 하다가 느낀점과 배운점들입니다.

 

이 글을 지극히 저의 개인적인 주관이므로, 참고만 부탁드립니다.

선배님들께서는 아닌 점에 대해서는 따끔한 지적을, 이제 막 입문 예정이신 분들은 참고만 부탁드릴께요 : )

 

 

1. 배움터(학교, 학원) 보다 실무에서 배운익힌 것들이 더 많다.

학교나 학원이 배움터였다면 실무는 생존터입니다.

또한, 회사는 현업자가 기술을 모른다고 해서 마냥 이해해주고 가르쳐줘야 할 의무가 있지도 않습니다.

회사는 직원의 기술력과 경쟁력에 투자하는 것이기 때문이지요.

 

저는 비전공자에다가 프로그래밍에 입문한지 이제 막 1년이 좀 넘었지만,

사실 학교나 학원에서 배웠던 것보다는 실무에서 얻은 것들이 훨씬 많습니다.

 

많은 분들이 '실무 나가서 배워라'라고 말씀하시는데, 이것은 현업에 가서 더 뼈져리게 느낀 부분입니다.

 

다만, 회사는 일터이기 때문에 부족한 부분은 스스로 자기개발을 병행하며 채워나가야 합니다.

그래서 배운다기보다는실전에서 필요한 기술을 일하면서 틈틈이 스스로 익힌다는 표현이 더 적절하겠네요.

 

그러니 '내 실력이 부족하니, 더 배우고 가야지'라는 막연한 생각이나,

'더 좋은 스펙을 가지고 지원해야지!'라는 생각은 잠시 접어두시기 바랍니다.

 

실력은 현업에서 키워나가는 것이며, 그것이 IT분야 인력시장에서의 경쟁력으로 발전할 것입니다.

 

 

2. 메소드, 화려한 코드와 병행하여 '작동 원리'를 이해해야 한다.

 

"Hello, java.

Hello, python."

 

입문자들이 가장 처음에 접한다는 print의 대표 구문들이죠.(언어마다 차이가 다소 존재합니다.)

이렇게 메소드를 하나 둘씩 익혀가면서, 어떤 상황에서 어떤 메소드와 클래스를 사용할지를 머릿속에 그리죠.

 

이러한 메소드와 화려한 코드를 익히는 것도 개인의 기술력 향상에 있어서는 매우 중요한 자세입니다.

하지만 저는 '프로그래밍의 원리'를 이해하는 것이 더 우선이라고 생각합니다.

 

프로그램의 구조는 어떻게 짜여졌으며, 어떤 내부적인 프로세스를 거쳐 사용자가 원하는 결과값을 출력하는지.

왜 특정 구문에서 오류가 발생하는지. 왜 프로그램이 빌드가 되지 않는지.

 

이러한 문제 상황에 직면했을 때 보다 빠르게 대처하고 해결할 수 있는 능력은

프로그램의 원리를 이해하고 있는 사람일수록 유리하게 키워진다고 생각합니다.

 

현업에서 부장님이 저에게 해주신 말씀이 있습니다.

 

'굵고 짧게 하라면 java를 하고, 미래를 내다보고 하려면 python을 해야하며, long-run을 원하면 C를 하라'

 

long-run을 원하면 C를 하라고 하셨던 이유는, 그만큼 프로그램의 구조를 가장 정교하게 다룰 수 있는 언어이면서

모든 언어의 토대가 되었기 때문이겠죠?

 

급할수록 돌아가라. 참 매력적이면서 뼈가 있는 말입니다.

 

 

3. 예외를 생각하고, log를 관리해야 한다.

100% 완벽함을 추구하는 것은 너무 힘들고 어렵습니다.

 

하지만 일을 처리함에 발생 가능한 문제점을 상정해서 대비하고, 해결책을 가지고 움직이는 것은 결과에 있어서 큰 차이를 낳습니다. 프로그래밍도 마찬가지입니다.

 

개발을 하다보면 수많은 에러를 만나게 될 것이며, 이는 예상 가능한 것과 그렇지 못한 것 모두를 포함하겠죠?

 

실력있는 개발자들은 발생 가능한 오류를 최대한 많이 상정해서 예외처리를 합니다.

 

각 단계별로 log를 남겨 에러의 원인을 추적하며, 수정된 코드는 version-control을 통해 형상관리를 합니다.

원하는 시점에 원하는 포인트로 돌아가기 위함이죠.

 

코드를 잡기 전에 발생가능한 예외를 생각하여 리스트업하고, 단계별 형상을 관리하는 습관은 좋은 개발 습관 및 실력있는 개발자로 성장하는데의 필요 조건이 될 것입니다.

 

 

4. 생각보다 다양한 진로가 있다.

 

'나는 개발만 해왔기 때문에 평생 개발만 해야되겠네?'

 

라고 생각했지만, 현업에 나가보니 생각보다 다양한 진로가 있었습니다.

 

같은 팀에 계셨던 선배 한 분은 장난식으로 "나는 이클립스도 못깔아"라고 말씀하셨어요(사실 진짜였음).

그런데 현재는 큰 회사의 SI팀에 스카웃되어 근무하고 계십니다.

 

그 이유는 개발자로 입문했다고 해서 반드시 개발자로만 커리어 패스를 쌓아갈 필요는 없기 때문이에요.

(물론, 정보기술의 유전자는 나의 유전자와 전혀 공통점이 없다고 생각하시는 분들은 제외하구요.)

 

대표적인 커리어 패스를 제가 아는 선에서 소개해드리겠습니다.

 

4-1. 개발자

- 말 그대로 개발자입니다. 개발을 사랑하고 기술 변화에 항상 대응하고 보조를 맞춰나갈 수 있는 분이라면 추천드립니다. 또한, 직면한 문제를 집요하게 풀어나가는 것을 즐기며, 합리적인 방안으로 해결해낼 수 있는 능력이 요구됩니다. 하지만, 개발자는 한국 기술 인력시장에서는 아쉽게도 큰 대우를 받지 못하는 것 같습니다. 고생은 고생대로 다하는데요. 그래서 많은 분들이 프리랜서로 전향하곤 합니다. 여기서 프리랜서란, 개개인이 프로젝트 하나를 다 맡아서 처리하는 경우도 있으나, 일반 SI 프로젝트에 함께 투입하여 적당한 직급을 갖고 함께 개발 업무를 수행하시는 분을 말합니다. 개개인마다 차가 있는 것은 분명하나, 보통 개인주의자라는 인식이 팽배한데요. 그런데 제 경험에서는 함께 프리랜서로 일하셨던 차장님이 조직에 가장 적합한 분이셨고, 아주 큰 도움을 받아 초임을 잘 해낼 수 있었습니다. 결국 사람마다 개인차가 존재하는 것이겠죠? 하지만 일반 회사의 정직원에서 프리랜서로 전향할 때는 심사숙고하셔야 합니다.

 

4-2. PM

- 프로젝트 매니져. 하나의 큰 프로젝트를 총괄하며, 인력 및 납기, 일정 관리 등을 담당합니다. 엄청난 책임감과 목표 달성 의지를 가지신 분이라면 추천합니다. 그런데 고생을 너무 많이 하게 되는 커리어 패스인 것 같습니다. 고객사와의 협의안을 적절하게 도출해야하며, 프로젝트 인력 개개인의 심정 관리와 진행도도 체크해줘야 합니다. 말 그대로 할 일이 너무너무 많으며, 엄청난 스트레스를 견딜 수 있어야 하겠습니다. 물론, 어떤 사람들과 함께 일하며, 어떤 PL(프로젝트 리더)과 함께 하는가에 따라서 그 짐이 덜어질 수도 있습니다. 프로그래밍 언어 뿐만 아니라 데이터베이스, 서버, 네트워크 등의 기술을 전반적으로 알아야하는 위치입니다. 사실상 회사입장에서는 실력자들을 주로 PM으로 임명하게 되죠. 엄청난 책임감이 요구되는만큼 회사의 主가 되는 PM을 구하기도 요즘은 별따기라고 들었습니다.

 

4-3. 컨설턴트

- 위에서 언급한 큰 회사의 SI팀에 스카웃되어 근무하고 계신 선배의 커리어 패스에 해당됩니다. 회사가 프로젝트를 수주하게 되면, 고객사의 업무 프로세스를 정의하고 AS-IS(현재의 업무 프로세스를 분석하여 솔루션을 도출) 분석과 TO-BE(미래에 적용된 업무 프로세스를 분석하고 정의함) 분석을 진행합니다. 이때, 지난 커리어에서의 배움과 경력을 가지고 해당 회사의 ERP나 SCM, DOCUMENTUM의 솔루션을 제안하며, 이에 맞는 소프트웨어를 설계하는 역할을 담당합니다. 당연히, 해당 산업군과 업무 분야에는 전문성을 가지고 있어야겠죠? 그리고 업무의 탁월함을 보이면 스카웃 제의도 가장 많이 들어오는 위치입니다.

 

4-3. DBA

- DBA란, 'Database Administrator'의 약자로 '데이터 베이스 관리자'를 지칭합니다. DBA는 데이터베이스의 설계 및 튜닝, 보안 등을 총괄합니다. DB는 어떤 프로젝트에 가도 상당히 중요하며, 효율적이고 논리적으로 설계되지 않으면 개발자와 사용자 모두를 힘들게 하기 때문에 정확히 짜여져야 합니다. (초임 프로젝트에서는 DB 활용 비중이 무려 70%로 중요도가 엄청났습니다.) 하지만 요즘은 그 의미가 퇴색되고 있는 것 같습니다. 웬만한 Query와 SQL 실력은 베테랑 개발자라면 두루 갖추고 있기 때문입니다. 또한, 큰 회사가 아니면 아예 없는 경우도 있으며, 비경력자인 경우는 채용 자체를 꺼리는 경우도 허다하다고 합니다.

 

정리하자면 IT분야로 입문한다고 해서 꼭 개발자의 커리어 패스만 쌓아나가야 하는 법은 없습니다.

자신의 성향과 좋아하는 분야를 정확히 정의하고 입문해야 할 것입니다.

물론, 커리어 패스에 따라 진입장벽의 높이도 다르겠죠?

 

5. 지속적인 자기개발이 필수

이것은 비단 IT 분야를 포함한 모든 분야의 전문가로 성장하기 위해 반드시 필요한 덕목일 것입니다.

특히, IT분야에 종사하게 된다면 변화하는 기술의 속도를 민감하게 감지하고 따라가야 합니다.

 

어떤 책의 어록에서, 기술자는 자신의 뒤에 항상 roller가 있다고 생각해야 한다고 했던게 기억나요.

자기개발을 멈추는 즉시 뒤에있는 roller가 자신을 깔아 뭉갠다는 의미이지요.

 

더불어, '나는 개발만 할꺼야'라는 생각으로 프로그래밍 언어만을 공부할 수는 없는 상황이 발생하더군요.

 

실무에서 개발된 프로그램의 디플로이(실제 사용자사 사용할 수 있도록 운영 서버에 배포하는 과정)를 담당하거나, 보안과 같은 인프라적인 요소와 유기적인 파트 개발을 맡게되는 경우가 그렇습니다. 이 상황은 웹 프로젝트를 담당할 때 더 빈번하게 발생합니다.

 

저는 이에 대한 대비책으로, 1년에 2개 정도의 자격증 취득을 목표로 공부하는 것이 좋다고 생각합니다.

 

그 이유는

첫째, 소위 말하는 인력시장에서의 자신의 가치가 조금이라도 높아질 수 있을 것이며(실제로 저희 회사는 정보처리 기사 수당을 연봉과 별도로 매월 10만원씩 지급하고 있습니다), 둘째, 실습하며 공부한다면 시간이 지남에 따라 그 기술이 오롯이 자기 것이 될 수 있기 때문이죠.

 

지속적인 자기개발은 매번 강조해도 지나침이 없습니다.

 

 

생각나는대로 적었는데, 과연 중요한 부분만 말씀드렸는지 그렇지 않은지는 잘 모르겠네요.

이상으로, 현업에서 일하며 느낀 점을 적어보았습니다.

 

긴 글 읽어주셔서 감사합니다.

 

오늘도 좋은 하루되세요 : )

 

'일상' 카테고리의 다른 글

개발자로 살아남기2 - 1년 차를 갓 넘기고  (0) 2020.01.12
Comments