커리어 패스 작성을 위해 참고한 The one page proposal 정리

  1. 추진하고자 하는 사업 혹은 프로젝트를 둘러싼 모든 객관적 사실, 추론, 상황을 간결하게 표현한다.
  2. 동의를 얻어내기 위한 것이므로 설득력 있는 언어를 사용한다.
  3. 구체적인 실행 과정을 설명한다.
  1. 커리어 패스를 작성하면서 모르는것과 아는것으로 나누기.

모르는 것

  • 주니어 개발자에서 1단계 더 성장한다는것은 무엇인가?
    • 개인 의견
      • 주어진 요구 사항을 구현만 해내는것이 아닌 더 효율적이고 기술에 있어서 선택을 할 수 있는 사람. 품질이 보장되는 구쳔헤츨 만들고 만약 구현체의 문제가 발생하더라도 빠르게 해결을 하는 모습을 보이는 것(생산성 우위)
  • 주니어 개발자에게 기대하는것은 무엇인가?
  • 주니어 개발자에게 기대하는것은 무엇인가?
  • 개발자의 커리어패스란?
  • 1년차 개발자에게 기대하는 것은?
  • 2년차 개발자에게 기대하는 것은?
  • Javascript를 깊이있게 학습하는 방법은?
    • bsidesoft의 맹기완 실장님이 진행하시는 프론트엔드 프로그래밍 강의 코드스피츠 수강하기.
  • 새로운 언어를 배우는 이유는 무엇인가?
  • 새로운 언어를 배운다면 Python과 C언어 중 어떤 언어를 배워야할까?
  • 자료구조와 알고리즘을 배우는 이유는 무엇이며 중요성은 무엇일까
    • 거대한 데이터를 효율적으로 관리하는 방법 = 자료구조
    • 컴퓨터, 프로그래밍은 정리 정돈의 진화이다.
    • 이미 자료구조는 만들어져있다 하더라도 어떠한 종류의 자료구조가 존재하며, 각각의 자료구조의 특징과 차이점이 무엇인지 알아야 상황에 맞는 자료구조를 선택하여 문제를 해결할 수 있다 생각합니다.
    • 자료구조는 대량의 데이터를 효율적으로 관리하기 위한 방법이며,
    • 알고리즘은 어떠한 문제를 효율적으로 해결해내기 위한 방법이다.
    • 자료구조와 알고리즘의 중요성은 단순히 문제를 푸는것이 아닌 문제에 대한 해법을 찾아내고, 더 나은 방법을 찾아내고 판단할 수 있게 하기 떄문이다.
    • 그리고 알고리즘을 통해 논리적 사고 를 향상 시킨다.
  • Typescript를 사용하는 이유와 학습하였을 때 얻을 수 있는 지식은 무엇인가?
    • 타입스크립트가 영원하지는 않겠지만 적어도 타입 스크립트는 MS가 밀고있기에 쉽사리 망하지는 않는다.
    • 타입스크립트를 학습하는 이유는 바닐라 JS는 타입 체크나 인터페이스와 같은 정적인 타입 체크가 불가능하여 대규모 프로젝트에는 적합하지 않기 때문이다. ex) 비교 연산에서 Date Type이 맞지 않아 로직이 어긋남.
    • Coffie Script와 같은 다른 컴파일용 자바스크립트도 있음에도 Type Script를 학습하는 이유는 Type Script는 JavaScript의 슈퍼셋임으로 Javascript의 모든 문법은 Typescript에서도 통하는것이 차이점이다.
      • Javascript의 슈퍼셋(상위집합)이 아닌 경우 어떤 단점이 있나?
        • 기존 자바스크립트 코드베이스의 마이그레이션이 매우 비싸진다. 전혀 다른 문법 탓에 사실상 프로젝트를 바닥부터 다시 작성하는 작업이 된다.
        • 기존 자바스크립트 프로그래머가 체감하는 학습 곡선이 훨씬 가파라진다.
        • 서드파티 자바스크립트 패키지의 사용이 어려워지며, 불가능한 경우도 생긴다.
      • 즉 장점은
        • 기존 자바스크립트 코드베이스의 마이그레이션에 드는 노력이 적으며,
        • 완만한 학습 곡선을 가지며
        • 서드파티 자바스크립트 패키지의 사용이 상대적으로 수월하다.
    • Typescript를 학습하고 도입해야되는 가장 큰 이유는 정적 타이핑 언어와 동적 타이핑 언어의 차이점과 관련이 있다. 동적 타이핑 언어의 장점은 빠른 생산성이지만 단점은 장기적으로 봤을 때 유지보수에 어려움을 느낄 가능성이 높다. 물론 다 그런것은 아니지만 대표적으로 그런것같다. 정적 타이핑 언어는 개발 속도로 봤을 때 차이가 날 수도 있지만 내가 생각했을 때는 정적 컴파일을 한다고 해서 또는 타입선언과 같은 코드량이 증가한다 해서 직접적인 코드 속도와는 연관이 없다 생각한다. 아무리 빠른 속도로 개발을 한다고 해도 결국 코드가 안정적이지 못하다면 디버깅하는데 시간을 다 잡아먹을것이기 때문이다. 그래서 대규모 프로젝트가 아니더라도 타입 스크립트를 도입하는것은 단기적으로도 장기적으로도 긍정적인 작용을 할 것이라 생각한다.
    • Typescript는 대규모 프로젝트를 위해서만 배우는것이 아닌 타입 기반이 아닌 동적 타이핑 언어인 Javascript만 알고있는 나에게 정적 타이핑 언어를 학습하는것은 개발적으로도 많은 도움이 될것이다. 코드를 더 구조적이고 효율적으로 설계하기 위해 디자인 패턴을 학습할 수 있으며, OOP를 지향하는 타입 스크립트의 언어적 특성에 의해 OOP에 대해서도 학습할 수 있다. 그럼 Functional를 지향하는 React와 맞지 않다 생각할 수 있지만 Typescript는 Javascript의 슈퍼셋이면서 유연하기에 원하지 않는 부분에만 Typescript를 적용하지 않을 수 있다.
      • Typescript의 사용자는 해마다 가파르게 상승하고 있다. 그리고 Typescript는 라이브러리나 프레임워크가 아닌 언어이다. 그리고 2018년 기준 Most Popular Technologies 12위에 랭크되어있다. GitHub Octoverse 2017에서는 11위에 올랐다. 특히 구글의 경우 타입스크립트를 공식 언어로 채택했고 Google Analytics, Firebase, and Google Cloud Platform 등 다양한 구글 제품에서 사용하고 있다고 2017년 4월에 밝힌 바 있다.
      • 프로그래밍 언어가 제공하는 가치 중에서 개발자의 경험보다 중요한 것이 있을까?
      • 정적 타입 분석이란?

        • 타입은 프로그램의 올바른 동작 이 무엇인지에 대한 프로그래머의 의도를 인코딩하는 수단이다.
    • 정적 타입 시스템은 프로그램이 실제로 실행되기 전에 컴파일 과정을 통해 상당수의 오류를 잡아낼 수 있다. 같은 오류의 동적 타입 언어에서는 코드 리뷰, 심지어는 실제 배포가 일어날 때 까지도 안 발견되는 경우도 잦다.
    • ICSE(International Conference on Software Engineering) 2017에 발표 된 “To Type or Not to Type: Quantifying Detectable Bugs in JavaScript”이란 논문은 깃허브(GitHub)의 공개된 버그를 이용해 정적 타입 시스템의 효과에 대해 다룬다. 연구진은 실험군으로 설정한 자바스크립트 코드의 버그 중 약 15% 정도는 정적 타입 시스템이 있었다면 커밋조차 되기 전에 잡혔을 것이라 결론짓는다. 실사용자가 맞닥뜨리는 버그 중 15%를 사전에 예방할 수 있다는 인상적인 결과에 Microsoft의 한 엔지니어링 매니저는 다음과 같이 반응했다 한다.
  • 2019년 한 해 프론트엔드, Javascript 관련 컨퍼런스 관련 컨퍼런스는 무엇이 있을까?

    • FEConf(Front End)
  • 컨퍼런스에 참여함으로써 얻는것과 참여하는 이유는?

  • 개발자에게 있어서 기반이 되는 이론은 무엇이 있을까?

    • 개발자에 있어 기반이 되는 이론은 앞서 말한 자료구조와 알고리즘이라 생각한다.
  • 회사에서 원하는 개발자는 어떤 개발자인가?

  • 역할 모델의 개념과 역할 모델을 학습해야되는 이유는 무엇인가?

  • 개발 외적으로 필수 지식은 무엇인가?

    • 영어
  • 사이드 프로젝트를 진행했을 때 얻을 수 있는것은 무엇인가?

  • 객체지향적 사고란 무엇이며 중요성은 무엇인가?

  • 프론트엔드 개발자라면 알고 있어야할 기본 지식이란?

    • Javascript 모듈 번들러 학습
      • webpack4
      • parcel
    • Javascript compiler인 바벨 학습
    • 브라우저 동작 원리
      • 브라우저의 동작 원리에 대해 학습하고, 구글의 최신 웹 기술인 PWA를 학습하여 사내 웹에 적용해보고 싶습니다.
      • PWA을 도입했을 때 장점
        • 웹의 장점과 앱의 장점을 결합한 환경이다. 앱과 같이 설치할 필요 없고, 느린 네트워크에서도 빠르게 로드된다. 네트워크 상태에 관계없는 안정적으로 작업을 통해 Konga는 서비스 워커를 사용하여 초기 페이지 로드에 필요한 전송 데이터를 63%, 초기 로드에 필요한 전송 데이터를 84%로 줄였다.
        • 관련된 푸시 알림을 전송할 수 있고 홈 화면에 아이콘을 만들 수 있으며, 앱과 같이 전체화면으로 로드할 수 있다.
  • 주니어와 시니어 개발자의 차이는 무엇인가?

  • 지식을 두루두루 아는것과 하나의 지식을 깊게 아는것 이 2개의 차이점은 무엇이며 어떤것이 내 가치관과 맞을까?

  • Node js의 미래와 학습하는데 있어서 장점은?

  • 영어 공부를 하고 싶으며 영어 공부를 통해 어떤 장점이 있는지. (영어로 된 문서나, 강의를 적어놓자!)

    • 영어 독해 실력을 1순위로 향상 시켜 아래의 문서, 강의들을 번역없이 보는것이 목표!
    • MIT의 프로그래밍 서적인 SICP 보기
    • ECMAScript 표준 문서 번역해보기
    • 외국 프론트엔드 강의 보기 (frontendmasters, egghead)
  • Test Driven Development에 대해 학습하고, 프로젝트 진행 시 도입해보기