
레벨 1과 2가 어느덧 마무리되어 가면서, 이제는 그동안 배웠던 다양한 이론과 기술을 총동원하여 실질적이고 의미 있는 프로젝트를 진행하는 레벨 3에 접어들게 된다. 이 중요한 시점에, 지금까지의 여정을 돌아보고 그간의 미션과 강의를 통해 내가 구체적으로 무엇을 배우고, 얼마나 성장했는지 진지하게 고민하고 되짚어보는 시간을 가졌다. 동시에 처음 우테코라는 이 과정에 들어올 때 스스로 설정했던 목표가 무엇이었는지도 다시 한번 명확하게 떠올려 보았다.
나는 처음 우테코에 들어왔을 때 단지 ‘우테코 수료생’이라는 타이틀을 갖기 위해서가 아니라, 단순히 작동만 하는 프로덕트를 만드는 개발자가 아니라 정말 제대로 된 프로덕트를 잘 만들 수 있는 개발자가 되고자 했다. 즉, 사용자가 만족할 수 있고, 기술적으로도 탄탄하며, 유지보수 측면에서 뛰어난 프로덕트를 만드는 능력을 갖추는 것이었다. 더 나아가서 열정적이고 우수한 동료들과 함께하면서 그들로부터 긍정적인 자극과 동기부여를 받고, 나 자신을 발전시키기 위해 좋은 습관들을 최대한 많이 습득하고 싶었다. 나보다 뛰어난 사람들과 함께하며 자극을 받고 성장의 동력을 얻고자 하는 목표 또한 매우 중요하게 생각했다.
지금 이 시점에서 다시 돌이켜 생각해보면, 과연 나는 그 목표들을 얼마나 이루었는지 의문이 든다. 돌이켜보면 그동안 정말 많은 것들을 배우고 경험하면서, 기술적 지식도 늘었고 협업적인 측면에서도 상당히 성숙해졌다는 느낌을 받고 있다. 이전의 나와 비교해 봤을 때, 분명히 성장했다는 것을 느끼고 있고, 자신감을 얻은 부분도 많다. 그러나 한편으로는 그 배운 지식과 기술을 실제 프로덕트를 만들거나 현장에서 적용하려고 하면 여전히 막막하거나 자신이 부족하게 느껴지는 부분도 분명히 존재한다. 배웠다고 생각한 개념을 막상 코드로 구현하거나 실제로 문제 상황에 마주쳤을 때 능숙하게 대처하기에는 아직 부족함을 실감하고 있다.
특히, 내가 중요하게 생각하는 ‘유지보수하기 좋은 코드’를 작성하는 부분에서 더욱 부족함을 느낀다. 유지보수가 용이한 코드를 만들기 위해서는 인터페이스를 명확하고 깔끔하게 설계하는 것이 필수적이며, 객체나 컴포넌트 간의 역할과 책임을 명확히 정의하고 적절히 나누는 것이 매우 중요하다. 그러나 아직까지는 이 부분에 대한 나의 연습량이 충분하지 못해 실제로 적용하려고 하면 어려움이 느껴지고, 때로는 어디서부터 어떻게 시작해야 할지 막막한 순간도 있다. 이론적으로는 충분히 이해하고 있지만, 현실적인 프로젝트 상황에서는 생각만큼 쉽게 구현되지 않는 경우가 많았다.
결국 앞으로 진행될 레벨 3 프로젝트가 나에게 더욱 중요한 이유는 바로 이 때문이다. 레벨 3 프로젝트를 통해 지금까지 머릿속에만 있던 이론과 개념들을 실질적으로 적용하고 구현하면서, 내가 부족하다고 느끼고 있는 부분들을 적극적으로 찾아내고 보완할 필요가 있다. 또한 이 과정에서 유지보수하기 좋은 코드 설계의 핵심인 인터페이스 설계나 객체 간 책임 분리를 더욱 깊이 연습하고 고민함으로써, 그동안 습득한 지식이 단지 지식으로만 남지 않고 실제적인 역량으로 자리 잡도록 노력해야 한다.
이런 노력을 통해 우테코 과정을 마치고 난 이후, 내가 목표로 하는 진정한 의미의 개발자, 즉 단순히 기능 구현에만 초점을 맞추는 것이 아니라 장기적으로 좋은 품질의 소프트웨어를 설계하고 구현할 수 있는 역량을 갖춘 개발자가 될 수 있을 것 같다.