잡담/진짜 잡담

[잡담] 언어를 바탕으로한 세력 형성에 대한 고찰

隣席の開発者群 2024. 3. 18. 22:23
반응형

특정 언어 찬양 멈춰!

 

개발자로 일하면서 가끔 혼란하다 혼란해 하는 상황을 마주하게 되는데, 그게 바로 언어를 바탕으로한 세력형성이다. 왜 그런지는 모르겠지만, 가끔 개발자들이 자신이 주로 사용하는 언어를 가지고 정치를 하는 케이스를 보게 되는데 오늘은 이 얘기를 한번 해보고자 한다. 

 

얼마 전 나는 이직을 하게됐는데, 대충 내가 뽑힌 이유를 정리하자면 지금은 퇴사한 누군가가 싸놓은 똥을 치우러 왔다. 라고 하면 되겠다. 직전 회사에서 프론트엔드 쪽 기술에 스탯을 몰빵해버린 내가 딱 적당했던 이유는 싸둔 똥이 모조리 JS, React, Next로 구성되어있기 때문이었다. 뭐 이건 각설하고, 어쩌다 이렇게 됐냐가 중요한데 그 이유가 바로 자신이 사용하는 언어 및 그 언어와 관련된 프레임 워크로 개발하기 불리한 기능까지 모두 개발했기 때문이다. 

 

JavaScript가 최근 몇 년동안 다양한 분야에서 사용되고, 엄청나게 넓은 생태계를 구축하게 되었는데 그러다보니 JS로 못하는 일은 없다. 라고 주장하는 사람이 늘어나고, 그로 인해 이런 일이 생겼다고 생각한다. 하지만 나는 이런 의견에 조금 반대하는 편이다. 그럼 정리해보자. 

 

1.  왜 우리는 최신 기술을 사용하지 못하는가?

개발을 하다보면 다양한 언어에 대한 이야기를 듣게 되는데, 뭐 이게 요즘 핫하단다. 이게 다른 언어에 비해 좋단다. 이게 그렇게 돈을 잘 번단다. 이런 얘기가 대부분이다. 사실 이런 얘기가 아니라, 개발자들은 이 언어가 이런 개발을 하는데 참 좋다더라. 이런 얘기가 나와주면 좋겠는데 말이다. 

최근 Rust, Go 등 기존의 언어들이 가진 단점을 부수며 등장하는 언어들이 있다. 이런 언어들의 경우 당연히 우리가 지금까지 써온 Java / JavaScript 보단 훨씬 좋은게 맞을 것이라고 생각한다. 취미로 개발한다고 하면야 뭐 뭐가됐든 좋은거 쓰면 된다. 하지만 우리는 개발을 통해 돈을 버는 사람들이고, 뭐 좀 있어보이게 말하면 프로씬에서 일하는 사람들인데, 그냥 기술적으로 우월하다고 해서 실제 사용하게 될 서비스 개발에 선택한다는 건 좀 아쉽다. 빅테크 기업들은 개발 문화를 이끌어가는 기업들이기 때문에 기술에 대한 투자를 아끼지 않으니 상관 없지만, 일반적으로 테크기업이 아닌 기업에서 개발자로 일하는데 최신기술 지향! 을 선택하기란 참 쉽지 않은 일이기 때문이다. 그 이유는 뭘까? 대부분 간과하고 있는 문제가 내가 일하는 곳은 영리활동을 목적으로 하는 기업이라는 것을 간과한다. 기본적으로 최신기술일 수록 사용할 줄 아는 사람이 적은 것은 당연하고, 하다못해 지금으로부터 거의 10년 전인 2015년에 내놓은 React 조차도 이름만 들어봤지 사용못해본 사람들이 상당히 많다. 그래서 테크기업이 아니라면 React 제대로 사용할 줄 아는 개발자를 찾는다는건 정말 쉽지 않은 일이다. 왜 이런 구조가 생기냐면 비용이 많이 들기 때문이다. 시장에서 수요는 있는데 공급이 절대적으로 적은 케이스라고 보면 되겠다. 그렇다면 다수가 사용할 줄 아는 환경으로 개발하고 비용은 절감하면서 최대한의 효율을 끌어내는게 최선이라고 보면 되겠는데 그 안에서 대뜸 최신 기술로 개발합시다! 라고 하면 개발할 때야 좋겠지만, 개발에 참여해서 잘 아는 사람 한명 떠나면 그 자리를 어떻게 채울건지에 대한 고민을 하느라 또 다시 비용이 나간다. 기존 인력을 가르치는것도 비용, 새로운 인력을 채용하는 것도 비용 걍 돈 나가는 지름길이라는 얘기다. 그러니 테크기업이 아니면 최신 기술을 들이는데 당연히 보수적일 수 밖에 없다. 

 

2. 우리가 쓰던 것 중 특정 분야에 특화된 언어는 있지만, 모든 걸 해내는 언어는 없다.

어쩌다 Java 만능주의 JavaScript 만능주의 를 외치는 사람들을 만나게 되면 정말 갑갑해서 미쳐버리는 일이 생긴다. 뭐 엄청 새로운 언어도 아니고, 지금껏 쭉 써오던 언어들인데 얘네는 애초에 특정 영역에 특화되도록 개발되어있는 언어라고 생각해왔지. 이걸로 다 돼~ 이게 최고야~ 라고 생각해본 적은 개발 처음 시작하고 완전 애송이때 제외하곤 한번도 없기 때문이다.

어떤 언어든 우리가 필요로 하는 것을 모두 개발할 수 있다고 생각은 한다. 당연히 그렇다. 하지만, 효율성이란걸 따지기 시작하면 말이 조금 달라진다. JavaScript로 한참 써내려가야하는 로직을 Java로 구현하면 한 두줄에 끝낼 수 있는 것도 있고, 그 반대도 당연히 존재할 것이다. 그래서 조화롭게 잘 쓰는 것이 중요하다고 생각한다. 무언갈 개발할 때 더 유리한 환경이 어딘지 생각할 수 있고, 그 유리한 환경을 제안할 수 있는게 바로 개발자 아닐까.. 이런 이유로 앞에 불리한 에다가 굵은 글씨를 적용해뒀다. 단순히 코딩만 룰루랄라할거면 딱 생각 안 하고 코드만 짜면 되는 코더 시켜주는 SI많으니 거기로 떠나면 될 것 같다. 

 

3. 언어 및 기술은 개발을 더 편하게 할 수 있도록 도와주는 도구다. 

본질을 까먹으시는 분들이 꽤나 있는 것 같은데, 언어와 프레임워크 라이브러리 등등 우리가 개발하며 사용하는 것들은 개발을 더 편하게 할 수 있도록 도와주는 도구지. 뭐가 좋니 뭐가 안좋니 하며 싸우라고 만든게 아니다. 뭐 견해를 나누는 것까지 뭐라하지 않겠지만 내가 지금 개발하는게 어떤 것인지 명확하게 인지하고 내가 지금 어느정도 비용을 투자할 수 있는지 생각하고, 그 상황에 맞는 시스템을 구축해야지, 막 그냥 고집부리면서 이걸로 해도 충분해! 할게 아니라는 뜻이다.

LIST