채용공고 올리기

조현창님을 응원해보세요!

지금 만족하고 있어요
유연함
목표 지향적
효율적
기술적
열정적

미리보기

기본 정보

이름
조현창
직업
신입 개발자
간단 소개

공식문서를 기반으로 차근차근 나아가는 개발자입니다. 러닝커브가 가파른 기술에 몰입하여 공부하는 것을 좋아합니다. 공식문서에서 찾을 수 없는 것들은 공식 github 예제를 보고 사용되는 인터페이스의 구현체 코드를 보거나 해당 Javadoc를 찾아보며 공부했습니다. 추상화된 기술은 구현체를 정확히 알고 사용하는 것을 선호합니다.

기술 스택

기술 스택

Spring Boot, Spring, Spring Security, ubuntu, hibernate

경력

회사명

주식회사 엔이에스

직급 | 부서 | 근무 유형

인턴

근무 기간

2021.12. ~ 2022.01. (2개월)

담당 업무

교내 ICT 인턴십

  • 공장 내부 견학 및 임베디드 코드, 장치 별 라즈베리 파이를 보고 구조 파악

  • 해당 장치에서 생산되는 물품 개수를 표시하는 ERP 페이지 백엔드 유지보수

  • 생산되는 물품 별 개수, 재고, 상태를 출력하기 위한 페이징 쿼리 작성

회사명

대한민국 육군

직급 | 부서 | 근무 유형

전산반장 | 통신중대

근무 기간

2017.11. ~ 2019.02. (1년 4개월)

담당 업무
  • AIX 기반 WAS, DBMS HACMP 이중화 서버 관리.

  • Windows MFC 기반 클라이언트 장애해결

  • JEUS 기반 WAS 외부 프로세스 의존성으로 인한 장애해결

  • 네트워크, 전산장비 장애해결

  • 위 직무 기반 후임양성 및 매뉴얼 작성

프로젝트

프로젝트명

Groom

소속/기관명

SW 마에스트로

프로젝트 기간

2022.04. ~ 2022.12.

프로젝트 내용

위치 기반 프로젝트 작업 관리 서비스 앱

프로젝트명

충림이

소속/기관명

CMI

프로젝트 기간

2021.04. ~ 2022.09.

프로젝트 내용

교내 공지사항 구독 알림 서비스

  • NestJS기반 백엔드로 완성해본 첫 프로젝트

  • 타입스크립트와 DI 컨테이너 프레임워크에 적응하고 매력을 느낀 프로젝트

  • Filter와 Guard를 통해 예외처리 및 인증인가를 구현했습니다.

  • 인가를 위한 데코레이터를 구현했습니다.

  • TypeORM으로 Cafeteria, CafeteriaMenu, Place 엔티티를 작성하고 CRUD를 구현했습니다.

  • 학습은 당시 오픈돼있던 NestJS 공식문서를 보며 실습했으며, 1:N매핑, query builder등 필요시 TypeORM 공식문서를 참고했습니다.

프로젝트명

충북대학교 Online Judger

소속/기관명

충북대학교

프로젝트 기간

2021.01. ~ 2022.03.

프로젝트 내용

교내 알고리즘 풀이대회에 사용할 플랫폼을 MEAN 스택으로 구축하는 프로젝트입니다. [현재는 Next JS로 리뉴얼 중]

  • 첫 웹개발 프로젝트

  • 6개월간 교수님의 멘토링을 받으며 Express + Mongoose 기반 인증인가 및 첨부파일 등 기초적인 기능 구현을 실습하며 백엔드에 대한 지식을 길렀습니다.

  • 과제기능 설계 및 구현 담당. 기존 채점 프로세스에 사용되는 kafka js를 짧게나마 다루어보았고 메세징 기반 pub sub 구조를 체험해볼 수 있었습니다.

  • 배포에 참여하면서 도커, 리눅스, 컨테이너 환경과 시스템 환경변수를 활용하는 경험을 할 수 있었습니다.

  • 배포 후 기존 API별로 단일 서비스에 메소드로 구현되어 존재하던 중복 코드들을 모듈화하며 레이어드 아키텍쳐로 리팩토링했습니다.

포트폴리오

URL

link

링크드인

링크드인
link

Github 링크

깃허브
link

Groom 소개

노션
link

Groom 레포지터리

깃허브
link

충북대 Online Judger 참여행적

노션
link

충북대 Online Judger 레포지터리

깃허브
link

충림이 참여 행적

노션
link

충림이 레포지터리

깃허브

교육

소속/기관명

충북대학교

종류 | 전공

대학교(학사) | 소프트웨어학과

재학 기간 | 재학 상태

2020.02. ~ 현재 | 재학 중

대외활동

활동명

SW마에스트로

소속/기관명

사단법인 한국정보산업연합회

연도

내용

서버 지원비, 실제 현업에서 종사하시는 멘토분들과 함께 기획부터 서비스 배포까지 경험할 수 있는 프로그램입니다.
저희 팀은 Groom이라는 협업관리 서비스였으며, 무임승차 방지라는 아이디어를 가지고 위치기반 알림,
기프티콘과 모임비 사전결제 아이디어를 구체화했습니다.

활동명

충북 AI스쿨 3기

소속/기관명

충북과학기술혁신원

연도

내용

2개월간 Data transformation, scikit-learn을 활용한 머신러닝, 케라스를 활용한 DNN,CNN, RNN을 학습했습니다.
종료시점에 수료자 대상 캐글챌린지에서 장려상을 수상했습니다.

자격증

자격증명

정보기기운용기능사

점수 | 발급기관

기능사 | 한국기술자격검정원

취득연월

2015.04.

자격증명

정보처리기능사

점수 | 발급기관

기능사 | 한국기술자격검정원

취득연월

2015.10.

자기소개

자기소개

[가진 지식을 고도화하고 응용하여 문제를 개선하고 해결하여 성취하는 점이 좋습니다.]
처음 웹 개발을 접할 때 컴퓨터를 사용하면서 자연스럽게 익힐 수 있었던 지식이 계속해서 활용되는 점이 좋았습니다. 네트워크-하드웨어-운영체제에서 문제를 해결하고 얻은 지식을 통해 Judger 웹 개발을 할 때 기초 개발환경 세팅, 클라이언트와 앱 서버의 통신, CSR + REST API 구조를 이해하며 성장하는 즐거움을 얻었습니다.
구조를 이해하고 문제를 해결한 뒤 팀원들과 공유하면서 함께 고도화할 수 있다는 점이 좋습니다. 운영체제 수업 때 배운 비동기, 스레드를 통해 이벤트루프 기반인 Node.JS에서 응답속도를 저해하는 원인을 식별했습니다. 이에따라 채점과 같은 CPU비용이 큰 로직을 다른 프로세스에 분리해 카프카 컨슈머로 지정하는 설계를 고안했고 팀원, 교수님과 공유했으며 토의를 통해 키워드를 얻어 카프카 메시지 큐를 학습하고 pub/sub으로 설계했습니다.

  • backend/judger 컨슈머들은 docker compose scale 옵션을 통해 올렸으며 각 컨슈머는 node의 클러스터 기능으로 한 컨테이너에서 동시에 사용 가능한 CPU 워커개수 만큼의 이벤트를 처리할 수 있게 했습니다.

  • 제로 페이로드 방식을 통해 마찬가지로 이벤트루프 기반인 몽고디비를 사용중이었기에 상태를 변환하고 작업을 처리하는 방식으로 구현했습니다.

  • 어떤 곳에서 문제가 발생하면 해당 제출건에 대한 채점을 수동으로라도 처리하거나 제출된 코드상의 문제를 파악하기위해 위해 로깅은 worker의 pid를 통해 추적할 수 있도록 했습니다.

  • 완료건에 대해서는 backend/judger-api에도 컨슈머를 두어 채점프로세스가 프로듀서로써 이벤트를 발행하고 데이터 수정은 API를 통해 수행하도록 했습니다. 지금 생각해보면 REST API가 좀 더 적합했다고 생각합니다.

이처럼 팀원들과 지식을 공유함과 동시에 요구사항을 만족하기 위한 더 좋은 설계에 접근하면서 고양감을 얻을 수 있었습니다.
저는 일을 하면서 이런 즐거움을 얻을 수 있다는 건 큰 행운이라고 생각합니다. 이런 행운을 얻은 만큼 개발자가 되어 제가 겪은 문제를 겪는 사람이 줄어들도록 좋은 서비스를 개발하고 싶습니다.

[마주치는 문제를 포기하지 않고 기초부터 차곡차곡 쌓아가며 해결합니다.]
하나하나 원리를 파악하고 이해하는 것이 즐거워 마치 나무 위키의 역 링크를 타고 관련된 문서들을 읽는 것처럼 관련된 키워드를 검색해가며 공부를 했습니다.
예를 들어 공유기 사용 시 프로그램이 사용하는 포트에 대해 공유기 공인 IP의 해당 포트를 PC의 사설 IP의 포트에 포트 포워딩을 해야 실행할 수 있다는 글을 시작으로 네트워크에 관련된 키워드를 검색하며 익혔습니다. 이는 정보기기운용기능사를 취득할 수 있는 기반을 마련해주었습니다. 이렇게 다져진 학습 자세와 네트워크 기반 지식은 군 복무를 할 때 학습을 이어나가는 원동력이 되었습니다.

군 복무를 하면서 MFC 클라이언트, 네트워크 및 IBM AIA 기반 온 프레미스 서버 유지보수 및 장애 조치를 수행했습니다. 처음 마주친 문제에 대해서 낭비되는 시간을 줄이기 위해 예비 서버를 이용하여 알아낸 키워드들을 기반으로 학습계획을 세웠습니다. 일과 시간이 끝난 후에 시간을 투자하여 클라이언트, 네트워크, 운영체제, WAS, DBMS 간의 상호작용을 문서로 만들었습니다. 이 문서를 바탕으로 여러 가지 사례를 만들고 발생한 오류 상황의 키워드와 현상을 기록했습니다. 이 과정을 통해 배운 지식을 팀원들에게 지식공유를 하며 학습한 지식을 견고하게 만들고 빠른 대응이 가능하게 했습니다.

댓글