개발자
안녕하세요 저는 LMS 솔루션 회사에 다니고 있고 이제 막 2년차가 된 자바스프링 벡엔드 개발자입니다 회사에서 자바/스프링으로 개발하다가 회사 솔루션 중 하나가 스칼라라는 언어로 개발되어있다는 것을 알게 되었습니다 대표님이 어느 날 갑자기 부르시더니 저보고 스칼라로 개발된 회사 솔루션을 맡아서 개발하라는 말쑴을 하셨습니다 아마 그 일을 하게 되면 제가 전담으로 하게 될 것 같은데 그렇게 되면 제가 원하던 벡엔드 개발자 커리어와 멀어질 것 같습니다 제 커리어를 망치는 건 아닌지 걱정이 됩니다 제가 경력이 짦아서 판단이 안 섭니다 개발 선배님들에게 조언을 구합니다
답변 8
인기 답변
와우, (제게는 특히) 흥미로운 질문입니다. 마땅한 해결책이 없어 불필요한 답변인 것 같습니다만, 그래도 너무 입이 근질거려서 적어봅니다. 자바/스프링 백엔드 개발자가, 스칼라 같은 마이너 언어 환경에 발담그게 되면 커리어를 망치는 건 아닌가 걱정이된다라는 말씀인데요. 현실적인 시각이 적절한 것 같습니다. 첫번째 드러나는 가정은 "백엔드 개발의 메인 커리어는 자바/스프링"이다라는 믿음이 있으신 것 같구요. 꽤 사실에 부합한다고 인정합니다. 얼마전 어떤 질문에서는 파이썬을 하는 것조차 걱정이된다고 하는데, 하물며 스칼라야 말도 안되겠죠. 두번째 드러나는 점은, 메인 언어만 다루겠다는 기본 생각이 있어보입니다. 대부분의 개발자가 그렇긴 하겠지만, 바람직한 것은 최소 몇 개씩은 자유롭게 다룰 줄 아는 것이 좋다고 봅니다. 영어 일어 한국어 하기는 힘들지만, 자바/파이썬/자바스크립트/스칼라 등 다루는 것은 매우 쉬운 일이죠. 훨씬 간단하고 규칙적인 언어들이니까요. 암튼, 경력이 꼬일 수 있다는 점은 인정합니다. 자바와 스칼라를 놓고보면, 언어적 측면에서 스칼라가 훨씬 우등하다고 보는데요(주관적), 더 우수한 도구를 쓰다보면, 과거의 더 열악한 도구를 사용하기 괴로워지고, 그럼에도 현실은 더 열악한 도구를 위주로 사용하기 때문에 본인의 스트레스가 가중됩니다. 땅을 파야 하는데, 다들 삽질을 하고 있고, 어느 날 내가 포크레인의 존재를 알게돼서, 포크레인으로 잘 공사를 마쳤다고 칩시다. 그런데 세상은 여전히 삽질이 최고다라며 굴러갑니다. 거기서 포크레인 쓰겠다는 사람이 이상한 사람인 거죠. 차라리 포크레인을 모르고 나도 삽질을 계속하는 게 더 나을 수 있다는 점에서 경력이 꼬일 수 있다고 봅니다. 제가 딱 그런 케이스 같네요. ㅎㅎㅎ 대표가 이 사람 저 사람 맡기려다가, 다들 스칼라 싫다고 해서, 고작 2년차인 님에게까지 바톤(폭탄?)이 넘어왔을 수도 있겠습니다. 복권인지 폭탄인지는 저로서는 알 수 없습니다만, 만약 복권이라면, 인정받고 자리잡고, 내 지식세계도 넓어지는 기회일 수도 있겠죠. 님이 잘 맡아서 다뤄준다면, 누구에게도 맡기기 힘들었던 일을 질문자님이 해주니까, 모종의 철밥통이 될 수도 있겠네요. 폭탄이라면... 음... 뭐...그렇죠 뭐. ㅎ 결국, 님에게 스칼라를 공부할 절호의 기회가 주어진 거라고 보고 즐길 수도 있고, 괴로워하다가 이직할 수도 있고, 괴로워하기도 전에 진즉에 커리어 살리러 이직할 수도 있는 상황인 것 같습니다. 모쪼록 본인에게 적절한 선택 잘 하시길 응원할게요.
조현석
놀멍쉬멍 • 2023년 09월 14일
포크레인 포에버
인기 답변
삭제된 사용자
2023년 09월 14일
새로운 무언가를 배운다는 것은 절대로 손해가 되지 않습니다. 특히나 multi-lingual 프로그래머가 될 수 있는 기회는 놓쳐서는 안될 기회라고 생각해요. 커리어와 관련한 좋은 이야기는 다른분들이 많이 해주셨기에 저는 다른 이야기를 해보려고 해요. 스칼라라는 언어가 얼마나 우월한지(?)는 제쳐두고 여러 언어를 배운다는 것이 얼마나 매력적인 일인지에 대해서 이야기 해볼게요. 첫째, 업무의 커버리지가 넓어집니다. 백엔드 개발자가 하는 일이 단순히 서버 애플리케이션 코드만 짜는게 아니죠. 배포한 애플리케이션을 모니터링하고, 인프라를 구축하고, 워크플로우를 자동화 하는 등 다양한 역할이 필요합니다. 이 과정에서 애플리케이션 코드 작성에서 사용하던 언어 이외에 수 많은 다른 언어를 접하게 될거에요. 신경써야 할 것이 산더미인데, 언어가 장애물이 되면 안되겠죠? 훌륭한 소프트웨어 엔지니어중에 단순히 코딩만 기깔나게 하는 사람은 없습니다. 본인이 한 작업에 대해 전체적인 흐름을 이해하고 개선하는 사람을 훌륭한 소프트웨어 엔지니어라고 부릅니다. 둘째, 다양한 언어의 패러다임을 이해하는건 성장의 지름길입니다. 다양한 언어는 다양한 패러다임을 가지고 있습니다. 질문자님이 주로 사용하신 자바 언어의 경우에는 객체지향, 정적타입, 명령형 프로그래밍 이라는 패러다임을 가지고 있죠. 반면 하스켈(Haskell)이라는 언어는 함수형, 정적타입, 선언형 프로그래밍 이라는 패러다임을 가지고 있습니다. 또한 스칼라는 하스켈과 자바의 장점을 결합하여 객체지향과 함수형 프로그래밍 언어이며 정적타입이기도 하고 선언형과 명령형의 특징을 모두 가지고 있습니다. 이렇게 다양한 언어를 배우며 다양한 패러다임을 이해하게 되면 사고의 폭이 넓어지고, 프로그래밍의 세계를 보는 눈이 밝아집니다. 하지만 이렇게 생각할 수도 있죠. "평생 자바만 할 것 같은데, 다른 언어의 패러다임이 무슨 소용일까요?" 그래서 다음 이야기를 하려고 해요. 셋째, 프로그래밍 언어는 서로 영향을 주고 받으며 진화합니다. 프로그래밍 언어는 가만히 멈춰있지 않습니다. 자바만 해도 2017년 이후로 매년 새로운 버전이 나오고 있어요. 이 과정에서 추가된 다양한 기능은 수많은 다른 언어에서 영향을 받아 만들어졌습니다. 대표적으로 Streams API는 하스켈과 같은 ML계열 언어의 Monad에서 영향을 받았습니다. lambda expression은 LISP 계열 언어에선 이미 널리 쓰이고 있던 표현이죠. 이렇게 프로그래밍 언어는 서로 영향을 주고 받으며 진화합니다. 그렇기에 다른 언어를 배우는 것은 자바를 더 잘 사용하는데 도움이 됩니다. 개발자로 업계에 몸담으면서 앞으로 해쳐나가야 할 일이 많을텐데, 새로운 언어를 배우는것은 기초 체력을 키우기에 더할나위 없이 좋은 일이라고 생각합니다 :)
인기 답변
스프링 개발자가 스칼라(Scala)를 배우는 것은 흥미로운 선택일 수 있으며, 이를 통해 커리어에 이득을 얻을 수 있는 경우도 있습니다. 그러나 이러한 결정은 여러 요소를 고려해야 합니다: ✅ 프로젝트 요구 사항: 당신이 참여하거나 희망하는 프로젝트나 회사의 요구 사항에 따라 언어 선택이 다를 수 있습니다. 일부 프로젝트에서는 스칼라보다는 Java 또는 다른 언어를 선호할 수 있습니다. 스프링과 Java 조합이 이미 많은 기업 및 프로젝트에서 사용되고 있다는 점을 고려해야 합니다. ✅ 학습 곡선: 스칼라는 함수형 프로그래밍 개념을 갖추고 있으며, 자바와는 다른 문법을 가지고 있습니다. 스칼라를 배우는 데 시간과 노력이 필요할 것입니다. 현재의 스프링 및 Java 기반 역량을 유지하면서 스칼라를 배우는 데 어려움이 없을지 고려하세요. ✅ 커리어 목표: 스칼라를 배우는 목표가 무엇인지 고려하세요. 스칼라는 대규모 백엔드 서비스, 데이터 처리 또는 분산 시스템을 개발할 때 주로 사용됩니다. 스칼라 기반의 프로젝트나 기업에서 일하고자 하는 경우에는 유용할 수 있습니다. ✅ 경쟁 우위: 스칼라를 배우는 것이 현재 또는 미래에 더 큰 기회를 제공하는지 주변 환경 및 산업 동향을 고려하세요. 스칼라를 사용하는 개발자가 비교적 적을 수 있으므로 이를 활용할 수 있는 기회가 있을 수 있습니다. ✅ 개인 흥미: 스칼라가 개인적으로 흥미로운 언어이며, 새로운 언어를 배우는 것을 즐기는 경우라면 스칼라를 배우는 것이 즐거운 경험이 될 것입니다. 결론적으로, 스칼라를 배우는 것이 커리어에 도움이 될지 여부는 프로젝트 요구 사항, 개인 흥미 및 커리어 목표에 따라 다를 수 있습니다. 새로운 기술을 배울 때 항상 기존 역량과 연결되는 방식을 고려하고 그에 맞는 선택을 하십시오.
인기 답변
메시징을 고성능으로 처리해야하는 솔루션이며 이미 스칼라로 작동중인것으로 보여지네요 과거 스칼라를 채택했던 프로젝트에 참여한적이 있으며 개인 경험까지 공유해봅니다. 과거 환경/상황등에 차이가 있을수고 저의 특수한 경험이기때문에 가볍게 참고 하면 좋을것같습니다. # 주변개발자 SM개발진영에서 유지보수만 경험한 스프링부트 10년차 이상 개발자중, 아무것도 없는 상태에서 프로젝트 초기 구성을 하지못하는 케이스를 저는 수없이 봐왔습니다. 메이븐/그레이들 구성을 못하는것이지요 최근 log4j 보안이슈로 의존성을 파악하고 변경하거나 업데이트해야하는 긴급 보안 이슈가 있었죠 네 10년차 스프링부트 개발자이지만 그것을 직접 해결하지 못했습니다. 이때 저는 이러한 의문을 가지게 되었습니다. 한가지 언어및 프레임워크를 오랫동안 하는것만이 과연 숙련도를 높이고 커리에 도움이되는가? 스칼라를 경험했거나 지금하고 있는분들이 과연 자바및 스프링부트를 못할까요? 그럴수도 있지만 자바및/스프링부트에 깊이 있는 지식을 가지고 있으며 그런분들이 오히려 자바의 고급주제를 다루는 컨플런스를 하는것을 많이 봐왔습니다. 역설적으로 오히려 스프링부트만 경험있는 개발자분들이 GC및 JVM환경및 읜존성을 다루는 방법등 자바에서 꼭 기본적으로 해야하는 파트에대해 신경을 쓰지 않는 경우를 많이 봐왔습니다. 스칼라의 경험이 자바또는 스프링부트의 경험과 같지는 않지만 적어도 자바언어의 한계를 잘 이해하는 그룹이였다란 점입니다. 한계를 이해한다는것을 그것을 더 잘 이해하는것과 유사할수도 있습니다. # 스칼라와 함께 AKKA를 경험한 개인경험 스칼라를 채택한 프로젝트팀에서의 직접참여한 경험을 공유하면 스프링부트의 어노테이션만 이용해 CRUD만 하는 웹개발자에서였습니다. 하지만 스칼라를 채택하고 글로벌 트래픽을 처리하는 서비스를 만드는 과정중 단지 스칼라가 아닌, 대용량 처리를 위해 다양한 오픈스택 ( redis/kafka/elastic search/no sql/kafka)을 이해하고 활용할줄 아는 개발자가 되었습니다. 이러한 경험으로 영어는 못하지만 스페인 말라가/호주 퍼스등 다양한 글로벌지역에서 글로벌개발자와 함께 협업하는 경험을 가지게 되었습니다. 현재는 스칼라로 인해 AKKA툴킷을 이용하게되었고 프레임워크의 의존하지 않는 개발자가 된 계기가 되기도 했습니다. 의존하지 않는다란 의미는 주변 웹프레임워크를 다양하게 학습하고 연구한다란 의미입니다. 물론 다룰수 있는 언어및 프레임워크가 한계는 있기때문에 2~3개 이내로 집중을 합니다. 그리고 의외로 주력이아닌 세컨드 프레임워크에서 새로운 해결방법을 알게되고 주력 프레임워크에도 존재했다란 사실을 알게되는 경우가 많았습니다 저는 이것이 언어및/프레임워크 두가지 상호 비교하고 활용해보는것이 상호 발전을 하면서 주력기술도 성장하는 방식이라고 생각하고 있습니다. 다음은 스칼라와함께 akka가 비주류이지만 연구하고 소식을 전하는 akka진영의 그룹입니다. 메시징 해결패턴은 언어와 프레임워크가 달라도 다른진영에서 함께 이야기할수 있다란 컨셉입니다. 스칼라를 만약에 채택했다고하면, 제가 정리한 다음 컨텐츠도 살펴보면 도움될것같습니다. 개인적으로 스칼라를 채택했다고하면 akka를 이용하지 않을수도 있지만 중요한 요소로 보여집니다. 링크 : https://www.facebook.com/groups/akkalabs # 마치며 스프링부트와 멀어진다는 두려움이 있다고하면 회사에서는 스칼라를 연구하고 개인추가 연구활동으로 스칼라 -> 스프링부트 버전으로 포팅을 해보는것도 좋은 도전이라고 보여집니다. 회사의 지원을 공식적으로 받아 업무중에 할수 있으면 더 좋을것 같습니다. 서로다른 언어 컨버팅이 쉬운것은 아니지만 그래도 조금 유리한것이 둘다 JVM 런타임환경에 작동이 된다란점은 큰 이점입니다. 적어도 이기종은 아니다란 이야기입니다. 스칼라를 하면서 새로운 주변 기술을 추가적으로 알게되는것은 좋은 경험이라고 생각들며 주력 언어프레임워크를 능력을 유지하는것은 회사프로젝트경험과 상관있을수도 있지만 개인의 노력도 중요하다라고 봅니다. 현재의 문제를 새로운 관점으로 바라보면 웹프레임워크의 문제라기보다 스칼라를 버전을 함께 책임지고 함께 연구할 팀원이 존재 하지 않고 혼자 삽질해야하는 상황 이 자체가 저는 문제의 핵심으로 보여집니다. 혼자서 문제를 고민하면 성장에 한계가 있다라고 생각이들며 오히려 협업이 아닌 혼자서 문제를 해결한 이 자체가 나중에 다음회사를 선택하는 제약요소가 되지 않을까 생각을 해봅니다. 새로운 도전을 응원해봅니다.
삭제된 사용자
2023년 09월 05일
안녕하세요. 혹시 그 일을 하면서 원래 하시던 자바/스프링 개발을 병행하는건 어려운 상황일까요? 원래 하시던 자바/스프링 개발을 병행할 수 있다면 스칼라로 된 솔루션을 함께 하는건 좋은 선택일 것 같습니다. 만약 spark를 사용하고 있는 솔루션이라면 더더욱 좋구요. 하지만 둘 중에 하나를 선택해야 한다면 지금 백엔드 개발자로 커리어를 쌓는데에 집중하고 싶으신 것 같아 자바/스프링 개발을 선택하시는 편이 맞을 것 같습니다. 회사 솔루션의 기능이 무엇인지도 함께 말씀해주시면 다른 분들도 좀 더 적합한 답변을 주실 것 같네요!
저의 경우에는 업무에서 하는 언어가 메인 언어가 된다고 생각합니다. 저의 경우에는 c언어로 시작했지만 나중에는 go 언어를 하다보니 c언어는 기억이 나지 않을 정도로 잊혀지게 되었습니다. 지금은 취업을 위해 java 공부만 하게 되니 go언어도 잊혀져 가는거 같습니다. 개인 커리어에 도움이 될 수 있지만 대한민국은 자바 + 스프링이 아직까지는 주 언어이고 서울+수도권 외 지역은 90%이상 자바 + 스프링이 주 언어입니다. 공공기관도 마찬가지구요. 회사가 중소기업이라면 심히 이직을 고민해 보시길 추천 드립니다. 언어는 알아도 경력이 없다면 결국 이직 시 문제가 될 거 같아요. 저라면 자바 스프링 개발하는 곳으로 이직을 알아볼 거 같습니다.
음. 지금 제가 자바로 백엔드 하고 있지만 처음부터 자바를 하고 있진 않았어요. 첫 직장에선 CPP를 했었지요. 컴파일러도 생소한 Cpp Builder라는 것으로. 일하다 보니 자의 반 타의 반으로 다양한 플랫폼과 언어를 접하며 알하게 됐네요. 회사에서 이런 기회를 준다면 땡큐죠. 월급 받으며 새로운 언어 배울 기회잖아요. 본인 케리어에 분명 도움이 돼요. 그러니 열심히 해 보세요~~
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!