갓 입사한 주니어 C# 개발자 필독서 그리고 앞으로의 로드맵

안녕하세요 자바 국비교육을 받고 IT 생태계에 발을 들여놓은 주니어입니다.
현재 제조업 IT 솔루션 쪽 업무를하고 있으며 프로젝트 투입되어 vb.net으로 mes 서드파티 응용프로그램을 만들고 있습니다. 기존에 레거시를 받아서 제가 리팩토링 정도하고 약간의 디벨롭을 하고 있으나 길게 봤을때나 제조업 고객사에서 쓰기에 C# 이 필수적이게 될거 같기도하고 저도 관심이 많아져 이렇게 회원가입 하고 글을 올립니다.

물론 개발 서적이야 많겠지만c#을 통한 닷넷 개발에대한 서적에대한 정보가 부족한거 같단 생각이 들었습니다.
혹시 추천해주실 개발 서적이나 유튜브 같은것이 있다면 추천부탁 드리겠습니다.

추가적으로 저는 개인적으로 c#을 통한 자동화나 mes프로젝트가 굉장히 재밌다고 느끼고 있습니다. 현업분한테 욕 뒤지게 먹어도 모로가던 서울로만 가면된다고 인터페이스 하는 것도 재밌고, 일단 그냥 개발자체가 재밌는 편입니다. 다만 앞으로의 로드맵을 어떻게 그려야 할지에 대한 의문이 풀리지 않고 있습니다. 길게 주절주절 썼지만 궁극적으로 c#으로 잘 공부해야할지, 데브익스프레스 경험이 있어야 하는지 이런 근본적인 궁금증이… 많이 큽니다ㅏ…! 질문이 두서가 없긴한거 같지만… 앞으로 어떤 것을 잘 준비해야할지 이런 것에대한 첨예한 조언을 부탁드립니다!

좋아요 4

모두의 Q & A 게시판이 맞을 것 같아서 변경했습니다.

좋아요 1

모두의 Q & A 카테고리를 보시면 비슷한 질문들이 많을 것 같은데 한 번 쭉 보시면 해소되지 않을까합니다.

좋아요 1

아래 Q&A 글 참고해보시길 추천드립니다.

3줄 요약하자면 아래와 같습니다.

  1. 공부하고 싶은 분야를 선택하세요.
  2. 그 분야의 MS Docs 문서를 정독하세요.
  3. 토이 프로젝트를 하면서 기록하세요.
좋아요 5

감사합니다!

좋아요 2

이곳에 오시고 활동을 시작하신 것을 환영합니다!

먼저 @김바비 님의 질문을 분석하고 하나씩 답변 드려볼께요!

분석의 시작은 문제를 정의하는 것부터 시작합니다. 자신이 문제를 정의할 수 없다면 이것부터 하셔야 합니다. 이제부터 제가 질문글을 통해 분석을 시작할텐데 저또한 잘못 분석할 수 있다는 점, 그리고 이런 분석을 통한 답변을 드리는 이유가 있다는 점을 강조하면서 질문글을 분해해 보겠습니다.

=> 대략 1년 정도의 교육을 받고 막 취업한 상태

=> 제조업의 MES 관련 일을 하고 있으며 (스마트 팩토리 사업에 개발자로 참여) 기존 노후한 시스템을 VB.NET으로 리팩토링과 추가 개발을 하고 있음. VB.NET 보다는 앞으로 C#이 더 필수적으로 느끼고 관련해서 관심도가 높아지고 있음

  • MES 시스템은 전통적으로 그리고 장비를 연동하는 지점 때문에 웹 보다는 애플리케이션 형태가 다수인 것으로 알고 있음
  • 기존 시스템은 MFC 느낌의 고전적인 형태가 많고 아마 그 형태를 최신의 형태로 리팩토링 하는 작업에 참여하고 있는 것으로 보임
  • VB.NET을 선택한 이유는 아마도 기존 시스템이 VB로 되어 있어서가 아닌가 추측해봄
  • 하지만 VB.NET 사용자가 많지도 않고 정보를 찾기도 어려운 부분이 있는 것 같음. 그래서 그런 부분에 의해서 VB.NET 보다는 C#이 좀 더 유망해 보인다고 생각하시고 계신가 아닌가 추측해봄

=> 검색에 의해서 다양한 C# 개발 서적은 찾을 수 있었지만 막상 현업에서 바로 적용할 수 있는 단계의 개발 서적 (레퍼런스 책이 아닌 직무 관련 책)은 찾기가 어렵다고 느끼시는 것 같음

=> 장비 연동부터 시작해서 MES의 자동화나 인터페이스 하는 개발에 흥미를 느끼고 있고 개발 자체는 적성에 맞다고 느끼시는 것 같음.

=> 하지만 본인이 하고 있는 분야 (MES)와 선택한 환경 (.NET, VB.NET, 또는 C#)에 대한 확신은 아직은 없으신 것 같음. 또는 어떻게 해야 자신의 가치를 상승하고 실력을 갖추고 성장할 수 있을지에 대한 A-Z이 있었으면 하시는 것 같음


이렇게 질문글에 의해서 1차 분석을 할 수 있습니다. 이제 하나 하나 정복해 봅시다. 먼저 문제를 정의해야 합니다. 이 문제는 제 문제가 아니라 잘못 정의할 수 있다는(틀릴 수 있다는) 것을 다시 한번 양해를 구하면서 정의를 해볼께요.

문제 정의

  • 막 입사한 주니어 C# 개발자가 어떻게 해야 단계적 목표 및 기준을 통한 성장 계획을 세울 수 있는지. 또는 그러한 로드맵 기준 가이드. 그리고 C# 개발자 필독서 추천

    • 경력 : 1년 교육 이후 막 입사하여 활동 함
    • 분야 : MES
    • 수준 : VB 코드(추측)을 VB.NET 으로 마이그레이션 할 수 있음. 부분적인 개발 가능
    • 성향 : 장비 및 시스템 연동, 자동화 등의 MES 시스템 요소에 흥미있음. 기본 개발 경험도 흥미있음 => 개발이 적성에 맞다고 느낌

문제의 분해

  • 질문자의 정확한 개발 능력을 좀 더 확인해야 함

    • 새프로그래밍 언어의 문법 숙지 및 코딩으로의 전환 속도가 어떠한가? 빠른가?
    • 개발에 필요한 컴퓨터 개론에 대한 이해도가 있는가? (메모리, 저장소, 스레드, 스택, 힙, …)
    • 개발에 필요한 개발 능력 (사고력)에 대한 훈련이 되었는가? 컴퓨팅 사고
    • 알고리즘을 설계할 수 있는가? 또는 설계된 알고리즘을 구현할 수 있는가?
    • 객체지향 프로그래밍에 대한 개론 수업을 받았는가? 객체지향 프로그래밍이 가능한가?
  • 질문자가 원하는 중간 성장 단계를 좀 더 확인해야 함

    • 어떤 프로그래머가 되고자 하는가? 프로그래밍을 잘하고자 하는가? 업무를 잘 하고자 하는가?
      ※ 업무 능력과 개발 능력은 서로 관련성은 있으나 다름
  • 필요로 하는 C# 개발 필독서는 문법 레퍼런스인가? 무엇인가?

    • C# 언어에 대한 레퍼런스는 Microsoft 문서를 포함하여 국내에도 다수 있음. 그중에서 좋은 책을 추천받기를 원하시는지?
    • 아니면 Windows Forms, WPF나 UWP, WinUI등 애플리케이션 개발 프레임워크에 대한 책을 추천받기 원하시는지?
  • 제시한 로드맵을 통해 무엇을 얻고자 하는가?


뭐 이런식으로 계속해서 분석을 해나갈 수 있습니다.

일단, 어떠세요. 정보는 지식일 뿐이고, 코딩은 근육과 같아서 지속적으로 자극 받아 성장해야 하는 무엇이라 할 수 있습니다. 일단, 매일 닷넷데브 방문하셔서 질문도 올려주시고 글도 쓰시면서 필요로 하는 그 디테일을 같이 찾아가보도록 하는것은 어떨까요?

좋아요 9

너무나도 첨예한 분석 감사드립니다!!
혹시 분석을 토대로 추가적인 질문 메세지로 드려도 될까요?!

좋아요 2

DM으로 주시진 마시고 이곳을 통해 나누시면 어떨까 해요. 모든 분들께 대화가 도움이 되는게 이롭다고 생각합니다.

좋아요 4
  • 새프로그래밍 언어의 문법 숙지 및 코딩으로의 전환 속도가 어떠한가? 빠른가? : 초급개발자로 아직 느리다.
  • 개발에 필요한 컴퓨터 개론에 대한 이해도가 있는가? : 어느정도의 기본지식정도만 가지고 있다.
  • 개발에 필요한 개발 능력 (사고력)에 대한 훈련이 되었는가? 컴퓨팅 사고 : 해보려 노력중이다.
  • 알고리즘을 설계할 수 있는가? 또는 설계된 알고리즘을 구현할 수 있는가? : 아직까진 미흡하다.
  • 객체지향 프로그래밍에 대한 개론 수업을 받았는가? 객체지향 프로그래밍이 가능한가? : 알고는 있지만 과연 제대로 할 수 있을까?

저는 프로그래밍을 더 잘 하고 싶은 마음이 큽니다. 프로그래밍을 잘 하게된다면 당연히 업무도 잘 할 수 있을거라 생각합니다.

요로 하는 C# 개발 필독서는 문법 레퍼런스인가? 무엇인가?
기본을 탄탄히 쌓을 수 있는 서적과, 업무상 자주 쓰이는 Winform과 프레임 워크에 관한 책 모두 필요할거 같습니다.

이러한 일련의 과정을 통해서 스마트 팩토리 혹은 mes 쪽 프로젝트에서의 전문가가 되고 싶습니다.

좋아요 4

일단 자신이 어떤 유형으로 개발하는지를 파악할 필요가 있습니다. 저는 가이드를 할 때 크게 두가지 유형으로 구분하고요, 이 구분은 어느정도 성취하게 되면 의미가 없어진다는 점은 참고해주세요.

  1. 자신이 지식을 먼저 습득한 후 코딩하는 편이다. 준비파
  2. 코딩을 먼저 해서 결과를 확인한 후 알아가는 편이다. 행동파

먼저 저의 유형을 먼저 말씀드리면 행동파였습니다. 지식도 알아야 찾아 쌓을 수 있기 때문이기도 하고, 저는 처음에는 논리적 사고가 많이 부족했기 때문이기도 했는데요, 그럼에도 불구하고 결과를 만들고 싶었죠.

그래서 일단 무조껀 짜고 코딩하는 과정에서 막히는 부분은 숨이 넘어갈 것 같은 상황까지 맞이하고 해결하거나 하는 편이였습니다. 이것의 장점은 충분한 경험을 통해 내것으로 만들 수 있다는 점이고요 단점은 체계적으로 경험하지 못한다는 점이 단점이 됩니다.

@김바비 님이 어떤 유형으로 개발 하시나요?

답변해주신 내용으로 제가 드릴 수 있는 점은 업무를 진행해야 하기 때문에 지식 습득 후 코딩하는 방법은 효과적이진 않다는 점이고요, 일단 문제를 어떻게 해결해야 하는가의 해결 관점에서 경험을 획득하다 보면 어느정도 문제 해결능력이 갖춰집니다. 어느정도의 컴퓨팅 사고에 대한 지식을 쌓았으면 그 내용을 잠시 내려놓고 분해의 관점에서만 고민을 먼저 해보세요.

어려운 하나의 문제는 그것보다 쉬운 여러 문제로 분해될 수 있다.

학생들에게 이 원리를 알리기 위해 간단하게 만든 도식인데 같이 봐볼께요.

내가 풀지 못하는 어떤 문제는 사실 다양하고 복잡한 여러가지 문제들의 집합입니다. 분해는 이것을 분별해서 나누는 행위고요,

문제의 분해 능력은 일종의 능력이라 숙달이 필요하지만 어느정도의 지식을 습득하는 것으로 최소한 방법론 관점에서 접근할 수 있게 됩니다. 컴퓨팅 사고의 여럿 컨텐츠를 계속해서 학습해보세요.

사실 @김바비 님이 얻고자 하는 무엇은 이러한 문제의 분해 방식으로 스스로 획득할 수 있습니다. 예시를 들어볼께요.

분석

  • 새로운 언어 문법을 얼마나 빠르게 습득할 수 있는가? 초급개발자로 아직 느림
    → 프로그래밍은 프로그래밍 언어 문법과 그 언어로 코드를 전개하는 것만 있지 않는데요, 저는 이것을 굳이 구분해서 논리 프로그래밍물리 프로그래밍이라 합니다. 프로그래밍의 결과물은 최종적으로 코드지만 이것을 만들기 위한 논리 전개는 분석, 설계과정을 통한 논리의 흐름과 그 상세입니다. 즉, 프로그래밍의 행위는 코드가 나타나기 이전의 논리 프로그리밍 상태가 있습니다. 프로그래밍을 좀 더 체계적으로 그리고 강력하게 배우기 위해서는 프로그래밍 행위를 논리 프로그래밍물리 프로그래밍으로 구분지어 훈련하는게 좋습니다.

  • 컴퓨터 개론에 대한 이해도 : 어느정도의 기본 지식만 가지고 있음
    → 지금의 수준으로는 프로그래밍을 효과적으로 할 수 없는 단계인 것 같습니다. 컴퓨터 개론은 학교나 다양한 서적에서 다루고 있고요, 인터넷을 통해 정보를 획득할 수도 있습니다. 메모리 힙 스택, 스레드, 커널 모드와 일반모드 등 프로그래밍에 실질적으로 필요한 개론 수준의 지식 습득은 필요한데, 위의 본인의 개발 유형에 따라 미리 습득하셔야 할 수 도 안하셔도 됩니다. 닭 / 알 중 누가 먼저냐의 문제같은거라 경험하고 지식을 찾아 배우셔도 유형에 따라 더 효과적입니다.

  • 사고력 훈련은 되었는가? 해보려 노력중
    → 사고력 훈련은 중요합니다. 프로그래밍에서 필요한 사고력은 사실 문제 해결 능력으로 압축됩니다. 문제 해결능력은 문제 분해능력을 통해 갖춰지고요, 문제를 효과적으로 분해하기 위해서는 문제를 분해하는 훈련이 어느정도 이루어져야 하는데, 먼저 이것을 알고 있었느냐? 아니면 그냥 코딩했느냐 큰 차이가 있어요. 컴퓨팅 사고 관련 컨텐츠를 통해 먼저 필요를 자각하고 문제를 어떻게 분해하는지에 대한 학습과 훈련을 강도높게 할 필요가 있습니다.

  • 객체지향 프로그래밍 수준 : 알고는있지만 아직은 적용 단계
    → 객체지향 프로그래밍은 일종의 사고의 전환이 필요하므로 강력한 생각의 전환을 경험하게 합니다. 문제를 컴퓨터로 해결하여 실현하는데 강력한 방법론으로 숙달되면 추상적 사고력으로 문제를 좀 더 쉽게 풀 수 있게 됩니다. 물론 오용하면 배가 산으로 가기도 합니다. 이 또한 훈련의 순과정으로 겪어야 하는 부분이기도 하고요,

  • 프로그래밍을 더 잘하고 싶은 마음이 큼
    → 잘하고 싶은 마음은 오늘 내가 회사가 아닌 집에서 컴퓨터 앞에 앉게 하는 힘이 될지 모릅니다. 매일 조금이라도 컴퓨터 앞에서 지식을 쌓고 코딩하는 시간을 계속 유지하셔야 합니다.

  • 프로그래밍을 잘하게 되면 업무 능력이 향상될 것이라 기대함
    → 일단 저의 대답은 프로그래밍 능력과 업무 능력은 관련이 있지만 같지는 않습니다. 회사에서 두각을 내기 위해 프로그래밍 쪽보다는 문제 분해를 통한 문제해결 능력을 키우시는게 좀 더 효과적으로 생각이 되네요.

정리

먼저, 문제 해결 능력부터 키워보시는 건 어떨까요? 이 능력은 문제를 분해하는 훈련으로 키울 수 있습니다. 문제를 분해하기 위한 훈련은 굳이 프로그래밍에 관련된게 아니어도 돼요. 가령, C# 언어를 효과적으로 배울 수 있는 방법이 무엇인가? 이렇게 스스로 문제를 제시하고, 그것을 정복하기 위한 분해를 해보시는 것으로 시작할 수 있습니다.

좋아요 8