안녕하세요.
저는 다니던 회사는 1년전에 그만두고 이직을 준비중인 생각많은 개발자(8년차)입니다.
안타깝게도 제가 무엇을 하고 싶고 무엇이 부족한지를 회사를 그만둔 후에야 알게되었고
막상 뭘 해야하지? 라는 생각과 그럼 이걸 어떻게 하지?라는 생각이 들어 글을 남기게 되었습니다.
회사를 다니던 때는 첫 회사이기도 했고 아무것도? 모르던 때라
시키는 일만 정말 열심히 했었습니다.
그러다보니 어느 하나 ‘난 이게 전문이야!’라고 자신감있게 말할 수 있는게 없는 상황이 되었습니다.
회사에서는 C++(MFC)을 시작으로 Delphi 조금, C#(Winform, .Net Framework, ASP.NET)을 주로 하였습니다.(제 담당은 아니었지만 ㅎㅎ Java(Spring Framework)도 유지보수 할수 있는 정도)
하지만 연차가 쌓일 수록 코딩하는 업무보단 문서작성하는 업무가 늘어났고 점점 “개발”과는 거리가 멀어졌던것 같습니다.
물론 회사를 다니면서 혼자 따로 공부를 할 수 있긴 했겠지만.. 그때 당시에는 일이 너무 많아 아무 생각도 하지 못했었습니다.
그래서!! 지금이라도! 개인적 역량을 높여보고자! 이것저것 해보고는 있는데요.
매번 AI한테 물어보는것도 답은 아닌것 같고..
다른 분들은 무엇을 어떻게 하고 계신지 궁금합니다!!
참고로
저의 지금 목표는 응용프로그램 개발자에서 .Net 백엔드 개발자로 거듭나는 것입니다!!!
아래는 제가 정보를 습득하고 실습?적용?해보고 있는 내용입니다~
책 구매: Clean Code, 실용주의 프로그래머, 토익책
커뮤니티 가입: .Net Dev
개인 프로젝트: .Net 8, ASP.NET Core Web API, EF Core, WPF
잘 되시기를 진심으로 응원합니다! 8년 동안 쌓아오신 C++, Delphi, Winform 경험은 백엔드의 복잡한 로직을 다루거나 성능을 최적화할 때 분명 남다른 밑거름이 될 것입니다.
개인적으로는 앞서 @leechw9 님께서 말씀해주신 RDBMS의 중요성에 더해, '상태 기반(Stateful)의 응용 프로그램’에서 '비상태 기반(Stateless)의 백엔드 환경’으로 사고를 확장하는 것이 가장 중요하다고 생각합니다. .NET 사용 여부와 무관하게 요즈음 백엔드 개발에서 필수로 숙지해야 할 항목들을 정리해 보았으니 참고가 되셨으면 합니다.
비즈니스 도메인에 대한 이해: 어떤 분야(금융, 커머스, 제조 등)에서 개발하고 싶은지 파악하고 그 분야의 도메인 지식을 쌓는 것 (시니어에게는 기술만큼이나 중요한 역량입니다.)
비상태성(Stateless) 메커니즘: 서버가 클라이언트의 상태를 보관하지 않고 확장성 있게 동작하는 원리 (JWT, Redis 활용 등)
비동기(Async/Await) 프로그래밍: .NET 백엔드 성능의 핵심이며, 스레드 차단(Blocking) 없이 대량의 요청을 처리하는 방식
CQRS (명령 및 조회 책임 분리): 단순 CRUD를 넘어 복잡한 비즈니스 로직을 효율적으로 관리하기 위한 아키텍처 패턴
메시지 큐(Message Queue) 기반 분산 처리: 시스템 간 결합도를 낮추고 동시 처리를 가능하게 하는 방식 (RabbitMQ, Kafka 등)
인프라의 이해 (IaaS, PaaS, SaaS): 코드가 구동되는 환경의 차이를 이해하고 서비스 규모에 맞는 적절한 인프라를 선택하는 안목
컨테이너(Docker, Podman) 환경: 배포의 표준이 된 컨테이너의 원리와 실제 운영 환경에 적용하는 방법 - 특히 애플리케이션을 컨테이너화한다는 것은 반 강제적으로 Stateless로 지향성을 잡아야 하기 때문에 VM과 컨테이너 간의 차이점을 학습하기에 좋습니다.
데이터베이스 최적화: RDBMS의 인덱스 설계부터 실행 계획 분석까지, 백엔드의 병목을 해결하는 능력. 그리고 RDBMS에만 갇히지 않는 기술 선택 안목 (No-SQL, SQLite 등)도 중요합니다.
단순히 기술 스택을 늘리는 것보다, “왜 이 기술이 필요했는가?” 에 집중해서 개인 프로젝트를 진행해 보시면 면접에서도 훨씬 설득력 있는 답변을 하실 수 있을 거예요. 지금 사고 계신 책들과 .NET 프로젝트 구성은 아주 좋은 방향이라고 생각합니다.
조금 늦게 시작하신 만큼, 그동안의 연륜이 백엔드라는 새로운 그릇에 멋지게 담기길 응원하겠습니다!
(ps. .NET 8은 올해 가을에 EOS 될 예정입니다. 지금 학습을 하신다면 .NET 10이 적절한 선택지입니다.!)
.NET은 크로스 플랫폼을 지향하면서 네이티브 기술도 지향하기 때문에 기술이 사용되는 분야가 무수히 많습니다.
따라서 각 여러 산업군들에 종사하시는 여러 개발자 분들, 굳이 .NET 개발자가 아니더라도 그런분들을 통해 키워드를 유입하고 공부해 나가는 것이 중요한 것 같습니다.
아마도 클라우드던 네이티브던 웹서비스들이 구직자리도 많고, 여러 산업에서 사용되기 때문에 아키텍쳐적으로 발전된 부분들이 많이 있습니다. 하지만 대체될 수 없는 네이티브 어플리케이션의 영역도 분명히 있고, 시간이 한정되어져 있기에 이런 모든 것들을 다 찍먹을 하는데에도 한계가 있습니다.
위에서 언급되지 않은 내용 중에 없는 내용은 바이브코딩이 있는데, 스킬업 중에는 AI 코드 어시스턴트를 잘 사용하는 능력 또한 .NET을 깊게 아는 것만큼 중요하다고 생각합니다. 어쨌든 현재 시점에 맞게 스킬 셋을 익혀야 구직에 유리하기 때문입니다.
바이브코딩을 언급하는 이유는 단순히 AI가 질의 응답기가 아니라 AI를 얼마나 잘쓰냐에 따라 코드 품질이 달라지기 때문이고, 아마도 대부분의 개발자들이 AI 경험이 안좋은 이유는 AI를 잘 못쓰기 때문일 거라 생각합니다. 물론 대체할 수 없는 영역도 분명 있겠죠.
따라서 제 결론은,
특정 산업군에서 근무하고 싶으신게 아니라면 여러 직장인 개발자들과 네트워킹하기
그 산업군에 대한 개요를 듣고 .NET으로 바이브코딩하기
입니다. 그리고 이런 부분들은 당장 해결될 수 없는 영역이기 때문에 네트워킹에 대한 시간이 누적될 수록 증가할 것이므로 스킬업을 할 수 없는 상황에라도 여러 사람과 네트워킹하시면 좋을 것 같습니다.
역시 개발자라고 해서 코딩만 할 줄 알면 안되는게 맞나봐요.
가끔 코딩하는 일 말고 다른 업무를 할때면..
이게 맞나..라는 생각을 가끔했었는데, 넓게 볼 줄 아는 개발자가 되어야겠어요!!
(회사에서 진행하는 여러 사업 덕분에 신규 시스템 설계부터 구축.운영까지 모두 경험해봤거든요..
H/W 스펙을 어떻게 할건지 생각하고 네트워크 구성이 어떻게 되어 있으니 우리 시스템은 어느 망에 있어야 하고.. 등등 같은.. 지금 생각해보면 다 앞날을 위한 밑거름 이였나봐요ㅎㅎ)
인프라를 전부 사용해서 백엔드 마스터가 되는 그날까지..
백엔드를 넘어 개발 전문가가 되는 그날까지..
딱 이거다 정해서 말씀드리기는 어렵지만, geeknews나 hackernews가 좋은 소스가 되는것같습니다. 그리고 @al6uiz 님, @dimohy 님께서 매주 닷넷데브에 올려주시는 주간 시리즈, 그리고 격주 닷넷 팟캐스트도 구독하시면서 인사이트를 얻으시면 좋겠습니다.