좋은 개발자

- 8 mins

좋은 개발자


우선, 이 글은 좋은 개발자에 대한 답을 내리는 글이 아님을 밝힌다.

답을 알았다면 굳이 이런 글을 쓰지도 않았을것이다.

그냥 비슷한 고민을하는 다른 사람들의 의견을 듣고싶어서,

나의 사고 과정을 최대한 날 것 그대로 전달할 수 있도록 정리한 글이다.


1. 좋은 개발자?


“좋은 개발자란 뭘까?”

다들 한 번쯤 이런 고민을 해봤을지 모르겠다.

정말 좋은 개발을 하고싶어서든, 면접 질문에 대비해서든 말이다.

나또한 스스로 잘 하고 있는지 의문이 들 때면 종종 질문하곤 하는데,

항상 대답하기 어렵다.


사실 구글링 해보면 이미 다른 사람들이 포스팅 해놓은 좋은 글들이 꽤 많다.

좋은 개발자의 5가지 기준

[번역] 더 나은 개발자가 되는 8 가지 방법

좋은 개발자의 자질이란?

등등 더 많은 글들이 있는데,

특히 인상깊게 읽었던 글 세 개를 추렸다.


일단 위 포스팅의 내용이 부족하다는게 절대 아니다.

모두 100% 공감 가는 내용들이다.

내가 부족했던 부분이 무엇이며,

앞으로 나아가야할 방향성을 잡아주는데 정말로 많은 도움이 되었다.


하지만 여전히”좋은 개발자는 무엇일까?” 에 대한 의문은 지속되었다.

위 글의 내용들은 사실 비단 개발자에게만 적용되는 것이 아니라,

일반적으로 ‘사회 생활’ 이라는것을 잘 하기 위해 필요한 자질이거나,

개발자의 ‘기술적인’ 부분에서 어떤식으로 방향성을 잡아야하는지에 관한 내용이 주를 이룬다.


코드를 많이 읽어야 하고, 동작하는 코드가 전부가 아니며,

의사 소통 능력 또한 중요하고, 도구에 매몰되지 말라던지,

개인 프로젝트를 진행하는 것이 도움이 될 것이며,

학습 및 관리 능력의 중요성에 관한 이야기말이다.


누군가에겐 이것만으로도 충분히 100% 만족하는 답이 되었을수 있다.

사실 나도 99%이상 만족했고, 다만 나머지 1%를 고민하고 있는 것 같다.

오히려 그렇기때문에 가끔 스스로 이런 질문을 던질때면 더 머리가 아프다.


천만 피스짜리 퍼즐이 거의 완성되고 단 한칸만이 남았는데,

한조각을 잃어버려 다시 똑같은 천만 피스짜리 퍼즐을 구매해 남은 한조각을 찾는 느낌이랄까?


글, 뭔가 조금 더 본질적인 대답이 필요한 것 같다.

여하튼 이런저런 쓸데없는 생각을 하다가 문득 이런 생각이 들었다.

‘좋은 개발자’ 라는 단어 그 자체에 조금 더 집중해서 분해를 해볼까?


[좋은 개발자] 에 대한 답이 한 번에 나오지 않으니

[좋은], [개발자] 두 개로 쪼개서 생각해본다는 뜻이다.

한 눈에 이해하기 어려운 코드를 기능별로 나누어 분석하듯이 말이다.


자, 그럼 본격적으로 시간을 낭비해보자.

좋다는건 뭘까?

개발자는 뭘까?


2. 좋은?


오늘도 여느때와 다름없이 쓰잘데기 없는 생각을 하다가 문득,

“질문이 너무 추상적이다.” 라는 생각이 들었다.

일단 ‘좋은 개발자’에서 ‘좋은’ 이라는 말 자체가 너무 추상적이다.


뭐가 좋다는거지?

‘기분이’ 좋은 개발자는 아닐거고,

‘집안이’ 좋은 개발자는 더욱 아니겠지.


그럼 ‘성격이’ 좋은 개발자일까?

‘머리가’ 좋은 개발자?

아니면 ‘코딩 실력’이 좋은 개발자?


어쨌든 ‘개발을 하는 자’ 니까,

그럼 ‘개발 능력이’ 좋은 개발자.

라고 생각해보자.


근데 ‘개발 능력’ 이라는 말에 또다시 ‘개발’ 이라는 말이 들어간다.

그럼 결국 좋은 개발자는 그냥 개발을 잘하는 개발자인가?

마치 무한 재귀함수안에 갇혀버린 지역변수가 된 것 같은 느낌이 든다.

내 뇌가 파이썬이었다면 아마 1001번째 재귀에서 터져버릴지도 모르겠다.


어쨌든 다시 본론으로 돌아와서.

좋은 개발자라는건 도대체 뭘까?

모두가 좋은 개발자가 되기를 바라지만,

명쾌한 답을 내리는 사람은 드물다.

(사실 한 명도 없었지만, 단정짓는것은 항상 위험하니까)


그렇다면,

이번엔 ‘좋은’ 이라는 단어보다,

‘개발자’ 라는 단어에 좀 더 집중해보기로했다.


3. 개발자?


말그대로 단어 그 자체에 집중해보자.

단어라고 하니 뭔가 자연스레 영어 단어가 떠올랐다.

개발자는 영어로 Developer.


당연한 말이지만,

“개발자는 개발하는 사람” 이라면,

“Developer는 Develop하는 사람” 이다.


하지만,

“개발자는 Develop 하는 사람” 이다.

라는 식으로는 생각해 본적이 없는 것 같다.

(정말 쓸데없다)


어쨌든 나는 무언가 실마리를 찾은 기분에 재빨리 번역기를 돌렸다.


gaebal


개발하다 -> Develop.

별거 없다.

이번엔 영어와 한국어를 뒤집어봤다.


develop


Develop -> 나타나게 하다.

솔직히 난 세 가지 측면에서 꽤나 놀랐다.


단순히 영어와 한국어를 뒤집었을 뿐인데,

‘개발하다’가 아닌 ‘나타나게 하다’ 라는 의미로 번역이 된 것이 첫 번째.


그리고 두 번째 (사실 꿈보다 해몽이긴 한데)

“나타나게 하다” 라는 것이,

기존에 존재하지 않던 미지의 무언가를 나의 힘으로 “나타나게 한다”는 느낌으로 다가왔다.


마지막 세 번째는 발달[시키다], 발전[시키다], 발육[시키다], 발현[시키다] 등,

[시킨다] 라는 무언가 상당히 진보적(?) 능동적(?) 의미로 번역되었다는 것이다.


헛소리처럼 들려도 어쩔 수 없지만,

솔직히 ‘개발하다’ 와 ‘발전 시키다’ 는 완전히 다른 느낌으로 받아들여졌다.


어쨌든, 그래서 이번엔 ‘시키다’를 검색해봤다.

shikida


좋은 개발자는 무엇일까? 라는 질문에,

어쩌면 반 걸음 정도는 가까워 진 것일지 모르겠다는 생각이 들었다.

좋다는것은 아직까지 무엇인지 잘 모르겠지만,

개발자로써 지향해야할 방향이 무엇인지 조금은 알 것도 같다.


특히 인상 깊었던 부분은,

“자기 뜻에 따라 어떤 일을 하게 만들다”

“어떤 행동을 하도록 작용을 가하거나 영향을 미치는”

이 부분이다.


4. 영향을 미치는


너무 당연한 부분이라서 놓치고 있던 부분이 있는데,

실제로 좋은 개발자라고 평가되었던 사람들은 항상 무언가에 “영향을 미쳤다”

그리고 개발자의 의도에 따라 사용자들이 “어떤 일을 하게 만들었다”


웹의 아버지 버너스리는, 세상을 연결시키는 방식에 영향을 미쳤다.

밤새 손편지를 쓰고 우표에 침을 발라붙여 우체통에 넣는대신,

언제 어디서든 네모난 화면만 있으면 지구 반대편에도 즉시 편지를 보낼 수 있게 만들었다.

(+ 물론 단순히 편한것을 떠나서, 좋은지 나쁜지의 문제는 개인이 판단할 부분이긴 하다)


페이스북의 주커버그는, 사람을 연결시키는 방식에 영향을 미쳤다.

지인들에게 발품을팔아 몇다리를 물어물어 친했던 동창의 연락처를 알아내는 대신,

학교 정보를 입력하고 앉아서 가만히 기다리면 자동으로 친구 추천이 뜨도록 만들었다.

(+ 이 부분도 마찬가지)


또한, 이들을 정말 좋은 개발자로 평가하느냐 또한 개인차가 있을 수 있다.


어쨌든.

사실 거창하게 생각할 것 없이 그냥 서비스 기준으로만 생각해봐도,

유튜브, 아마존닷컴, 카카오톡, 배달의 민족, 쿠팡 등등…

이러한 서비스를 만들고 유지보수하는 이들은 어떤 방식으로든 세상에 “영향을 미치고” 있는 것이고,

개발자로써 본연의 역할을 다 하고 있는 것이라고 봐도 괜찮지 않을까?


뭔가 생각이 많이 진전된 것 같긴 하지만 약간 부족하다.

그럼 구글, 아마존, 카카오, 우아한 형제들, 쿠팡을 다니면 “좋은 개발자” 인가?

그게 정말 여태까지 그렇게 고민했던 질문에 대한 답인가?

라고 물어보면 다시 물음표가 떠오르기 때문이다.


그리고 생각을 조금 더 확장해보면,

비단 기술을 연구해 서비스를 설계하고 코딩하는 기술자 뿐 아니라,

어떠한 방식으로든 원활한 서비스 제공에 기여한다면 “개발자” 라고 봐도 무방하지 않을까?


그렇다면 기획자든 디자이너든 영업사원이든 경영지원 부서든,

누구나 개발자(무언가 영향을 미쳐 세상을 발전시키는 사람)가 될 수 있는 가능성이 있다고 본다면,


반대로,

“코딩을 하는 사람”이라고 꼭 “개발자”라고 볼 수는 없겠다는 생각이 들었다.

(그리고 불현듯, 블로그 명을 무려 “코딩장이”로 만든것이 떠올랐고, 생각을 잠시 멈췄다)


5. 그래서 결론이 뭐야?


미안하다.

글의 서두에도 말했지만, 이 글은 결론이 없다.

무언가에 대해 답을 내리기 위한 글이 아니었다.

그럼에도 이런 헛소리를 장황하게 끄적여댄 이유를,

결론 대신 적고 끝내겠다.


사실 나는 기본적으로 약간 장난끼가 많은 성격이라,

진지한 이야기를해도 친구들이 그냥 장난하는것처럼 느끼는 경우가 많다.


특히나 좋은 개발자니 어쩌니 하는 고민은.

사실 내가 생각해도 뭔가 뜬구름 잡는 고민처럼 보이고,

더구나 보시다시피 나조차도 정리가 안되어있기 때문에,

아무리 가까운 사람이라도 누군가에게 이 생각들을 꺼내놓기가 꽤 조심스러웠다.

(특히나 비 개발자인 친구들에게는 절대 엄두도 못낸다)


솔직히 사전가지고 장난질(?) 할때만해도 뭔가 답이 나올 줄 알았고,

글을 쓰며 생각을 마무리하고, 나만의 답을 내린 후, 멋지게 똭! 포스팅을 하려고했다.


근데 사실 이정도까지 생각이 도달하고나니 다른 의미로 생각이 조금 더 복잡해졌고,

글로 적어내려간 김에, 혹여나 이 글을 보는, 같은 고민을 하는 누군가가 봤다면.

그리고 이런 주제가 평소에 꺼내기 낯간지러운 이야기라 나처럼 담아뒀다면.

온라인에서라도 함께 편하게 이야기해보는 장(?)이 되었으면 좋겠다싶었다.


거창하게 말했지만

쉽게 말해 떡본김에 제사지내듯이, 쓴김에 그냥 올려버렸다.


어쨌든 어설프게나마 마무리 하자면.


결국은,

개발자로써 개발이 가진 진정한 의미와 가치가 무엇인지에 대한 이해가 부족했고.

기술적으로 부족하다는 생각이 앞서서 그런지 기술적인 부분에 너무 매몰되어있던 것 같다.


겉으로는

“여태까지 없던 새로운 건물을 짓고싶다” 고 말하면서,

실제로는

“땅팔때 포크레인을 써야하는 이유와 삽과 비교했을때 장단점” 같은것에 목숨 걸었다거나.


당연히 다양한 기술에 대한 습득과 분석이 필요 없다는 뜻은 아니고,

그냥 다소 극단적으로 비유하고싶었다


6. 다시 질문


그럼 다시 처음 질문으로 돌아와서.

“좋은 개발자”라는것은 무엇일까?


여전히 답은 모르겠다.

하지만 이 질문에 대한 답을 위해서는 비단 기술적인 고민뿐만이 아닌,

꽤나 철학적인 고민이 상당히 동반되어야 한다는 확신이 든다.

또한 그 고민은 책상머리에 가만히 앉아서 풀어낼 수 있는것들이 아니다.


처음부터 엄청난 영향을 미치는 의미있는 작업물을 내지는 못하더라도,

현재 가진 초라한 도구와 지식으로 무엇이든 직접 만들어보자.

나 자신, 주변 사람을 첫 번째 고객으로 삼아 작은 서비스부터 시작해보자.


크고 아름다운(?)것을 만들 자신은 없지만,

작더라도 의미있는것을 만들어 보고싶은 열정은 넘친다.


G20 정상회의를 진행해도 손색없을 삐까번쩍한 고층빌딩을 세울 자신은 없어도,

장마철에 길고양이들이 잠깐 비를 피할 판자집 정도는 만들 열정이 넘친다는 뜻이다.

포크레인을 운전하는건 아직 미숙하지만,

그래도 나름 몇년간 벼려온 멋진 삽과 망치가 있다.


마지막으로 다시 물어보자.

“좋은 개발자는 무엇인가?”

언젠가 이 질문에 스스로에게 명확한 답을 줄 수 있는 날이 온다면,

그때는 다른사람이 보기에도

“뭐 그래도 나름 괜찮은 개발자”

정도는 되어있지 않을까 하는 작은 기대를 해본다.


7. 삽 꺼낸김에 땅파기


원래 포스팅은 6번에서 마무리였는데,

올라오자마자 포스팅을 읽은 친구가 좋은 아이디어를 내주었다.


추상적으로 앞으로 잘 하겠다고 다짐하고 끝나기 보다는,

말이 나온김에 이 글 자체를 당장 나의 첫번째 프로젝트로 삼아보라는 것이었다.

앞으로의 작업하는 결과물들은 완성이 되는대로 이 글 밑에 링크를 달아 내려가는 것이다.

매우 좋은 아이디어, 매우 좋은 친구다.


오늘 날짜는 2019년 07월 23일이다.

올해가 가기전에 직접 만든 서비스를 한 개 이상 만들어 배포하겠다.

개인적인 다짐이지만, 반드시 지키기 위해 일부러 공개적인 위치에 선언한다.


항상 웹 기반 서비스를 만들어보고 싶었기 때문에,

서비스가 올라오는대로 이 밑으로 링크를 달아나가도록 하겠다.

서비스를 제작, 운영하며 무수히 겪을 기술적, 전략적 이슈에 관해서도 따로 정리할 것이다.


잡소리 그만하고,

땅을 파보자.


8. 삽질의 결과물들 (since 2019.07.23)




코딩장이

코딩장이

-장이: [접사] ‘그것과 관련된 기술을 가진 사람’의 뜻을 더하는 접미사.

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora