크로스플랫폼 자마린 개발에 관한 궁금증. + c# 경력에 관한..

안녕하세요. 크로스 플랫폼 개발을 위해 찾던도중 (리액트 네이티브, 플러터만 찾고있었네요…) 자마린이라는게 생각이나서 , 질문 남깁니다. 개발경력은 4년되었습니다. c#으로는 윈폼 , asp.net 개발하고 있습니다.

자마린 사용했던 건 몇년 전에 자마린으로 아 ~ 이렇구나 하고 실행 한 번 해본정도가 다 입니다.
최근에 모바일앱을 개발할 일이 생겼는데 리액트 네이티브 공부를 하고 있는 와중에 배우면서 하니 시간이 너무 오래걸려 자마린을 다시 찾아보게 되었습니다.

마침 vs 2022 maui 도 내일 출시기념이고 해서 사용해보려고 하는데요,
현재 자마린으로 안드로이드, ios에 배포하여 실제 서비스 운영중이시거나 혹은, 어떻다 어떻다 단점이 어떻고 어느점이 힘들다. 와 같은 조언을 주실 분이 계실까요?

  • 여기부터는 C# 경력에 관한글입니다.
    이직을 준비하려다 보니 요즘 핫한… 네카라쿠배같은 주니어 경력자들이 주로 가고싶어하는 곳들은 서버는 java nodejs 웹은 react 등등… 만 있네요. 조금씩 조금씩 공부하면서 따라가고싶으나 4년경력에 c# / C,C++ 이 대부분이어서 갈 수 있는 곳도 한정되고 점점 자신감도 떨어지고 이직이 가능은 할지… 뭐 그렇습니다.

c#개발을 하게 된 것도 어쩌다보니 이렇게 되었는데 개발팀 내에서도 저 혼자다보니… c#으로 더 깊게 파고들고 싶어도 어느정도 한계에 부딪혀 실력이 그대로 머물러 있는 것 같습니다.
이럴땐 어떻게 해결할 수 있는지… 어떤 방법이나 조언을 좀 구하고자 합니다. C# 개발자로서 오히려 더 깊게 파고 들 수 있을만한 참고자료/서적 /사이트나 목표가 필요할 것 같습니다 ㅠ

4개의 좋아요

글이 여러 갈래의 질문을 두루 포함하고 있어서 한 번에는 조언을 다 못드릴 것 같습니다! 이점은 양해 부탁드릴게요!

제가 의견을 드리고 싶은 부분은 C# 경력에 관한 부분입니다. (자마린, 모바일 앱 관련해서 경험 있으신 분의 의견도 이어서 달리면 매우 좋겠습니다!)

C#은 아시다시피 국내에서는 유니티를 통한 사용, 구체적으로는 게임 업계에서의 사용이 도드라지는 면이 있습니다. 그 외에는 당장 빠르게 많은 사람들을 채용할 수 있는 Java, NodeJS, Python 중심으로 시장이 형성되어있지요.

사실 나와있는 정보만으로 C#을 더 깊이있게 파고드는 것은 한계가 있다고 생각합니다. 그보다는, C#과 연결해서 볼 수 있는 좀 더 깊이있는 프로그래밍 언어인 C, C++ (구체적으로는 Win32 프로그래밍을 위한 C, 닷넷 런타임과 연결할 수 있는 C++ CLR)을 보시면서 점차 다른 언어에 대한 식견도 넓혀 나가시는 것이 좋지 않을까 생각합니다. 한 가지 언어와 시스템에 대한 이해만 있는 것 보다는, 여러 프로그래밍 언어와 시스템에 대한 이해가 폭넓은 사람이 시장에서 좀 더 우대받을 수 있다고 생각합니다.

그리고 순수하게 프로그래밍 스킬에 관한 면에서는 단연 오픈 소스 활동 (스스로 오픈 소스 활동을 하는 것은 물론 다른 리포지터리에 기여하는 것까지)을 하시는 것이 제일 잘 드러나고 효과적으로 실력을 키울 수 있으면서, 한편으로는 다른 사람에게 보여줄 포트폴리오까지 쉽게 완성하시는 길이라고 생각합니다. 단, 단순히 사람들에게 있어보이기 위한 행위 (깃헙의 본인 프로필에서 커밋 빈도를 채우기 위해 잔디밭을 만든다던가 하는 행위)보다는, 어떤 목적을 가지고 오픈 소스 활동을 하는지 분명하게 방향성을 설정하고, 스스로를 다른 사람에게 잘 설명할 수 있는 방향으로 활동하시는 것이 좋겠습니다.

참고로 닷넷데브와 WSL 한국 사용자 그룹에서는 닷넷을 중심으로 하는 오픈 소스 프로젝트들을 이미 여럿 운영하고 있습니다. 간단한 문서 기여에서부터 코드 개발까지 다양하게 참여하실 수 있으니 한 번 둘러보시는 것을 추천드립니다.

4개의 좋아요

닷넷 개발자 중에 악명 높은 테크트리만 탄 10년차 개발자입니다.
물론 자마린도 그 영역 안에 있고 실제로 출시한 앱들도 더러 있습니다.
우선 자마린 커뮤니티(카카오톡 채널)에 오시면 그게 전부일정도로 인원이 적습니다.
인터넷 강의 역시 찾아보기 힘들 뿐더러 한국어로 된 유튜브 채널도 제가 본 건 두 개 정도입니다.

학습도 어렵고 예외처리에 대한 레퍼런스도 없고 Reddit에 물어봐도 아는 사람은 없습니다. 카카오톡 채널부터 페이스북 채널까지 모두 포함해서 말입니다.

하지만 이 순간에도 Flutter 강의와 책은 나오고 있습니다.

개인적으로 자마린의 장점은 기존 C#, XAML 개발에 익숙한 개발자가 그나마 접근하기 쉽다는 장점은 있습니다. 중소형 회사이면서 개발자 확충이 어렵거나 잠깐 써야 되는 프로젝트에는 적합하지만 큰 범위에 앱에는 자마린을 넘어 크로스플랫폼 서비스를 꺼린다고 보여집니다.

Flutter 역시 초반에 한글 자판 문제로 네이버 무슨 팀에서 결국 네이티브와 혼용한걸 들은적이 있었는데 그럼에도 불구하고 Flutter가 Xamarin 보다는 전망이 좋다고 볼 수 있는 이유는 직접 해보시면 아실 수 있는 부분인데 특히 UI를 설계할 때 디자이너가 있거나 중요한 컨텐츠 앱인 경우에는 Skia로 렌더링을 하는거 만큼 Hot Reload 부분이나 동일 화면을 노출시키는 반면 Xamarin은 플랫폼 별 고유 UI컨셉을 훼손하지 않는 상황에서 개발을 진행해야 됩니다.

만일 장치 컨트롤을 위한 단순 앱이나 UI에 크게 영향을 받지 않고 각 네이티브 API를 건드린다면 좋은 선택이 될수 있지만 아마 이 부분이 가장 크게 어렵게 느껴지실 수 있습니다. 각 커스텀 컨트롤을 구현해야 되는 부분이 상당히 노가다입니다.

또한 Nuget 등을 사용하여 플러그인을 활용해야 되는 측면에서도 좋지 못합니다. 우선 수가 많지 않으며 Essential 이나 Community Toolkit도 심지어 버그가 있을 정도이니 다른 플러그인은 특정 XF 버전이 틀어지면 치명적으로 동작을 안하는 일도 있으며 Github에 이슈를 봐도 그 에러가 있는지 조차 모르는 사람이 많습니다. (그 플러그인의 이름은 Firebase 관련 입니다. 중요도가 낮지 않은 플러그인이죠)

무리하게 회사에서 Xamarin을 밀어넣었다가 뺀 몇 회사도 제가 알고 있는데 이유는 위와 같지만 더 큰 건 담당을 진행하던 개발자가 퇴사했을 때 백업할 인원이 없다는 것도 있었습니다.

안드로이드와 iOS 동시에 출시해본바 안드로이드는 예전보다 정말 많이 배포가 쉬워졌습니다. M1에서 Xamarin 을 개발하기 위해 세팅해야 되는 문제가 많지만 그걸 뚫고도 개발 하는 분들도 계십니다.

하지만 이걸 지금 MAUI라는거 때문에 접근하시는건 좋지 못하다 생각합니다.
냉정하게 잡코리아에 Xamarin 을 검색하셨을 때와 Flutter를 했을 때 온도차나 회사의 느낌도 다를 것 같습니다.

Flutter는 Flutter 개발자를 뽑지만 Xamarin을 메인으로 뽑는 개발사는 전 거의 없다 생각합니다. 오히려 다른 일을 하면서 병행 해야 되는 분들이 많이 계시기 때문에 사실 C# 경력에 Xamarin이 있다는건 좋지만 Xamarin을 주로 이직을 하신다면 그때 즈음엔 제 글이 기억나실 겁니다.

Silverlight, WPF, WP7, UWP, WCF, Xamarin도 처음 나올 땐 좋아 보였죠. c#으로 이것도 개발되고 저것도 되고 만능인 것처럼 보여지면서 마켓플레이스가 어떻고 웹 개발은 어떻고. 하지만 정작 개발자들이 잘 안쓰면 문제가 생기고 밀리기 마련입니다. 파이가 크지 않기 때문에 레퍼런스 역시 적고 지원도 줄어들고 학습한 시간은 날아가게 되죠.

MAUI가 조금 연기되고 있긴 하지만 그래도 쓸만하게 바뀌어 가고 있는건 사실입니다.
하지만 Border나 FontAutoScalingEnabled 같은 옵션조차 이번에 추가 되었습니다.
기술이 더 좋아졌다고 해서 회사나 엔드유저가 알아주진 않습니다.
이는 Fuse, Uno, Flutter도 해당 될 것 같습니다.
하지만 굳이 누가 안 알아준다면 안정성이 보장되지 않는 어려운 길을 갈 필요가 있을까요?

커리어를 생각하신다면 c#은 그대로 공부하시더라도 Flutter를 배우는걸 추천드리며
자마린에 어떤 엄청난 기능과 컨트롤이 추가되도 추천하고 싶지 않습니다.
뭐가 추가 되도 자마린 개발자의 수가 많이 늘까 싶네요.

다른 개발자 분들의 의견도 전 존중하고 또 잘 쓰시는 분들 의견도 들어보시면 좋을 것 같습니다
감사합니다.

//쓰고 보니 완전 자마린 혐오자가 되어있네요 ^^; 그렇지는 않습니다.

6개의 좋아요

개인적으로 닷넷을 좋아하는 1인 입니다.

xamarin vs Flutter 보다

마이크로소프트 vs ? ( 가고자 하는 방향 )
만약, 가고자 하는 방향과 이렇게 비교해 보는것이 어떨까요 ?

4개의 좋아요