인턴 회고: 낯설은 도전과 새로운 목표

2019. 12. 31. 20:19IT 이야기

안녕하세요. One IT 입니다. 저는 최근 운 좋게 인턴 기회를 얻어 인턴생활을 하다 최근 전환 평가를 통과해 정직원 입사를 앞두고 있습니다. 이번 글에서는 10월부터 약 석 달간의 인턴 과정을 회고하며 이야기해보려 합니다. 개발 글만 쓰다가 제 이야기를 써보는 건 처음인데, 두서없더라도 양해 부탁드립니다😊

 

첫 두주는 간단한 OJT를 통해 팀별 업무와 사내문화 등을 배웠습니다. 마지막엔 그룹 내 주요 브랜드 사들을 돌며 재미있게 보냈습니다

놀았습니다.

 이후 팀 배치를 받고 본격적인 교육이 시작되었고, 교육이라고 하지만 사실 🌪포풍 과제....😱

 

과제는 바로 Java와 C#으로 CRUD를 구현하는 것이었습니다.

일단 만들어라: Java와 C#

Java + JSP를 이용한 CRUD

회사 정보가 포함된 관계로 일부 자료는 모자이크 처리했습니다.

이런 걸 만들었습니다. 

 

JavaScript와 웹 프론트엔드만 주로 하던 제게 Java는 낯설었지만 사실 그렇게 어렵진 않았습니다. 동시에 제가 가장 신경을 많이 쓴 과제이면서 동시에 가장 많은 지적을 받은 과제이기도 했습니다.


include와 java beans, DML 쿼리 작성 등 Java 웹 프로젝트의 다양한 것들을 배울 수 있었는데 자세한 개발 이야기는 기회가 되면 따로 글을 써보겠습니다.

C# + Windows Forms

회사 정보가 포함된 관계로 일부 자료는 모자이크 처리했습니다.

또 이런걸 만들었습니다.

 

사실 가장 걱정했던 과제로 C#과 Windows Forms를 이용해 윈도우 응용프로그램을 만드는 것이었습니다. 항상 브라우저 위에서 돌아가는 웹만 만지고 C#은 커녕 C, Java도 안 만져봤지만 Windows Forms는 간단한 UI 구성, 이벤트 기반의 로직, SQL 등 만 작성할 줄 알면 쉽게 프로그램을 만들 수 있었습니다. 내부의 로직은 GUI 기반으로 Visual Studio 2019가 알아서 짜주더군요.

 

이 두가지 이외에도 여러 과제가 있었지만 개발과 직접 관련 있었던 과제는 이 두 가지였습니다.

예상치 못한 JavaScript 학습

JavaScript는 구경도 못할 것 같았는데 의외로 JavaScript 코드를 짤 기회가 있었는데 바로 JSP개발 때였습니다. 추가로 받은 과제가 SPA처럼 화면 깜빡임(서버통신, 새로고침) 없이 화면을 갱신하도록 코드를 수정하는 것이었기 때문입니다.

JSON API 서버와 Render 함수

처음엔 JavaScript와 일부 DOM만 깨작깨작 변경했지만 결국 현대적인 웹 개발 방식대로 프론트와 백을 구분해서 개발하기로 마음먹었습니다. 그러기 위해 클라에서 HTTP로 요청하면 JSON으로 데이터를 응답하는 서버를 만들었고, 클라에선 데이터 변경이 생기면 화면을 갱신하는 Render 함수를 만들었고 화면을 구성하는 거의 모든 과정은 JSP를 걷어내고 JavaScript에 일임했습니다.

이벤트 위임

화면을 부분갱신할 때 동적으로 추가되는 요소들은(가령 새로 생긴 글의 수정/삭제 버튼) 이벤트가 걸리지 않습니다. 정적 요소는 코드를 통해 이벤트를 걸 수 있지만 동적으로는 그때그때 새롭게 추가해주긴 어렵습니다.


이를 위해 JavaScript 스터디 때 공부했던 이벤트 위임을 활용해 해결했습니다. 아래 글을 한번 참고하시면 좋을 것 같습니다.

 

JS 기술면접 스터디 4주차: 전역스코프부터 Promise까지

기술면접 스터디 3주차에 이어 4주차를 진행하고 관련 내용을 정리합니다. 이전의 내용이 궁금하시다면 다음을 클릭해주세요. 1주차: 이벤트 위임부터 코드구성까지 2주차: 호스트 객체부터 Ajax까지 3주차: 호이..

one-it.tistory.com

SPA와 History API, 그리고 사용자 경험

동적으로 화면을 갱신하니 한 페이지에서 다양한 뷰를 보여주는 SPA적 성격을 띠게 되었습니다. 그러다 보니 뒤로가기, 앞으로가기가 의도대로 작동하지 않아 History API를 조작하여 사용자 경험을 높였습니다.

 

주로 react-router나 외부 라이브러리를 통해 하던 일들을 브라우저 API로 직접 하니 더 깊이 알게 된 것 같습니다.

DB와 SQL의 역습

 

인턴을 하면서 그 중요성을 가장 많이 알게 된 영역이 바로 DB와 SQL이었습니다. 지금까지 프론트엔드 개발을 하면서 데이터를 보내주는 서버까지는 신경 써봤지만 그 서버가 데이터를 가져오는 DB는 거의 생각해본 적이 없었거든요.


인턴과정에서 MSSQL을 주로 하면서 SSMS를 사용하고 기본적인 SELECT, UPDATE, INSERT 뿐 아니라 INNER JOIN, OUTER JOIN 등도 새롭게 배웠습니다.

 

이외에도 윈도우와 IIS 등을 이용한 윈도우 응용 프로그램 배포, 톰캣을 활용한 WAS 구동 등 기존에 해보지 못한 많은 경험을 할 수 있었습니다.

낯설은 도전, 새로운 목표

돌이켜보면 그저 CRUD 몇 개와 기본적인 쿼리문 학습, 그리고 회사 서비스에 대한 도메인 지식 파악 정도가 전부였을지도 모르지만 프론트엔드 개발을 해온 저에게는 처음 써본 언어들과 낯선 툴들을 이용해 다양한 개발을 할 수 있었던 유익한 경험이었습니다. 자바스크립트의 지식을 늘렸을 뿐만 아니라 자바와 C# 등 새로운 개발언어에 도전해 성공적인 결과물로 자신감을 얻었습니다. 웹뿐만 아니라 시스템, DB, 윈도우 등 더 넓은 개발 세계를 맛보았습니다.

 

이런 인턴생활을 통해 정직원이 되는 2020년 새로운 목표를 세울 수 있었습니다.

 

  1. JavaScript와 React 개발
    기존에 하고 있던 웹 프론트엔드 개발을 더 발전시킬 것입니다. 회사에서는 아직 쓰이지 않지만 많은 서비스와 시스템이 신기술로의 전환을 기다리는 만큼 제가 이미 갖고 있던 강점이 더 빛을 발할 것이라 생각합니다. 실제로 사내 서비스 중 하나가 플래시(...)로 개발되어 있어 2020년 크롬에서 차단될 것으로 예상되기 때문에 내년에 새로 개발해야 합니다. 그래서 인턴기간 동안 매일 40분~1시간 일찍 와서 React 강의를 들으면서 공부를 했습니다.
  2. Java와 Spring 개발 도전
    Java는 회사에서 가장 많이 쓰이는 개발언어 중 하나이면서 동시에 우리나라에서 가장 인기 있는 개발언어 중 하나입니다. 인턴생활을 하기 전까지 이런 언어를 할 거라고는 생각도 하지 않았지만, 이참에 Java에 대한 지식도 충분히 익혀보려고 합니다. 그래서 웹 프론트 뿐 아니라 백엔드도 할 수 있는 풀스택 개발자를 향해 개발 공부를 이어나가려고 합니다.
  3. C# 개발
    C#은 사실 아주 크게 관심을 두고 공부할 것은 아니지만 현재 회사에서 많이 쓰는 만큼, 제가 맡은 만큼의 일을 소화할 만큼 충분히 관련 내용을 익히는 것이 내년의 목표입니다. C#은 Java와도 비슷하다고 하니 병행해서 공부한다면 더 큰 시너지 효과가 날 것 같습니다.
  4. 개발 커뮤니티 활동과 자기계발
    회사를 다니면서 또 중요하게 생각했던 것은 회사 이외의 개발, 즉 커뮤니티 활동과 자기계발입니다. 현재 디프만이라는 디자이너-개발자 프로젝트 동아리에서 회사에서 하는 개발과 전혀 다르게 프론트엔드 개발자로 활동하고 있습니다. 회사생활 전부터 하고 있었지만 지금도 하고 있고 덕분에 큰 성장을 경험하고 있습니다. 정직원이 되어도 이런 활동과 자기계발을 계속 하겠습니다.

이런 4가지 목표를 가지고 정직원과 2020년을 준비해야겠습니다.

 

쓰다 보니 뭔가 2019년 회고가 된 것 같은 느낌도 있지만... 어찌 되었든 이제 취준 생활을 마무리하고 새로운 곳에서 새로운 사람들과 새로운 개발을 하게 되었습니다. 앞으로 더 좋은 개발 글과 회사소식 자주 전하도록 하겠습니다.


여기까지 읽으셨다면 정말 대단하십니다. 좋아요(공감)을 눌러주시면 더 힘이 날 것 같습니다.

 

여러분의 2019년은 어땠고, 2020년의 계획은 무엇인가요? 댓글로 달아주세요☺️