민트 인턴 후기 – 조은학님

2022년 9월부터 12월까지 약 4달동안 인턴을 하며 크게 2가지 프로젝트에 참가하였습니다. 공유 보조배터리 서비스 ‘아잉’과 프로젝트 관리 서비스 ‘PLSNote’ 개발에 참가하였습니다. 두 서비스 모두 ruby on rails 프레임워크를 사용하며 stimulus.js와 slim으로 웹을 구성하고 있습니다. 인턴을 처음 시작하면서 ruby 언어를 처음 배우게 되었는데 언어를 처음 학습할 때에는 언어의 표현 방식, 패러다임에 대해 이해하는 것이 중요하다는 생각이 들었습니다. 또한, ruby는 자바나 파이썬과 같은 객체지향 언어이고 ruby on rails는 MVC 패턴으로 디자인된 백엔드 프레임워크이기 때문에 자바나 파이썬 등의 백엔드 프레임워크 경험이 있으면 더욱 빠르게 적응할 수 있을 것 같습니다.

보조배터리 공유 서비스 ‘아잉’

2022년 9월부터 12월까지 약 4달동안 인턴을 하며 크게 2가지 프로젝트에 참가하였습니다. 공유 보조배터리 서비스 ‘아잉’과 프로젝트 관리 서비스 ‘PLSNote’ 개발에 참가하였습니다. 두 서비스 모두 ruby on rails 프레임워크를 사용하며 stimulus.js와 slim으로 웹을 구성하고 있습니다. 인턴을 처음 시작하면서 ruby 언어를 처음 배우게 되었는데 언어를 처음 학습할 때에는 언어의 표현 방식, 패러다임에 대해 이해하는 것이 중요하다는 생각이 들었습니다. 또한, ruby는 자바나 파이썬과 같은 객체지향 언어이고 ruby on rails는 MVC 패턴으로 디자인된 백엔드 프레임워크이기 때문에 자바나 파이썬 등의 백엔드 프레임워크 경험이 있으면 더욱 빠르게 적응할 수 있을 것 같습니다.

프로젝트 관리 서비스 ‘PLSNote’

기업의 프로젝트 진행관리 단계를 임원의 시각에서 한눈에 바라볼 수 있는 ‘PLSNote’ 서비스의 개발에 참가하였습니다. 이 서비스는 약 4년 이상 계속해서 개발되는 규모가 큰 서비스였기 때문에 많은 기능이 포함된 서비스였습니다. 기업의 프로젝트 진행 관리 단계에 따른 상태 관리, 배정된 업무에 대한 리마인드와 수행한 업무에 대한 평가, 사원들 간의 채팅 기능 등 많은 기능이 포함되어 있습니다. 따라서 처음에는 도메인 지식을 이해하는데 어려움을 겪었습니다. 하지만, 계속해서 코드를 이해하려고 노력하고 이해가 안되는 부분은 사수님에게 질문을 하며(사수님, 친절하게 알려주셔서 감사합니다) 적응을 하였습니다.

마지막으로, 민트기술에는 좋은 개발 문화가 있습니다. 코드 리뷰 문화가 있는데 기능 구현이 된 다음에는 코드 컨벤션에 맞게 짜야 하고, 코드의 중복을 제거하는 등의 클린 코드는 무엇일까 사수님과 팀원들과 끊임없이 고민하는 문화를 가지고 있습니다. 제가 짠 코드를 3번 넘게 피드백을 받고 머지되지 않고 반려 당한적도 있는데 더 좋은 코드에 대한 고민은 끝이 없다는 생각이 들었습니다.

또한, 매주 목요일 주간회의 시간을 가지는데, 각자 담당하고 있는 프로젝트에서 진행상황에 대해 발표하며, 더 좋은 아이디어는 없을까 고민도 같이 해주고 문제점에 대해서는 같이 논의하는 시간을 가지고 있습니다. 또한 회의 끝에는 모두 회고하는 시간을 가지며 한 주에 대해 잘한 점, 부족한 점, 새롭게 시도할 점에 대해 생각하고 발표하는 시간을 가집니다.

학교에서 프로젝트를 할 때에는 완성하기에만 급급했었는데 회사에서는 완성이 끝이 아니고 계속해서 코드의 품질에 대해 리팩토링을 해야하고 테스트 작업을 수행해야 하는 점을 배웠습니다. 오히려 완성하는 시간보다 리팩토링과 테스팅 하는 시간이 더 오래 걸리는 느낌을 받아 코드의 품질을 좋게 짜는 일이 정말 어렵고 중요하다는 것을 배웠습니다. 민트기술은 정말 좋은 개발 문화를 가지고 있기 때문에 더 좋은 개발자가 되기 위한 발걸음을 내딛는 곳으로 추천드립니다.

Ashley Jeong’s Internship Review

My internship at Mintech lasted two months, and during this time I made lasting connections with coworkers and learned extensively about front-end development. 

When I first entered the company, I brought with me my knowledge from classes in college, where I mostly learned popular algorithms and important concepts such as dynamic programming and pipelining; however, I did not put these ideas to use at Mintech as I mainly worked on the “AngelRobotics” project: a front-end UI for a user and robot management website. This was the first time I worked with React JS or more specifically javascript, html, and css. While I was daunted at first by the new languages, I came to quickly realize that javascript was extremely similar to other languages like C++ that I had learned before. Additionally, on the first day of work, I took a mini tutorial of React that managed to kickstart me in the right direction and subsequently, I learned more on my journey. On the other hand, html and css came easily and it was extremely satisfying to see the physical results.

The project I worked on was in conjunction with the client company AngleRobotics. I created the front-end website and connected HTTP requests to display the data online using REACT JS; meanwhile, my correspondent at AngelRobotics worked on the backend, or more specifically the API in Node JS. The biggest problem that arose during the project was the difficulty in communicating with each other, as I was obviously much more comfortable and fluent in English, and my opposite was fluent in Korean. It also did not help that both him and I were quite new to backend and frontend coding, respectively, which led to even more confusion. Nevertheless, I tried to power through and in the process, learned much about React js and frontend coding.

One of the best parts of working at Mintech was the people I got to interact with. Coming from America, I was awkward with the social formalities and niceties required in Korea; however, my coworkers were extremely welcoming and the use of company nicknames helped me ease in with everybody. While I had the option to choose days I could work remote or in-person, I ended up commuting to the office almost every day even though the trip was around an hour long as I loved getting to know my coworkers better and having casual conversations with them. In the end, despite my inability to speak completely fluent Korean, I created everlasting bonds with everyone at Mintech. I will be forever grateful for this opportunity as I have learned so much-from business social skills to technical frontend coding-and will be sure to come visit again if I have the chance to come back to Korea. To 쑥, 오리, 양파, 와플, 바다, 베리, 쿠키, 책인님, 도리, 초코, and 브로콜리사장님: Good luck on all your future endeavors everyone and hope you continue to welcome all interns with open arms!

민트 인턴 후기 – 임지원님

2021년 7월부터 6개월간 민트기술에서 인턴십을 진행했습니다.
참여했던 프로젝트는 Safe2Go Pass 와 PLSnote 였습니다.

Safe2Go Pass 는 KT 와 인천공항공사가 주관하는 프로젝트로, 공항에서 출국 시 사용하는 코로나 검사 예약 서비스입니다. 웹페이지와 어플을 제작하는 것이 프로젝트 목표였는데, 그 중에서 안드로이드 어플 개발에 참여했습니다.

4학년이 되어서야 안드로이드를 중점으로 공부해보고자 결정했기 때문에, 이전에 안드로이드 프로젝트 경험이 많지 않았습니다. 또한, 이전에는 java 로만 안드로이드 개발을 해봤었는데 해당 프로젝트에서 kotlin 으로 처음 개발을 진행해보았습니다. 이미 kotlin 으로 많은 안드로이드 개발이 이뤄지기 때문에, 안드로이드 개발자를 희망하신다면 kotlin 을 익혀놓으면 도움이 많이 될 것입니다!

처음에는 디자인을 보고 간단한 화면을 수정하는 것부터 시작해, 화면을 직접 만들고 나중에는 서버에 요청한 데이터를 가져와 화면에 표시하는 작업까지 진행했습니다. 또한, mvvm 과 같은 디자인 패턴을 적용하며 효율적인 구조, 코드를 작성하는 방법들을 배울 수 있었습니다. 제가 작성한 코드를 다른 개발자님이 개선해주시고 개선 방향을 함께 고민하며 가독성 좋은 코드를 작성하는 연습을 많이 할 수 있었습니다.
해당 프로젝트는 애자일 기법을 활용해 프로젝트를 관리했습니다. 실무에서 직접 활용되는 게 신기하기도 하고 방법론의 중요성도 고민해보게 되었습니다.

그 다음으로 참여한 프로젝트는, 다른 인턴분들과 함께한 PLSnote 입니다. PLSnote 는 회사에서 업무를 관리하기 위해 개발된 웹페이지입니다. 웹페이지 내에서 사용되는 용어들이 많고 기능도 많아 처음에는 익숙해지는 것을 목표로 했습니다. 이후에 다른 인턴들이 들어오더라도 쉽게 이해할 수 있도록 “페이지 가이드” 및 “용어 설명서” 들을 작성했습니다.

이후에는, 테스트 코드 작성 업무를 맡았습니다. 예를 들면, “로그인” 버튼을 누르면 “로그인 페이지” 로 이동해야하는데, 이를 하나씩 테스트하는 것은 실질적으로 불가능합니다. 따라서, 알맞은 페이지로 이동하는지 체크하는 코드를 작성하는 것입니다. 이런 방식으로 주요 기능들이 정상적으로 동작하는지 확인하는 테스트 코드를 작성했습니다.

해당 프로젝트는 Ruby 라는 언어로 진행되는데, 처음 접해보는 언어였기 때문에 초반에는 언어와 mvc 패턴을 익히는 시간을 가졌습니다. 이후에는, 새로운 기능을 추가하거나 화면을 수정하는 작업들을 했습니다. 이를 통해, 웹 페이지의 작동 방식, 쿼리를 작성해 데이터 베이스의 필요한 값을 가져오는 방법 등을 배울 수 있었습니다.

인턴에 지원하기 전, 안드로이드 프로젝트 경험이 많지 않아 참여할 수 있을까 고민했었습니다. 그러나, 회사에서는 배우려는 의지와 참여도를 더 중요하게 여기기 때문에 저와 같은 고민을 가진 분들이 있다면 걱정하지 말고 우선 도전해보시길 바랍니다. 다른 개발자분들도 인턴들을 모두 도와주시고 하나라도 더 가르쳐주려 하시기 때문에 적극적으로 참여하시면, 개발자로서 성장할 수 있을 것입니다.

식대나 간식도 충분히 지원해주셔서 복지도 너무 좋았고 정말 많이 배울 수 있었던 기회였습니다!

민트 인턴 후기 – 원다연님

웹 프론트엔드 개발과 관련한 프로젝트는 크게 2개가 있어 2개를 주로 맡게 되었다. 하나는 PLSnote 서비스인데 회사 업무를 PDCA 방식으로 관리하는 프로그램이다. 이 프로젝트는 Ruby 언어와 Ruby on Rails 프레임워크를 사용하고, slim과 stimulus.js를 사용하고 있다. 사용자들이 실제로 사용하면서 발생하는 에러나 추가되었으면 하는 기능 의견을 받아 처리해주는 업무이다. 해당 이슈들을 처리하기 위해 주로 데이터베이스 쿼리를 해서 클라이언트단에 정보를 넘겨주는 코드를 짰다. 그리고 하나는, 서울대에서 하는 연구 프로젝트의 일부인데 사람의 목소리를 지문처럼 인식해서 음성을 비교해 분석해주는 프로그램이다. 해당 프로그램이 돌아가는 서버 환경을 수정하거나 UI를 수정하는 업무를 맡아 진행했다. 타입스크립트 기반의 React 프레임워크를 사용하고 있으며, 서버쪽은 node 를 사용하고 있다. 이외에 HTTP 기본 지식, 프론트엔드 개발환경, 웹 성능 최적화하는 방법 등에 대한 학습을 하며 개발 지식을 넓혔다.

프로젝트를 진행하면서 새로운 언어인 Ruby를 접하게 되었고, 문법도 모르는 언어의 코드를 수정하고 추가해야하는 상황이어서 처음에는 막막했다. 그러나 시행착오를 겪고 많이 찾아보고 질문하면서 배워나갈 수 있었다. 그렇게 이제 Ruby가 조금 익숙해져서 전만큼 두려워하지 않고 부딪혀보는 용기가 생겼다. 혼자 공부했다면 접해보지 않았을 언어이기도 하고 백엔드까지 함께 다루게 되어 값진 경험이었다. 이미 구축되어 있는 DB 스키마를 보며 원하는 데이터를 어떻게 가져올 수 있을지 고민하며 성장할 수 있었다. 이런 경험들이 쌓여 프론트엔드에서 어떻게 처리를 해야 백엔드와 연결될 수 있는지 이해하고 알게 되었다. 현장실습하기 전보다 개발적인 면에서 많이 성장한 것 같다. 이전에는 짜여진 코드를 이해하는데 엄청 오랜 시간이 걸리거나 모르는 것이 많아서 찾아보는 일이 많았는데 지금은 어느정도 눈에 들어오고 서칭하는 방법도 디테일해진 것 같다.

실습 전에는 어떤 기능을 개발하는 것에만 집중하고 그 방법에 대한 고민을 많이 했다. 그런데 회사에 오고 실제 프로젝트에 참여하여 코딩을 하면서 먼저 웹 구조를 아는 것이 중요함을 깨닫게 되었다. 그래서 웹 구조에 대한 학습을 했고 이로 인해 프론트엔드와 백엔드가 어떻게 통신하는지 알게 되었고, 전체적인 코드를 보는 관점이 달라졌다. 그리고 실제 프론트엔드와 백엔드 코드를 같이 수정해야 해결되는 이슈들을 맡아서 해결해보면서 학습한 내용을 적용할 수 있었다. 처음 사용해보는 언어와 프레임워크여서 이해가 잘 되지 않고 어렵기도 했지만 개발자님이 천천히 하나하나 설명해주시고 같이 이슈를 해결해나가면서 문법에 익숙해지고 많이 배우게 되었다. 그리고 다른 인턴 분들과 협업하여 이슈를 해결한 적도 있는데 혼자서 잘 풀리지 않던 부분을 다같이 이야기하며 방법을 모색하고 도전해 봤던 점이 큰 원동력이 되었다. 긴 시간동안 어려운 부분도 많아서 힘들었지만 그래도 고민한 시간들이 모여서 성장할 수 있었던 것 같다. 성장할 수 있도록 도움을 주신 대표님, 개발자님, 그리고 인턴분들 모두에게 감사하다.

민트 인턴 후기 – 서민규님

2021년 7월 1일, 인턴으로 출근하며 설레는 마음으로 민트기술에 입사하게 되었습니다. 처음 일을 시작할 때 6개월 뒤에 얼마나 발전하게 될지 매우 궁금했는데, 현재 6개월이 지난 시점에서 매우 만족하고 있습니다.

제가 맡은 업무는 3가지로, 띵동, plsnote, snu 성문분석 프로그램이었습니다.

띵동 업무를 진행하면서, 학부생 때 경험하지 못했던 프론트엔드와 백엔드의 개념을 확실히 이해할 수 있었습니다. 또한 실제로 배포되어 사용되고 있는 어플리케이션이기 때문에, 띵동을 이루고 있는 코드들이 다양하여 처음에는 막막하였습지만, 개발자 분들께서 친절하게 설명해주셨습니다. 가장 생각나는 부분은 푸드테크 리팩토링을 위해 기존 구조에 대한 다이어그램을 그렸던 업무가 생각납니다. 이 업무를 통해서 띵동이 외부 API와 어떠한 방식으로 연결되어 있는지 확인함으로써, 더 잘 이해할 수 있었습니다.

plsnote를 진행하면서 Ruby on Rails에 대해 많은 교육을 받았습니다. Ruby는 기존에 제가 알고 있었던 언어들과는 매우 다른 언어였는데. 매우 친절하고 직관적이기 때문에 처음에는 적응이 잘 되지 않았지만 개발자분들께서 교육해주시고, 이슈를 직접 해결하는 실습을 통해서 이해할 수 있었습니다. 또한 MVC패턴에 대해서 완벽하게 이해할 수 있었습니다. Ruby on Rails의 파일에 각각 Model, Controller, View 폴더로 이루어져 있는데, 이 부분에 필요한 Ruby 파일을 추가하여 웹을 구성하고 있습니다. 가장 놀라웠던 부분은 routes에 선언된 resource 부분이 Controller 폴더 및 파일의 구조와 일치하기 때문에 resource 아래 선언되어 있는 Controller action을 조회하기가 매우 쉬웠습니다. 특히 권한 관련 table을 수정해야 하는 부분의 migration 파일을 다루는 이슈가 있었는데, 이 이슈를 통해서 table에 대한 내용, 관계 등 plsnote를 이루고 있는 Database를 이해하기 수월하였습니다.

snu 성문분석 프로그램을 진행하면서, 프론트엔드 언어인 React에 대한 실습을 많이 진행하였습니다. 음성 여러개 업로드, 음성 녹음 파일 업로드 이슈를 진행하면서 React 의 컴포넌트들이 어떠한 방식으로 선언이 되고 props와 state를 통해 컴포넌트의 데이터를 주고 받는 과정을 이해할 수 있었습니다. 또한 백엔드 프레임워크로 Django를 사용하였는데, 서버에서 N대N 음성 분석 결과 그래프를 png파일로 저장하였고, xmlhttprequest를 사용하여 png파일이 포함된 response 데이터를 통해 프론트엔드 단에서 그래프를 확인할 수 있도록 하였습니다.

이슈를 직접 진행하는 실습을 통해서, 여러가지의 성과를 가지게 되었습니다. 우선 git을 사용하는 방법에 대해 매우 능숙해지는 성과가 있었습니다. gitlab을 통해서 프로젝트에 대한 이슈들을 열람하여 이해하고, 이슈를 해결하기 위해 새로운 branch를 만들어서, 코드를 수정하였습니다. 수정한 코드를 commit 후 push하면 개발자분들께서 merge를 하기 위해서 코드를 열람하고 피드백을 주시는 부분에서 개발실력 향상과 나중에 취업할 때 커뮤니케이션 능력을 기르는데 매우 큰 도움이 된다고 생각하였습니다. 그리고 Django, React, Ruby on rails 같이 다양한 개발 언어를 경험함으로써 어떠한 언어든지 공부하여 잘할 수 있겠다는 자신감을 가지게 되었습니다.

민트기술을 통해 4학년 2학기를 마무리 했다는 것에 매우 다행이라고 생각합니다. 개발자 분들이 작성하신 많은 코드들을 직접 확인하면서, 코드가 어떻게 작성되고 외부 API와 연결되는 방법들, 코드 구조에 대한 부분 등 정말 많이 배울 수 있었습니다. 그리고 gitlab을 통해 로컬에서 브랜치를 만들어서 각자 수정하는 코드들을 remote 코드에 push하고, merge request를 하기 전 사수분들이 내가 작성한 코드를 피드백해주시는 부분에 있어서 개발회사가 어떠한 방식으로 업무를 보고 있는지에 대해 직접 경험함으로써 실무적인 역량을 쌓게 되었습니다. 소프트웨어융합대학 SW사업단에서 지원하는 장, 단기 현장실습을 하는 학생들에게 민트기술을 강력히 추천하고 싶습니다. 사수 분들도 너무 친절하시고, 회사 복지도 좋고, 학부생이 경험할 수 있는 인턴 중 가장 좋은 인턴경험이라고 생각합니다. 웹 개발 관련 분야에 대해서 자세하게 알 수 있게 해준 민트기술에게 감사합니다.

민트 인턴 후기 – 이나윤님

민트기술에서 약 6개월 동안 보조 배터리 공유 서비스 “아잉” 관련 개발에 참여하며 인턴십을 진행하였습니다.

소프트웨어를 전공으로 해서 3년이 넘는 시간을 공부해왔지만 뚜렷한 진로를 결정할 수 없었습니다. 무엇이 하고 싶은지 결정할 수 없어 고민하던 때에 학업을 잠시 중단하고 민트기술에서 인턴십을 진행하게 되었습니다.

저는 민트기술이 개발하고 서비스 중인 보조 배터리 공유 서비스 “아잉” 관련 백엔드부터 웹, 프론트엔드까지 전반적인 개발에 함께 참여하게 되었습니다.

개발에는 루비 온 레일즈를 사용하였는데, 루비와 레일즈 모두 익숙하지 않았을 뿐만 아니라 프레임워크조차 생소했습니다. 개발하면서 루비 온 레일즈에 익숙해지라는 사장님의 말씀에 따라 간단한 이슈를 맡아 개발하기 시작하였습니다. 처음에는 뷰 부분 위주의 이슈를 주로 맡아 루비 온 레일즈 동작 방식에 대해 파악하였고 사수님의 도움과 인터넷, 책을 참고하며 루비 온 레일즈에 익숙해지기 시작하면서 기능 구현과 같은 이전보다 복잡한 이슈도 맡아 처리하였습니다.

인턴십 기간 동안 아잉 관리자 페이지의 자잘한 뷰 수정부터 기능 구현까지 다양한 이슈에 참여하였습니다. 개발은 마일스톤에 따라 진행하였는데, 마일스톤의 목적에 부합하는 이슈를 할당받아 마일스톤 기한 내에 구현하기 노력하였습니다. 특히 기억에 남는 이슈는 아잉 현장 관리자 기능을 구현하는 이슈였습니다. 해당 이슈는 루비뿐만 아니라 자바스크립트를 이용해서 여러 가지 기능을 구현해야 하는 이슈였는데 기능 중 하나는 AJAX를 이용해서 화면 전환 없이 페이지 일부에만 변경된 데이터를 표시하는 것이었습니다. AJAX를 구현해본 적도 없을뿐더러 이곳에서 AJAX라는 것을 처음 접하게 되었고, 자바스크립트 역시 익숙하지 않은, 잘 모르고 생소한 것들로 인해 이슈를 처리하는 과정은 난관의 연속이었습니다. 그렇지만 개발 기한을 맞추기 위해 개발사항을 단계별로 나누고 구현 가능한 부분은 최대한 스스로 해내려고 하였습니다. 다만 모르는 것은 인터넷과 책을 참고하고 동기 인턴님과 사수님께 여쭤보며 해결해나갔습니다.

위와 같은 기능 구현의 어려움으로 인해 기억에 남기도 했지만 무엇보다도 해당 이슈에 코드 리뷰가 많았기 때문에 기억에 남습니다. 고작 해봐야 친구들과 혹은 공모전에서 프로젝트를 진행한 게 전부이다 보니 코드 리뷰를 제대로 진행해본 적이 없어 어려움을 겪었습니다. 처음엔 제가 짠 코드에 대해 리뷰를 달아주시는 것을 고치는 데에 급급했지만 이후에는 왜 그렇게 리뷰를 달아주셨는지에 대해 생각하고 참고자료를 찾아보며 또 다른 공부를 할 수 있었습니다. 해당 이슈는 다른 개발자분들의 코드 리뷰를 받으면서 기능을 잘 구현하여 마무리할 수 있었습니다.

인턴십을 진행하며 코드 리뷰가 단순히 더 좋은 코드를 짜기 위한 것뿐만 아니라 기존에 있던 코드들과의 통일성을 지키기 위한 것임을 알게 되었습니다. 이를 통해 각각의 회사가 가지고 있는 코드 컨벤션이 얼마나 중요한지도 알게 되었습니다. 위의 내용을 바탕으로 저 또한 다른 개발자분들의 코드를 리뷰하였으며 깃랩 위키에 적혀있는 회사 코드 컨벤션을 참고하며 리뷰를 남겼습니다.

약 6개월이라는 시간 동안 크고작은 이슈를 할당받아 개발을 진행하였고 대부분 머지되어 실제 프로그램에 적용되었습니다. 비록 커다란 프로그램에서 아주 작은 기능 하나를 구현한 것이지만 이것을 시작으로 점차 더 복잡하고 주요한 기능을 구현할 수 있다고 생각하였고 인턴십을 시작하기 전의 저에게서는 찾아볼 수 없었던 자신감이 생겼습니다. 모든 것에 미숙하던 저에게 일을 맡기고 제가 좀 더 나은 방향으로 나아갈 수 있도록 도와주신 사장님과 회사 사람들께 정말 감사했습니다.

민트 인턴 후기 – 이종민님

4학년 1학기가 끝나갈 때쯤 학교 공지사항에 인턴십 프로그램 신청 안내가 올라왔고 여러 기업 리스트 중에서 민트기술에 신청서를 냈다. 대학교에서 여러 프로그래밍 수업과 과제를 했었지만, 막상 다른 사람들이 실제로 사용할 프로그램을 만들어보라고 하면 만들 자신이 없었다. 게다가 협업도 대학교 조별 과제는 사실상 혼자 만드는 거나 다름이 없었기에 협업에 대한 개념도 없었다. 이러한 상황에서 합격 소식을 들었을 땐 걱정이 앞섰다. 하지만 다른 한편으로는 실제 회사 생활은 어떤지, 실무에서는 어떤 언어와 툴을 사용하는지, 협업은 어떻게 돌아가는지 등을 배울 기회라는 점에서 기대감도 컸었다.

입사 첫날 모든 게 처음이라 낯설어서 쭈뼛쭈뼛 회사에 들어와 인사하고 다른 인턴 동기와 함께 대표님과 면담을 진행했다. 첫날에는 민트기술이 어떤 회사인지, 어떤 일을 하고 있는지, 서비스의 구조는 어떤지에 대한 소개를 들었다. “아잉”이라는 보조배터리 공유 서비스를 담당하게 되었는데 서버가 ruby on rails로 만들어져 있었다. ruby와 ruby on rails 모두 이름만 들어보고 실제로 사용해 본 적이 없는 것들이었다. 그래서 첫 주는 거의 레일즈 공부에 시간을 보냈다. 그래도 공부하다 보니 루비는 파이썬과 비슷한 느낌의 언어였고(하지만 사용하면 사용할수록 파이썬과 컨셉 자체가 다른 언어라는 게 느껴졌다.) 레일즈는 ‘설정보다 규약’이라는 이념답게 처음에 규칙을 파악하는데 고생했지만, 규칙을 익히고 나니 편하게 개발할 수 있었다.

회사 생활은 내가 생각했던 것보다 더 수평적이었다. 이슈를 만들어 올리고 문제를 해결해서 머지 리퀘스트를 보내면 팀원 모두가 코드를 보고 리뷰를 해준다. 나도 다른 사람들의 코드를 보며 새로운 아이디어를 얻기도 하고 개선할 점을 알려주며 리뷰를 한다. 회사에는 냉장고에 음료와 간식이 항상 구비되어 있고 점심값도 회사에서 지원해줘서 회사 사람들과 함께 점심을 먹으러 간다.

개발 환경으로 모두 맥을 사용하고 있어서 나도 회사에서 맥os를 처음 사용해 봤다. 윈도우와 상당히 다른 환경이지만 ‘계속 쓰다 보면 적응하겠지’라고 생각했는데 결국 적응하지 못하고(집에서는 계속 윈도우를 쓰는 점이 큰 거 같다.) 단축키 세팅을 윈도우와 비슷하게 바꿔버렸다. 그래도 아이맥이 화면이 넓어서 개발할 때 좋았다. 서비스가 AWS에서 돌아가고 있었기 때문에 AWS를 다뤄볼 기회도 있었다.

어느새 6개월의 시간이 지나갔고 인턴도 끝나간다. 졸업 후 취직을 하면 회사에 잘 적응할 수 있을까 걱정하던 나에게 인턴십은 정말 좋은 경험이었고 많은 걸 배울 수 있었다. 특히, 대학 과제 프로젝트가 아닌 실무 프로젝트 진행에 대한 자신이 없었는데 자신감도 생겼다. 좋은 사람들과 함께 일할 수 있어서 감사했고 어서 코로나19도 끝나서 회사도 쭉쭉 성장했으면 좋겠다.

iMessage 용 스티커팩 만들기 가이드

이 문서는 iMessege 용 스티커팩을 준비하는 디자이너를 위해 작성되었습니다.

스티커팩 준비하기

크게 3가지 종류가 있습니다.
[table id=1 /]
준비해야 하는 이미지 사이즈는, 실제 보이는 이미지의 3배 크기의 이미지를 준비합니다. 레티나 디스플레이 아이폰에서 좀 더 선명하게 보이기 위해서 입니다.
파일포맷은 배경이 투명한 png 파일 포맷으로 합니다. 하나의 파일이 500kb 를 넘으면 안됩니다.
준비해야 하는 스티커의 최소 갯수는 없습니다.

애니메이션 준비하기

애니메이션은 위 사이즈와 동일한 gif 파일을 만들어도 됩니다. 좀 더 잘 하려면, Xcode 에서 APNG파일을 만들 수 있습니다. 이 때에는 PNG 파일로 이미지 낱장을 준비한 다음 Xcode 를 사용하는 개발자에게 의뢰하도록 합니다.
gif 애니메이션과 APNG 파일의 차이는 APNG 파일이 좀 더 메시지나 이미지 위에서 지저분하지 않게 잘 보이게 된다고 합니다. 하지만, 그런 디테일이 필요 없다면, gif 로 해도 무방합니다.

아이콘 준비하기

아이콘이 의외로 좀 많이 필요 합니다.
[table id=2 /]
모두가 다 필요하냐구요? 네 모두 필요 합니다. 모두 다를 필요 없고 모두 같은 모양이지만, 사이즈만 다르면 됩니다.
주의할 사항은 파일 타입은 png 로 하되, 배경이 투명이면 안됩니다. 보통은 흰색 아니면 원하는 색을 넣어 줍니다. 그리고, 필요한 경우 아이콘은 자동으로 라운드 처리가 됩니다. 그래서 귀퉁이 부분은 라운드 될 수 있다는 점에 주의합니다. (미리 라운드 처리 하면 안됩니다.)

유료, 무료, 인앱 구매

앱스토어 올릴 때, 유료로 할 지 무료로 할 지 선택할 수 있습니다. 원한다면 부분적으로 인앱 구매로 처리할 수 있습니다. 이 부분은 앱스토어 올리기 전 결정하면 됩니다.

좀 더 고민하기

Sticker 는 기존 메시지버블에 떼어 붙이거나, 아니면 다른 스티커 위에 붙일 수 있는 개념입니다. 그래서, 메시지버블에 붙였을 때 잘 어울리거나, 아니면, 여러개의 스티커를 붙여서 하나의 스티커가 되는 조각단위로 디자인 하면 좋습니다.

메시지 버블에 조금 어울리는 스타일?

조각 단위 스티커 사용 예. 얼굴과 눈모양을 별도의 스티커로 만들면, 얼굴을 사용자가 원하는 대로 만들어 낼 수 있다.

이미지 외곽에는 흰색 아웃라인을 그려주면 좋습니다. 대부분은 흰색 배경의 채팅창을 쓰지만 모두가 그런 것은 아닙니다. 어두운 배경의 채팅창을 쓰는 경우도 있습니다. iOS의 메시지앱에서 스티커를 터치하면 흰색배경에 스티커를 볼 수 있고, 여기서 한번 더 터치하면, 검은 배경에 전체 화면으로 스티커를 보여줍니다. 이 때, 흰색 배경만 고려했다면, 애매한 부분이 더 확연히 들어날 보입니다.
자세히 보면 외곽에 흰색 테두리가 보인다.

흰색 배경에서는 문제 없이 잘 보인다.

검은색 배경이 되면 상황은 달라진다. 보기가 많이 어렵다.

참고 페이지

덤으로 Telegram 용 스티커팩 만들기

  • 사이즈 : 512×512
  • 파일포맷 : 투명 png

위 사이즈로 이미지를 준비하면 됩니다. 문제는 Telegram 에서는 무료 스티커팩 만 만들 수 있습니다. 아직 유료는 지원하지 않습니다.

민트기술 인턴 후기 – 김영호님

대학교에서 단순히 컴퓨터에 대한 지식, 코딩에 대한 지식만 쌓아왔지 실제로 활용해 본 적 없던 나는 입사한 첫 날 걱정이 앞섰다. 외부프로젝트의 ios 버전을 인턴 2명이서 맡게 되었기 때문이다. ios 개발이라고는 저번 학기에 들었던 수업에서 한 3개월의 경험밖에 없던 난 당연히 걱정이 생길 수 밖에 없었다. 또한 내가 대학에서 배웠던 지식은 알고리즘, 자료구조, 오토마타 등 이론에 대한 지식밖에 없었는데 이 프로젝트에서 요구하는 건 그런게 아니었다. 
 

내가 프로젝트를 진행하는데 있어서 필요한 지식은 크게 5가지였다. 
IOS 앱개발에 필요한 지식, BLE 통신, 데이터베이스, 서버 API통신, 마지막으로 git에 대한 활용법. 
이 5가지 중 내가 갖고 있던 지식은 3개월 동안 배운 IOS 개발에 필요한 지식이 다였기에, 걱정이 많이 앞섰다. 
 
프로젝트는 다음과 같은 순서로 진행됐다. 

  1. UI 구현 
  1. 내부 API 구현 
  1. 외부 API 구현 
  1. 테스트케이스 실험 

 
내가 느끼기에는 UI 구현이 가장 어려웠다. xcode와 swift에 익숙치 않아 많은 시행착오를 겪었기 때문이다. 내가 알고 있는 앱개발에 필요한 지식은 극히 일부라서 UI구현에 필요한 지식을 일일이 다 검색해가면서 찾았다. 개발에 가장 지장이 되었던 것은 앱에 대한 가이드라인이 따로 존재하지 않는다는 것이었다. 가이드라인이 없어 기존에 있던 안드로이드 버전을 참고해가면서 프로젝트를 진행해야 됐는데 심지어 안드로이드 개발도 잘 몰라 진행사항이 매우 더뎠다.  
또한 기존의 난 git에 대한 지식이라고는 push, pull 밖에 없었다. 대학에서 깃을 다루긴 했지만 다 개인과제였기 때문에 따로 브랜치를 만들 이유가 없었기 때문이다. 그래서 git에 대해 알아가는 데 또 시간이 걸렸다. 
 
그러나 시간이 지나면서 이런 애로사항들이 하나 둘 해결됐다. 회사에 출근해 하루종일 구글링하고 남들의 코드를 보면서 오토레이아웃, 세그웨이 등 UI구현에 필요한 전반적인 지식이 쌓이고 안드로이드 또한 어떤 방식으로 동작하는 지 알게 되자 진행속도가 상당히 빨라졌다. 구글을 보는 시간보다 코드를 보는 시간이 많아졌고 점차 자신감이 생겼다. 또 git은 회사분들께서 너무 자세하게 설명해주셔서 금방 사용법을 알게 되었다. git을 활용해 클론을 따고, 브랜치를 만들고, Merge Request를 하는데 내가 진짜 프로그래머가 된 기분이었다. 프로그래머의 기본은 협업인데 협업을 하는 방법을 알았기 때문이다. 그렇게 UI 구현은 2주만에 끝났다. 
 
다음으로는 내부 API 구현을 진행했는데 이 때 BLE통신, 데이터베이스 등을 배웠다. 프로젝트를 진행하면서 가장 많은 시간을 할애한 것이 BLE통신이었다. 애초에 BLE가 뭔지도 몰랐던 난 이 기능을 앱에 구현하면서 코딩보다 정보를 찾는 데 시간을 다 썼다. IOS에서 지원해주는 Core Bluetooth가 어떻게 동작하는 지 부터 peripheral이 뭔지, Service가 뭔지, characteristic이 뭔지 차근차근 알아갔다. 그 뒤에는 제품과 핸드폰 기기와의 통신에 필요한 프로토콜을 이해하는데에 또 많은 시간을 할애했다. 이 단계에선 사수분의 도움을 많이 받았다. 사실 처음 프로젝트를 맡았을 때부터 사수분이 정해졌지만 그 동안 오기때문에 혼자 진행하려고 노력했지만 진행속도가 너무 더뎌져 도움을 요쳥했다. 이 때 사수셨던 승리씨는 원래 따로 진행하시던 프로젝트가 있음에도 불구하고 너무 친절하게 가르쳐주셔서 감사했다. 이렇게 BLE통신을 구현했을 때의 심정은 말로  다 할 수 없다. 
그 다음엔 데이터베이스를 구현했는데 이 과정은 생각보다 빨리 끝났다. 따로 이해해야할 지식은 없고 어떻게 써야 되는 지만 알면 됐기 때문이다.  이렇게 내부 API 또한 2주만에 끝났다. 
 
이 때 되게 나한테 놀랐던 것은 불과 한 달만에 UI구현과 내부 API를 구현했다는 것이다. 그리고 코딩에 상당이 자신감이 붙은 나를 발견했다. 앞으로 프로젝트를 진행하면서 어떤 어려움이 닥쳐도 해낼 수 있을 거란 생각이 들었다. 
 
뒤로는 외부 API 통신을 하게 되었다. 여기서 생각보다 많은 시간을 할애했는데 그 이유는 클라이언트 쪽에서 서버 API 통신에 대한 규격같은 것을 아예 제공해주지 않았기 때문이다. 따라서 내가 기존에 있던 안드로이드 소스를 일일이 분석해가면서 규격을 찾아내고 구현했는데 이 과정에서 많은 시간이 걸렸다. 하지만 막막해보였던 이 또한 하니까 되더라. 
 
이렇게 막막했던 프로젝트 중 3가지를 끝냈을 때 난 전에 적었던 진행에 필요한 5가지에 대한 전반적인 지식이 생겼다. 불과 한달 조금 넘겨서 말이다. 내가 걱정했던 것은 기우였다는 것을 알게 되었고 이젠 난 개발에 대해 자신감이 생겼다. 과장을 조금 더하면 이대로 바로 취직해도 먹고 살 수 있겠다는 생각이 들었다. 가장 중요한 건 앞으로 개발하는데 어떤 어려움이 닥쳐도 해낼 수 있을 거란 생각이었다. 물론 시간이 많이 걸릴 수는 있지만 불가능하지 않다는 확신이 들었다. 
이후에는 원래 테스트케이스를 실험하면서 오류를 잡아내야 했지만 클라이언트 측에서 갑작스레 UI를 변경해 변경된 UI를 구현해내는데 시간이 많이 걸렸다. 또 UI를 좀 더 상세하게 고치면서 이제는 새로운 지식을 쌓기보단 알고있던 지식을 활용하는 반복작업이 시작됐고 그 후에야 테스트케이스를 실험했고 프로젝트는 거의 끝이 났다. 
 
프로젝트를 진행하고 나서 새삼 느낀 것은 회사의 분위기가 굉장히 자유롭다는 것이다. 사장님과의 면담시간중 ‘I LIKE I WISH’라는 것을 했는데 I LIKE 는 회사에서 좋았던 것, I WISH는 회사에 바라는 것을 얘기하는 것이었다. 이 때 내가 I WISH 시간에 얘기한 것이 2일뒤에 반영이 되었는데 상당히 놀랐다. 인턴에 불과한 나의 얘기를 반영하는 게 쉽지 않은 일이기 때문이다. 내가 갖고 있던 IT업계 회사에 대한 선입견이 여기서 많이 없어졌다. 보통 IT업계를 생각하면 회사에서 시키는 대로 일만하고 야근도 밥먹듯이 하는 그런 회사가 생각났었지만 민트기술에 와서 다 그렇지는 않다는 것을 깨달았다. 출근 시간도 9~10시 사이 자유롭고 퇴근도 눈치보면서 퇴근하는 그런 분위기가 전혀 없어서 일하는 2달동안 너무 좋았었다. 
 
이렇게 2달동안 인턴을 하면서 난 하나의 프로젝트를 맡게 되어 거의 끝을 냈다. 이제 난 기초적인 개발을 할 수 있게 되었고 회사에 대한 많은 선입견이 사라졌다. 또한 내가 전공하고 있는 소프트웨어에 더 많은 애정이 생겼다. 가장 좋은 건 코딩에 대한 자신감이 생겼다는 것이다. 이렇게 언제든 그만둘 수 있는 인턴에게 하나의 프로젝트를 맡겨주신 사장님과 프로젝트를 진행하면서 도움을 주셨던 회사 사람들께 너무 고마웠다.