C# 개발자도 품귀 현상이네요

제 개인적인 견해로는 국내에서 .NET이 응용프로그램 위주로 자리잡아서 그런 듯 합니다. ASP.NET은 Windows Server의 유료 라이센스로 아무래도 좀 리눅스에 비해 사용 빈도가 낮은게 스노우볼링된 것 같다고 생각합니다.

저는 FA분야에서 2년, POS 분야에서 1년 반정도, 키오스크 업계에서 6개월 정도 재직한 경험이 있는데 말씀하신대로 기술스텍이 똑같습니다. Winform에 DevExpress 입니다. 전국의 공장과 병원의 키오스크에 엄청나게 많은 프로그램들이 .NET으로 개발되어 있습니다. 다만 그걸 사용하는 유저들이 공장의 직원, 또는 병원 방문자 뿐이다보니 스프링이나 Node.js 같은 언어로 만들어진 ‘하나의 서비스’ 개념이 아닌 주로 ‘솔루션 형태의 SI’ 형태의 프로젝트이다보니 입소문을 많이 못타는 듯 합니다.

지금 네카라쿠배당토같은 IT대기업에서 사용하는 언어들이 ‘하나의 서비스’ 또는 '플랫폼’화 되어서 엄청나게 각종 언론도 동원되어 엄청 활약하고 있지만, 삼성이나 LG, 현대, 기아 또는 같은 제조업을 끼고있는 회사들은 ‘머신비전’ 같은 기술의 활용도 때문에 C#을 꽤 많이 사용하는 듯합니다. 물론 코어로직은 CPP로 하실꺼고, C#이 마음에 안들면 Python으로 할 수는 있겠지만요.

카카오톡, 배달의 민족같은 흔히 일반 유저가 사용할 수 있는 서비스를 사용하다보면, 코딩을 모르는 사람도 이게 무슨 언어로 개발되었나 찾아볼 수 있고, 아무래도 일반 대중들에게 노출이 쉬운만큼 학원에서도 마케팅하기 쉬울 것입니다. 반면 공장이나, 키오스크 같은 서비스가 아닌 프로그램들은 대중에게 마케팅이 어렵겠죠.

제가 드리고 싶은 말은 대중에게 널리 알려지지 않았을 뿐 닷넷으로 개발된 서비스화 되지 않은 프로젝트가 많다는 것입니다. 닷넷은 아니지만, 유니티를 사용하는 게임회사의 경우, 그 게임 회사의 서버는 ASP.NET Core로 많이 개발되어있다고 들었습니다. 그래서… C#으로 성공한 카카오톡 같은 하나의 서비스가 나와서 홍보만 된다면 C#도 많이 사용하게 되지않을까합니다.

그리고 좀 개인적으로 안타까운 것이…개인적으로 C#을 하는 분들의 대다수는 Winform이라고 생각하는데요. Winform이라는게 오래되었고 사용하기가 쉬운만큼 널리 사용되는 것은 알겠으나, 웹개발자들이 기본적으로 어떤 플랫폼을 설계하고 웹이라는 특징의 제한된 리소스를 사용하는 환경에서 여러사람이 소스를 관리하고, 소프트웨어 아키텍쳐링을 통해 분산처리를 하는 그런 생각을 특성상 많이 못하는 듯합니다. Github 못쓰게하고 압축파일로 백업해서 USB에 넣고 다니거나… 그래서 일단 돌아만 가게하자는 생각으로 버튼 하나에 2천 줄 3천줄씩 또는 1만줄씩 때려 넣고, solid 같은 객체지향 패턴을 무시하고 개발하여 객체지향 언어인 C#을 절차지향 형식으로 사용하는 등의 형태로 개발하여 추후 유지보수하기 어려운 코드가 나온다고 생각합니다.

제 경력이 7년차라 아직 경력이 적은 것은 사실이나, 함께 일하는 선배 동료들의 스파게티식의 코드를 상당히 많이 봤습니다. 또한 현재 스타트업에서 면접관을 하면서 .NET 인력구인이 너무 힘들어서 Winform을 해봤더라도 C#만 해봤다면 뽑아보자고 면접을 봤지만, Azure같은 클라우드도 잘 모르고, Redis같은 캐시도 잘 모르고, 심지어는 RDB 또는 NoSQL도 잘 모르고, Docker, K8S 같은 요즘 떠오른다는 IT기술은 잘 몰랐습니다. 스타트업이라 그런 기술들을 사용해본 경력자들이 지원 안 했을 수도 있고, 아니면 그냥 제가 운이 없었던 것인지도 모르겠습니다. 저희는 .NET으로 이커머스 서비스를 개발하려는 회사라 그런 기술을 대규모 트래픽에 대한 이해를 가진 경력자를 채용 중이라 그런 기술 스텍 부분만 보게 되었습니다. 물론 일반화 시키기는 어려운 부분이라고 생각합니다.

아무래도 공장이나 병원같이 '출장’근무환경에서 박스깔고 앉아서, 또는 서서, 또는 방진복입고, 또는 안전화신고, 간호사나 의사들에게 ‘나는 그런 불법프로그램같은 것을 깔지 않았다고’ 윽박 질러대는 환경에서, 고객한테 욕까지 먹어가며 MVVM이니 MVC, MVP니 이런 패턴을 고려하며 코딩할 생각은 못하는게 당연할거라 생각합니다. 그리고 그런 악순환으로 그렇게만 하다가 경력은 쌓이니, 제한된 리소스에서 대규모 트래픽이 발생하면 어떤 기술이 필요할까 이런 고민을 응용개발자들이 못하게 되는 것 같습니다. 해온 프로젝트들이 대다수가 그런 대규모가 필요없는 환경 일 것 같습니다.

그러나 사실 대규모 트래픽에 대해 신경 쓸 일이 없다면 현재 유행하는 캐싱, 오케스트레이션 같은 기술은 필요 없을 것 입니다. Winform, WPF 같은 UI 프로그램은 docker 이미지로 빌드하거나 그러지 못하니까요. 설령 빌드를 할 수 있더라도 UI를 랜더링 할 수 있는 무거운 OS가 들어갈 수는 없겠죠. 가상화라는 개념은 필요하고 우리가 알게 모르게 쓰고 있지만 그걸 대규모 트래픽을 해결하는데 이용할 필요는 없는 상황인 것입니다. 따라서 응용개발자로 경력이 많이 쌓였다면 서비스 개발자들의 영역이 아닌 다른 네이티브한 부분을 다루는 것이 어떨까 하는 생각도 해봤습니다.

키오스크를 개발하고 있는 응용개발자라면, 디자인 영역을 따로 공부하여 UI, UX적인 부분에 대해 전문 지식을 쌓고 많은 애니메이션을 넣어도 조잡하지 않으면서도 화려한 (고객들이 말하는 화려하지만 심플한) 그러면서도 버벅거리지 않는 그런 키오스크를 개발할 수도 있을거고, 공장직군이라면 출장을 다닐 수 밖에 없는 운명이니, 출장다니면서도 조금 더 여유로울 수 있도록 틈틈히 작은 단위부터 자동화를 해서 편리한 모듈을 만들어 놓는 다던지…

개인적으로 한탄하는 내용이면 따로 글을 올리는게 좋았을 법한데 주제가 나와서 답글로 길게 남기게 되었네요… 취지는 응용개발자도 웹과 모바일을 따로 하지 않아도 살 길 찾아 전문영역을 키울 수 있지 않을까…? 하는 내용이었습니다. 물론 한국에 컴퓨터가 처음 공급되어 웹이 발달하지 않았던 시절 로컬컴퓨팅이 유행이어서 델파이 MFC같은 응용기술이 유행이었다가, 지금은 웹으로도 응용에서 하는 만큼 컴퓨팅 파워를 끌어낼 수 있는 현재와 미래에 웹 기술을 익힌다면 도움은 분명 될 거라 생각합니다. 하지만 꾸준히 제조업이 필요하고, 개인 PC가 필요할 수 밖에 없는 영역이 있는만큼 수요가 줄어드는 것은 아니라고 생각합니다.

18개의 좋아요