# 씨앤지 마이크로웨이브 자기소개서

## 1. 지원동기

### 정밀 제어와 .NET 경험이 만나는 자리

귀사가 국내 최초로 확보한 CATR 측정 기술과 .NET 기반의 제어 소프트웨어 개발 환경에 주목해 지원했습니다.

채용공고를 확인하며 위성추적·계측기 제어 소프트웨어가 C#과 WPF로 개발된다는 점을 확인했습니다. 안테나 측정 시스템은 단순 GUI 애플리케이션이 아니라, 포지셔너와 계측기, 데이터 분석이 하나의 흐름으로 연결되어야 하는 영역이라고 판단했습니다. 이런 환경에서는 외부 하드웨어와 안정적으로 통신하는 .NET 인터페이스 설계 능력이 핵심 역량이 된다고 보았습니다.

저는 .NET 환경에서 외부 라이브러리와 통신하는 인터페이스를 직접 설계하고 NuGet에 배포한 경험이 있습니다. Blazor WebAssembly에서 JavaScript tus 프로토콜 라이브러리를 C# API로 래핑한 TusBlazorClient 프로젝트입니다. 이 과정에서 콜백 브릿지 설계, 비동기 리소스 생명주기 관리, 외부 시스템 호출 비용 최적화를 직접 다뤘습니다.

이러한 외부 시스템 연동 설계 경험은 안테나 측정 소프트웨어가 다양한 계측기와 포지셔너를 동시에 제어해야 하는 환경에서 그대로 활용될 수 있다고 보았습니다. 귀사가 추구하는 신뢰성 있는 측정 시스템과 제가 쌓아온 .NET 인터페이스 설계 경험이 맞닿아 있다는 점이 지원을 결심한 가장 큰 이유입니다.

---

## 2. 업무 시 강점

### 외부 시스템과 안정적으로 연결하는 설계

저의 가장 큰 강점은 .NET 환경에서 외부 시스템과 안정적으로 연결되는 소프트웨어를 설계하는 역량입니다.

Blazor WebAssembly에서 대용량 파일 업로드를 처리하는 라이브러리 TusBlazorClient를 단독으로 개발해 NuGet에 배포한 경험이 있습니다. Blazor WASM은 순수 C# I/O만으로 대용량 전송이 어려워, 검증된 JavaScript 라이브러리를 C# API로 래핑하는 방식이 필요했습니다.

가장 큰 문제는 .NET 델리게이트가 JSON 직렬화 대상이 아니라는 점이었습니다. JS와의 콜백 브릿지를 직접 설계해야 했습니다. 모든 콜백을 단일 객체에 모아 `DotNetObjectReference`로 전달하고, 옵션 직렬화 시에는 `[JsonIgnore]`로 콜백을 분리했습니다. 또한 각 콜백의 null 여부를 별도 객체로 JS에 전달해, 사용하지 않는 콜백은 `invokeMethodAsync` 호출 자체가 발생하지 않도록 최적화했습니다. JS 모듈은 `IAsyncDisposable`과 Lazy 초기화로 생명주기를 관리해, 사용하지 않는 페이지에서는 모듈이 아예 로드되지 않도록 구성했습니다.

그 결과 18개 tus 옵션과 7종 콜백을 C#에 완전히 매핑했고, Selenium 기반 9개 E2E 테스트로 업로드, 재개, 옵션 동적 변경 시나리오를 검증했습니다. 현재 NuGet에 v1.0.1로 배포되어 외부 프로젝트에서 그대로 설치해 사용할 수 있습니다.

이 경험을 통해 외부 시스템과의 호출 비용을 측정하고 줄이는 설계 방식을 익혔습니다. 안테나 측정 소프트웨어 역시 다양한 계측기·포지셔너와 실시간으로 통신해야 하므로, 동일한 방식으로 안정적인 제어 흐름과 자원 관리 구조를 설계하는 데 기여하겠습니다.

---

## 3. 입사 후 포부

### 측정 정확도를 코드로 지키는 개발자

입사 후에는 귀사의 정밀 측정 환경 안에서 안정성과 정확도를 책임지는 .NET 개발자로 성장하고 싶습니다.

귀사는 CATR, Near-Field, Far-Field 등 다양한 측정 환경을 운용하며, 각 환경에서 측정 편차를 최소화해야 한다는 도전을 갖고 있습니다. 이를 코드 측면에서 뒷받침하려면 계측기 통신 프로토콜, 포지셔너 모션 제어, 측정 데이터 처리 흐름을 정확히 이해해야 한다고 판단했습니다.

입사 초기에는 기존 C#·WPF·DevExpress 기반 소프트웨어 코드베이스와 사용 중인 계측기 통신 프로토콜을 빠르게 파악하는 데 집중하겠습니다. .NET 기반 백엔드와 클라이언트 라이브러리를 직접 설계해 본 경험이 있어, 언어와 프레임워크 학습 시간보다 도메인 학습에 시간을 투자할 수 있다고 생각합니다.

1년 차에는 모션 제어 또는 안테나 측정 모듈에서 단일 기능을 단독으로 책임지고 구현해, 측정 자동화 흐름의 한 축을 안정적으로 담당하고자 합니다. 3년 차에는 측정 소프트웨어 구조 개선이나 신규 계측기·프로토콜 통합 작업을 주도해, 새로운 측정 환경을 도입하는 속도를 높이는 데 기여하고 싶습니다.

안테나·RF 도메인 경험은 아직 부족하지만, 측정 자동화에 필요한 비동기 처리, 실시간 데이터 흐름, 외부 시스템 연동은 기존 프로젝트에서 직접 다뤄왔습니다. 도메인 지식은 사내 학습과 실무 경험을 통해 빠르게 보완하면서, 코드 품질과 측정 신뢰성을 함께 지키는 개발자로 성장하겠습니다.

---

## 4. 자기소개 / 성장 과정

### 동작하는 코드에서 지속 가능한 코드로

저는 동작하는 코드에서 멈추지 않고 유지보수 가능한 구조를 고민하는 개발자로 성장해 왔습니다.

처음 개발을 시작했을 때는 기능 구현 자체가 목표였습니다. 그러나 셀프호스팅 파일 서비스인 CloudSharp 프로젝트를 진행하며, 단순 구현만으로는 운영을 견디기 어렵다는 사실을 직접 경험했습니다. 대용량 파일 업로드 과정에서 동시 요청이 같은 자원을 두고 경쟁하거나, 외부 업로드 서버의 콜백이 중복 도달하는 문제가 반복적으로 발생했습니다.

이 문제를 풀기 위해 CAS(Compare-And-Swap) 기반 동시성 제어와 Recovery Worker 구조를 직접 설계했습니다. 단일 SQL UPDATE 문으로 업로드 세션을 원자적으로 점유하고, 교착 상태는 별도 워커가 자동으로 복구하도록 만들었습니다. 그 결과 추가 분산 락 인프라 없이도 중복 처리 0건을 유지할 수 있었고, 동시 업로드 환경에서 자원 경쟁 문제도 트랜잭션 단위에서 차단되었습니다.

이 경험 이후로는 새로운 기능을 구현할 때마다 “이 코드가 실패할 수 있는 지점은 어디인가”를 먼저 묻습니다. Result 패턴으로 실패를 명시적으로 다루고, Clean Architecture로 도메인 경계를 분리하며, 주요 결정마다 ADR로 근거를 남기는 방식이 자연스러운 습관이 되었습니다.

지금의 저는 화려한 기능보다 측정 가능한 결과와 재현 가능한 구조를 신뢰하는 개발자입니다. 이러한 방식은 안테나 측정처럼 정밀성과 반복성이 핵심인 영역에서 더 큰 가치를 발휘한다고 생각합니다.
