어느 순간 눈 떠보니 거대 기업의 톱니바퀴와 같은 기계적 부품이 되어버린 나를 알아차린다면 너무 슬프지 않을까?
지금 내가 학부과정에서 배우는 많은 지식들 OS, DB, Network(TCP/IP), 자료구조, 알고리즘, 신호처리, 인공지능 ... (여기에 언어들까지 포함하면 C, C++, JAVA, Python, JavaScript) 이 지식들을 한데 묶을 상위 목표가 절실히 필요하다.
결국 지금 상황에서 100프로 만족스러운, 음 다시 표현하자면 100프로 확신이 드는 직무를 찾는건 불가능 한듯하다.
직접 경험해보지 않은 곳을 가기로 결정하는데 어찌 100프로 확신이 들겠는가? 하지만 우리는 선택을 해야하고, 그렇다면 그 답은 우리안에서 찾을 수 밖에 없다.
(x)문득 이런 생각이 들었다. 더 이상 기술이 기술로만 존재할 수는 없는 사회가 되어버렸구나. 기술만 파고드는 자와 기술과 사람들의 심리, 니즈를 녹여내는 인문학적 감수성이 있는 사람이 진정 차세대 기술자가 되겠구나. 마냥 기술만 파고든다면 그것은 장인의 길이오, 결국 자본주의 사회에서 거대 기업의 중요한 부품으로 밖에 성장하지 못하는것 아닐까?
결국 모든 기술은 사람으로부터 나온것이고, 사람을 위한 것이기에, 사람을 떼놓고는 생각할 수 없는듯 하다. 당장 나만 하더라도 학창시절에 라즈베리파이로 CCTV를 만들고, 리눅스 명령어를 따라 치며 가족들, 친구들 앞에서 뽐낸 기억이 있다. 어쩌면 내가 기술에 정진한것은 주변인의 관심(?) 우와~대단하다 라는 말을 듣고 싶어서 아니었을까? 내 컴퓨터에 대한 집착의 모든 부분이 저것때문이라곤 할수 없겠지만, 분명 원인 중엔 저런 이유도 있을것이다.
어쨌뜬 다시 처음으로 돌아가서 나는 뭘 하고싶은가? 뭘 개발하고 싶은가? 어느 직무를 맡고 싶은가? 어느 기업에 가길 원하는가(for 산업기능요원)? 나아가 어떤 기업을 만들고 싶은가?
우선, 기업가의 관점에서 사람들에게 유용함, 편리함을 제공하는 서비스를 만들어야 한다. 그 서비스를 구현하는 기술에 대해 알아야하고, 이때 나보다 더 잘 하는 사람이 있다면 그를 이용해야한다. 내가 처음부터 끝까지 모든 것을 다 해냈다! 라는 뿌듯함이 주는 성취감이 효용이 있는것은 딱 학창시절까지다. 현대 SW 생태계에서 (엄밀히 따져서) A to Z까지 순수하게 내가 만든 것들로만 프로그램을 작성한다는것은 불가능하다. 당장 이 글을 쓰고있는 웹 브라우저, 이를 받아 처리하는 웹 서버, 저장하는 DB 어느것 하나 내가 구현한 것이 없지않은가? 이제는 "처음부터 끝까지 내가 다 만들어야해!" 라는 강박을 내렿놓고, 한 발짝 떨어져 생각해보자.
지금 나는 마냥 Backend + ML 직무를 목표로 정했다. 그럼 지금 세계의 트렌드가 어디를 향하는지, 어떤 변화의 물결이 있는지 보자. 우선, 최근 클라우드 서비스로 인한 Serverless 시대가 온다. 더이상 네트워크 매니지먼트, 인프라 구축, 서버관리에 큰 노력을 들이지 않고, 클라우드 서비스만을 이용해도 대량의 트래픽을 처리하는 서비스를 만들어 낼 수있다. "클럽하우스"의 예를 보자. 이 앱의 음성처리 기술은 전부 외부 라이브러리의 API를 가져다 쓰는 형태로 구현되었다. 클럽하우스를 만든 폴 데이비슨이 한 일은 음성처리 API 응용, 프론트 엔드 구현, 클라우드 기반 트래픽 처리 정도다. 백엔드 구현에 따른 기술적 어려움이 크지 않다는것이다. (당장 비교해봐도 클럽하우스는 내부자로부터의 초대 기능 외에 디스코드와 큰 차이가 없다.) 이러한 트랜드를 봤을때 기업의 백엔드 담당 부서는 축소되고, 줄어들지 않을까?
추가로 군대는 언제 어떻게 갈것인가 (산업기능요원)?
잠시 누워서 생각해봤다. 4차 산업 혁명시대, Post COVID 시대, 정보화 시대를 살아가는 나의 20,30대는 하나의 직무를 정해서 그 직무에 필요한 지식, 기술들을 습득하여, 취직한다 할지라도, 급변하는 sw 생태계에의해 새롭게 배워야할 언어, 프레임워크, 개발 툴들, 개발 방법등이 계속 등장할 것이다. 예를들어, 지금 나는 마냥 Backend + ML 직무를 목표로 정했다. 하여 Backend 직무를 위해 java + spring 기반 프로젝트를 진행해보고 기술을 배워나간다. 또 ML 직무를 위해 통계적 지식, Python 기반 TF, Torch를 사용해 모델을 구현해보고, 인공지능 기반 이지미 인식 서비스를 구현해본다.
하지만 결국 내가 길러야하는 능력은 새로운 지식, 기술, 언어를 효율적으로 학습하는 능력아닐까? 뿐만 아니라 팀원들과 협업하는 능력, 처음 접하는 기술(프레임웤, 라이브러리)을 공식문서를 통해 서비스 수준까지 만들어내는 능력아닐까?
또 지금 세계가 흘러가는 트렌드를 관찰하며, 사람들의 니즈를 파악하는 능력, 사람들의 심리를 바탕으로 그들이 원하는 제품/서비스를 창조해내는(21세기, 그렇게도 강조하는 Creativity)능력 아닐까?
그래서 내가 하고싶은 말은 뭐였던가? 결론은?
음.. 위에 적은 능력들을 기르기 위해 프로젝트를 진행하되, 그 프로젝트에 사용되는 여러 기술들은 내가 원하는 직무에서 요구하는 것들을 바탕으로 구성하자.
우선, 메인으로 사용할 언어 하나를 정하자. (그 언어를 기반으로 코테 대비 문제풀이, 언어 자료구조 학습등 진행하면서)
그 언어 기반 프레임웤으로 완전한 웹 서비스 하나를 DB단에서부터 FrontEnd까지 다 구현해 봐.
자, 그럼 당장 내일부터 (학과 공부말고) 어떤 프로젝트를 진행할까?
메인 언어는 Java, 1순위 프로젝트: Spring + Java (jsp, servlet) + RDBMS
왜 자바+스프링인가? (네이버, 배민 같은 거대 IT기업들의 서비스는 대부분 자바+스프링으로 만들어져 유지보수되고 있기에..?) 자바를 안쓰는곳이 없는 자바공화국...반면 자바는 이제 한물 갔다는 관점도 있다만,, 그렇다고 지금 내가 스칼라 같은 언어를 공부하는건 리스크가 너무 크지 않은가? 우선, 산업기능요원으로 취업해야 하기도 하니, 범용적으로 많이들 사용하는 자바+스프링은 배워서 나쁠건 없다고 본다.
2순위 프로젝트, 아래의 기술스택으로 웹 앱 구현하는 플젝도 생각해봤다.
WebApp = HTML/CSS/JS + Node.js-Express + MongoDB(NoSQL)
.NET 이용해볼 수 도 있겠고.
Android기반 개발해봐도 되고.
근데 이렇게 보니까 초점이 웹앱, 모바일앱에 맞춰져있네.
아 예전에 진행했던 플젝들을 생각해보면 17DOF 휴머노이드, 지게차 AEB, Stereo Camera Depth 측정등 다양한 분야들이 있긴하네
----------------------------------------------------------------------------------------------------------------------------------
밤 중에 두서 없이 쓴 글입니다. 차차 수정해 나갈 예정입니다. 혹시라도 이 글을 읽어보셨다면, 어떠했는지 느낌을 댓글로 적어주시면 너무 감사합니다. 요즘들어 취직, 직무 관련 고민이 늘어갑니다...zz
1차: 2021-05-13 pm 10:57