뒤로
문준호
문준호 ·

경력전환

응용 프로그램 개발자에서 Flutter 개발자로

2022년 3월 나의 첫 개발자 인생의 시작이다. 첫 시작은 일반적이지 않은 방법으로 입사하게 되었다. 대학교와 기업이 연계한 일 학습병행이라는 제도를 통해 취업 연계형 인턴 생활을 시작으로 나의 첫 개발자 커리어를 시작하게 되었다.

물론 본인이 원하는 기술을 사용하는 회사는 아니었다. 본인은 학교에 다니면서

개인적으로 프론트앤드 개발을 위주로 커리어를 위해 공부를 진행하였다.

학교생활을 하면서 개인 프로젝트를 진행하기란 쉽지는 않았지만, 학습과 개발에 대한 열정이 당시에 하늘 무서운 줄 모르고 치솟아 올라갔다.

React를 공부하면서 진행하게 된 프로젝트는 간단한 프로젝트였다.

교내 대나무 숲을 페이스북에서 운영되고 있었는데 비효율적인 방법이라 생각하여

React를 공부하고 있으니 한번 자체 서비스를 구축하여 개발 경험도 쌓고 실제 서비스 운영 경험도 쌓아보자는 생각으로 기획, 디자인 그리고 개발을 진행해 보았다.

이 프로젝트는 혼자서 진행한 프로젝트이며 기획과 웹 디자인, API 설계 및 개발

DB 설계 그리고 프론트앤드 개발 단계까지 모두 스스로 진행하게 되었다.

기획

본문에 작성한 내용과 같이 기존 페이스북에서 운영되던 대나무 숲 서비스를 자체 서비스로 전환해보면 좋겠다는 생각에 간단한 CRUD 기능을 가진 페이지를 기획하게 되었다.

간단히 사이트에 접속하게 되면 좌측에는 피드를 작성할 수 있는 간단한 폼이 있고 바로 우측에는 작성한 피드가 보이게 UI 구성을 간단하게 구성해 보고자 기획하였다.

피드를 작성 후 삭제, 수정할 수 없으며 피드는 익명으로 관리되게 하여 학우들의 일상, 그리고 고민을 들려 줄 수 있는 창을 만들고 싶었다.

디자인

기획단계 에서 작성하였듯 간단한 소통의 창을 만들고 싶었기에 UI도 단조롭게 디자인하고 싶었다.

image.png

사진과 같이 간결한 UI를 채택해 디자인을 진행하였다. 우측 여백 부분에 작성한 피드가 등록되는 간단한 방식이다.

개발

초기 이 프로젝트를 기획하게 된 이유 중의 하나가 React를 학습 중에 서버와 통신하여 CRUD 기법을 익히는 데에 목적을 가지고 프로젝트를 진행하였다.

그런데 간단한 INSERT , SELECT , UPDATE , DELETE 와 같은 학습을 진행하는 데에 있어서 진부한 학습보단 실제 프로젝트를 기획하고, 디자인 하여 개발까지

전반적인 프로젝트 진행 방식을 간단하게나마 학습해 보고자 위와 같은 프로젝트를 진행하게 되었다.

취업 스토리

본인은 프론트앤드 개발을 하고 싶었지만, 학교 커리큘럼과, 교수님의 설득에 넘어가게 되어 C#을 다시 공부하게 되었고, 공부를 진행하게 되면서 간단한 근태관리 시스템, ERP 시스템 프로젝트를 학기 프로젝트로 진행하게 되었다.

그 후 2022년 6월 입사를 하게 되었고 이렇게 나의 커리어가시작되었다.

2022년 6월부터 2023년 2월까지 회사 생활을 하게 되었고 재계약 단계에서 입사 전 프론트 앤드 개발하고 싶다는 생각이 마음 한쪽에남아있었던지라 재계약을 선택하지 않고 그대로 졸업을 진행하게 되었다.

그 후 추가적으로 다시금 구직 활동을 시작하게 되었고 부산에서의 취업시장은 넓지가 않았다.

그렇게 다시 하던거 하자 라는 생각을 하게 되었고 그렇게 지금 다니고 있는 회사를 입사하게 되었다.

지금 회사는 C#을 이용한 ERP시스템을 구축하여 판매하는 회사이다.

스터디

타이틀에 적은 것과 같이 응용개발자에서 Flutter 개발자로라는 타이틀 현재 본인은 Flutter라는 크로스 플랫폼 언어를 스터디 하면서 프로젝트를 진행 중이다.

Flutter를 공부하려고 마음먹은 이유는 사실 별거 없다. 요즘 크로스 플랫폼이 대세이기 때문이다.

개발에 있어서 본인은 대세를 좋아하고 배우는 걸 좋아한다. 그래서 새롭게 나오는 기술에 대해서

거부감없이 받아들이는 걸 좋아한다. React도 그렇고 Node도 그렇고 Flutter도 그렇고

계속해서 학습하고 싶은 기술들이라 학습을 진행 중이다.

플로터 학습은 개인 아닌 팀을 이루어 본인 포함 2명 규모의 팀에서 실제 프로젝트 기획, 디자인, 개발을

함께 진행 중이기도 하다

팀 내에서 본인의 역활은 서버 개발 및 Flutter 개발이다. 여러 가지 경험을 해보면서 어떤 조직이든

제 역활을 할 수 있는 인원이 되기 위해서 항상 배우고 있다.

배우면서 얻은 것

지금까지 학습한 C# , React , Node , Flutter 많으면 많고 작으면 작다고 느껴질 갯수의 언어이다

개인적으로 이렇게 많은 기술을 학습하는거에 대해서 처음에는 거부감이 들었다.

왜냐하면 한 기술에 대한 전문성이 부족할거 같다는 생각이 들었기 때문이다.

하지만 공부를 거듭하면서 생각이 바뀌게 되었다. 어떻게 바뀌었냐면 좀 무식하게 느껴질 수 도 있지만

그냥 전부 다 많이 하면 되겠다 싶었다.

Node - React 짝 지을 수 있고

Node - Flutter 짝 지을 수 있고

공부하는거에 있어서 계획적으로 플랜을 짜고 공부를 하게 되면 효율적으로 공부하면서 전문성도 충분히

기를 수 있다라고 생각을 했기때문이다.

우선 두서에 작성한 대나무숲 프로젝트를 진행하면서 배우게된 점은 간단하다.

우선 간단한 API 작성 , React 와 Express 간 API통신 방법을 배울 수 있게 되었고

프로젝트를 진행하게 되면서 실제 서비스를 목적으로 진행한 프로젝트이기 때문에 사용자가 몰리게되면

트래픽을 어떻게 관리해야할지 고민을 하긴 했지만 실제 경험해보지 못한 케이스고 대용량 트래픽에 대해서

깊게 고민해본적이 없던 시기라 사용자로 하여금 편리하게 사용할 수 있게 하자를 목표로 설계하게 되었다.

사실 API나 백앤드 개발에 있어서 편리하게 사용할 수 있게하자에 대한 목표는 속도말고는 포함되지않다고 생각을 하였고 프론트앤드 개발 단계에서 효율적인 UI/UX 를 설게하여 최대한 간결하게 프로젝트를 진행하였다.

그 후 그렇다할 프로젝트를 따로 진행하지 않다가 Node.js 학습을 위해 API 설계 , 개발과 같은 간단한

학습을 진행하면서 여러가지 API를 개발하다가 속도부분에서도 많은 고민을 했고

고민중에 API 병렬호출 이라는것도 학습하면서 API 학습에 있어서 속도에 관한부분도 고민을 하였다.

여기서 JavaScript는 싱글스레드 구동 방식인데 어떻게 병렬시키냐? 라는 의문을 가지게 되었고

학습과 개발을 통해서 해답을 얻게 되었다.

결과적으로 자바스크립트 자체는 싱글스레드가 맞지만, 현실적으로 자바스크립트 엔진이 독립적으로 실행되지 않기 때문에 자바스크립트와 Web API, 이벤트 루프 등의 런타임 환경(멀티스레드로 동작)을 분리하여 말하기가 어렵습니다.

  • 자바스크립트는 싱글스레드이지만, 이벤트 루프를 통한 비동기 방식으로 동시성을 지원합니다.

  • → Web API, Event Table, Callback Queue, Event Loop 덕분에 자바스크립트를 멀티 스레드처럼 작동시킬 수 있습니다.

  • 비동기 호출을 위해 사용되는 setTimeout, XMLHttpRequest 와 같은 함수들은 Web API 에 정의되어 있습니다.

  • → 당장 실행되지 않는 함수들이 호출되기를 기다리는 공간이라고 볼 수 있으며, 해당 함수가 콜 스택에서 Web API 로 이동될 때 Call Stack 에서는 호출이 끝난 것으로 간주되어 사라지게 됩니다. (정해진 시간이 지나면 함수 호출을 위해 Callback Queue 로 이동함)

  • Nods.js는 비동기 지원을 위해 libuv라이브러리를 사용하며, 이 linuv 가 이벤트 루프를 제공함. → 자바스크립트 엔진은 비동기 작업을 위해 노드js의 api를 호출하며, 이 때 넘겨진 콜백은 libuv의 이벤트 루프를 통해 스케쥴되고 실행됨. (단, 자바스크립트 엔진의 이벤트 루프와는 다르게 동작함)

3번째 프로젝트 Flutter 앱

팀원과 함께하는 유일한 프로젝트이다. 지금도 진행 중이며 역활은 API개발, 그리고 앱 개발이다.

예전부터 앱 개발을 해보고 싶다는 생각이 들어 중학생때 휴대전화 앱을 만들 수 있는 앱이 있어서 그걸 통해 앱 만드는 걸 처음처음 경험 해봤다.

해당 앱을 이용하여 안드로이드 휴대전화를 이용하여 앱 개발을 진행해 보았다. 본 앱은 Java기반을 하여기본 Java지식이 있어야 한다.

이처럼 앱에 대한 관심이 있었는데 시대가 흘러가면서 쉽게 앱을 만들 수 있는 기술을 고맙게도 구글에서 만들어줘서 공부할 수 있게 되었다.

단 플러터는 다트라는 새로운 언어를 학습해야 할 수 있는 것이라 Dart를 공부했지만

기존 OOP 프로그래밍을 경험해 본 사람으로서 어렵지 않게 학습할 수 있게 되었다.

지금 진행 중인 프로젝트는 간단한 무드 트래킹 앱이며 습관을 주제로 하는 앱이다.

현재 팀원과 함께 열심히 달려가고 있으며 1차 MVP를 개발하게 되면 디스 콰이 옷에 제일 먼저 메이커로 그를 작성할 것이다.

이처럼 개발자 커리어를 시작하게 되면서, 시작하기 전부터 어떻게 공부하고 공부를 진행하면서 어떤 걸 얻어가는지에 대해서 회고 아닌 회고를 진행해 보았다.

두서없이 작성된 글 같아서 읽는이가 불편함을 느낄 수 있지만 앞으로 이곳에 자주 글을 올리면서

글 쓰는 능력도 함께 키워나갈 예정이다.


1

댓글

로그인 후 댓글을 남길 수 있습니다.

아직 댓글이 없습니다.