기본 콘텐츠로 건너뛰기

개발자 최후의 보루가 집단 사표 공격


개발자 최후의 보루가 집단 사표 공격 아닌가요?
전 왤케 많이 얻어맞을까요?

난 이거밖에 못해요 하는 사람을 기피합니다.
세상의 발전에 따라 한 사람이 해야 할 것은 늘었는데 세상이 복잡해짐에 따라 업무는 더욱 분화 되었죠.

또 예를 들어봐야죠.

옛날에는 비행기를 조종하는 조종사와 무기를 쏘는 공격수 두 명이 한 조로 움직였습니다.
하지만 요즘에는 혼자서 조종도 하고 무기도 쏘지요.. 

버스도 옛날에는 운전수와 안내원이 있었지만, 지금은 운전수 혼자 운전하고 돈을 받지요.. 


반대로, 

예전에는 개발자가 모든 프론트와 백엔드 개발을 다 했는데, 

요즘은 HTML코더, 퍼블리셔, 프론트엔드 개발자, CSS 코더, 백엔드 개발자, DevOps... 등등 참 많이 나뉘어졌죠. 

프론트랑 백엔드는 다른가??? 그냥 하면 되는거 아닌가?

하면서 프론트 손댔다가 바로 버렸네요... 왤케 어려워..


면접때도 일부러 해보지 않은 영역을 질문하곤 합니다. 
Java로 어플리케이션 개발만 했던 사람에게 Java언어 할 줄 아니까 Angular로 마켓 웹 서비스를 한 번 만들라고 하면 얼마나 걸릴거냐? 등등.. 

그러면 대부분 당황하면서도 자기만의 생각을 이야기 합니다. 
여기서 하기 싫어하는 느낌이 드는 순간 그 사람은 바이바이죠.. 

한 회사에 오래 다니더라도 자주 바뀌는 언어 및 프레임웍 속에서 못하는거 시킨다고 투덜대면 주변 사람들까지 힘이 빠지죠. 

그런데 이력서에 두 세개 언어로 이것저것 해봤다고 적히면.. 
거의 합격이겠죠? 
왜냐하면 최소한 이거밖에 못해요 하는 사람은 아니고 또 닥치면 새롭게 배워서 할 사람이니까요. 

젊어서는 자기가 잘하는 환경만 찾아다니는 것은 스스로 생각과 시장을 좁히는 길입니다. 
특히나 레밍스 같은 한국에서는 이게 최고야 하는 식의 이야기가 만연해 있죠? 얼마전에도 모 유투버가 전직 컨설팅을 해주는 거 같은데 vue를 쓰는 회사에 들어간게 아쉽다고 해서 놀랐습니다.


전 세계 아니, 일본에만 와보시면 알겁니다.
아직도 Ruby써요? 하고 비웃는게 아니라 Ruby의 극한까지 쓰는 사람들이 있는가 하면, 
React보다 Vue나 Angular의 사용율이 많은게 일본이지요. 
Excel Macro를 이렇게 까지 쓰는 구나 하고 감탄도 하구요.. 

한국이 Java열풍으로 세상 모든게 자바로 이루어진 줄 착각하고 있었을 때 일본은 PHP가 훨씬 많았구요, 
ASP.Net등의 언어도 은근히 많이 보였습니다. 

요즘은 또 Python이 뜬다드라 하면서 쓰시는 분들 많았죠?

Python2와 Python3의 변화에 한국 사람은 욕을 많이 했지만, 
그 코드의 철학에는 그럴만 했다고 반응하는게 보다 언어를 아는 사람입니다. 

또 제자랑을 해봐야죠? ^^

전 1999년까진 SI업체에서 Delphi나 VB를 가지고 어플리케이션 프로그래밍을 하고 있었습니다. 
그런데 N사에 입사하니까 대뜸 ASP를 가지고 웹사이트를 만들라고 하는 것이었습니다. 
그것도 2주 이내에.. 

음? ASP는 뭐고? 웹서비스는 어떻게 만드는거지??
그 때부터 밤낮없이 찾아다니고 남의 소스를 보면서 공부를 했지요. 
1999년에는 전화로 연결하는 PPPoE 방식으로 1200bps쓰다가 19200bps가 막나와서 느린 인터넷 통신을 하는게 전부 였습니다. 
앞에 K나 M이 없죠? 없습니다! 굳이 M을 붙이자면 0.019Mbps랄까요?

인터넷 정보는 물론이고, 이쪽 업계 사람도 없고 책도 없는 환경 속에서 간신히 찾아 2주동안 거의 밤새다 시피 하면서 NetDirect라는 서비스를 만들어 오픈 했습니다.  정말 도움이 됬던게 wrox의 빨간 책 덕분이었죠.. 이게 거의 유일하다 시피한 자료 였습니다. 
디자인 파일 받아서 혼자 개발해서 DB와 연동한 제 인생 최초의 웹 프로그래밍 이었지요. 

그걸 계기로 웹 세계에 손대면서 아이디어가 생기면 바로 ASP를 써서 웹 사이트를 만들다 보니 어느덧 100개 사이트가 넘어가고.. 그러자 PHP로 만든 사이트가 있는데 손봐달라는 의뢰가 들어오면서 C언어 쯤이야 하고 또 들어갔죠.. 
그리고 Java로 야구 게임을 만들고 있는 방산으로 들어온 조금 어린 친구를 보고는 Java로 게임이 만들어져! 하면서 게임도 혼자 만들어보고.. 

결국 이러다가 새로운 언어만 나오면 일단 손대는 버릇(?)이 생겨 버렸지요.. 
각각의 언어의 특징을 찾고 어느 언어가 이 서비스에 가장 어울릴까를 계속 연구하다보니, 
주변에 조언을 해줄 수 있게 되었습니다. 

여기서 하나의 언어만 할 줄 아는 사람들의 특징이 보였지요.. 
자기가 아는 언어가 최고여야 하고 불변이어야 한다는 강박관념 같은?
제가 이 서비스는 이런 언어가 좋아요 하고 제시를 하면 대세가 그게 아니라면 몰아붙이거나, 
심지어는 사표까지 들이밀면서 그거 아니면 그만 둔다는 협박을 하는 사람들도 생겼지요.. 

다양한 언어를 써봐야 서로의 장단점을 알게 되고 그걸로 스스로의 가치관으로 사람들에게 이게 좋아요 하고 말할 수 있잖아요?
왜그렇게 배우기 싫어하는 젊은 꼰대들이 자리를 틀어차고 있는걸까요? 


2016년 경이었던가요? 
모 서비스에서 소스 코드 관리 체계를 만들어주겠다고 하고 github에 올리게 하고 코드 리뷰 하면서 보다 효율적인 시스템을 위해 코드 체계의 변경과 DB의 효율적인 관리 룰을 제시했더니.. 
사장이 나중에 제게 따로 연락을 했습니다. 오지 말라고.. 
이유는 팀 전원이 사표를 썼다고 하네요.. 
DB에서 Trigger를 쓰면 그냥 DB의 성능을 20%밖에 안쓰려는 사람들인 겁니다. 
튜닝할 때 제일 먼저 걷어내는게 Trigger죠.. 그리고 매번 기능 추가할 때 마다 새롭게 DB Connection을 여는.. 
초급 개발자 분이 계실 거 같아서 말씀 드리는데요.. 
홈 화면이 사람이 제일 많이 들어옵니다. 다들 로그인 하면 홈화면에서 다른데로 분기해 나가잖아요.. 
때문에 홈화면에 가장 많은걸 또 보여주려고 하고 있지요. 

공지사항을 위해서 한 번 DB콜 하고, 
유저 정보 얻을려고 DB Call 하고
과금 이력 보려고 콜하고, 블록 상태 보려고 콜하고.. 이벤트 정보 콜.. 친구 목록 콜.....
이러다보면 첫 페이지는 아무리 적어도 10번 이상은 콜 하는 게 정상이라고 알고 있거나 그렇게 선배에게서 배우신 분들은 모두 대규모 서비스 설계를 할 수 없다고 알아두시면 됩니다. 

뭐.. 이런식으로 말을 했다가 개발자들의 미움을 사서 쫓겨난거죠.. ^^;;

이 얘기 하니 또 재밌는게 있었지요.. 
W사는 500억원 이상으로 고 평가 받고 승승장구하는 패션 쇼핑몰 스타트업이었습니다. 
학교 후배의 요청으로 너무 느려진 시스템을 봐주고 있는데.. 
제가 소스코드 하나하나 헤집으면서 빨간펜 선생님을 하고 있는데.. 
어느날 대표가 전화가 왔습니다. 팀 전원이 사표를 냈는데 전부 사표를 내면 당신이 이 서비스를 책임질 수 없지 않느냐.. 
그래서 전 바로 빠졌지요.. 
그 뒤에 대기업 출신 기술 이사도 들이고 하면서 어떻게든 하더니.. 
실패했는지 지금은 존재 자체가 어떻게 되었는지 쏘옥 들어갔네요.. 

줄줄이 비엔나 같은 이야기가 또 생각 나네용.. 
라디오 방송을 하는 서비스가 있는데.. 
처음엔 AWS에 올린 서비스가 스트리밍 중에 끊기는 현상이 있다고 해서 찾다가 
제가 찾아간 적이 있습니다. 
이미 인프라만 월 1000만원의 비용이 발생하는 상황이었는데.. 
조금 지나니까 유저는 늘고 월 5000만원까지 비용이 늘어나고 있더라구요.. 
일단 스트리밍이 끊기는 현상에 대해서는 원인을 찾아주었는데.. 
이놈의 기억이 .. =ㅅ=;; 암튼 Cloud Front에서 버퍼사이의 연결문제가 원래부터 있어서 sticky처럼 설정해서 하는 방식에 대해 이야기를 해줬던거 같습니다. L4는 아니라서 sticky는 아니었구요..
암튼 그러고 나서 인프라 비용이 과도하게 나오니 적절하게 튜닝해서 3~40%는 절감할 수 있을 거 같다고 해서 대표가 기뻐하며 진행하려고 했지요.. 
그런데 바로 영업을 해주던 후배를 통해서 연락이 온게.. 개발팀이 사표를 던졌다고.. 

한국은 자기보다 잘난 사람이 와서 조언해주면 사표던지기 신공을 구사하는 버릇이 있나봐요?
뭐 여기는 지금도 매출이 잘 나와서 인프라 비용을 줄이지 않아도 되긴 하지만.. 

대부분의 경우 제 추측이지만, 
자신들의 치부를 낱낱히 드러내는 것이 싫어서 사표신공을 날리는 거라 생각합니다. 
하지만 생각해야 할게, 
전문가가 와서 튜닝을 해주거나 컨설팅을 해주는 것은 당연히 지금 있는 사람들보다 나은 사람들이 해주는거라 당연히 구멍들이 보이는 것이지요. 같은 레벨이면 누가 컨설팅 따위를 부르나요? 
두 번째는 개발자는 심심하면 사장이랑 교섭수단을 사표로 생각하는 사람들이 생각보다 많은데.. 
회사는 사장의 회사 이고, 회사는 이익을 추구하는 집단입니다. 
개인의 경솔한 행동이 회사에 얼마나 불이익을 주는지 생각을 했으면 합니다. 
자기가 못하겠으면 사장님에게 사과하고 혼자 나가거나 회사를 정상화 시키고 퇴진을 해야지, 
밑에 사람들을 선동해서 협박용으로 사표를 사용하는건 제 상식으로는 이해가 되지 않네요. 


아뭏든 언제나 제자랑으로 끝나고 있지만, 

IT에 온 이상 끊임없이 배우면 저렇게 사표신공을 날리지 않아도 많은 것을 받아들일 수 있지 않을까요?
저도 신입들이 어디서 찾아온 신기술이 있으면 가르쳐 달라고 하는데요 뭘.. 



giip :: Control all Robots and Devices! Free inter-RPA orchestration tool! https://giipasp.azurewebsites.net/

댓글

이 블로그의 인기 게시물

Alter table 에서 modify 와 change 의 차이 :: SQL Server

두 개의 차이를 모르는 경우가 많아서 정리합니다.  modify는 필드의 속성값을 바꿀때 사용하구요.. change는 필드명을 바꿀떄 사용합니다.  alter table tbbs modify bNote varchar(2000) NULL; alter table tbbs change bNoteOrg bNoteNew varchar(2000) NULL; change에는 원래 필드와 바꾸고 싶은 필드명을 넣어서 필드명을 바꾸는 것이죠~ 더 많은 SQL Server 팁을 보려면  https://github.com/LowyShin/KnowledgeBase/tree/master/wiki/SQL-Server giip :: Control all Robots and Devices! Free inter-RPA orchestration tool! https://giipasp.azurewebsites.net/

[Classic ASP] Cookie가 삭제 안되는 문제

만든 쿠키가 삭제가 계속 안되서 여기저기 삽질을 했다. 모든 쿠키를 삭제하는 함수도 만들었다. Function CookieClear(cldomain) For Each cookie in Request.Cookies Response.Cookies(cookie).Domain = "." & cldomain Response.Cookies(cookie).Path = "/" Response.Cookies(cookie).Expires = DateAdd("d",-1,now()) Next End Function 그런데.. 안되서 계속 삽질하다가 하나 알았다.  littleworld.net littleworld.co.kr www.littleworld.net  의 모든 값을 지우려고 했으나.. 처음 만든 쿠키가 www.littleworld.net 인 관계로.. 처음에 www.littleworld.net 의 쿠키를 삭제 해야만 나머지가 지워졌다.. -ㅅ-;; 간단하지만 몰랐던 초보적인 사실.. ---- 누구나 쉽게 광고를! http://www.cashtalk.co.kr Free Infrastructure automation & management tool Global Infrastructure Integration Platform http://giip.littleworld.net Subscribe and publish your links as a book with friends  My Favorite Link Share http://link.littleworld.net

BI의 궁극판! Apache Drill을 써보자!

사실 Apache Drill 은 BI(Business Intelligence)라고 부르는 것 보다는 단순 데이터 연결 엔진이다. https://drill.apache.org/ 하지만 내가 왜 극찬을 하느냐면.. DBA로서 항상 문제가 되어왔던게, 이기종 데이터의 변환이나 처리였다. 포맷을 맞추는데 엄청난 시간이 걸리고, 데이터 임포트 실패가 무수하게 나고.. 한 번 잘못 데이터를 추출하면 다시 조정, 변환, 추출하는데 시간이 많이 걸린다. 그런데! Apache Drill은 그냥 RDB를 CSV랑 연결해서 조인해서 통계를 낼 수 있다. 그것도 표준 SQL을 사용하여! 예를 들어, CSV의 세 번째 컬럼이 price 이고, 물건의 판매이력을 PG사에서 CSV로 출력 받았다. 우리 DB와의 검증을 위해서는 수동으로 Import를 한 뒤에 포맷이 안맞아 잘리는 데이터가 있다면 다시 맞춰주고, 재 임포트를 수십 번, 그리고 나서 겨우 들어간 데이터를 조인하여 빠진 데이터를 분간한다. 숫자가 적다면 개발자가 개발로 처리할 수도 있지만, 건수가 하루에 300만건 짜리라면.. 한 달 온 파일은 9천만 건이다. 프로그램으로 고작 처리하는 것이 초당 500건. 거의 20만초, 에러 없이 약 56시간.. 에러가 생기면 다시 56시간.. ㅠㅡㅠ 이런게 현실이기 때문에 쿼리 말고는 방법이 없다. apache drill 의 진면목을 보자! 이번에는 좀 범용 적인 MySQL DB와 붙여 보자. . 난 이번에는 Mac에서 작업을 했기 때문에 그냥 다운 받아서 풀었음.. https://drill.apache.org/download/ 여기서 자기 OS에 맞는 버전을 받아서 설치하시길.. 압축을 풀고 나면 MySQL 커넥터를 붙여야 한다. https://dev.mysql.com/downloads/connector/j/5.1.html 여기서 다운로드 이런 커넥터 들을 붙일 때마다 콘피그를 수정해 줘야 하지만, 몇 번만