2021 웹 개발자 로드맵

도케이·2021년 5월 4일
2

웹 개발자 로드맵

목록 보기
1/1

2021 web developer roadmap

*출처 : https://github.com/kamranahmedse/developer-roadmap
-web 개발자가 되길 희망할때, 어떤 것을 먼저 배워야할지 혼란스러울 대학생들을 위해서 만들어진 것이라고 한다.
-트렌디 함에 대해서 고려한 것은 아니라고함.
-내 수준을 점검해보면서 어떤 기술 스택들이 2021에 나와 있는지 살펴보고자 한다 ㅎㅎ

0. 2021 웹 개발자 (web developer in 2021)

front-end / back-end / DevOps(back-end path) 크게는 3가지로 분류가 되어 시작한다.
사진에는 가려져있는데,

노란색 박스는 Personal Recommendation!(개인적 추천!)
주황색 박스는 Available Options(가능한 선택지)

라고 한다.

Reauired for any path (모든 코스에 요구되는사항)으로는

Git -version constol (버전관리)
Basic Terminal Usage (기초 터미널 사용법)
Data Structures & Algorithms (자료구조 및 알고리즘)
SOLID, KISS, YAGNI (하단에서 설명)
GITHub (버전관리 시스템)
Licenses (라이센스)
Semantic Versioning (유의적 버전)
SSH (Secure Shell Protocal)
HTTP / HTTPS and APIs
Design Patterns (디자인 패턴)
Character Encodings (문자 인코딩)

1. Git, GITHub..

버전관리는 협업할때 필수이기도 하고,
혼자 작업할때도 제대로 관리가되면 나중에 참고할때 편하다.
github이나 gitlab등 형상관리 시스템을 사용하면 tagging이나 branch, issue 등을 사용하며 협업과 history관리에 굿!

2. Basic Terminal Usage

터미널은 직접 써보면서 배우는게 최고인듯하다
처음엔 cd랑 ls도 낯설었는데 이제 완전 익숙해짐!
개발할때 패키지 관리를 계속 해줘야하니 하다보면 늘기도 하고, 워낙 구글링해보면 잘나와있어서 그냥 그대로 따라해봐도 된다

3. Data Structures & Algorithms

지식 공부이기도 하면서, 배우기만 해서는 완전히 알 수 없는 것같다.
실제로 개발이나 코딩테스트로 직접 코드를 짜보면서 완전히 이해 & 써먹게 되는 부분인듯

4. SOLID, KISS, YAGNI

이 3가지 모두 처음 보았다.. 처음엔 논문 사이트인줄?? 참고 글

4-1. SOLID

  • S : SRP(Single Responsibility Principle), 하나의 클래스(또는 모듈, 함수..)는 하나의 기능만 제공해야 한다. 여러 기능이 하나의 클래스 등에 구현되어있으면 고칠때 어려움
  • O : OCP(Open Closed Principle) , OOP에서 개체(클래스, 모듈, 함수..)들은 확장성에 대해선 열려있어야하지만, 수정에 대해선 닫혀있어야 한다. -> 코드 수정없이도 확장될 수 있도록 작성되어야함
  • L : LSP(Liskov Substitution Principle), 데이터 타입 S가 데이터 타입 T의 하위 타입이라고 할때, S가 사용되더라도 T보다 성능(정확도, 업무 수행능력..)이 떨어져선안된다.
  • I : ISP(Interface Segregation Principle), 전체 인터페이스를 보여주기보다 관심이 있는 부분만큼만 인터페이스가 공개되도록 한다.
  • D : DIP(Dependency Inversion Principle), 하이레벨과 로우레벨에 대해 종속성이 있으면 안됨, 추상적인 것은 구체적인것에 의존X, 세부적인 것(클래스..)은 추상적인 것에 의존한다.

몇가지는 들어봤는데 몇개는 또 처음듣는다..
S..알지만 하다보면 스파게티 되어버리는듯 ㅠ 귀찮더라도 세분화해서 관리하는게 좋을듯!!
하나씩 보다보니.. 초보자에겐 SOLID원칙 지키기 너무 어려울듯하다.. 그렇기에 더더 신경써야할듯함

4-2 KISS

Keep It Simple, Stupid.

단순하게 할것..

4-3 YAGNI

You Ain't Gonna Need It

직역하면 너는 아직 이게 안필요해..인데, 정말 필요하지 않으면 기능을 먼저 만들지 말라는 것같다. 정작 필요할때 다시보면 고치게돼서가 이유인듯.

5. Licenses

본인이 개발하는 제품의 라이센스를 말하기보단, 사용하게될 패키지들의 라이센스를 알고 사용하자는 느낌이 아닐까 싶다.
오픈소스인줄알고 맘껏 사용해서 꾸렸다가, 여러 제한이 있던 거면 난감할듯 ㅠㅠ
나도 라이센스쪽은 어떤 것들이 어떤 제한이 있는지 아직 잘 몰라서 나중에 정리해봐야할듯

6. Semantic Versioning

유의적 버전은 이 사이트를 참고해보면 알 수 있는데, 제품에 버저닝을 할때 해당 규격을 사용하면 좋다.

1.2.3 version 이라고 할때,
1은 주버전: 이전 버전(0.1.2ver라던가..)과 호환이 안됨
2는 부버전 : 1버전에 새 기능이 추가됨
3은 수버전 : 1버전에 버그를 수정함

이런 식으로 포맷 & 의미를 정해둔 것이다.

7. SSH

'쉘로 붙는다'라고 하면 항상 ssh를 쓰는 것인데, ssh를 사용하면 접근가능한 pc에 접속해서 데이터를 이것저것 만져볼 수 있다. 마치 그 pc에서 터미널을 연 것과 동일하게 사용됨.(원격제어)

접속한 pc에 있는 데이터를 본 내 pc에 전송할 수도 있음.(데이터 전송)
접속하기위해선 username이랑 ip, password가 있으면됨

8. HTTP / HTTPS and APIs

HTTP 프로토콜을 말하는듯 하다.
웹개발은 보통 server에 어떤 데이터를 요청하고, 받아온 데이터를 가공하여 view단에 뿌려주는 식으로 작업이 되는데, 이때 API를 사용하여 요청하고, http 프로토콜을 사용하여 주고받게된다.
이것도 다음에 포스팅해보자

9. Design Patterns

이건 따로 공부하지 않으면 잘 모른다..
그냥 개발 언어의 문법을 아는 걸로는 부족..ㅠㅠ 이걸 나는 회사에 들어와서야 알았다ㅎ
알고리즘이랑도 많이 다르고.. 기술적이라기보다는.. 유지보수를 위함이 큰것같음!

10. Character Encodings

문자 인코딩은 server단이랑 front단이랑 항상 동일하게 맞춰져 있어야 한다.
만약 둘이 다르게오면, 인코딩관련해서 넘흐 복잡해짐~~
또한 개발환경에 대해서도, 인코딩을 맞추지않으면 코드가 다 깨지기도 한다..
기본적으론 브라우저에 데이터를 표시하는 방법을 뜻한다고함.

~후일담~
웹 로드맵 빠르게 훓고, frontend roadmap까지 같이 작성하고자했는데,
생각보다 내용이 많았다.. frontend는 다음포스팅으로!

profile
안녕하세요~

0개의 댓글