2023. 2. 22. 00:00ㆍSE 에세이

탁월한 소프트웨어 엔지니어의 필수 조건은 "IQ, EQ, Grit" 세 가지라고 생각된다. 그리고, 이 셋중에서 가장 중요한 것은 근성(Grit)이라고 생각된다. 근성에 대해서 얘기해 보자.
소프트웨어 엔지니어의 근성이란?
근성이란, 목표를 끝까지 달성해 내는 힘이다. 한번 물면 놓지 않는 싸움개가 있다. 그런 개와 비슷하다. 목표나 문제를 한번 물면 끝장을 볼 때까지 놓지 않는다. 사실, 아주 피곤한 성질이다. 그러나 성장을 위한 필수 능력이다.
소프트웨어 엔지니어는 근성이 필요하다. 문제를 끝까지 해결해 내겠다는 강한 의지가 필요한다. 소프트웨어 개발은 재밌고 보람 있는 일이지만, 개발 과정에서는 많은 고난이 기다리고 있다. 논리적으로 발생하는 문제는 오히려 쉽다. 조금 빠르거나 느리더라도 논리적으로 풀어내면 되기 때문이다. 그리고 논리적인 문제는 도움 받기도 쉽다. 그러나 소프트웨어를 실제로 사용할 수 있는 단계까지 개발해 보면 알겠지만, 블랙박스에 갇힌 문제들이 이외로 많다. 돼야 하는데 안 되는 이상한 문제들이 발생한다. 나는 별로 좋아하지 않는 표현이지만, 삽질해야 하는 문제들이 많이 발생한다. 삽질하고 있을 때면, 개발자는 참 고단한 일이라고 느껴진다. 시간도 엄청 잡아먹고, 문제는 해결되지 않고, 미궁에 빠진다. 이런 것 때문에 데어서 이 바닥을 떠난 분들도 많다. 그런데, 이때 근성이 작용한다. 해결해 내고 말겠다는 근성. 이때가 바로 실력이 느는 순간이다. 온갖 실마리를 찾아서 조사하고 검색해서 문제 원인을 찾는다. 이런 문제를 만나면, 문제의 정확한 원인을 찾는 것이 핵심이다. 문제를 찾기 위해 온갖 짓을 다한다. 얼굴은 푸석해지고, 눈은 충혈되고, 식사를 거르다가 라면에 밥 말아먹기도 한다. 온통 생각은 문제해결에 있다. 고도로 집중된 상태가 지속된다. 이런 거 보면, 소프트웨어 엔지니어의 자질 중에는 집요함이 필수다. 참고로, 근성은 그렇다 치고, 집요함은 뭔가 안좋은 느낌의 단어지만, 여기서는 좋은거다.
세상에 사람이 만든 물건치고 못 고치는 거 없을듯하다. 소프트웨어도 그런 것 같다. 끝까지 파다 보면, 대부분은 해결된다. 해결이 안 되더라도 원인은 찾아낸다. 원인을 찾아내면, 대응방법이 나온다. 대안을 찾을 수 있다. 핵심은 문제의 원인을 찾아내는 것이다. 그리고, 근성 있는 이 만이 문제의 원인을 찾아내고 해결한다.
근성과 집요함은 어떻게 키울 수 있는가?
경험상, 근성과 집요함은 어느 정도 타고나는것 같다.
근성과 집요함은 태어날 때 타고나는것 같다. 자라온 환경, 교육 등에 의해서도 어느정도 형성될 수 있을 것이다. 훈련으로 길러질 수도 있을까? 모르겠다. 한계가 있을 것 같다. 내 경험상으로는 길러지는 게 아닌 것 같다.
일하면서 만난분들이나, 멘토하면서 겪었던 학생들. 이들이 성장하는 모습들은 보면, 근성은 노력으로 되는게 아닌것 같다. 개로 비유하자면, 도사견이나 핏불 테리어의 투견으로 태어나느냐, 푸들이나 말티스처럼 귀엽게 태어나느냐에 따라 성향은 결정된다. 물론, 낮은 확률이지만 순한 투견도 있고 성질 더러운 푸들도 있다. 사람의 근성도 그런 것 같다. 일을 해보면 성향이 드러난다. 그래서, 근성이 없는 분들은 오래 못하고 떠난다. 머리가 좋은 사람도 근성이 없으면 일 오래 못한다.
근성과 집요함은 훈련한다고 되는게 아니더라.
'SE 에세이' 카테고리의 다른 글
[Bayes' Theorem] 베이즈 이론과 함께라면 (0) | 2023.02.25 |
---|---|
[고객중심, 고객만족] 소프트웨어 개발 서비스에서 탁월해지는 방법 (0) | 2023.02.23 |
웹3.0, 웹의 탈중앙화 재건운동(Movement) (0) | 2023.02.18 |
생성형 AI (Generative AI)와 소프트웨어 개발자 (0) | 2023.02.17 |
글발 보다 말발 (1) | 2023.02.16 |