아직도 PHP 같은 거 써요?
일전에 팀 프로젝트를 하면서 팀원 중 한 명이 아직도 PHP 같은 것을 쓰냐며 내게 핀잔을 준 일이 있었다. 자신은 Nestjs 나 스프링부트를 사용한다며 다른 기술을 비하하는 발언도 서슴지 않았다. PHP 개발자인 나에게 있어서는 당연히 기분 나쁜 일이기도 했으나, 실제로 그 팀원은 PHP 를 사용해본 경험이 적었으며 자신이 사용한 버전이 무엇인지조차 모르고 있었다. 그저 자신은 조금 더 트렌디해보이고 싶었고, 남들이 다 PHP 는 안 좋다고 하니까 마치 스스로가 경험했다는 듯이 자신을 기만한 것이다.
공산주의는 나쁜거야?
"공산주의는 나쁜거야?" 라는 제목을 보고서 "당연히 나쁜거지!" 라고 의심없이 무의식적으로 생각했다면 이미 어른들에게 세뇌당한 것이라 볼 수 있다. 공산국가에서 "자본주의는 나쁘다!" 라고 세뇌하는 것과 본질적으로 같은 이야기다. 우리는 자라면서 어른들에게 다양한 교육을 받는다. 그것은 좋게 말하면 예절교육이며 나쁘게 말하면 세뇌라고 말할 수 있다. 아이들은 자신이 한 행동이 사회적으로 나쁘다거나 잘못되었다는 인식이 없다. 어른들은 아이들에게 그러한 것은 나쁜 것이라며 무의식의 영역에 각인시키려고 노력한다. 그래서 우리는 죄를 지으면 인지하지 않더라도 죄책감을 갖거나 잘못했을 때 양심에 찔리게 되는 것이다. 애초에 지금 글을 쓰고 있는 나조차 어떤 행동에 대해 '나쁘다' 와 '잘못되었다' 라는 것은 어릴 적 어른들이 주입시킨 인식에 의해 사고한다.
극단적이지만 본질적으로 이는 독재국가의 사상교육과 다르지 않다. 난 경험하지 않았지만, 학교에서는 아이들이 생각해볼 기회조차 주지 않고 반공을 외치던 때가 있었다. 어른들은 아이들에게 공산주의는 나쁘다는 인식을 강제로 주입시키려 부단히 노력했다. 왜 공산주의가 나쁜지, 어떤 점이 문제인지, 공산주의에서 독재는 왜 나타날 수 밖에 없는 것인지 조차 제대로 생각과 사색할 기회는 없다. 이러한 교육 방식은 아이들이 사회적으로 그러한 행동이 왜 나쁜지, 어떤 점에서 잘못되었는지를 생각할 수 있는 기회조차 박탈하는 행동이다. 과정이 생략됨으로써 얻어진 결과는 가치가 없다.
리덕스 왜 써요?
이러한 실태는 일부 기성 개발자들이 신규 개발자에게 그대로 행하고 있다. 정치적 이념을 넘어서 기술 생태계까지 집어삼키려고 하고 있다. 모든 기성 개발자가 그러는 것은 당연히 아니겠지만, 신규 개발자가 어떤 기술에 대해 갖는 선입견은 대부분 업계에 있던 기성 개발자 또는 그들이 쓴 글에 의해 주입당한 것이다. '이 기술은 나쁘다.', '이 기술은 너무 오래된 것이라 이제 쓸 가치가 없다' 등은 기성 개발자가 그 당시 해당 기술을 접하며 느낀 경험을 고스란히 신규 개발자에게 주입시키는 것으로 전형적인 기술적 가스라이팅을, 신규 개발자의 무의식의 영역에 특정 기술에 대한 자신의 견해를 각인시키려 시도한다. 특히 변화가 심한 분야일수록 그러한 성향은 도드라진다.
이를테면 프론트엔드에서 최근에는 리액트 생태계에서 리덕스(Redux)를 쓰지 않고 리코일(Recoil)을 사용한다고 들었다. 난 프론트엔드와는 거리가 멀기 때문에 왜 그래야 하는지 전혀 모른다. 하지만 리덕스를 사용하고 있는 신규 개발자에게 "리덕스 왜 써요?" 라고 다짜고짜 묻는 기성 개발자를 목격했을 때, 이는 직감적으로 잘못되었다는 생각이 들었다. 리덕스를 왜 쓰냐고 물어본 기성 개발자에게 갓 들어온 신규 개발자는 뭐라고 답해야 하는가.
"그냥 학원(강의)에서 그렇게 배웠으니까..."
이는 리액트 전의 제이쿼리를 이야기하다보면 그들은 더욱 극단적인 반응을 보인다. 제이쿼리는 이제 사장되었고, 더 이상 쓰면 안 된다면서. 하지만 제이쿼리를 마냥 비하하고 리액트를 사용하는 신규 개발자들은 왜 제이쿼리가 나쁜지, 왜 리액트는 좋은 것인지 분명하게 이해는 하고 쓰는 것일까? 그렇지 않을 것으로 생각한다. 대다수의 신규 개발자들은 현재 메인스트림에서 쓰이는 기술이 왜 시장에서 사용되는지, 왜 필요한지 그 이유를 알지 못한다. 그건 지극히 정상적이다. 경험이 없기 때문이다.
기성 개발자는 과거의 기술에서 새로운 기술로 이전해야 하는 이유와 장단점, 그러한 근거로 인해 새로운 기술을 쓰는 것이 타당하다는 것을 신규 개발자에게 설명할 수 있어야 한다. 단순히 내가 사용하니까, 이 기술은 이제 대세가 아니니까 정도의 설명은 바람직하지 않다. 특히, 신규 개발자들은 자신이 사용하는 기술로 모든 것을 할 수 있는 것처럼 받아들이는 경향이 있는데, 이는 유독 파이썬 사용자에게 많이 보였다. 이들에게 기술이 가질 수 있는 다양한 가능성을 이해할 수 있도록 해야 한다.
똥인지 된장인지 찍어봐야 아는가
혹자는 이를두고 '똥인지 된장인지 찍어봐야 아는가' 라고 말하겠지만, 그건 변하지 않는 불변의 존재일 때나 가능한 것이다. 사회적 합의에 따라 사람을 죽이는 일은 예나 지금이나 나쁘고 금기시된다. 그건 찍어보지 않아도 알 수 있다. 하지만 기술은 다르다. 시간이 지남에 따라 버전이 갱신되고 오픈소스 컨트리뷰터들은 더 나아가기 위해 노력한다. 똥이었다가 된장으로 바뀌었을 가능성도 있다. 하지만 그들은 그 기술을 접했을 때와 달리 시간이 훌쩍 지났음에도 여전히 그 기술은 나쁘다며 신입 개발자를 기만한다. 그리고 웹 개발자가 과반 이상을 차지하는 우리나라에서 그러한 가스라이팅이 적용된 피해 기술은 단언컨대 PHP 다.
PHP 개발자로서 기성 개발자들이 왜 PHP 를 싫어하는지는 이미 알고 있다. 그들이 PHP 를 주력으로 사용하던 2000년대에는 무분별한 양산 프로젝트가 넘쳐나 일관성 없는 나쁜 경험을 했기 때문이다. 하지만 놀랍게도 내 또래 20대 개발자들도 PHP 를 싫어하는 성향을 보인다는 것이다. 이들은 정말로 경험을 해보고 싫다고 하는 것인가? 이는 국내 뿐만 아니라 해외에서도 평이 좋지 않은데, 해외에서 조차 'PHP 는 구조적인 문제가 있다' 라며 기술적 가스라이팅이 신규 개발자에게 진행되고 있기 때문이다.
나는 이 글에서 PHP 는 생각보다 나쁜 것이 아니라고 설득하려고 하는 것이 아니라, 신규 개발자에게 생각할 기회를 박탈하고 특정 기술에 대해 선입견을 주입시키려는 기성 개발자들의 실태를 비판하고 싶은 것이다. 개발자 스스로 이 기술은 나와는 맞지 않다고 여긴다면 그냥 안 하면 그만이다. 사람은 저마다의 취향이 있어서 기술에도 취향이 있다. 이를테면 내가 자바와 스프링을 싫어하는 것은 단순한 내 취향이다. 하지만 취직을 위해 언어와 프레임워크를 추천해달라고 하면 고민 없이 자바와 스프링을 추천한다. 이는 마치 주식을 추천해달라고 하면 삼성전자를 추천하는 것과 비슷하다.
내게 있어서 이것은 모순인가? 그렇지 않다. 현실에 기반하여 취직에 가장 가능성 있고 안정적인 선택지를 권유했을 뿐이다. 오히려 아무것도 모르는 초심자에게 PHP 를 추천하는 것은 책임감 없는 행동으로 전락할 수 있다. 내가 자바와 스프링을 싫어한다고 해서 그것을 사용하면 안 된다거나 왜 쓰냐고 한다거나 하는 등의 타 개발자에게 내 생각을 주입하는 행위는 하지 않는다. 이는 세뇌이며 잘못되었기 때문이다. 하지만 수많은 기성 개발자들과 그들이 쓴 글에서는 그런 행동을 서슴없이 하고 있다.
그런 생각을 가진 개발자들은 자신이 경험했을 때와 기술의 발전은 고려하지 않고 과거에만 머무른 상태로 해당 기술을 평가한다. 모순적이게도 자바 개발자가 압도적으로 많은 한국에서 구시대적 JSP/Servlet 를 들고와서 "자바 백엔드는 안 좋아요!" 라고 외치는 순간 이야기의 장이 불타오르기 시작한다. 그들은 "아닌데요? 스프링부트로 바뀌면서 더 좋아졌는데요?" 하며 반문한다. 그리고는 득달같이 달려들어 "뭐가 안 좋은데요?" 라며 설명을 요구한다.
하지만 반대로 PHP 를 물어보면 달라진다. "그거 이제 사장된 기술 아니에요? 사람들이 다 안 좋다던데" 라며 그 이유를 물어보면 2000-2010년대 초에나 쓰이던 구시대 레거시 코드 들고 와서는 안 좋다는 얘기를 늘어놓는다. 이는 내가 JSP 를 들고 와서 자바가 나쁘다는 것과 똑같은 이야기다. 그러면서 마치 자기들은 정당한 사유라도 있는 것처럼 합리화한다. 이는 PHP 에도 자바 생태계 못지않은 라라벨(Laravel)이 있다는 사실과 과거에 비해 비약적인 버전 상승이 있었다는 것을 신경 쓰지 않고 그저 자신이 경험했던 그 시절, 혹은 기성 개발자가 글에 적은 기술 편향적인 내용과 달라지지 않았음을 이미 기본 전제로 깔고 가는 것에 불과하다.
이제, 그만
신규 개발자들은 어린아이와 같아서 스펀지처럼 받아들인다. 이 기술은 나빠! 하면 아, 그렇구나! 하고 넘기고 이제 이 기술이 대세야! 하면 아, 그렇구나! 하고 받아들인다. 그게 정녕 우리 기성 개발자들이 해야 하는 일인가? 이제는 기술적 가스라이팅을 멈추고 그들에게 스스로 생각할 수 있는 기회를 부여할 필요성이 있다.
신 기술은 왜 써야 하는가? 버전 갱신은 왜 해야 하고 안 하면 어떤 문제가 있는가? 과거에 나쁘다고 평가된 기술은 정말 나쁜 것인가? 이러한 것을 고민하지 않고 계속 넘어가다 보면 큰 고민 없이 받아들이기 때문에 기술적 다양성은 사라지고 우리나라는 자바 공화국이 된다. 이미 자바 공화국이지만 더 그렇게 된다. 대다수는 자바 공화국이 된 주된 이유로 전자정부프레임워크를 이야기하지만, 사실 기성 개발자의 책임도 분명하게 존재하고 있다는 점을 명확히 하고 싶다.