일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- props
- 컴파운드패턴 연습
- nextjs13
- getElements
- RSC
- styled-component
- State
- 트러블슈팅
- css-in-js 버그
- thunk정리
- WIL
- 언어학습2일차
- 프로젝트회고
- useState
- 항해99
- react
- Promise
- redux
- 함수형업데이트
- 두번째포스팅
- 설치 및 구조파악
- 2번째
- 이미지로딩실패
- UI컴포넌트설계 고민
- react-naver-map
- RCC
- 유사이터럴객체의차이
- 오랜만의회고
- prop 'className' did not match
- til
- Today
- Total
코딩을 박터지게 죽을때까지
오랜만의 회고..? 본문
지금 있는 회사에 온지 대충 2달쯤 지난것 같다.
이 회사는 대기업 계열의 게임사에서 빠져나온 스타트업회사로..
모기업으로부터 시드를 투자 받아 스타트업치고 투자유치금이 매우높고 직원도 매우 상당히 많다.
게임회사로 web3를 이용해서 NFT를 팔아먹는 BM을 가진 회사이다.
여기와서 장점은, Web3.0의 일부를 대강 감을 잡았다?.. 정도이고(지갑과 트랜잭션, 영수증 등)
여기와서 단점은 셀수없이 많다.
직무를 전향한 중고신입으로서 든 생각은,
이 회사는 프론트엔드 개발자, 특히 시니어 미만은 절대 다녀선 안되는 곳이다.
솔직히 시니어 이상은 회사의 프론트 대우에 기분나빠서 못 다닌다.
(실제로 나 대신 원래 들어오기로 했던 사람은 5년차 시니어로, 인수인계 받고 다음날 바로 입사취소했다.)
마찬가지로 나도 기분이 나쁘기도 하고, 내 커리어에 마이너스만 될뿐인 업무때문에 옮기려고 한다.
1. 게임회사의 특징
프론트는 ㅈ밥으로 본다 그냥. 그냥 띡하면 띡하고 아웃풋이 나오는 줄 안다.
찍먹 조금 해보고 자기가 프론트를 뭐 다 해본 줄안다.
(나중에 알아보니 해본적 없었다. 이사람 그냥 허풍 떨었던 것이다. 나한테 큰소리치고 자기가 개발하겠다더니, 전임자한테 DM보내서 세팅도와달라 뭐 알려달라 계속 귀찮게 한다고 한다.)
나도 게임개발 좀 찍먹해봤고, 기본적인 백엔드(포트,api 열고 서버에 쿼리문 날리고 클라에 리턴해주는 정도)는 할줄 안다.
만약에 조금 찍먹한걸로 전부를 다 안거마냥 똑같은 소리를 떠들면 어떤 반응을 보일지 모르겠다.
막말로 게임엔진이 다 계산해주고 GUI툴에서 마우스로 딸깍거리면서 코딩하는 것도 코딩이냐고 한다면
매우 무례한 소리이고 뭘 모르는 소리를 하는 격인데, 왜 반대는 생각을 안해보는지 모르겠다.
문제는 이 소리를 디렉터라는 놈이 한다는거다.
(참고로 이 회사는 이 사람이 법이고 독재자다,
초창기에 이 사람한테 거스르는 사람은 다 나가버렸다고 한다.
다들 이 사람한테 뭔 말을 못하고 벌벌 떤다.
수직/군대문화의 극에 달하는 철강업 이후로 처음보는 광경이다. 심지어도 거기도 이정도는 아니었던 것 같기도..)
특히 여기는
개발방식에 있어서 프론트의 의중,견해같은 건 신경도 안쓴다. 일정잡을때 이외에는
예를 들어서, 통신을 하는 경우에
분명히 서버측의 오류로 데이터를 못가져오는 것임에도 불구하고 상태코드를 200으로 응답한다.
나는 하루하루 기획이 바뀌는 바쁜 와중에도 Suspense와 Errorboundary로
최소한의 안정성과 UX를 확보했다고 생각을 했는데,
QA를 진행하면서 느닷없이 사이트가 터졌다. 확인해보니 상태코드는 200인데 아무런 데이터가 없다.
이 문제로 이야기를 하다가 언성을 높이게 되었는데,
"그냥 데이터가 없을때에 대해서 if문 추가해서 화면 안띄우면 안되나요?" 라는 소리를 하는 것이다.
그걸 위해서 서스펜스와 에러바운더리를 만들어 대비한건데...
문제는 에러가 아니라 정상으로 날아오니까 그 예측치 못한 상황을 처리를 못하는 것이다.,
본인들은 에러를 쓰로잉하고 싶지 않다는거다. 이유는 모르겠다 도통.
그럼 나는 모든 통신에 대해서 저 지랄을 해야하는 건가?
가뜩이나 나는 하나의 텍스트(ex. 아이템이름) 을 가져오기 위해서 정적파일을 3개를 건너뛴다.
API + S3 정적 JSON 3개 를 통신해야 하나의 텍스트를 가져오는 정신나간 개발을 하는 데,
렌더링을 잡으려면 모든 통신의 성공을 확인하고 해야하고,
그 와중에 트랜잭션이 포함되는 페이지 같은 경우에는 트랜잭션에 대한 성공여부까지 체크하여
API와 트랜잭션의 통신속도 차이를 고려해서 렌더링을 컨트롤해야 한다.(이 통신속도 차이가 어마어마하게 크다)
또한 화면 분기에 따라서 API와 트랜잭션을 둘다 쿼리무효화를 해가면서,
인터렉션에 따른 웹페이지 모양새를 바꿔야한다.
그런데,
이 와중에,
그냥 에러 쓰로잉 해주면 일어나지 않을 문제를
굳이 200으로 응답을 주는 바람에, 또 한번 분기처리를 해서 컨트롤 해야한다.
홍길동도 아니고 왜 에러를 에러라고 부르지 못하는 지, 도.무.지. 이해가 안간다.
페이지마다 에러 내용이 다를건데 그럼 그때마다 다 내부코드를 공유해줄건가?
예를 들어 이벤트/이벤트상점 페이지는 그 독자적인 에러들이 있다. 다른 페이지에서는 없는 에러들이다.
이미 다 만들어놨던 레거시 코드들의 에러는 도대체 어떻게 할건지?
마치 시한폭탄같은 프로젝트이다.
그때가서 라이브에서 영문모를 페이지 폭파가 일어나면 "확인 좀 부탁드립니다" 이딴 소리를 할 것인지?
이 경우에 당연히 무조건 나의 입장이 옳다.
이건 생각의 차이가 아니라, 분명히 웹표준에서 벗어난 방식이고,
게임쪽에서는 이런식으로 했을지 몰라도,
브라우저에게 많은 권한이 있고 자체적인 로직이 부여되어있는 프론트한테는 말도 안되는 방식이다.
마치, 교통경찰이 있으니 신호등은 항상 파란불로 켜겠다는 것과 마찬가지이다.
교통경찰이 깜박 놓쳐버린 차가 달려오면 그대로 사고나고 자동차가 터지듯이,
미리 백엔드쪽에서 정해놓은 코드를 프론트한테 공유한다 하더라도,
백엔드쪽에서 미리 정해놓은 상황이 아닌 다른 에러가 난 경우에는 그냥 사이트가 터져야한다.
솔직히 말같지도 않은 방식이고, 유저 경험을 1도 생각안하는 개발방식이라고 생각한다.
어이가 없어서 여기저기 다른 회사 시니어 이상급의
프론트/백 개발자들에게 물어보니 쌍욕부터 날아왔다.ㅋㅋㅋㅋ
문제는 이런 상황에서, 디렉터라는 인간은 백엔드의 편을 드는 것이다 ㅋㅋㅋ
(나중에 알고보니 여기 회사는 저 디렉터라는 사람의 후배나 지인들로 가득 찬 회사였다.
그 백엔드도 자기 후배였고, 웹개발도 모르고 해본적도 없으면서 아는척하고 편든 것이었다.)
내가 너무나도 기가 차서 면전에서 웃음이 다나왔다.
자기도 클라이언트 출신인데(게임 클라다) '흔한 방식이다' 이딴소리를 한다.
흔하긴 개뿔이 흔한 방식인지? 가능은 하지만 분명히 지양해야 하는 방식이고,
프론트/백이 나뉘던 초기에 일부 회사에서 멋대로 이런식으로 하는 경우는 있었을 것이나
모던웹에서 아직도 이따위로 하는 회사는 내가 만난 다른 개발자들중에는 한명도 사례가 없었다.
어처구니 없어서 gpt에게 정말 흔한 방식인지 물어보니 가능은 하지만 지양해야한다고 권고하더라.
당연하다.
모든 도로에 교통경찰을 세울수 있는지? 교통경찰은 신호등을 완벽대체가 가능한지?
신호등 하나 세우면 이어진 다른 도로까지 일괄적으로 같은 룰 안에서 처리가 되는데,
굳이 왜 멀쩡하고 보장된 기능인 신호등을 고장을 내는지?
여기는 달 단위로 스프린트가 진행된다고 보면 되는데(월 1회 게임패치이기때문에)
기간으로만 보면 스프린트가 상당히 여유롭다.
패치 내용이 프론트가 부하가 안걸리는 내용인 경우에는 널널하다.
문제는 그렇지 못한 운영방식 때문에 골치가 아프다.
일단, 기획자가 완전 신삥에 일머리가 없다. 전임자는 조금 괜찮았다고 하는데..
기획자는 자기가 기획하질 않는다. 그냥 "매우 즉흥적인 성격을 가진" 디렉터의 뻐꾸기 역할만 한다.
기획서라고 올라오는게 기획서가 아니라 컨셉에 불과하다. 그래서 빵꾸가 구공탄마냥 뚫려있다.
그러다보니 매주 회의때마다 개발자들한테 지적당하고, 알아보겠다 그러고 일주일 뒤에 기획이 바뀌어있다.
그래서 1달 단위로의 여유로보이지만 실제로 개발은 1주일에 가깝다.
피엠은 소통을 못시키고 일을 못한다. 말같지도 않는 요구를 많이 한다.
==> 갑자기 컨텐츠 추가하더니 이번주까지 될까요?
(현재 기존에 있는 컨텐츠의 기획도 제대로 안나온 상황)
(사실상 모두에게 제일 빌런으로 평가받고 있다. 개발뿐 아니라 운영쪽에서도 빌런으로 평가한다.
문제는 이걸 본인도 알고 있을 건데, 유일하게 디렉터 혼자 모른다.
즉흥적인 디렉터가 일정이나 현재 실무상황을 생각하지않고 뱉어대는거를 피엠이 적당히 쳐내줘야하는데,
눈밖에 나는게 무섭고, 기술적으로 아는 건 하나도 없어서 "넵넵"만 하다보니까
그 부하가 관련 실무자들한테 다 옮겨지는 상황)
그래서 그런지, 일정이 너무 느닷없이 바뀌게 되어서 그런진 몰라도
API 명세서를 프론트와 상의하지도 않고 마음대로 백엔드가 파서 그냥 통보한다.
심지어 통보도 안한다 내가 스웨거에 올라와있는지 확인해보고 있으면 쓰고 없으면 기다려야한다 ㅋㅋ
진짜 기분나쁘긴 한데 ㅋㅋㅋ 어느정도 이해가 가기도 한다는게 참..
아무튼 간에 종합적으로 그냥 프론트를 개똥으로 보는 회사이다.
차라리 절대적인 일의 양이 많다면 상관이 없는데(오히려 시간 잘가고 몰두 가능해서 좋을수도 있다)..
같은 일을 수없이 번복해서 다시 해야하고, 프론트가 거지마냥 주는 것만 받아서 해야하는 현실이 너무나도 기분이 나쁘다.
2. 레거시 코드의 문제
내가 들어오기 이전에, 신입 4명을 돌려서 쥐어짰다고 한다.(그걸 지금 나 1명으로 대체하겠다는 거다.)
프로젝트 초기를 보면 나름 신입들이지만 신경써서 프로젝트 구조도 짜고 나름 ATOM도 만들어가면서
구성있게 짜려고 했던 흔적들이 보인다.
그러나 그것도 어느새부터인가... 그냥 이사람들 쫓기는게 코드에서 보인다.
나중에는 타입도 안쓴다. 그냥 다 any로 도배를 해놨다.(이걸 발견할때쯤엔 복잡한 심경에 헛웃음이 나왔다)
문제는... NextJS 12를 썼는데, SSR 이런게 없다 그냥.
사실상 그냥.. NextJS를 쓰는 의미가 없다. CRA로 해도 됐을 것이다.
이유인 즉슨 i18n때문에 로컬에 국가를 저장하고 이런것때문에 못썼다고 하는데,
솔직히 1도 이해가 되지 않는다. 그냥 아마.. 전부 신입이고 해서 정확히 이해를 못하고 덤벼들었던 것같다.
어떤 커스텀훅은 1800줄이다.
프론트 개발을 시작하면서 이런 줄 수는 본적이 없는 것 같다 ㅋㅋㅋㅋ
단순히 로직이 많다가 아니라 코드 자체가 난장판, 대학생이 연습하듯이 써갈겨놨다.
(이 부분이 게임캐릭터의 모델과 데이터들이 관련된 부분인데,
디렉터가 짠 것같다는 느낌이 든다. 웹 프론트 개발자라면 이따위로는 안짤거다.
전임자 4명중에 두명이 짰다고 한다. 이럴 필요가 없는데 디렉터가 '즉흥적으로 있는게 낫지않아?'
해가지고 동의도 못하겠는데 느닷없이 쥐어짜듯이 급하게 작성했다고 한다.
이 훅이, 게임캐릭터의 데이터를 갖고 오는 훅이다. 민첩이 얼마고, 스킬셋이 뭐뭐뭐고...
그걸 백엔드에서 주면 부하가 걸린다고 프론트에서 저렇게 하라고 시켰단다.
거꾸로 돌아가는 회사다. 시계바늘을 거꾸로 돌리는 회사라고 해야하나..
브라우저에서 로직제거하고 UX를 높이기 위해서 프론트와 백이 나뉘었는데,
백의 부하를 위해 프론트가 부하걸리는 일을 하고 있다.
그리고 사실상 저 훅의 내용을 보건대, 백에 부하가 걸릴 이유가 없다.
결국 아무것도 모르는 신입들을 볶아먹은 것이다.)
들어가면 난장판인데, 심지어 주석으로 2페이지정도 스크롤을 내리는 경우도 있다.
지금 내가 개발하는 부분들에서 이 커스텀훅을 사용하거나 해야할때가 있는데,
중요한 부분 발췌하느라 시간을 얼마나 잡아먹는지 모르겠다.
또 문제는, 정적파일을 갖고 오는 로직이다.
일반 api는 react-query를 사용하고, useQuery/Mutation 등 파일을 다 구분하고 어느정도 추상화를 해둬서 괜찮다.
문제는 정적파일은 그냥 axios를 썼다.
react-query용으로 만든 axios의 인스턴스로는 CORS위반때문에 파일을 못갖고 오는 상황을 겪었을 것이고,
매일 기획이 바뀌고 기획자도 그 내용을 모르는 지옥속에서 급한대로 기본 axios로 통신 함수만 만들어서 사용한것 같다.
이걸 처음엔 모른 상태로 쓰다가, 어느날 정적파일을 수정했다고 하는데 브라우저에서 확인해보니 전혀 안되어있어서 알게 되었다.
아.. 그냥 axios만 사용하고 옵션처리를 안해서 캐시 최신화가 안되는구나.. 하고
유쾌했다.ㅋㅋㅋㅋㅋㅋ
아무튼.. 이 회사에서 프론트는 그냥.. 그림쟁이.. 아니 그림싸개 수준이다.
내 커리어에 도움되는 모던웹 트렌드나 패러다임같은건 적용할수도 같이 연구해볼 사람도 없다.
어떻게 하면 더 빠르고 부드러운 성능의 페이지를 구현할 수 있을지, 유저는 어떤 쪽이 더 편할지,
이러한 고민은 현실적으로 불가능한 환경이다.
그냥 느닷없이 납기변경없이 추가되는 컨텐츠들을 빨리 그려내줄수있는 사람이 필요할 뿐이다.
어느정도 돈을 나쁘지 않게 주긴 하지만, 과연 그게 개발 커리어를 담보삼아 받을 정도의 돈인가 싶긴하다.
지금 느끼고 있는건 나의 1/3은 프론트개발자, 1/3은 기획자, 1/3은 피엠 인 것 같다. 1.5배는 더받아야 한다고 생각한다.
(그정도 돈은 줘야 계속 다니는 걸 고민해볼 것 같다.
그렇다 하더라도 미래의 나는 프론트개발자로서 머리가 깡통이 되어있을 것 같아서 고민이 된다.)
집에서 가깝고 프론트가 비즈니스의 메인역할을 하는, 메인대우를 받는 그런 회사를 가고 싶다.
아니 차라리 아싸리 터무니없는 돈을 부를 걸 그랬다. 그랬으면 어떤 결정을 했을까 내가?..
회사입장에서는 수긍하고 받았을 것이다.
원래 합격했던 5년차 시니어가 나간바람에, 당장 하루가 급했기 때문에 최종탈락 번복하고 당장 출근해달라고 나한테 전화왔었으니..그 개발자가 제시한 연봉이 나보다는 비쌌을 거니까. 내가 터무니 없게 불러도 아쉬운대로 썼겠지.
지금 이직시장이 너무 혹독한 상태이긴 한데.. 힘내봐야지
최신 기술트랜드는 그냥 나 혼자 2시간동안 광역버스에서
유튜브보고 상상코드하고
주말에 집에서 깔짝깔짝 대보는 정도밖에 할 수없는게 너무 분하고 아쉽다.
(출퇴근 door to door 2시간이다보니 평일에는 도저히 엄두가 안난다.. 그래서 더 아쉬울 수 있겠다.
현업에서 겪지도 적용하지도 못하고 있으니..)
추석이고 해서.. 오랜만에 집에 좀 있을 수 있으니..
내 깃허브 잔디 좀 채울겸, 개인 블로그나 좀 만들어봐야겠다.
깃허브 생각하니까 또 뭔가 아쉽네..
회사아이디로 깃허브하다보니 내 개인 아이디 잔디가 텅비었다..
오랜만에 파이어베이스를 써봐야지
===============================================================
연차쓰고 다른 곳 면접을 봤는데,
공동대표인 CTO가 피씨방점유율 1~2위를 항상 잡고 있는 게임의 백엔드 개발자였다고 한다.
이 사람 프론트도 아주 잘 만들어놨더라.
이 사람한테 위의 얘기했더니, "할 줄 모르는 잘 모르는 사람들이 잡았네.." 라고 했다.
프론트를 개똥으로 안다고 했더니 "어떻게 게임회사에서 프론트를 그런 취급을 하지?.. 말이 안되는데요.."
이 회사에 붙지는 않을 것 같은데..(게임회사 출신이란 소리 듣고 내가 한풀이를 해버렸다 면접자리인데 ㅋㅋ)
그래도 속이 시원했다.