블로그 포스팅 스터디 큐스팅
의 첫 글로, 기업 프로젝트 회고록을 작성할까? 고민을 하다가
아직 최종 발표도 끝나지 않았고 조금 더 제대로 작성하고 싶은 마음에 다른 주제를 선정했다.
그동안 좋은 개발자가 무엇일까
라는 고민은 끊임없이 해왔지만, 최근에 이에 대한 개인적인 생각이 뚜렷해진 계기가 여러 번 있었기에 한 번 정리해보고자 한다.
물론 정답은 없으며, 여러 매체와 개인적인 경험에 의거한 글임을 밝힌다.
이는 개발을 시작하고 얼마 되지 않았을 때 유튜브에서 본 영상으로 인해 그때부터 생각하게 되었다.
https://youtu.be/3H4umWD5bwI?si=2wrmKq92S5fndbB5
위 영상인데, 어떤 개발자를 지향해야 하는지 많은 고민을 하던 시기에 보아서 그런지 더 기억에 남는다. 아직 보지 않은 개발자라면 한 번쯤 보아도 좋을 것 같다!
나는 영상을 보며 약간의 안도감이 들었었다.
비전공자로 시작을 했고 상대적으로 많은 CS 지식이 필요한 백엔드 파트를 지향하기에, 과연 내가 따라갈 수 있을까라는 걱정을 했었는데, 개발 외적으로 다른 부분들은 내가 조금 더 잘 할 수 있지 않을까? 하는 생각도 들었기 때문이다.
본 전공이 경영정보학과이기에 경영에 대한 공부를 해왔고, 꽤나 많은 팀플과 발표를 진행했으며, 단체 생활도 많이 해보았기에 사회성이 없지는 않은 수준이었다. 그렇기에 오히려 이러한 부분들을 나의 차별점으로 삼고 나아가도 괜찮지 않을까? 하는 생각이 들었다.
물론 개발 실력이 1순위이어야 함은 변하지 않는 사실이다.
서론이 길었는데, 내용을 요약해 보자면 개발자는 단순 코더
가 아닌 문제를 해결하는 프로그래머
이기에 다방면으로 능력을 길러야 한다. 또한 모든 것은 결론적으로 비즈니스이기 때문에 개발자도 비즈니스에 대해 깊게 이해하고 있어야 빠르게 성장할 수 있다.
문제를 해결하기 위해서는 왜
이 문제를 해결해야 하며, 이를 어떻게
해결해야 하는지 고민해야 한다. 여기서는 단순 개발 능력보다는 더 거시적인 설계나 조직 등을 고려해야 하며, 주변에 있는 사람들과의 소통도 매우 중요해진다.
여기서 왜
에 집중하며 다음 주제로 넘어가보도록 하겠다.
개발자에게 왜
라는 한 글자는 너무도 중요하다.
극단적으로 말하자면, 왜
해야 하는지 고민하지 않고 그저 개발하고 있는 사람들에게는 성장 가능성이 거의 없다고 생각을 한다.
팀의 기획자가 어떠한 한 기능이 필요하니 만들어달라고 요청을 한 상황이라고 가정해보자. 정상적인 기획자라면 이 기능이 왜
필요한지 설득을 할 것이다.
만약 설득력이 있었고 필요한 기능이 맞다면 넘어가도 좋지만, 조금이라도 의문이 든다면 기획자와의 깊은 소통을 통해서 명확히 짚고 넘어가야한다고 생각한다. 그저 외주를 맡긴 것이 아니라, 하나의 팀
이라면 말이다.
그렇지 않고 기획은 기획 파트의 일, 개발은 개발 파트의 일만 해 나간다면 공장의 각 파트와 같이 양산형 서비스만 만들어낼 것이라고 예상한다.
물론 각 파트의 분야를 침범하고 구분이 필요하지 않다는 뜻은 아니다. 서로가 기분 상하지 않은 정도로 솔직하게 논의를 할 수 있는 소통 환경
을 만들어 나가는 노력이 중요한 것 같다.
이러한 부분이 아니고서도, 왜
는 중요하다.
요즘에는 개발이 너무 쉬워진 것이 사실이다. 단순히 코딩
을 하는 부분에서는 말이다.
생성형 AI가 코드를 다 짜주며, 웬만한 기술들은 다른 사람들이 이미 사용한 후 글로 잘 정리를 해 두었다. 우리는 그것을 적절히 활용하기만 하면 되는 것이다.
하지만 이렇게 개발을 하다 보면 분명히 '왜 되는 것인지는 모르겠지만 돌아가는' 경우가 발생을 한다.
여기서 넘어가지 않고 파고들며 이해하는 것, 즉 근거 있는 코드를 작성하고자 하는 노력
이 굉장히 중요하다고 생각한다.
방금 전에 생성형 AI가 코딩을 다 해준다고 했는데, 그렇다면 개발자는 왜 필요한 걸까?
지금부터 이에 대해서 얘기해보려고 한다.
해당 주제는, 최근 시작한 독서 스터디에서 읽은 함께 자라기
책을 통해 얻은 생각이다.
챗 GPT와 같은 생성형 AI의 능력이 무서울 정도로 성장하면서, 웬만한 직업들이 대체될 것이라는 두려움이 만연했다. 개발자도 예외는 아니었다.
하지만 조사에 따르면 컴퓨터 프로그래머는 컴퓨터화 확률이 높은 편이나, 소프트웨어 개발자는 컴퓨터화될 확률이 낮은 직업에 속했다. 어떤 차이 때문일까?
컴퓨터 프로그래머
는 다른 사람이 요청하는 스펙대로 개발을 하기에, 타인과의 협상 & 설득이 크게 필요하지 않다. 그렇기에 이러한 능력에서는 당연히 AI가 뛰어날 수 밖에 없다.
반면 소프트웨어 개발자
에게는 고민을 통해 설계하는 시간이 꼭 필요하며, 타인과 상호작용하는 경우가 많다. 회사에 들어가 1개의 작은 기능을 만들고 적용하는 데에도 오랜 시간이 걸릴텐데, 어떻게 해야 잘 만들 수 있는지 설계를 해야 하고, 사이드이펙트를 고려해야 하며, 이와 연관된 사람들과 깊은 의사소통을 통해 결정해야 하기 때문이다. 이러한 부분은 AI가 할 수 없다. (현재로써는)
그렇기에 앞으로 개발자들은 단순히 코딩하는 능력 보다
1) 사람들과 원활히 의사소통을 할 수 있는 사회성 2)조직과 비즈니스를 전반적으로 볼 수 있는 시야 3) 문제에 대해 빠르게 이해하고 이를 어떻게든 해결해낼 수 있는 문제해결력이 더욱 중요해지지 않을까 싶다.
나는 상대적으로 개발을 늦게 시작한 편이어서, 또래 친구들에 비해 프로젝트 개수도 다양한 경험도 턱 없이 부족한 상태였다. 그래서 그 당시에는 '프로젝트를 많이 해서 개수를 늘려야겠다!' 라는 생각도 했었던 것 같다.
하지만 어느 정도 프로젝트를 경험해 본 지금의 입장에서, 개수는 전혀 중요한 게 아닌 듯하다. 물론 여러 번 진행하며 얻은 많은 경험을 통해서 빠르게 성장한 것은 맞지만, 이제는 개수에 집착하기 보다는 조금 더 퀄리티를 높이기 위해 노력해야 한다고 생각한다.
때문에 지금과 같이 회고록도 작성하고 있는 것이고, 코드리뷰 & 리팩토링 등에 시간을 쏟으려 하는 것이다.
이러한 점에서 최근 진행한 SKT 데보션과의 기업 프로젝트가 나에게는 굉장히 의미있었다고 생각한다. 기존의 코드를 분석하고 이를 활용하여 새로운 기능을 만들어 낸다는 것이 여간 어려운 것이 아니었지만, 완전히 새로운 경험이었기에 많은 도움이 되었다.
또한 면접관의 입장에서도 대학생 수준 프로젝트를 많이 한 사람들 보다 실제 회사의 코드를 뜯어 보고 만들어 본 사람을 더욱 관심 있게 보지 않을까? 하는 생각이 들었다.
이러한 의미 깊은 프로젝트를 운 좋게 좋은 팀원들을 만나 성공적으로 완수할 수 있었던 것이 올해 나의 큰 행운이라고 생각한다. 기업 프로젝트 회고록은 후에 제대로 작성해 보고자 한다.
어찌되었든 이전에는 신기술을 최대한 많이 써보고 사용 스택들을 늘려나가는 게 스펙이라고 생각했지만, 이제는 오히려 내가 했던 프로젝트를 리팩토링 해 보고 서비스를 오래 유지해 보는 게 훨씬 중요한 경험이라는 생각이 든다.
결론적으로 나는 위에서 말한 4가지를 마음 속에 새기며 개발자로서 성장해 보고자 한다.
이 마음이 또 언제 변할지는 모르겠다. 정답은 언제나 없고 상황에 따라 사람은 바뀔 수 있는 것이기에 변할 수도 있다고 생각한다.
그저 현재의 순간에서 내리는 최선의 선택으로 최선을 다해 노력해보고 싶다!