본문 바로가기

LANGUAGES, METHODLOGY/Clean Architecture

[클린아키텍처] 1부 : 클린 아키텍처, 그 첫 장

오랫동안 해야지 해야지 하고 사두고는 고이 꽂아 두었던 로버트 C. 마틴의 클린 아키텍처를 드디어 집어 들었다.

 

집어 들은데서 더 나아가 펼치기까지 했다(이건 누군가에겐 종종 대단한 일이 되기도 한다.)

 

아직 실제 클린 아키텍처에 대한 구체적인 내용은 들어가지 않았지만, 클린 아키텍처와 개발이라는 것에 대한 저자의 생각과

 

개발에 대해 어떠한 마음가짐을 가지고 들어가야 할 지를 흥미롭고, 공감되도록 하면서 경각심을 들게끔 하고 있다.

 

 

첫 장을 읽고 나서 내가 중요하게 생각하는 부분들 일부를 조금 정리해두려고 한다.

 

 

첫번째는 바로 경각심이다.

 

" 하지만 프로그램을 제대로 만드는 일은 전혀 다르다. 소프트웨어를 올바르게 만드는 일은 어렵다. 소프트웨어를 제대로 만들려면 적정 수준의 지식과 기술을 겸비해야 하지만, 대다수의 젊은 프로그래머는 이 수준에 도달하지 못했다. 또한 사고력과 통찰력을 갖춰야 하지만, 대다수의 프로그래머는 시간을 들여 이러한 능력을 개발하지 않는다. 그리고 어느 정도의 훈련과 헌신이 필요하지만, 대다수의 프로그래머는 훈련과 헌신이 필요하리라는 생각조차 하지 않는다. 소프트웨어를 올바르게 만들려면 무엇보다도 기술을 향한 열정과 전문가가 되려는 열망이 필수다." -2pg

 

그렇다. 사실 평소에도 올바른 방법과 새로운 기술들에 대해 흥미를 가지고 적용하기를 좋아하는 나이지만, 사실 그 시점들은 퇴근을 하고 집에 오는대로 그대로 '종료' 되어버리는 행위가 되기 일쑤였다. 요즘들어 개발자에 대한 인식이 개선되고, 억대 연봉 소식 참 좋아하는 언론들에 힘입어 개발자라는 직군이 대두되고 있지만, 사실 그러한 포지션은 변호사가 변호사 자격증이 있다는 것 만으로 변호일을 할 수 있다는 말과는 조금 다르다. 즉 어떤 일에 종사한다고 해서 그 개발자가 이 개발자와 절대 개발의 수준과 생각하는 관점등에 있어서 같다고 할 수 없는 것이다.

 

현업에 있다 보면 사실 0부터 10의 힘을 들여 어떠한 로직을 구성한다고 할 때, 3과 4에서 그치게 되는 일이 다반수가 될 때가 있다. 짧은 시간 안에 필요한 요구사항을 충족해야 하는 경우라면 더욱이다. 허나 사실, 이 책의 서두에서부터 강조하는 '수정 가능성과 유지보수의 용이함, 비용의 절감'의 측면에서 보았을 때는 적어도 7에서 8의 노력은 기울여 내가 구성한 로직이 이후 수정에 용이한지, 협업이나 이후 유지보수에 있어서 다른 로직과의 결합도로 인해 신규 개발에 차질을 줄 수 있을지 등을 꽤나 고심해야 하는 것이 분명한 것이다.

 

이러한 고민들, 내가 프로젝트에 늘어놓게 되는 코드들이 단순한 어떤 기능만을 위한 문장이 아닌, 현재와 미래를 전부 아우를 수 있는 그러한 가능성에 대한 고민을 거친 코드들을 만드는 것. 그것이 바로 훌륭한 개발자이자 억대 개발자가 될 수 있는 '자질'을 갖출 수 있는 길일 것이다.

 

두번째는 책임감이다.

 

효율적인 소프트웨어 개발팀은 이러한 투쟁에서 정면으로 맞서 싸운다. 효율적인 소프트웨어 개발팀은 뻔뻔함을 무릅쓰고 다른 이해관계자들과 동등하게 논쟁한다. 소프트웨어 개발자인 당신도 이해관계자임을 명심하라. 당신은 소프트웨어를 안전하게 보호해야 할 책임이 있으므로 당신 역시도 이해관계가 있다. 이것이 바로 당신의 역할 중 하나이며, 당신의 책무 중 하나다. - 20pg

 

로버트 C 마틴은 1부의 말미에 위와 같은 내용을 언급하면서, 개발팀이 조금 더 당당해짐과 동시에 옳은 가치를 위해 '투쟁'해야 함을 강조하고 있다. 사실 어떠한 집단이 좀 더 보수적이라거나, 조금 더 유연하지 못한 조직이라고 할 때에는 사실 개발팀의 처지라던지, 사내의 프로젝트가 가지고 있는 어떠한 지켜야 하는 요소들과 가지고 있는 한계들에 대해 어필하기 어려울 수 도 있을 텐데, 사실 이 부분에 대해 만일 투쟁해야 할 때에 무릎을 굽히게 된다면 이는 상황에 따라 잘못된 설계를 짧은 시간 안에 상당히 많이 하게 될 수 도 있는 것이고, 이는 결국 이후 많은 시간 뒤 이를 다시 스스로 뒤엎어야 하는 안타까운 처지에 몰릴 것이 분명하다.

 

그렇다. 소프트웨어를 설계하고 개발하는 것에서 나아가 이를 '보호'하는 것도 개발자의 책무이자 책임감인 것이다.

 

 

이제 어느새 3년 동안 안드로이드 개발을 해오면서 겪어왔던 순간 순간들과 값지거나 답답했던 경험들을 되돌아볼 수 있는, 공감을 얻음과 동시에 가슴을 뛰게 만드는 1부가 아닌가 싶다. 유투브에서 UDT 특수부대원들이라던지 707 특임대들이 훈련할 때에는 항상 '진지하게' 해야 하며 하도록 강조한다는 데, 이는 비단 특수부대원들에만 해당하는 일은 아닐 것이다. 이는 여느 직군의 종사자에서 나아가 개발자에게 진정 필요한 것이 바로 이 '진지하게' 임하는 것 아닐까? 

 

앞으로 책에 대해 진도를 내 가면서, 필요한 핵심 내용들, 내가 겪은 소회들을 쭉 포스팅 해 나갈 계획이다.

 

지금의 시점이 분명 큰 폭으로 성장하기 이전의 모멘텀이라는 생각을 가지고, 다시 벅차게 키보드를 두드려볼 때다!

 

 

클린 아키텍처

“살아있는 전설이 들려주는 실용적인 소프트웨어 아키텍처 원칙”소프트웨어 아키텍처의 보편 원칙을 적용하면 소프트웨어 수명 전반에서 개발자 생산성을 획기적으로 끌어올릴 수 있다. 《

book.naver.com