ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바공화국에서 Java 개발자의 Python 사용하기 ( feat. 경험담 )
    잡동사니/Developer 2021. 10. 25. 11:05
    반응형
    언어는 도구이고 그것을 사용하는것은 결국 사람이다! 


    흔히들 많이 하는 말들중 하나가 결국 어느정도 수준이되면 언어는 단순 도구에 지나지 않는다고 한다. 개발자들에게 유명한 이야기지만 남자들이라면 무협지에서 흔하게 많이 나오는 말중 하나다. 

     결국 모든 길은 하나로 통하게 되고 그 끝에 다다르면 내손에 무엇이 쥐어져있는건 그렇게 중요하지 않다

    최근에 이직을하고 새로운환경 새로운 사람들과 일을 시작하다보니 나 스스로도 배울것이 아주 많아 졌다. 간만에 느껴보는 쫄깃함(?) 이랄까? 10년차 개발자가 되면서 사이드로 여러가지 언어들을 사용했지만 결국엔 자바공화국에 사는 대한민국 개발자로써 메인은 항상 자바였다. 

    자바를 사용하면서 다른언어들에 대해서 관심이 없던것은 아니였고 성격상 다른것들을 조금씩 해보는 수준이였지만 어떻게 보면 이번 나의 선택은 아주 큰도전이 될듯하다. 과감히 자바베이스 환경에서 파이썬 베이스 환경으로 이직을 하였다. 

    다들 주변에서는 왜 그런거야 라는 식의 반응이 많다. 나 스스로도 처음엔 굳이 우리나라에서 자바말고 딴거 할게 있나 ? 라는 생각을 했지만 바로 그 생각을 지운 것은 주변에서 봐왔던 개발자들이 떠올랐기 때문이다. 

    PHP , JS , Java ,C# ... 많은 언어를 사용하는 개발자들을 봐왔지만 그 중 공통점은 자신이 선택한 언어에 대한 자부심이 강한 사람은 항상 존재했다. 지금 자신이 사용하는 언어로 다 가능한데 왜 다른언어와 환경을 굳이 새로 받아들여야 하며 그런 러닝커브를 가져갈 이유가 있냐라는 것이다. 이런 부류의  사람은 거의 모든 회사에서 있었던것 같다. 

     누가 정한거라고 하긴 그렇지만 나도 학교에서 프로젝트 진행 시 언어 선택도 프로젝트에 리스크가 될수 있단 걸 배웠고 실제로 잘못된 언어 선택으로 레거시화 되어 애물 단지 취급을 서비스를 보유 하고 있는  회사들을 수도 없이 봤다. 근데 그런 건 우리나라여서 인게 아닌가 하는 생각도 든다. 

     그이유로 첫번째는, 언제가부터 학교나 학원은 우리나라는 자바면 평생 먹고 살아라는식의 교육을 하기 시작했고 학생들도 보면 웹 개발자라고 나오는 학생들을 보면 jsp 를 배우고 나온다. 지금 Vue.js , React.js 그리고 MVVM 모델이 이미 당연한것처럼 여겨지는 이시대에 이시점에 말이다 ... 근데 참 아이러니한것은 저렇게 배워도 먹고 살수 있다. 

     그렇다면 먹고사는 문제를 떠나서 개발자로써는 어떨까라는 생각을 한다. 내자신을 비추어보면 개발자의 기준으로는 아직도 개발욕심이 많고 아직 모르는것들 이해못하는것들이 많다 보니 하나만 알고도 과연 모든 걸 할수 있을까? 정확히는 할수 있는 것과 더 좋고 잘되는 것은 다르다고 본다. 뭐든 할 수 있는게 중요한 건 잘되야하는게 아닌가 ? 적어도 내가 아마추어가 아니라면 말이다. 

     되기만하면 된다는 건 학생때까지만 해야하는 생각이란 든다. 결국 프로가 되고 돈을받고 일을 한다면 잘해야 하는게 중요한거 같다. 그리고 잘해야한다는것은 결국 내가만든 결과물이 기대만큼 성능을 충족할수있도록 만들어져야 한다고 생각한다. 

    자바는 컴파일러 언어다. 그에 따른 강점이 있다. 일단 대표적인건 

    런타임에러에 강하다!! 

     이것은 자바만 사용하던 사용자들한테는 뭔가 낯설수도 있다. 왜냐면 그냥 당연하듯 숨쉬듯이 그냥 지나쳤을 가능성이 높기 때문이다. 내가 파이썬을 쓰면서 가장 먼저 느꼈던 건 불안감이였다. 내가 짠코드가 실행되기 전까지 과연 문제가 없을까 ? 이건 스크립트 언어 모두의 문제다. 그래서 이런문제들에 대해서 테스트 코드라는 좋은 수단이 생겼고 100%는 아니여도 어느정도 내가 짠 코드에 대한 장애 여부를 파악할 기회가 생겼다고 생각한다. 그렇기 때문에 스크립트 언어 일수록 테스트 코드가 중요 하지 않나 싶다. 

    첫번째도 속도 두번째도 속도! 

    이건 말을 할필요가 없는것같다. 인터프리터가 하는 행위는 결국 컴파일러와 동일하다. 컴파일됬다면 당연히 빠른건 너무나도 명확하다. 극단적으로 보면 그렇다면 어셈블리어로 하지 그러냐는 말도 들어 봤지만 예전 기억에 웹어셈블리라는게 나왔었는데 결국엔 여러가지 이유로 흥하지 못했다. 아마 속도가 다는 아니라는 생각은 들긴 하지만 결국은 너무 극단적인건 좋지 않다라는게 증명된게 아닌가 싶다. 

     어떻게 보면 접근성과 퍼포먼스의 그 사이의 가성비를 적절히 잡고 포지셔닝에 성공한게 컴파일러 언어들이 아닌가 싶다. 스크립트 언어들이 아무리 빨라져도 결국 태생의 문제로 컴파일러 언어의 속도를 잡긴 힘들다 왜냐하면 스크립트언어가 빨라지는동안 컴파일러 언어들도 놀지 않기 때문이다. 간극은 아마 계속 유지 될것이다. 

    안정성 ! 

    노드를 맨처음 접하고 바로 포기했던 이유다. 노드 개발자에게 들은 이야기중 가장 황당했던건 서버가 그냥 죽는다는것이다. 왜죽는지도 잘몰라서 서버를 주기적으로 리스타팅을 해준다는것이다. 이게 그래도 시간이 지나면 좀 달라지지 않을까 ? 라는 생각을 했는데 내가 파이썬을 하면서 가장 신경쓴 건 생각보다 잘죽는다는것이다. 예외처리를 제대로 했다고 생각했는데 죽는것이다. 물론 그건 내가 잘못짰기때문이다. 하지만 동일하게 잘못 짰을 경우를 비교해보면 컴파일러 언어들은 에러가 나도 잘 버틴다는 느낌이 크다.  어떻게 보면 잘죽는게 무조건 나쁘다고 보긴 힘들것이다. 잘못된 행위를 쉬지않고 안정적(?) 으로 반복하는거보단 그냥 수행 안되는게 나을수도 있다. 하지만 자바개발자로써의 눈높이에서는 코드를 짜면서 느끼는 불안감은 어쩔수 없는거 같다.  이렇게 비교한다는게 나의 스크립트언어에 대한 이해도가 높지 않은 상태에서 개발된것을 비교 하기때문에 충분히 노드 개발자분들이 보기엔 말도 안된다고 반박할수 있다고 생각은 든다. 그저 자바개발자 관점에서 느낌점이라고만 ... 보면 좋지 않을까 ? 싶다... 실제로 주변에 Node.js 를 정말 예술적으로 잘쓰는분들이 계시고 분명 안정적으로 서비스를 잘 운영하고 계시기 때문이다. 

    엄청난 레퍼런스 ! 

    우리나라는 자바공화국이다. 아마 자바개발자 구하는것이 다른 개발자들보다 수월할것이다. SI 의 영향일수도 있다. 그리고 양산형 개발자(?) 들의 등장... 학원출신을 비하할생각은 전혀 없다. 학원출신이여도 잘하는분들을 무수히 봤고 나조차도 그렇게 남 평가할 수준이 못된다. 하지만 일부 개발자들이 퍼포먼스가 안나오는게 문제가 아닌가 싶다.  어찌됬든 국내 한정 방대한 인력풀로 커뮤니티 부터 각종 블로그들을 통해 충분히 레퍼런스들을 확보가 가능하다.

     그리고 우리나라 소위 네임드 개발자분들이 쓰신책들을 보면 자바로 예제 설명을 풀어놓는경우가 많다. 이것은 생각보다 많은 영향을 주는것 같다. 개발 패러다임이나 디자인들을 공부하려면 자바를 알아야하는 아이러니한 상황이 오기 때문이다. 그나마 다행인건 최근엔 파이썬이 굉장히 많이 예제로 나오는 추세인것 같다. 적어도 내가 보고싶었던 책들은 대부분 자바와 파이썬이 같이 나오는 경우가 많았다. 

     단순 레퍼런스가 많다는것 보단 내게 필요한 정보를 제공 받을수 있는 좋은 품질의 양이 중요한 것같다. 

     

    파이썬... 

     정식 파이썬 개발 1년차(?) 이다. 내가 파이썬을 해보기로한 이유를 기록하고자 한다.  솔직히 자바를 손을 안댄지 거의 1년 가까이 되가고 있다. 최근까지 코틀린을 사용했고 다른 글에서도 그랬지만 아마 난 앞으로 자바보단 코틀린을 선호 할것 같다. 

     누군가 왜 코틀린이냐고 하면 난 아주 당연하게 간결하고 명확하고 사용성이 좋아서요 라고 할것이다. 이게 모던 프로그래밍 언어들의 특징이 아닌가 싶다. 사용성과 편리성 은 공통점인거 같다. 사설이였던거 같고.... 

     간결함 

    파이썬을 본 자바개발자들이 제일 불안인게 왜 변수타입이 없어! 라고 한다. 근데 이건 안해봤기에 할수있는 실수 이다. 변수타입을 지정해서 사용할수 있다. 지정 방법은 오히려 코틀린스럽게 되있다. 

    sent_request_list(user_id: int, params: dict)

    꼭 앞에다 변수타입을 넣어야한다는건 고정관념이 아닐가 싶다. 코틀린을 쓰다보면 저런 문법은 오히려 더 익숙하다.  이게 왜편하냐면 코드를 짜다보면 자바의 종특은 코드가 늘어진다는것이다. new 라는 키워드 부터 시작해서 스트림을 사용하기 시작하면 기본 한줄을 넘기는것은 우습다. 이것이 끼치는 문제점은 바로 가독성이다. 아래로 내리면 되지 않겠냐고 하지만 그럼 Row 수가 증가한다. 

     그리고 loop, if 문등 기본 키워드 사용도 간결하다 사용해보면 확실히 느낄수 있다. 

    데이터 가공!! 

    파이썬으로 데이터 가공을 해보면 왜 빅데이터나 인공지능을 파이썬으로 하는지 R 의 위치를 왜 파이썬이 위협하는지 알수 있다. 최소한 내가 아는 언어중 가장 강력한 데이터 컨트롤 환경을 제공한다.  기존 구조가 JSON 이랑 동일 구조로 제공하여 접근성도 쉬우며 대부분의 클래스형 데이터 타입들이 자바보다 간결하게 제공이 된다. 이것은 간단하게 써보면 바로 느낄수있는 부분이다. 

    압도적인 생산성 

    간결하고 데이터 컨트롤이 쉽다는건 그만큼 생산성이 좋은것으로 이어진다. 실제로 같은 기능을 자바와 파이썬으로 만들어서 실험해보았고 형평성을 위해 파이썬으로 먼저 구현한뒤 자바로 구현해보았다. 한번 구현해본것이기 때문에 자바로 할땐 더 속도가 날수 있게 자바에게 자체 유리한 상황을 만들었다. 하지만 객관적으로 파이썬이 2~3배정도 빠르게 구현이 가능했고 결과물도 훨씬더 가볍게 나왔다. 

     물론 스프링을 사용한 자바에 묵직함이 오는 문제도 있겠지만 언어적으로도 충분히 다른 퍼포먼스를 보여준다. 

     

    객체지향! 

    자바스크립트보다 파이썬을 높게 사는이유중 하나다. 이건 나만의 고정 관념이지만 스크립트 언어와 객체지향은 거리가 있다는 편견이 있었다. 아마 제대로 만든 코드들을 보지 못해서 그런것 같다. PHP경우 만든사람에 따라 너무 차이가 많이나는 퀄리티를 보였기에 스크립트 언어는 정말 개발자의 영향을 많이 타는 언어라고 생각했다. 그리고 자바 스크립트은 높은 자유도로 인한 코드간의 격차가 너무 심하고 객체지향적으로 가기엔 뭔가 어색한 부분이 많다고 개인적으로는 그렇게 느끼고 있다. 결국은 개발자의 객체지향에 대한 노하우에 굉장히 영향을 크게 받는다고 생각한다. 

     물론 자바도 그렇지만 자바의 길고긴 역사를 통해 만들어진 규격과 스프링이 강제하는 환경에선 그래도 그런 경향이 덜하다고 생각한다.  파이썬은 일단 객체 지향이다. 그리고 자바보다 다중상속 관계를 잘 풀어 냈다. 그리고 GIL 이라는 단점이 어떻게 보면 동시성 문제 해결을 한 좋은 방법이였다고 본다. 자바도 결국 sycnonized 를 이용해서 해결한것도 같은 결이라고 보기 때문에 결코 단점이라 보긴 힘들거 같다. (물론 ... 사용하다보면.. 비동기에 대한 고민을 하지 않고 해결하려고할때 ... 큰 단점이 되기도하는것 같다. ) 

    파이썬은 강력한 생산성을 가지며 객체지향을 잘 지원해주는 좋은 언어로 보인다. 그렇기 때문에 나름 나는 이도류 처럼 자바와 파이썬을 용도에 맞게 구사하려는 생각을 가지고있다. JVM 세계의 끝을 보고 마스터라 칭하긴 어렵지만 그래도 내 연차에 엄청 부족한 정도는 아닌것 같다. 여태 밥은 먹고 살았으니 그렇지 않을까 ? 라는 그냥 약간의 자만심을 부려보려고 한다. 

     개인적으로 앞으로는 내 기준으로도 언어라는 프레임에 잡혀 살고 싶지 않고 내가 하고 싶은것들을 위해 언어를 선택해서 사용할 예정이다. 내 인생의 길을 언어에 의해 강요받는건 그렇게 달갑지만은 않은것 같다. 

      앞으로도 많은 언어가 나올것이고 , 배워할것들이 많이 생길것 같다. 그래서 공부를 해야할것이고 노력이 더필요하다. 지금 내 주변에 있는 주니어들이 자바가 아니면 인생 커리어가 망할것 같다는 걱정을 많이 한다.  난 항상 그런친구들에게 언어는 수단일뿐이지 법이 아니다 라고 말을 해준다. 그러면 다들 언어하나도 제대로 배우기 힘들다고 한다. 

     보통은 개인의 의견을 존중하는편이지만 이점만큼은 꼭 이야기 해주고 싶다. 언어를 배운다는것은 수단을 배우는것이지 개발적 지식과 경험을 배우는것이 아니라는것이다. 어떤 언어를 쓰던 객체지향적 관점을 가지고 테스트 코드 기반의 생활화 그리고 자신만의 코딩컨벤션과 원칙을 잘 가지고있다면 도구는 그것을 잘표현할수 있을정도만 스스로 챙기면 된다고 본다. 물론 이게 결코 쉽지 않고 나 자신조차도 못지키는 경우가 많고 소홀할때도 있지만 결국엔 노력하는 것이 중요하지 않을까 싶다. 시작은 반이기 때문에 ! 

     그래서 결론적으로 생각은 개인에 따라 어려운 일 이겠지만 파이썬을 사용해보는것은 자바공화국에서 생존하는데 위협요소로 보면 안된다고 생각한다 ! 그것은 다른언어도 마찬가지인거 같다! 

     

     

     

     

    반응형

    '잡동사니 > Developer' 카테고리의 다른 글

    이펙티브 엔지니어를 읽고...  (0) 2023.11.17
    객체지향과 SOLID  (0) 2021.02.24
    팀장이란 ?  (0) 2020.09.28
    Back-end & Framework...  (0) 2019.06.07
    개발자로 지내면서 겪는것들  (0) 2019.02.22
Designed by Tistory.