티스토리 뷰
이번에 좋은 기회가 있어서 최근 동향도 살필 겸 취미생활(다른 언어 맛보기)을 해보았다. 이번 취미생활의 희생자는 이렇다.
- Go (golang으로 검색해야 나온다)
- Dart (Flutter)
다들 재미있는 언어다. 특히 Dart는 프로그래머가 배우지 말아야 할 언어 Top 10에서 당당히 1위를 차지한 언어다. 느낌은 자바 + JS를 섞은 듯한 문법이었는데, Dart 자체보다는 Flutter에 관심이 많이 갔다.
아이오닉, React Native 등등을 써봤지만 Flutter만큼 매력적이진 않았다. 내가 사장이라면 Flutter로 다 바꾸고 싶다 싶을 정도의 매력이 있고 퍼포먼스도 나온다.
문제는 이 이야기를 해봤자 말이 통하는 개발자가 한국에 몇 없다는 것이다.
자바 왕국
사실 자바 왕국인 한국에서 자바 외에 모든 언어들은 찬밥이다. 파이썬이나 JS나 그나마 좀 알아주는 정도다. 지금은 내가 주력으로 삼고 있는 PHP도 라라벨이 있어서 명맥을 이어가지만, 아무리 사용자가 많다고 해도 인식은 형편없다.
Go와 Flutter를 배우면서 참 매력있다는 인상이 강했지만, 이번에도 마음속에 담아 두었다. 아직은 남의 돈을 받아먹고 사는 한국의 월급쟁이기에.
한국에서 잘되려면 자바를 주력으로, 보조로 파이썬 or React Native.
왜 이런 구조가 됐을까
불평만 하기보다 이유를 짚어보면 이해가 되는 부분이 있다.
- 공공·금융 SI 비중이 크다. 전자정부 표준 프레임워크가 Spring 기반이고, 발주처가 요구하는 스택이 정해져 있다
- 인력 수급 문제. 채용 담당자 입장에서는 자바 개발자를 구하는 게 압도적으로 쉽다. 소수 언어를 택하면 사람이 나갔을 때 대체가 어렵다
- 유지보수 기간이 길다. 한 번 만든 시스템을 10년씩 쓰는 경우가 많으니 보수적으로 갈 수밖에 없다
- 레퍼런스 요구. "그거 어디서 써봤나요"라는 질문에 답할 수 없는 기술은 도입 자체가 안 된다
개인의 취향과 조직의 합리성이 충돌하는 지점이다. 새 기술이 더 좋아 보여도, 팀 전체가 감당할 수 있는지는 다른 문제다.
그럼에도 배운 것은 남는다
회사에서 못 쓴다고 배운 게 헛수고는 아니다. 실제로 남는 것들이 있다.
- 다른 패러다임을 알면 주력 언어를 더 잘 쓰게 된다. Go의 동시성 모델을 보고 나면 자바의 스레드 처리를 다르게 보게 된다. Flutter의 선언형 UI를 겪으면 프런트엔드 상태 관리가 왜 그렇게 설계됐는지 이해가 된다
- 선택지를 안다는 것 자체가 역량이다. "이건 이렇게 밖에 못 해요"와 "이런 방법도 있는데 우리 상황에는 이게 맞아요"는 다르다
- 기회가 왔을 때 잡을 수 있다. 스타트업이나 신규 프로젝트에서 기술 선택권이 생겼을 때, 아는 만큼만 고를 수 있다
시간이 지나서 보니
이 글을 쓴 이후로 상황이 조금씩 바뀌었다.
Flutter는 국내에서도 자리를 잡았다. 스타트업과 중소 규모 앱 개발에서 실제 채용 공고가 나오고, 대기업 서비스 중에도 Flutter로 만든 것들이 있다. 당시에는 "말이 통하는 개발자가 몇 없다"고 썼는데, 지금은 커뮤니티도 생기고 국내 자료도 늘었다.
Go는 백엔드 인프라 쪽에서 존재감이 커졌다. 쿠버네티스, 도커, 프로메테우스가 전부 Go로 쓰였다는 사실 자체가 도입 명분이 됐다. 대용량 트래픽을 다루는 조직에서 Go를 쓰는 경우가 늘었다.
자바 중심 구조 자체는 크게 바뀌지 않았다. 다만 Kotlin이 자바 진영 안에서 자리를 잡았고, TypeScript가 프런트엔드를 넘어 백엔드까지 확장됐다.
결국 어떻게 할 것인가
내 결론은 이렇다. 밥벌이 스택과 관심 스택을 분리해서 관리한다.
- 밥벌이 스택은 깊게 판다. 시장이 원하는 것에서 대체 불가능해지는 게 우선이다
- 관심 스택은 토이 프로젝트로 유지한다. 완성도보다 감각을 잃지 않는 게 목적이다
- 기회가 오면 그때 옮긴다. 준비 안 된 사람에게는 기회가 와도 안 보인다
취미로 배운 Flutter로 실제 앱을 만들어 스토어에 올려봤고, 그 경험이 나중에 다른 방향으로 쓰였다. 당장 회사에서 못 쓴다고 안 배울 이유는 없다는 게 지금 생각이다.
정리
- Go와 Dart(Flutter)를 배웠지만 국내 환경에서는 쓰기 어려웠다
- 자바 중심 구조에는 SI 비중, 인력 수급, 긴 유지보수라는 이유가 있다
- 그래도 다른 패러다임을 알면 주력 언어를 더 잘 쓰게 된다
- 이후 Flutter는 국내에서도 자리를 잡았고, Go는 인프라 영역에서 커졌다
- 밥벌이 스택과 관심 스택을 분리해서 둘 다 유지하는 게 현실적이다
'IT 이야기 > 개발 이야기' 카테고리의 다른 글
| IOS 16.4 업데이트 나의 생각 (feat. PWA) (0) | 2023.03.29 |
|---|---|
| 개인정보 취급방침 (0) | 2020.01.24 |
| 엣지 크로미움 출시 초기 사용기 (메모리·확장도구·터치바) (0) | 2020.01.19 |
| 좋은 개발자의 3요소, 테스트·리팩토링·디버깅 (0) | 2019.02.22 |
| MS edge 엔진 크로미움으로 변경 (0) | 2018.12.18 |
