어떤 개발자가 될 것인가?
'우테코' 란 것이 있다는걸 알게 되고, 준비하기 위해 가능 한 모든 시간을 쏟아붓기로 최근에 결정했다. 그러다 문득 스스로에게 질문을 던지게 되었다.
개발자로서 이루고 싶은 목표, 꿈을 말하는 것이 아니다. 기술적, 능력적 측면에서, 어떤 개발자가 되어야 하는지에 대한 질문이었다. 질문을 다시 바꾸자면,
이다.
생각에 생각을 거듭하던 도중, 내가 생각하는 개발자로서의 마인드셋을 한번 짚고 넘어갈 필요가 있다고 생각했다.
개발자는 새로운 지식을 항상 습득해야 한다. 내가 사용하고 있는 기술에 관련한 것, 내가 다뤄보지 않은 기술, 사용할 지 않을지 모르는 지식, 심지어 소프트스킬이라도 새로운 지식을 매일 습득해야 한다고 생각한다. 배움을 게을리 하지 않으며 평생동안 공부하며 사는 것이 개발자의 숙명이라 생각한다.
적어도 내가 개발 중에 사용하는 것 (하나의 기술 스택, 클래스, 라이브러리, 작은 메소드라도)은 확실히 알아야 한다. 내가 생각하는 확실히 아는 것의 기준은 이렇다.
1. 그것이 어떤 원리이고 어떻게 사용할 수 있는지 달달 욀 수 있어야 하고(이론적)
2. 내가 아는 지식에 대해 설명하고 질문에 대답할 수 있어야 하며(이론적)
3. 실제로 응용하는데 어려움이 없어야 한다(활용, 실전)
이것을 만족하지 않는 스킬, 지식은 내가 확실히 알지 못하는 것이라고 생각한다. 이 기준을 바탕으로 메타인지와 스킬 개선에 도움이 될 것이다.
개발자는 항상 의심해야 한다고 생각한다.
"내가 한 것이 과연 최선의 방법인가?"
"좀 더 나은 방법이 있었을까?"
"유저 입장에서 불편함은 없을까?"
"정말 완벽한 동작과 기능을 수행하는가?"
물론, 안 돌아가는 프로그램보다 돌아가는 쓰레기가 더 낫다. 그리고 완벽함이 항상 옳은것은 아니다. 적당한 완벽주의가 낫다. 무제한의 시간을 주는 프로젝트는 세상에 없다.
하지만 위의 의심들은, 분명히 개발자로서 나를 성장시킬 동력이 된다. 하나의 프로젝트를 끝냈을 때, 또는 어떤 서비스를 개발한 후에
저 질문을 던지고, 보완점을 찾고,
부족했던 점을 파악하고,
다음에는 좀 더 아는 개발자가 되는 것이다.
일단은 위의 3가지 마인드셋을 설정하고, 이를 기반으로 내가 가져야 할 습관들을 도출해보았다.
우테코 서류 지원이 40일 조금 넘게 남았다. 만약 합격한다면 그곳에서도 가르쳐 주는 개발자로서의 마인드셋이 분명히 있을것이다. 그러나 크게 다르지는 않을 것이라고 생각한다. 선배 개발자들이 항상 말하는 것들을 내 나름의 판단으로 정한 것이니까.
좀만 더 힘내고, 열심히 하자. 후회만 안하도록 쏟아붓자.