더듬이의 헬로월드

Hello, World!

개발 일기

더듬이의 프론트엔드 도전기

더듬이 2024. 10. 24. 11:18
728x90

시작하는 이야기

  • 나는 유니티 개발자로 2년간 경력을 쌓았지만, 최근 들어 직무 전환에 대한 고민이 많았다.
  • 게임업계에 진출할 기회도 있었지만, 사실 나는 게임 개발에는 큰 열정이 없었다.
  • 유니티의 전망이 불확실하다고 느껴졌고, UI에 대한 관심이 더 컸기 때문에 플랫폼 독립적인 웹이나 크로스 플랫폼 앱 개발에 눈을 돌리게 되었다.
  • 특히, React와 React-Native는 플랫폼에 구애받지 않고 웹과 앱을 모두 아우를 수 있는 기술이기에 매력적이었다.

고민의 시간

직무 변경을 고려하면서 나는 두 가지 선택지에서 고민했다

 

  1. Main: React 웹 개발 / Sub: React-Native 어플리케이션 개발
  2. Main: Android Native / Sub: React-Native/Flutter 크로스 플랫폼 개발

첫 번째 선택지는 내가 좋아하는 UI를 살리면서 웹과 앱을 모두 다룰 수 있는 길이었다. React와 React-Native를 주력으로 삼는 개발 방향은 최신 웹 트렌드와 크로스 플랫폼의 장점을 살릴 수 있어 매력적이었다.

두 번째 선택지는 Native Android 개발에 좀 더 집중한 선택지였다. 안드로이드는 여전히 강력한 모바일 플랫폼이고, Native 개발의 깊이 있는 이해는 앱 성능 최적화에서 강력한 장점을 발휘할 수 있었다.

하지만 나의 성향상 웹과 UI에 대한 관심이 더 컸기 때문에 결국 1번 선택지를 선택했다.


FrontEnd Developer Roadmap(+근데 이제 Backend를 곁들인...)

 

나는 "프론트엔드 개발"을 중심으로 나아가기로 결정했고, 이를 뒷받침하기 위한 구체적인 로드맵을 세웠다.
주로 프론트엔드 개발이지만, 백엔드도 함께 고려하는 풀스택 개발자가 되기 위한 목표다. 

일단 채용 공고의 분석이 먼저라고 생각했다 -> 돈은 벌어먹고 살아야지.....

위 채용 공고들은 채용 공고 사이트에서 회사들이 frontend 개발자를 요구할때 요구하는 능력들이다
정리하면 다음과 같다

필수로 가져가야 할 능력 필수는 아니지만 가져가면 좋은 능력
React / React-Native 를 활용한 최소1년 이상의 준하는 개발 능력
App Store 및 Google Play Store에 앱 출시 및 유지보수 경험

Git을 통한 소스코드 관리 경험 새로운 기술스택을 배우고 적용하는 데 심리적 허들이 낮아야 함
Redux / Zustand 등을 활용한 상태 관리 라이브러리의 사용 경험 Figma / Zeplin등의 협업 가능자
자료구조 / 운영체제 / 알고리즘에 대한 기본적인 이해 및 적용 능력 컴퓨터 공학 전공자
HTML / CSS / Javascript(+TypeScript) 에 대한 이해 배포 자동화 유경험자
렌더링 최적화 등의 프론트엔드 성능 개선 지식 및 경험 주어진 상황에서 적절한 기술적 판단을 내릴 수 있어야 함
Web / App의 정말 Low레벨부터의 중요한 기반 지식을 갖추고 있어야 함  

위 정보를 바탕으로, 나만의 Roadmap을 세우기로 했다.


더듬이의 FrontEnd Roadmap

  • 프론트엔드 개발을 본격적으로 공부하기로 결심한 나는, 다양한 자료를 참고하며 나만의 로드맵을 만들어 나가고 있다.
  • 이 블로그에서는 내가 어떻게 학습 계획을 세웠고, 어떤 내용을 중점적으로 배우고 있는지 단계별로 정리해보려고 한다.
  • 이 로드맵은 나의 프론트엔드 개발 도전기를 기록한 것이자, 앞으로도 지속적으로 업데이트될 예정이다.

이미지를 확대하면 더 자세히 보실 수 있습니다.. 용량 완전 큼

1. WEB의 기본 및 특징

웹 개발의 시작은 인터넷과 웹의 기본을 이해하는 것에서 시작한다. 웹이 어떻게 작동하는지 이해하는 것이 중요한데, 다음과 같은 개념을 학습할 것이다
  • 인터넷의 동작 원리
  • 웹 브라우저가 어떻게 동작하는지
  • HTTP와 HTTPS의 차이
  • 도메인과 DNS의 역할
  • 호스팅 서비스의 개념
이 기본 개념들을 확실히 잡고 나면, 웹 개발의 기초가 탄탄해져서 이후 학습에 큰 도움이 된다.

2. HTML / CSS

프론트엔드 개발에 있어 가장 중요한 HTML과 CSS를 먼저 다뤄야 한다. 여기서는 단순히 페이지를 구성하는 방법만 배우는 것이 아니라, 반응형 웹 디자인 CSS 아키텍처 설계까지 이해하는 것이 목표다.
  • HTML5와 CSS의 기본 구조
  • 레이아웃 설계 (float, flex, grid)
  • 반응형 웹 디자인
  • Bootstrap과 같은 필수 라이브러리 활용
  • CSS 애니메이션과 Sass 같은 전처리기 사용

3. JavaScript 기본

HTML과 CSS로 기본적인 UI를 만들었다면, 이제 JavaScript로 동적인 기능을 추가해야 한다. 다음과 같은 기본 기능들을 학습하고 실습하는 것이 중요하다:
  • 모달창, 탭, 슬라이드 등의 기본 UI 구현
  • 애니메이션 추가와 정규식을 사용한 데이터 유효성 검사
  • jQuery와 Ajax를 통한 서버 통신
  • 폼 처리 및 타이머 기능 구현
  • 로컬 스토리지 활용 및 클라이언트 사이드 렌더링
이 단계에서는 브라우저 상에서 JavaScript가 어떻게 동작하는지 이해하고, 실질적으로 웹에서 일어나는 이벤트 처리, 상태 관리 등을 학습한다.

4. Git & Github

개발자로서 Git은 필수다. 코드 관리를 위한 Git과 협업 도구인 Github는 이미 익숙하게 사용하고 있다. 프로젝트 버전 관리를 쉽게 하고, 협업을 원활하게 하는 데 중요한 도구이다
  • Git의 기본 명령어 사용법
  • Github에서 프로젝트 관리 및 협업 경험
이미 나는 회사 생활을 통해서 Git을 통해 여러 가지 브랜치를 관리하고, 팀원들과 협업하는 과정을 익혔다.
패스~

 

5. WEB의 보안 기술

웹 애플리케이션 개발에 있어 보안은 중요한 부분이다. 나는 다음과 같은 웹 보안 개념을 학습하고 있다:
  • HTTP와 HTTPS의 차이점과 보안 강화
  • CORS(Cross-Origin Resource Sharing)의 개념과 설정 방법
  • CSRF, XSS와 같은 보안 취약점에 대한 이해와 대처 방법
이러한 보안 개념들은 실무에서 안전한 웹 애플리케이션을 개발하기 위해 필수적으로 알아야 할 부분이다.

 

6. React 기초

프론트엔드 개발에서 대세인 React는 필수적으로 배우고 있다. 
  • 리액트 프로젝트 생성, 관리, 빌드
  • 컴포넌트와 props, state 개념을 활용한 UI 구현
  • 페이지 라우팅 및 상태 관리 (React Router, Redux, Context API)
  • 서버와 API 통신 (Ajax 활용)
  • Styled Components와 같은 CSS 라이브러리 사용
또한, 리액트 프로젝트에서 성능 최적화를 위해 Lazy loading과 같은 기법을 적용해 보는 것이 목표이다

 

7. 첫 번째 React 프로젝트 진행

실습은 중요하다. 나는 첫 번째 리액트 프로젝트로 외부 API를 호출하여 데이터를 가져와 사용자 인터페이스를 만드는 작업을 진행하도록 한다.

추가로 다음과 같은 스택들을 반영할 생각이다.
  • 데이터를 실시간으로 반영하고, 사용자 상호작용에 반응하는 UI 구현
  • 상태 관리 라이브러리 사용 (Redux, Zustand)
  • 로컬 스토리지를 활용해 데이터 저장 및 관리

 

8. JavaScript 심화

기본적인 JavaScript에 대한 이해를 넘어, ES6 문법을 심도 있게 학습해야 한다.
  • var, let, const를 이용한 변수 관리와 this 키워드 이해
  • 클래스와 상속을 활용한 객체 지향 프로그래밍 (OOP)
  • 비동기 처리 (Promise, async/await)와 모듈화
이 단계에서는 자바스크립트의 고급 기능들을 익히며, 프론트엔드 개발에 필요한 데이터 관리 비동기 처리에 대한 이해를 깊게 하도록 한다

 

9. TypeScript

프론트엔드 개발을 하다 보면 TypeScript의 필요성을 자주 느끼게 된다. 타입을 명시함으로써 코드의 안정성을 높일 수 있기 때문이다. 그래서 나는 다음과 같은 내용을 중점적으로 학습하려고 한다.
  • TypeScript의 기본 타입과 테크닉 (Narrowing, Type assertion)
  • 인터페이스와 클래스 타입 지정
  • 리액트와 HTML 개발에 필요한 타입 설정
  • 제네릭과 d.ts 파일을 통한 고급 타입 관리
이제는 React 프로젝트에서도 TypeScript를 사용하여 더 안전한 코드를 작성할 수 있다 

10. Next.js

Next.js는 서버사이드 렌더링(SSR)을 지원하는 React 프레임워크다. 이를 통해 SEO에 유리한 웹 애플리케이션을 구축할 수 있다. 주요 학습 내용은:
  • Next.js 라우팅 및 SSR 활용
  • MongoDB와 같은 데이터베이스 연동
  • 파일 업로드 기능 (S3와 연동)
  • Next-auth로 회원 인증 기능 구현
  • AWS에 프로젝트 배포 및 CI/CD 파이프라인 구축
Next.js는 풀스택 개발을 경험하게 해주며, 서버 기능과 클라이언트 기능을 모두 다룰 수 있는 중요한 기술이다.

11. 두 번째 React 프로젝트 진행

두 번째 프로젝트에서는 React와 TypeScript를 활용하여 풀스택 개발을 진행
  • API 서버 구축 및 데이터 CRUD 작업
  • SSR을 통해 사용자 경험 및 SEO 개선
  • 회원 인증과 파일 업로드 기능 추가
  • 성능 최적화와 배포 자동화
이 프로젝트는 내가 백엔드와 프론트엔드를 연결해보는 첫 경험
Next.js와 AWS를 활용하여 실제 서비스 환경에서의 개발을 경험

 

12. React Native 기초

마지막으로 React Native를 통해 모바일 앱 개발을 학습
React와 매우 유사하지만, 네이티브 기능을 다루는 부분에서 차이가 있다.

  • 컴포넌트 구조, 상태 관리, 네비게이션 설정
  • Axios를 사용한 서버 통신과 환경변수 관리
  • 실시간 통신 (WebSocket) 및 푸쉬 알림 설정
  • Naver Maps 연동 및 위치 기반 서비스 구현
React Native는 웹과 앱을 동시에 개발할 수 있는 큰 장점을 제공

13. 세 번째 React Native 프로젝트 진행

React Native 프로젝트를 통해 모바일 앱 개발을 실습하도록 한다
  • Token-based authentication을 통한 사용자 인증
  • WebSocket을 활용한 실시간 데이터 처리
  • Native Module을 연동하여 실제 모바일 환경에서 필요한 기능 구현
  • iOS와 Android 스토어에 앱 배포
이 프로젝트를 통해 실제 앱 개발의 흐름을 파악하고, 출시 및 유지보수 경험을 쌓도록 한다.

앞으로 어떻게 할 건데?

프론트엔드 개발자로서 나아가야 할 방향이 이제는 조금씩 명확해지고 있다.

1. JIRA 티켓을 통한 일정 관리

JIRA를 통해 구체적으로 해야 할 공부와 프로젝트를 일정으로 관리할 계획이다

  • 해야 할 작업을 티켓으로 나눠서 구체적으로 관리할 수 있고,
  • 프로젝트 일정과 우선순위를 설정하여 체계적으로 학습을 진행할 수 있다.

예를 들어, 최적화 관련 기술을 익히거나 새로운 기능을 구현하는 프로젝트를 진행할 때, JIRA에 세부적인 할 일을 기록하고 진행 상황을 체크할 것이다. 이렇게 함으로써 보다 명확한 목표와 일정 관리를 할 수 있게 된다.

2. 블로그를 통한 기술 복습 및 정리

공부한 내용을 복습하고 기록하는 과정은 매우 중요하다. 앞으로는 내가 학습한 내용을 블로그에 정리하며 복습할 계획이다.

  • 최적화 관련 기술: 렌더링 최적화, 코드 스플리팅, Lazy loading 등을 어떻게 구현할 수 있는지, 배운 내용을 정리하여 기록.
  • 기술적인 내용: 프로젝트를 진행하면서 마주한 문제 해결 과정, 실무에서 필요한 다양한 기술적인 내용을 공유.
  • 강의 내용 복습: 인프런이나 다른 플랫폼에서 수강한 강의 내용을 정리하고, 실습하면서 느낀 점을 기록.

3. 멘토링을 통한 마인드셋 관리

프론트엔드 개발자로 성장하면서 가져야 할 마음가짐이나 로드맵 등 전반적인 내용에 대해서는 인프런에서 멘토링을 받을 계획이다. 멘토링을 통해 다음과 같은 부분을 다룰 예정이다:

  • 개발자로서의 마인드셋 ->  끊임없이 배우고 성장하는 자세, 문제 해결 능력을 키우는 방법.
  • 로드맵 수정 및 보완 -> 현재 나의 로드맵이 적절한지, 추가로 필요한 부분이 무엇인지 피드백을 받을 예정.
  • 커리어 발전 방향 -> 프론트엔드 개발자로서의 향후 커리어 방향에 대해 조언을 구할 것.

자~드가자~

이 길이 쉽지는 않겠지만, 나는 분명히 한 발 한 발 나아가며 성장할 것이다. 앞으로의 여정에서 어떤 도전을 맞이하더라도, 차분히 하나씩 극복해 나가며, 내가 그리는 이상적인 개발자의 모습을 만들어 갈 것이다. 이 블로그를 통해 내 성장 과정이 기록될 것이니, 지켜봐 주길 바란다.

프론트엔드 개발자로서의 여정은 이제 막 시작되었다.

728x90