제가 2년 전 신입으로 입사하면서 POS 개발 및 운영 업무로 처음 C#을 접하게 되었습니다.
기본적인 개발이나 운영은 C#이 객체지향언어다 보니 JAVA와 비슷해서 간단한 개발은 진행을 하고 있었으나, 이제는 뭔가 이 업무를 하는 수준이 아닌, 좀 더 한 발자국 나아가고 싶습니다. 제가 운영하는 POS가 오래되어서 최신 트렌드에 많이 뒤떨어져 있는 느낌도 들구요. (현재… 닷넷 2.0)
그래서 C#을 좀 더 공부를 해보려고 하는데, 제가 해본 C#은 닷넷2.0이라 정보가… 너무 부족합니다 ㅠㅠ
인터넷에도 정보가 많이 없구요… ㅠ
책을 추천해주셔도 좋고, 클론코딩을 해볼만한 것이 있으면 그것도 추천해주셔도 좋고, 만들만한게 있다면 그것도 추천해주셔도 좋습니다. 이제는 정체된 개발자를 좀 벗어나보고 싶습니다.
개발업무도 회사일이라 업계의 특성을 타게 되어있습니다.
고객은 소프트웨어적으로 새로 익히고, 변화되는 것을 좋아하지 않습니다.
불안정하다고 생각하기 때문일텐데요.
물론 B2B라면 변화를 좋아하는 고객일 수 있습니다.
하지만 POS는 B2B긴 하지만 사용자가 불특정 다수라서 PC사양도 엄청나게 후질 수 있고, 새로 업데이트된 기능이 있어도 사용하지 않고, 오히려 바뀌는 걸 싫어할 수 있습니다.
응용프로그램을 기본적으로 안바뀌고 잘 돌아가게만 하는 것이 목적인 곳이 많습니다.
POS업계가 대표적인 그런 곳인데요.
POS가 정말 소프트웨어적으로 어려움의 끝판왕 소프트웨어인 것은 자명합니다.
그렇지만 그 특성상 신기술을 자주 쓸 수 없습니다.
KIOSK도 분야에 따라 마찬가지 일거라 생각합니다.
저도 POS 업계를 1년 반정도 경험했습니다.
제가 경험했던 POS는 DB와 POS 프로그램, 서버 달랑 3가지로 구성되어 있었습니다.
요즘 유행하는 Redis, Docker, RabbitMQ 이런거는 눈을 씻고 찾아볼 수가 없었습니다. 왜냐하면 필요가 없으니까요.
PC 하나에서만 돌아가는 프로그램이 커널을 건드리고, 장비를 후킹하는 수준의 고난도 프로그램이라면 그 자체로 하드웨어적인 제어요소를 배우는 맛이 있겠지만, 요즘은 고성능 하드웨어가 과거에 비해 값싼 가격으로 보급되어 소프트웨어적으로 대규모 처리를 하는 것이 유행입니다.
따라서 대규모 트래픽이 집중되는 서비스가 아니면 기술적 향상은 제 생각에는 힘들 것 같습니다.
이용자가 1명이라면 막 개발해도 잘 돌 것입니다.
거기다 유지보수를 나만하는 SI 프로젝트라면 아키텍쳐도 필요없고 그냥 내가 알아보게만 잘 짜면됩니다.
하지만 대규모 프로세스는 혼자선 처리할 수 없기에 팀이 필요하고, 팀원 간 소통이 필요하고, 팀의 정책이 필요합니다.
여기서 오는 훈련이 있습니다.
거기에 제한된 리소스로 대규모 처리를 해야하다보니 반드시 분산처리 기술이 들어갑니다.
이것 역시 기술의 발전을 가져옵니다.
.NET (C#) 이 커버할 수 있는 개발 분야가 너무 넓어, 한번에 전부 다 하실 수가 없습니다.
따라서 하나를 선택하여 공부해야 합니다. 하나를 선택한다고 하여 기초가 다르지 않습니다.
당연히 설계와 C# 언어, .NET 설계 이해, 테스트 구현 등은 어느 분야를 선택하든 하게 됩니다. 그러니 너무 고민하지 말고 고르세요.
영어를 공부하세요.
.NET 은 MS 에서 제공하는 자료가 방대합니다. 그런데 대체로 번역이 빈약할 때가 많습니다. 왜냐하면 문서는 지속적으로 작성되는데 반해, 번역 속도가 따라가지 못하기 때문입니다. 따라서 영어로 된 MS 문서를 편하게 읽을 수 있어야 좋습니다.