EngineeringProblem SolvingSoft Skills

문제 해결 능력

·5 min read

대 AI시대, 딸깍으로 제품이 나오는 시대이다.

과거부터 3D 직업으로 천대받던 개발자들은

지 밥통부터 걷어차기 시작하더니 이젠 AI 쓰네 마네로 싸우기 시작한다.

"아니 AI가 코드 짜주는데 개발 왜함?"

개인적으로 성을 빠르게 짓는거랑,

그 성 가지고 전쟁하면서 유지관리 하는건 다른 영역이라고 생각한다.

아무튼간에 오늘의 주제는 문제 해결 능력이다.

"AI 시대 다시금 기본, 문제 해결 능력이 중요하다."

그래서 이게 도데체 뭐냐,

나도 나름대로의 답이 있긴하다.

개발의 꽃은 뭐냐 디버깅이다.

예전에 신입 사원이 간단한 버그를 1시간째 찾지 못하는 경우가 있었다.

오래되서 잘 기억은 안나는데, 데이터에 이상한 값이 들어오면서 발생한 버그였던거 같다.

신입은 데이터 처리 로직을 계속 보면서 어디가 문제인가를 추측하며 찾고있었다.

다만 근본적인 문제는 화면에서 데이터 전송시 발생했다.

화면에서 데이터 콘솔로 찍어보면 나올 문제를 로직을 보면서 찾고 있었던 것이다.

아무튼 내게 있어서 문제 해결 능력이란,

먼저 그 문제를 "어떻게 정의하는 가" 부터 시작한다.

정의

일단 문제에 대한 정의부터 시작한다.

정확히 어떤 오류 메시지가 발생했는지,

이 오류 메시지의 의미가 뭔지,

오류 발생 위치는 어디인지

분해

상황과 위치가 파악되었다면,

일어날 수 있는 가능성을 정리하라고 했다.

하나에 문제를 여러 방향으로 분리해서 생각하기 위해서이다.

만약에 서버가 OOM으로 죽는다.

대부분은 자원 해제 문제로 인한 메모리 누수일 것이다.

어쩌면 파일처리 영역이거나,

아니면 Thread 문제일 수 있다.

하드웨어 서버 구성 상태와 JVM 메모리 설정이 관계 있을 수 있다.

식별

가능성에 대한 분류가 끝났다면,

해당 가설이 맞는지 단서를 찾아 나간다.

대부분은 디버깅 찍고 데이터 상태를 추적하는 일이다.

지금까지 해왔던 일이라는게 문제가 터진 상황에서 어떻게 복구하고 수습하느냐의 문제다 보니,

정의, 분해, 식별로 가능성을 좁혀나가며,

발생한 문제를 처리하는 것

내게 있어서는 이게 문제 해결 능력이다.

멘토링

나 말고 다른 사람의 생각은 어떨까?

현직에서 일하는 좀 더 경력이 높은 사람의 의견도 궁금해서 멘토링 시간에 여쭤봤다.

답변을 요약하자면 "정의하기 나름"이라는 것이다.

사실 문제 해결에 있어서 구현이냐, 유지보수냐, 트러블 슈팅이냐에 따라서 정의가 다를 것이다.

누군가는 코딩 테스트라 할 것이고,

누군가는 아키텍처 구현 능력,

누군가는 태스크에 대한 인적 리소스 및 리스크 관리 능력

저마다 답이 다를 것이다.

공통점이 있다면 저마다의 판단 기준이나 프로세스가 있지 않을까?

← Previous
메타의 AI 전략
Next →
NoSQL 자료 구조