3년차 Winform 개발자입니다.. 진로에 대해 고민이 있어 조언을 구하고 싶습니다.

안녕하세요 눈팅만하다 이번에 새로 가입한 만 3년 되어가는 Winform 개발자입니다.
첫직장에서 머신비전 1년 반, 현직장에서 병원시스템 1년 4개월가량 경험이 있는데,
요 근래 점점 이대로 살면 안되겠다는 생각이 많이 들어 조언을 구하러 왔습니다.

학사연구원때 Python, 졸작이나 학부때 mfc,임배디드, php 조금 맛본거 말곤
첫 직장에서 처음으로 c#을 접해서 Winform만 계속 했습니다.

경력이 얼마 되지 않아 안좋게 들리실 수도 있지만, 회사를 다니면서 느낀점은
코딩 실력보다 머신비젼은 카메라, 비전알고리즘을 병원은 병원 업무프로세스를 아는게
훨씬 중요하다고 느꼈습니다… 업무도 기술보단 해당 산업의 지식이 더 중요하고
매번 똑같은 기술로 화면 찍어내기같은, 프로젝트만 진행하다보니 갈수록 실력이 퇴화(그럴실력도 없긴합니다만…) 되는 느낌을 너무 강하게 받습니다.

전 직장에서는 c#도 처음이고 나름 멀티쓰레드, 디자인패턴 등 교육도 받았는데
현 직장에선 개발하면서 코드적으로 도움을 받을만한 내용조차 없고, (Oracle은 가끔 도움을 받습니다 ㅎㅎ)
제 레벨에서 여러번 생각해도 이게 좋은 코드인지 아닌지 작성을 하면서도 긴가민가합니다.
또 워낙 보수적인 집단이라 새로운 기술은 아예 적용할 계획도 없고,
(작년에 장비연동 때문에 18년도 정도 된 시스템을 32->64bit 마이그레이션하면서
netframework 4.8버전을 사용하게 된 정도니 여기선 더 나은 기술발전이 어려울 것 같습니다 ㅜ)

현재 편안하게 계속 다닐만한 급여도 아닌 것 같고(계약연봉 3천중반 조금 넘습니다) 스킬업도 하고싶어서
더 늦기전에 이직을 고려하고 있는데 선택지가 너무 좁다고 판단되어 지금이라도 다른 기술을 배워볼까 합니다.

될 수 있는 한 b2b가 아닌 b2c형태의 서비스를 제공하는 업무를 하고싶고
생각한 방향은 Unity or 웹쪽으로 전향을 고려중입니다.

아직 결정을 하지못해 우선은 html, css 를 간략히 경험 후 js를 배우고 있습니다만 계속 고민이 됩니다.
만약 웹을 한다면 asp를 하면 후회할까요? vs가 너무 익숙해서 웹을 하더라도 .net으로 하고싶은데
검색해보면 .net은 서브로 가져가는게 맞다는 의견이 많은 것 같아 매우 아쉽습니다…

2개의 좋아요

앞으로의 방향을 생각하면 당연히/무조건 웹쪽을 해야하는건 맞는데, 중요한건 윈폼만 하던 사람은 다른 플랫폼으로 이직하는게 쉽지가 않다는겁니다.
웹쪽은 백엔드와 프런트엔드쪽이 각각 상당한 기술 발전이 이뤄진 상태라 처음부터 따라잡는게 절대 쉽지가 않은데, 특히나 백엔드쪽 ASP.NET은 WEBFORM, MVC, CORE가 뒤섞여서 사용되고 있다보니 정확히 뭘 공부해야할지도 난감한 상황이고, 관련 책자나 인강등도 턱없이 부족한 상황이라 공부하는것도 쉽지가 않습니다.

윈폼만 사용한 개발자가 웹쪽을 하고 싶다면 크게 두가지 스택으로 가는게 좋을겁니다.
첫번째는, 자바(스프링)+(REACT or VUE) 체계로 완전히 바꾸는 방법
두번째는, ASP.NET Core 5 + (REACT or VUE) 체계로 바꾸는 방법

"C#을 했으니까 당연히 asp.net을 해야하는거 아니야?"라고 생각하시겠지만, ASP.NET CORE쪽 책이나 인강이 거의 없어서 혼자 공부하는게 상당히 어렵습니다. 이정도 노력으로 공부할거면 책과 유/무료 인강이 널려있는 자바(스프링)을 하는게 훨씬 더 빠르고 효과도 좋고, 취업 가능성도 높기 때문에 개인적으로는 자바로 갈아타는걸 권장합니다.

5개의 좋아요

제 생각은 선택의 차이라고 봅니다.
연봉을 당연히 중요하게 생각 안 할 수는 없겠지만 aspnetcore도 java에 비해 없는 것이지 꽤 있습니다. 구조적 설계만 제대로 할 수 있다면 언어는 별 중요하지 않아보입니다. 단지 razor가 처음 배울때는 어려움이 있을거고 프론트앤드 프레임워크 없이 일단은 당장 시작하는덴 jquery만 해도 충분해 보입니다.

이제 윈폼에서 웹으로 전향하려는 차에 너무 많이 해야한다기보다는 조금씩 습득해가시는게 어떨까요? 사실 c#의 편리성과 익숙함을 버리고 다른언어로 넘어가기엔 당장 웹은 구조가 중요하고 언어보단 서비스를 함께 연계할 수 있는 docker나 mqtt, cloud, redis 같은 다른 기술들도 중요합니다. 대규모 b2c 서비스를 하는 곳에선 그런 빌드 배포 자동화가 잘 갖춰져 있을 것이라 그것 역시도 중요한 부분같고 물론 전담하는 팀이 있는 곳이라면 상관없겠지만 그래도 개발자는 어느 분야나 조금씩은 알아야한다고 생각합니다.

언젠가는 다른언어로 넘어갈 수 있다고 가정하더라도 지금은 일단 웹에 적응을 해야하니 웹의 특성을 빨리 맛보기 위해 그냥 aspnetcore로 하시는게 좋을 것 같다는 개인적 한 표입니다.

3개의 좋아요

최소 3~6개월 평일 평균4시간 주말 12시간정도 계획하구 준비중입니다 ㅎㅎ
알아야 하는 내용이 너무 광범위해서 공부 방향도 아직 갈피를 못잡고 있는 것 같아요
좀더 빨리했으면 어떨까 후회가 많이 드는데 그만큼 더 노력해야겠네요 조언 감사합니다

1개의 좋아요

둘 다 찍먹해보고 싶은데 곰곰히 생각해보니 그럴 시간은 없는 것 같아 고민됩니다.
조금씩 습득해가면 정말 좋겠는데 마음이 너무 급하네요 진작 했으면 좋았을텐데 ㅎㅎ
목표로 하는 회사 목록을 정해놓고 그들이 원하는 기술스택을 배우는 방향으로 갈 것 같아요. 조언 감사합니다.

2개의 좋아요

저는 이렇게 조언해드리고 싶습니다.

도메인 기술과 개발 기술의 구분

우리는 취업을 해서 회사에 노동을 지불하고 그 대가로 월급을 받아 생활합니다. 하지만 단지 보상의 크기만 중요하다면 어떤 분야던 내가 할 수 있는 최고의 대우를 해주는 회사에 취직하는게 맞겠죠. 이런 고민의 나머지 빈 공간은 내가 원하는 무엇이 아닐까요?

대부분의 우리나라 IT회사는 개발 기술 보다는 도메인 기술을 중요하게 생각합니다. 개발의 트랜드라던가 어떤 개발 환경을 사용해서 업무에 적용할지에 대한 고민은 좀 더 기술집약적인 회사에서 고려될 사항이고요, 대부분의 회사는 회사의 수익 창출을 위해 회사 강점의 도메인 사업 영역에서 얻는 경험과 영업/기술력을 이용해 활동을 하고요, 그렇기 때문에 개발 기술을 얻기 위해서 회사가 어떤 도메인 활동을 하는지가 중요합니다.

개발자마다 성향이 다르기 때문에 무엇이 정답이라고 하기는 어렵고요, 해당 도메인 예를 들어 공장자동화라던가 의료 분야라던가 문서자동화 등 도메인 자체에 관심이 있으시다면 관심있는 도메인의 회사를 선택하는게 맞습니다.

그게 아니라면 내가 습득하고자 하는 기술 분야에 맞는 회사를 선택하는게 맞겠습니다.

전략적인 접근, 나는 현 기술에 특화하여 고유한 기술 경쟁력을 가지고 있는가?

하지만 경험상 내가 도메인에 더 관심이 있는가? 개발 기술 자체에 관심이 있는가는 이분법적으로 딱 떨어지지가 않겠지요. 그래서 이런 접근도 물론 고려해보셔야 하고 또다른 접근으로 어쨌든 내가 활동하고 있는 도메인 분야에서 얻게 될 기술력이 나의 가치향상에 도움이 될 것인가를 고민해야 합니다. .NET Framework 시대의 옛 기술을 사용하는 업장에서 .NET의 새로운 기술이라던가 다른 분야의 새로운 기술과 경험을 쌓기란 어렵습니다.

그리고 이런 고민도 하셔야 합니다. 회사에서 경험하는 대부분의 개발 경험은 물리적 프로그래밍관점에서는 서로 다른 기술들이겠지만 논리적 프로그래밍 관점에서는 어떤 분야던 공통으로 필요한 경험일 수 있습니다. 이 관점에 대한 이해는 다음의 김상현 님의 논리적 프로그램글을 참고하시면 좋습니다. 이렇게 배워야 할 프로그래밍 경험을 두 관점으로 구분하셔야 다른 환경에서도 활용할 수 있는 논리적 프로그래밍의 역량을 키울 수 있습니다.

어쨌든, 내가 회사에서 경험하고 있는 기술에 대한 기술력이 월등히 뛰어난가 그렇지 않은가로 자신의 가치를 어떤 방향으로 향상시킬 수 있는가에 대한 해답을 얻을 수 있다고 봐요. 우리나라 시장이 .NET 기술 사용이 현저히 위축되어 있는 이 상황에서 .NET을 잘할 수만 있다면 상대적으로 높은 급여를 받을 수 있습니다.

새로운 기술을 익히는 가장 효과적인 방법은 업무에서 얻는 경험

그러나 어쨌든 우리는 스스로 공부하는 자극 보다는 회사에서 필요로 하는 기술 습득에 대한 자극을 통해 좀 더 효율적으로 성장할 수 있기는 합니다. 내가 나에게 주는 자극은 그 강도의 한계가 있거든요. 그래서 내가 배우고자 하는 기술을 정확히 선정한 뒤 그 기술을 적극적으로 배울 수 있는 회사로 이직하는 방향성이 좋습니다.

그런데 이런 접근에서 문제가 되는 것은 무엇일까요? 우리가 두 가지 목표성을 한번에 달성하려고 하기 때문입니다. 가령, 지금의 직장에서는 급여가 얼마인데 내가 원하는 기술을 배우기 위해 이직하려면 내가 받는 급여의 절반만 받을 수 있다고 칩시다. 우리는 이 때 갈등을 하는데요, 그렇기 때문에 더더욱 더 내가 배워야 할 기술에 대한 명확한 결정이 중요합니다.

안정적인 기술 전향은 장기간의 기술습득 시간이 필요

현격한 연봉하락의 부작용을 막고 다른 기술을 습득하기 위한 유일한 방법은 업무외에 지속적으로 배워야 할 기술을 습득하는 방법밖에는 없는데요, 최소 1년 이상의 장기계획이 동반하는 어려운 길이긴 합니다. 회사의 환경에 따라 나의 기술 방향성이 좌지우지 된다는 것은 좀 더 장기적인 관점에서는 바람직하지 않는데요, 본인이 관심있는 분야의 기술을 스스로 습득하기 위한 좀 더 구체적인 방법론이 필요하다고 생각합니다.

가령, 깃허브의 활동이라던가, 이곳 닷넷데브 포럼 같은 곳에 본인이 습득한 기술을 나누고 다양한 피드백을 받는 것입니다. 돈을 받는 일이 아니라면 이렇게 피드백을 통해 자신의 위치와 그리고 기여 정도를 확인하는게 중요한데요. 그렇지 않으면 스스로 공부해서 성장하는게 굉장히 힘들기 때문입니다.

5개의 좋아요

길고 자세한 답변 매우 감사드립니다 ㅎㅎ
어딜가던 논리적 프로그래밍과 비슷한 이야길 종종 들었는데 정리된 글로보니 더 강렬하게 기억에 남을것 같아요.
저도 현재까지 계속 고민중인게 말씀하신 부분과 어느정도 일치하는게 있어서 더욱 고민이 됩니다.
1.목표로 하는 회사의 기술스택들을 사용하는 회사에 가서 우선 배우면서 저녁엔 따로 공부하며 준비를 해야할지
2.현 직장에서 계속 혼자 공부하다가 유명한 부트캠프나 프로그램에 도전해 퇴사하고 배울지
위의 두가지를 생각하고 있습니다.

이직해서 배우는 건 연봉하락의 경우 진행중인 외주작업까지 모두 포기할 각오가 되어있어 당장 천만원정도 하락해도 괜찮은데 좋은 시니어분을 만날 수 있을지가 가장 큰 걱정입니다.
다만, 유명한 부트캠프는 모집기간이 아직 많이 남아서 너무 늦어지진 않을까 생각되기도 합니다.

우선은 계속 공부하면서 이직해서 배울 수 있는 곳을 알아보면서 부트캠프가 열리면 도전해보는걸로 방향을 잡고있습니다. 요즘은 공고보는시간도 다 코딩테스트, cs, 기술스텍에 때려박아야 될 것 같다는 생각이 들기도 합니다. 도움 주셔서 감사합니다.

4개의 좋아요

이곳 활발히 활용해주세요. 적극적으로 도움 드리겠습니다! 응원 드립니다.

4개의 좋아요