뛰어난 개발자와 그저그런 개발자

뛰어난 개발자와 그저그런 개발자.

나 자신은 그저그런 개발자에 속한다는 것을 반성하며 이야기를 시작한다.

---
각기 다른 개발자, 팀 또는 회사 간에
서로 개발한 소프트웨어 결과 물을 이용하여 연동을 수행할 일이 생기곤 한다.
대규모 소프트웨어를 혼자 다 개발할 수는 없으니,
이를 잘게잘게 쪼개어 개발한 후 조각들을 서로 맞추어보는 것이다.

각자 개발하고도 조각들을 문제없이 서로 잘 맞게 하려면,
미리 정해놓은 표준 인터페이스(연동규격)을 정해두고 이를 잘 준수하며 개발해야 한다.
인터페이스 설계가 잘되어 있고 이를 모두가 잘 지켰다면,
한 치의 오차도 없이 레고블록처럼 맞아떨어져 하나의 소프트웨어 작품으로 탄생하게 된다.
(물론 연결부 뿐 아니라 각자의 내부도 잘 구현되어 있어야 한다.)

그런데, 실제 연동 시험을 해보면 예상치 못한 문제 상황들이 수시로 발생하게 된다.
문제는 그러한 상황의 원인 규명이 때로는 쉽지 않아,
누구의 잘못인지 직관적으로 알아내기 어려울 때가 있다는 것이다.

그 때부터 서로 간의 미묘한 자존심 대결로 이어지는 경우들이 있다.

참 묘하게도 이런 상황이 되면,
누구나 자연스럽게 자기 쪽 문제는 아닌 것으로 생각을 하게 된다.
참여자 모두가 "내가 그렇게 꼼꼼하게 작업을 해왔는데..." 그럴리가 없다고 은연중에 생각하는 것이다.

이렇게 연동시험에서 문제가 발생할 때,
뛰어난 개발자(또는 자질있는 개발자)와 그저그런 어설픈 개발자를 가르는 내 나름의 기준이 있다.

뛰어난 개발자는
"어? 그래요? 흠... 제쪽 문제일수도 있으니 확인 좀 해볼께요."
라고 먼저 답한 후 자신의 코드와 테스트, 연동 인터페이스를 면밀히 검토한다.
그리고, 로그를 확인하여 input / output 값이 규격에 부합하는지 세심하게 분석한다.
한동안의 시간이 흐른 후,
그는 거의 정답에 가까운 분석 결과를 가지고 다음 대화를 이어간다.
또는 원인을 파악하는데 도움이 될 만한 의미있는 단서 몇개를 들고 나타나 소통을 이어간다.

그저그런 개발자는
"어? 그래요? 그럴리가 없는데... 이미 확인한건데... 그쪽 그거 인터페이스 잘 보고 개발하셨어요?"
라고 먼저 답한 후 그냥 가만히 있는다.
그리고, 별 것없는 스마트폰을 들여다보며 상대방의 다음 Action 을 기다린다.
당연히 상대방 문제일 것으로 생각하는 것이다.

뛰어난 개발자는
"사람은 실수하는 존재"라는 점을 너무나 잘 알고 있으며,
그 대표적인 예가 자신이라는 것을 인지하고 있는 사람이다.

그래서, 코드를 작성할 때 테스트코드를 섬세하게 작성하며,
후일 저지를지 모를 자신의 실수를 미연에 막을 수 있는 장치들을 곳곳에 마련해둔다.
몇일만 지나도 잊게 될 자신의 코드이므로,
"미래의 나"는 곧 "남"으로 취급하여 책임감있게 준비해둔다.
이는 무척이나 귀찮으며 인내심을 요구하는 작업들이다.

위에서 발생했던 연동 문제는 결국 유유히 휴대폰을 보던 그 개발자 측의 문제일 가능성이 훨씬 더 크다.
이 문제는 뛰어난 개발자가 저 유유자적하던 개발자측의 문제지점을 콕 짚어주면서 해결될 것이다.

뛰어난 개발자(또는 가능성있는 개발자)와 그저그런 개발자를 가르는 기준은 무엇일까?

그것은 바로 "문제 상황을 대하는 책임감있는 태도"라고 생각된다.

You may also like...

0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Kendrick

좋은글 잘 봤습니다

1
0
Would love your thoughts, please comment.x
()
x