PortfolioIntroduction

Introduction

예측 가능하고, 실용적이며, 제품 중심의 사고를 하는 문제 해결사 백보성입니다.

Predictable

예측 가능한 코드를 작성하고 그 코드들을 예측 가능한 구조로 만들도록 노력합니다.

예측 가능한 코드

개발을 하다 보면 예상과는 다른 동작을 하는 코드들을 만나는 순간이 많습니다.

기대 -> setDate 함수를 사용하면 날짜의 상태를 바꾸겠지? 🙂

현실 -> setDate 함수는 날짜의 상태를 바꾸는 함수가 아니라 날짜의 형식을 정해주는 함수였네 😅

이러한 순간들이 쌓이다 보면 예측할 수 없는 코드들이 많아지고, 기능 추가에 대한 부담이 커지게 됩니다. 그래서 저는 코드를 보다 쉽게 이해하고 수정할 수 있도록, 코드가 가지고 있는 책임과 기대되는 동작을 일치시켜 예측 가능한 코드를 작성하는 것에 집중하고 있습니다.

예측 가능한 구조

예측 가능하지 않은 곳에 위치한 코드들은 아키텍처 관점에서 의존관계가 명확하지 않아, 예측 가능하지 않은 코드보다 큰 문제를 야기할 수 있습니다.

기대 -> features/auth 폴더에는 인증과 관련된 모든 로직이 있을 거야. 로그인 관련 코드를 수정하려면 이 폴더만 보면 되겠지? 🙂

현실 -> 인증 로직이 features/auth, components/common, utils/helpers, contexts/auth 등 여러 폴더에 분산되어 있네. 하나를 수정하면 다른 곳에서 예상치 못한 에러가 발생해… 😅

이러한 구조적인 문제는 단순히 코드의 가독성을 넘어서 유지보수의 어려움, 기능 확장의 제약, 그리고 팀원 간의 협업에도 큰 영향을 미칩니다. 그래서 저는 Feature-Sliced DesignClean Architecture 등에서 제시하는 개념을 바탕으로 코드의 위치와 의존성을 명확하게 하고, 각 기능이 예측 가능한 레이어에 존재하도록 경계를 나누는 것을 중요하게 생각합니다.

예측 가능한 사람

그리고 이제는 한 발 더 나아가 개발을 넘어서 기대를 저버리지 않는 예측 가능한 동료가 되도록 부단히 애쓰고 있습니다.

Pragmatic

실용적인 사고를 하고 그 사고를 실천하는 것을 중요하게 생각합니다.

기술을 위한 기술은 경계합니다

개발자로서 새로운 기술에 대한 호기심과 학습 의지는 매우 중요합니다. 그러나 이러한 열정이 본질을 흐리게 할 수 있습니다. 트렌디한 기술만을 쫓는 접근은 실제 문제 해결이라는 우리의 핵심 목표를 잊게 만들 수 있습니다. 가장 인기 있는 기술이라고 해서 무조건 사용해야 하는 것은 아닙니다.

현재의 문제를 해결할 수 있는 가장 적절한 기술을 선택하고 적용하는 것이 더 중요하다고 생각합니다.

깊이와 실용성의 균형을 추구합니다

코드의 동작 원리와 기술의 핵심 개념을 이해하는 것은 필수적입니다. 하지만 지나치게 깊거나 지엽적인 부분에 매몰되는 것은 오히려 생산성을 저해할 수 있습니다.

저는 사용하는 라이브러리가 있다면, 그 메인테이너가 의도한 라이브러리의 개념을 이해하고, 문제 해결에 직간접적으로 기여할 수 있는 수준이라면 더할 나위 없다고 생각합니다.

Product Driven

저는 MVP(Minimum Viable Product)를 실현하는 프로덕트 개발자로서, 개발하는 제품 도메인에 대한 깊은 이해를 추구합니다.

제품 중심의 사고

제품의 본질적 가치를 최대화하는 것이 저의 핵심 목표입니다. 이를 위해서는 단순한 기능 구현을 넘어서, 제품이 해결하고자 하는 본질적인 문제와 사용자의 니즈를 깊이 이해하는 것이 반드시 필요하다고 생각합니다.

비즈니스 요구사항을 단순히 받아들이는 것이 아니라, 그 요구사항의 근본적인 목적을 이해하고 때로는 더 나은 해결책을 제시할 수 있는 개발자가 되고자 합니다.

프로덕트에 대한 이해도를 바탕으로 하는 아키텍처 설계

제품의 도메인에 대한 깊은 이해는 좋은 아키텍처의 토대가 됩니다. 도메인 지식을 바탕으로 책임을 명확히 분리하고, 변경의 방향을 예측하여 유연한 설계를 할 수 있습니다.

Problem Solver

저는 현실의 복잡한 문제를 해결하기 위해 개발자라는 직업이 존재한다고 믿습니다. 문제 해결 과정에서 시야를 단순히 개발에만 국한하지 않습니다. 우리가 해결해야 할 문제는 종종 PO나 PM 혹은 다른 이해관계자에 의해 제시됩니다. 이때, 제시된 해결 방식을 그대로 따르기보다는, 개발자의 관점에서 더 나은 해결책을 모색합니다.

저는 문제의 본질을 파악하고, 다양한 관점을 고려하여 최적의 해결책을 찾는 것을 중요하게 생각합니다. 이를 통해 단순한 문제 해결을 넘어, 제품과 사용자에게 실질적인 가치를 제공할 수 있는 개발자가 되고자 합니다.

물론 문제와 해결 방식을 제안하는 이들의 전문성을 무시하지 않습니다. 그들의 전문성을 바탕으로 문제를 해결하는 데 몇 가지 선택지를 더 열어주는 것을 중요하게 생각합니다.