예비 프로 개발자를 위한 조언


okky를 보다 좋은 글을 발견하여 퍼왔다.

나 또한 아직 개발자도 아닌

대학교 졸업예정자 이기 때문인지

제목에 이끌려 바로 글을 보았다.


(https://okky.kr/article/442097)



-----------------------------------------------------


예비 프로개발자를 위한 조언


소싯적부터 개발을 즐겨온 분들보다는 직업인으로서

이제 막 개발자의 길로 들어서려는 분들에게 드리는 말씀입니다.

다른 분들이 이미 좋은 말씀을 많이 하셨기 때문에

중복되는 내용은 최대한 피하도록 하겠습니다.



1. 문제의 해결에 집중하자

  개발을 잘 하는 개발자는 누구일까? 라는 질문을 던져보면 각자의

경험에 따라 여러 가지 답이 나올 수 있습니다. 구현을 아주 잘하거나

기술을 많이 알고 적용하는 사람 등이 있겠죠. 하지만 어느 정도 경험이 쌓인 개발자들은"

어떤 문제를 (프로그래밍적으로)잘 해결하는 개발자"라는 대답에 대부분 동의할 것입니다.

  우리가 어떤 기술을 습득하고 훈련하는 것은 그 행위에 목적이 있는 것이 아니라

어떤 문제에 직면했을 때 그것을 잘 해결하기 위해서입니다.

여기서 어떤 문제란 "비즈니스(업무)"를 말합니다. 우리는 흔히 업무라는 것을

금융의 수신과 여신 업무처럼 특정 분야에서 일어나는 일련의 프로세스라고

생각하기 쉽겠지만 더 큰 범주로서 "해결이 필요한 대상으로서의 문제"를

생각해 볼 수 있고 그렇기 때문에 개발을 잘 한다는 것에는

문제를 잘 이해하는 것 또한 포함됩니다.

  결국 문제(비즈니스)를 잘 이해하고 그에 대한 해결(솔루션)에 집중하는 것이

개발자로서 인정받을 수 있는 확실한 길이다 라고 말씀드리고 싶습니다.



2. 개념과 컨벤션(Convention)

  만약 저에게 신업 개발자를 뽑을 기회가 주어진다면 그 기준으로

개념에 대한 이해도와 포트폴리오용 제출 소스가

기술별 코딩 컨벤션을 충실히 따르고 있는지 여부를 꼭 볼 것 같습니다. 

  개념을 잘 이해하는 것은 매우 중요합니다. 동작 원리와 용어의 정의 등

개념을 정확히 모른다면 문제 해결에 대한 솔루션에 착오가 생기거나 여러 개발자와

협업 시 의사소통의 어려움을 겪을 것입니다. 한 개념에 대하여

서로 다른 이해를 하는 상태에서는 올바른 합의점을 찾기 위한 논쟁 자체가 불가능질테니까요.

  그렇다면 개념에 대한 이해 수준을 높이기 위해서 어떻게 해야 할까요?

저는 우선적으로 다음의 2가지 방법을 추천합니다.


  첫째, 일상에서 최대한 표준 용어를 사용하도록 합니다.

일을 하다 보면 머리속의 생각을 정확히 표현하지 못하거나 명확한 용어를 사용하지 않고

두리뭉실하게 말하는 개발자들을 종종 만날 수 있습니다. 바로 표준 용어를 사용하여

표현하는 것이 습관화되지 못해서 그렇습니다. 내 생각을 정확한 용어를 사용하여

표현하는 것은 하루아침에 되는 것이 아니고 꾸준한 훈련을 통해서 익숙해져야만

가능한 일입니다. 그렇기에 처음에는 매우 어렵지만 의도적으로라도 습관화해야 합니다.

  둘째, 처음 접하거나 아리송한 용어나 개념은 바로 검색해서 확인합니다.

처음 이 세계에 발을 들여놓으면 생소한 개념에 정신이 없습니다. 

히자만 반복적으로 검색하여 확인하다보면 점점 더 개념이 명확해지고

새로운 지식을 습득하는 속도가 빨라지는 것을 느낄 수 있을 것입니다.


코딩 컨벤션은 소스 코드를 작성할 때의 관례 또는 규약 입니다.

오류를 발생시키지는 않지만 지키면 모두에게 좋은 것이죠. 이것이 왜 중요하냐하면

잘 지킬 경우 유지보수 비용을 크게 줄여졸 수 있지만 안 지키면 누군가

흔히 말하는 엄청난 삽질을 해야 하기 때문입니다. 또한 코딩 컨벤션은

개발자의 매너입니다. 협업에서 매너와 배려는 기본이기에

포트폴리오를 작성할 시 컨벤션을 잘 준수한다면 높은 어드밴티지를 얻을 수 있을 것입니다.



3. 다독, 다작, 다상량

  중국 송나라 사람 구양수는 글을 잘 쓰는 방법으로 "다독, 다작, 다상량"을

얘기했다고 하는데요 저는 개발 스킬을 향상시키는 방법으로도 통한다라고 생각합니다.

  저 같은 경우에는 기술서와 개념서(기술 에세이류), 일반 소설류 등을

1:1:1의 비율로 같이 보았는데요 개념서와 소설 등은 지루함을 없애고

생각을 많이 하는데 도움이 되었습니다.

  잘 짜여진 남의 소스 코드를 읽어보는 것도 많은 도움이 됩니다.

그래야 우물안 개구리가 되는 것을 피할 수 있습니다.

  요즘엔 훌륭한 프로젝트들이 많이 공개되어 있으므로 비교적 쉽게 구할 수 있을 것이라 셍각합니다.

    


4. 높은 곳에서 낮은 곳으로

  관심사의 문제입니다. Java, C/C++, Python 등의

언어, 프로세스, 자료구조, 네트워크, 알고리즘, 객체지향 등등

개발을 하기 위해서 관심 가져야 할 것들이 참 많습니다. 문제는 이 많은

것들은 다 잘 알기에는 현실적인 한계가 있기에 필요한 것부터

선택하게 되는데 이 순서에 대해서 말씀드리고자 합니다.

  컴퓨터 세계에서는 컴퓨터에 가까운 개념은 저수준이라고 부르고

인간의 사고와 언어에 가까운 개념은 고수준이라고 부릅니다. 그리고 저수준일수록

구체적이고 고수준일수록 추상적입니다. 흔히 소프트웨어 개발을 공부하면서

저수준에 가까운 프로세스, 자료구조 등의 기반 기술을 한번 다 훑고 오시는데요

이것이 과연 효율적인가 의구심을 품어 볼 필요가 있지 않을까 합니다.

  기반 기술부터 시작해서 차곡차곡 지식을 쌓아 응용 기술까지

섭렵하겠다는 정석적인 스토리는 아주 이상적이지만 현실에서는 지식을 쌓는다고

다 내 것이 되는 것이 아니고 어떤 계기를 통해 깨달음을 얻을 때 내 것이 됩니다.

그런데 그 계기는 낮은 곳에서만 오는 것이 아니라 중간에서 올 수도 있고

높은 곳에서 올 수도 있습니다. 좀 더 정확히 말하면

높은 곳에서 오는 경우가 더 많은 것 같습니다.

  문제를 정확히 알아야 그 문제를 해결할 수 있는 것처럼 추상적인

사고가 전제되어야 깨달음을 얻을 수 있습니다. 기반 기술은 추상적인 사고가

깨달음으로 전환되는 그 순간 필요합니다. 마치 블록쌓기를 하는 것처럼

어떤 추상적인 개념을 이해하기 위해서 3개의 기반 기술 지식이 필요하다면

그 중 1개라도 부족해서는 안 됩니다. 그러하기에 기반 기술에 대한 지식 또한 반드시 필요합니다.

  하지만 밑에서부터 지식을 아무리 쌓아도 추상적인 사고가 부족하다면

더딜 수 밖에 없습니다. 차라리 추상적인 개념을 익히고 디테일한 부분은

기반 기술로 채워가는 것이 더 좋지 않을까 권해드리고 싶습니다.



5. IT노동자 vs. 프로개발자

  최근 소프트웨어 개발에 대한 관심이 높아지면서 한편으로는

열악한 개발자의 처우에 대한 이슈도 많이 나오는 것으로 알고 있습니다.

  낮은 연봉, 야근, 월화수목금금금 등의

키워드에 움찔하는 예비 개발자 분들이 계실텐데요 저 또한 약간 과장은 있어도

그러한 현실은 부정하기 힘들다 라고 생각합니다. 다만 개발자로서

겪는 고충과 우리나라 노동자로서 겪는 고충은

구별해서 볼 필요가 있다 라고 말씀드리고 싶습니다.

  자극적인 키워드는 우리나라 IT노동자이기에 겪는 것들이

대부분이구요 모두가 노력한다면 좋아질 것이라고 생각(희망?)합니다.

물론 이 바닥에 들어와 보시면 개발자로서 겪는 고충도 만만치 않다는 것을 아실 겁니다. 

하지만 보람과 성취감도 타직업에 못지 않고 무엇보다 직장을 구하는 것이 아닌

평생 직업을 구한다 생각하면 괜찮은 직업입니다. 물론 적성은 맞아야겠죠.

  모두 뜻한 바 성취를 이루시기 바라겠습니다. 감사합니다.



댓글

Designed by JB FACTORY