웹 / 프론트 엔드 개발자 로드맵 2019

1 minute read

개발자 로드맵 2019

이 개발자 로드맵을 본지가 어느덧 1년이 다되어간다. 로드맵을 보면서 나는 이렇게 해야지 라는 생각을 가지고 달려왔고 어디까지 왔는지 보기 위해 이 글을 작성해본다. 물론 로드맵 항목을 정리하면서 잘 몰랐던 부분도 살펴보기 위함이다.

intro

공통 과정 Required for any path

  • Git - Version Control
  • Basic Terminal Usage
  • Data Structure & Algorithms
  • SOLID, KISS, YAGNI
  • GitHub
  • Licenses
  • Semantic Versioning
  • SSH
  • HTTP/HTTPS and APIs
  • Design Patters
  • Character Encodings

Git - Version Control

git-scm.com

소스 버전관리의 중요성은 몇번을 강조하여도 모자라지 않다. git에 사용되는 명령어와 개념들을 숙지하여야 한다.

Basic Terminal Usage (기본적인 터미널 사용법)

여기서 터미널이라고 한다면 windows의 `cmd`, `PowerShell` 및 linux의 `console`과 같은 텍스트를 기반으로 사용자의 명령을 처리하는 도구를 의미한다. 혹자는 GUI 시대에 무슨 구닥다리 터미널 타령이냐고 할지도 모르겠으나 텍스트를 이용한 명령어에 익숙해져야 보다 편리하게 작업이 가능해진다.

Data Structure & Algorithms (자료 구조 및 알고리즘)

기본적으로 쓰이는 자료구조와 더불어 알고리즘은 몇번을 강조해도 지나치지 않다고 생각한다. 

위의 사이트에서 출제되는 문제들을 가지고 공부해보자.

SOLID, KISS, YAGNI

처음보는 단어라고 생각했는데 설명을 보니 애자일 소프트웨어 개발 방법론에서 본적이 있었다. 단어들의 설명과 뜻은 아래와 같다.

  • SOLID (객체지향 프로그래밍 및 설계의 다섯가지 기본 원칙)
    • S: SRP(Single responsibility principle) 단일 책임원칙. 한 클래스는 하나의 책임만 가져야 한다.

    • O : OCP(Open/closed principle) 개방-폐쇄 원칙. 소프트웨어 요소 확장에는 열려있으나 변경에는 닫혀 있어야한다.

    • L : LSP(Liskov substitution principle) 리스코프 치환 원칙. 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 한다. 계약에 의한설계를 참고.

    • I : ISP(Interface segregation principle) 인터페이스 분리원칙. 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.

    • D : DIP(Dependency inversion principle) 의존관계 역전 원칙. 프로그래머는 “추상화에 의존해야지, 구체화에 의존하면 안된다” 의존성 주입은 이 원칙을 따르는 방법 중하나다.

  • KISS-wikipedia
    • Keep it small and simple-작고 간단하게, Keep it short and simple-짧고 간단하게 혹은 Keep it simple, stupid-간단하게 하라니까, 멍청아! 의 앞글자만 따서 만들어진 단어로 디자인에서 간단하고 알기 쉽게 만드는 편이 좋다 는 원리이다.
  • YAGNI-You aren’t gonna need it
    • 필요없을꺼야.
    • 익스트림 프로그래밍의 원칙으로서 프로그래머가 실제로 필요하다고 판단하기 전까지는 기능을 추개해선 안된다는 뜻이다.
    • 만약 당장 필요하지 않은 코드를 미리, 그것도 방대하게 짰다간 대규모 리팩토링을 불러올것이다.

GitHub

  • GitHub-wiki
  • git을 이용한 소프트웨어 개발 버전관리 서비스이다. 현재 이 블로그 또한 gitHub에서 제공하는 gitPage 기능을 이용하여 만든것으로 이 외에도gitLab, gist등을 제공하고 있다.

Licenses

Semantic Versioning

SSH(Secure Shell)

HTTP/HTTPS and APIs

Design Patters

Leave a comment