일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ::first-line
- Ol
- option
- JAVA 개발 환경 설정
- Title
- Border
- Python
- colspan
- Li
- JavaScript
- Head
- rowspan
- !doctype html
- HTML정의
- img
- 전체 선택자
- textarea
- select
- table
- tag
- Form
- BR
- ul
- ::first-letter
- 속성 선택자
- ::before
- BODY
- 인라인 레벨 요소
- :active
- 한정수 강사님
- Today
- Total
개발 공부 기록하기
반드시 읽어봐야 할 개발 학습법 19가지(5) - 마지막 본문
17. 개발자를 꿈꾸는 취업 준비생에게 (우아한형제들 박재성)
이 자료에 대해서는 내용 요약(?)보다는 읽고 내가 느낀점을 써야겠다.
지금, 나에게 하는 얘기 같았다. 준비하면서도 꼭, 자주 참고해야겠다.
무엇보다도, 직업을 바꾼다는 건, 장밋빛 같은 아름다운 길이 앞에 펼쳐져 있는 것이 결코 아님을 유념해야겠다.
그렇다, 나도 수많은 코딩 학원들의 광고에 흔들렸다.
"6개월만에 네카라쿠배? 에이~ 그게 가능하겠어?"라고 가볍게 여겼지만,
그래도 '학원 수강 이후 6개월정도 준비하면 취업할 수 있지 않을까...?'하고 막연하게 생각했던 것이
"아닐 수 있겠다", 아니, "아니겠구나"라는 사실을 이 글을 읽고서야 알게 됐다.
최소 1년 반에서 2년은 잡으라니..... 야호.....ㅎㅎ
앞으로, 지금 일 계약 기간 만료까지 남은 기간 약 4개월하고도 1주일이 남았다.
그동안에 글쓴이의 조언에 따라서 "독학"으로 (3~6개월 소요)
최소 1개의 프로그래밍 언어를 활용해 변수, 배열, 조건문, 반복문, 함수정도는 자유롭게 사용할 수 있는 수준 만들기.
를 해야겠다.
그 다음 단계가 "교육 기관 활용"이다. (6개월 전후 소요)
학습에 대한 방향성을 잡고, 같이 학습할 동료를 만들자.
약간의 여유가 생긴다면 다른 사람들과 협업, 소통하는 것에 관심을 가져보자.
다음은 "심화 학습" 단계다. (6개월 전후 소요)
앞 단계들을 잘 소화했다면 추가 학습할 게 정말 많다고 느껴야 맞다.
회사는 개발자 육성에 관심이 없다. 이미 갖춰진 역량을 사용하는 것에 관심이 있을 뿐이다.
(이게 현실. 잊지 말자.)
앞선 단계에서 한 공부 과정 중 소화하지 못한 내용 보완 & 온전히 내 것으로 체득하는 시간으로 삼자.
기존의 얕은 학습들에 깊이를 더해가는 시간이다.
마지막 단계, "취업" 이다.
심화 학습 단계와 병행해도 된다.
사회로 나가기 두렵다고, 역량이 부족하다고 계속 학습하는 것에만 머무르지 마라.
(위의 내용을 굳이 인용으로 쓴 이유는, 이 시기 때 내가 충분히 할 수 있는 생각일 거 같아서다.
강조해놓은 거 꼭 보라는 의미에서^^)
이 때는 입사 지원과 면접이 좋은 동기부여가 되어줄 수 있다.
https://brunch.co.kr/@javajigi/26
18. 초보 웹 개발자를 위한 학습 안내서 (subicura)
https://roadmap.sh/라는 홈페이지에 각 직무별, 그리고 언어별 추천 로드맵이 (영어로) 적혀있다. (영어 울렁증 주의ㅎ)
대표적인 프론트엔드와 백엔드만이라도 내가 보기 편하게 한글화 번역을 하려고 했는데.. 인간적으로 너무 많아서 시간 다 잡아먹게 생겼더라.... 그건 천천히 작업해서 올려야겠다..ㅎㅎ
물론 그 많은 것들을 다 공부하면 좋지만, 제한된 시간에 모든 걸 공부하는 건 불가능하기 때문에
"내가 시간이 없어서 그렇지 깊게 파면 이렇게 잘할 수 있다!"
를 어필하면 된다! (여러가지를 얕게 아는 것 <<<<< 하나를 깊이 이해하는 것)
- 코딩 테스트
→ 분류: 알고리즘형, (제시된 프로그램을 구현하는) 프로젝트형
→ 목적: 수많은 지원자를 효율적으로 평가하기 위함
→ 실효성에 대한 의견은 많지만, 특정 수준 이상을 통과했다면 기본적 문제해결 능력이 있는 것으로 판단함
→ 준비할 수 있는 사이트: Backjoon Online Judge, 프로그래머스, LeetCode
* Backjoon Online Judge: 국내 서비스 중 가장 유명한 온라인 코딩테스트 서비스. 수많은 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있음.
* 프로그래머스: 카카오, 라인, 네이버 등 많은 회사에서 사용 중인 코딩테스트 서비스
* LeetCode: 글로벌에서 가장 유명한 코딩테스트 서비스
- 기본기
→ 고도화, 추상화 된 라이브러리, 프레임워크가 많아져 포트폴리오는 훌륭한데 비해 기본 지식이 부족한 경우 多
* 기본 지식: 전공자가 배우는 CS 커리큘럼, 언어와 프레임워크 동작 원리 등
→ 최소한 아래 20개 질문에는 답할 수 있어야 할 것! (ref. https://www.facebook.com/dgtgrade/posts/3654195844639255)
▸ 1바이트는 몇 비트인가요?
▸ 1픽셀은 몇 바이트인가요?
▸ 210은 얼마인가요?
▸ Stack과 Queue의 차이가 뭔가요?
▸ Binary Tree의 시간 복잡도가 어떻게 되나요?
▸ DNS의 역할이 무엇인가요?
▸ HTTPS와 HTTP의 차이는 뭔가요?
▸ 스마트폰 카메라 해상도가 (대강) 어떻게 되나요?
▸ 왜 사진에는 JPG를 쓸까요?
▸ 칼라값 ffffff는 무슨 색인가요?
▸ <a href>가 무슨 뜻인가요?
▸ call by reference가 무슨 말인가요?
▸ Event Listener가 무슨 말인가요?
▸ OOP에서 상속이 무슨 말인가요?
▸ non-blocking call이 뭔가요?
▸ 버전 관리에서 commit이 뭔가요?
▸ try/catch는 무슨 뜻인가요?
▸ 디버깅할 때 breakpoint가 뭔가요?
▸ 패스워드는 서버에 어떻게 보관되나요?
▸ SSD가 HDD보다 빠른 이유가 뭔가요?
→ 기본기 학습에는 지름길이 없다.
방대한 내용을 따로 학습하기란 시간이 부족하기 때문에, 평소에 틈틈이 호기심을 가지고 찾아보고,
더 깊이 학습하는 방법이 최선이다.
- 어떻게 학습할까?
→ 클론 코딩
▸ 뭔지도 모른 채 무작정 따라 쓰기 (×)
▸ 만들면서 어떤 걸 배웠고, 어떤 게 어려웠는지, 그걸 어떻게 해결했는지 정리해두기 (○)
▸ + 최소 하나 이상 깊게 고민한 기능/기술이 있으면 좋다.
ex, 이미지 업로드하는 기능에 resize 기능 추가, 영상 업로드하면 gif로 변환되는 기능 추가,
소셜 공유 기능 삽입, OpenGraph 이미지 생성하는 라이브러리를 추가 등
→ 토이 프로젝트 / 사이드 프로젝트
▸ 아주 작은 아이디어 & 프로그램을 처음부터 끝까지 만들고 실제 운영까지 해보는 작업
(재미도 있고 새로운 기술도 배우고, 혹시 모르면 추가적인 수입이 있을 수도..ㅎ)
▸ 혼자 만들지 vs. 팀으로 만들지 결정하기
(팀으로 하면 개인 사정으로 팀원이 나가면 프로젝트도 흐지부지 될 수 있음. 혼자 작은 거 만드는 걸 추천)
▸ 혼자 풀스택 경험을 해보면 내가 어떤 분야에 관심이 있고 어떤 기술을 싫어하는지, 좋아하는지 파악할 수 있다.
▸ 토이 프로젝트를 완성하여 오픈 소스화 or 직접 운영 및 개선해 나간다면,
실력도 쌓고 취업에서도 좋은 평가를 받을 수 있다.
→ 스터디 모임
▸ '좋은 스터디' 모임에서 '좋은 사람들'과 함께 학습하는 것만큼 좋은 건 없다.
▸ 혼자 학습하기 어려운 걸 빠르게 습득할 수 있고, 여러 사람의 노하우를 자연스레 습득할 수 있다.
▸ 내가 '우물 안 개구리'였음을 알게 되고 자극을 받아 열심히 하게 된다.
→ 모각코모여서 각자 코딩
▸ 약간 가벼운 버전의 스타디 모임
▸ 부담 없이 참석해 질문/답변할 수 있고, 좋은 분을 만날 수도 있으니 스터디가 부담스럽다면 추천.
▸ 스터디 모임, 모각코 찾을 수 있는 서비스: OKKY, Facebook
→ 온라인 강의
▸ 생활코딩
▸ T아카데미
▸ 인프런
→ 컨퍼런스
▸ 최신 트렌드를 알 수 있음.
▸ 실무를 하면서 고민이 깊었던 내용을 빠르게 습득할 수 있음.
▸ 전문적이고 광범위한 경우가 많아서 고민했던 내용, 지금 하는 것과 관련있는 내용 잘 골라서 보기
▸ 지나간 컨퍼런스는 잘 안 보게 되니 가급적 시간 내서 라이브로 참석할 것을 추천.
→ 책
성장, 협업, 학습에 대한 나의 태도를 바꿀 수 있는 영향력 있는 책.
▸ 실용주의 프로그래머(D. Thomas & A. Hunt 저, 정지용 번역)
그냥 개발자에서 뼛속까지 개발자가 될 수 있는 여러가지 팁 소개.
더 나은 코드를 작성하고 싶다면 반드시 읽어야 하는 필독서.
▸ Head First Design Patterns(E. Freeman 저)
입문자를 위한 디자인 패턴 교과서.
▸ 소프트웨어 장인 - 프로페셔널리즘, 실용주의, 자부심(S. Mancuso 저, 권오인 번역)
소프트웨어 장인의 실용적인 조언.
▸ 소프트 스킬 - 평범한 개발자의 비범한 인생 전략 74가지(J. Sonmez 저, 김태곤 번역)
개발자로 사는 데 도움이 되는 정보와 조언을 집약적으로 담은 안내서.
▸ 조엘 온 소프트웨어(J. Spolsky 저, 박재호 번역)
조엘의 블로그에서 인기글만 뽑아 엮은 책.
▸ 유닉스의 탄생(B. W. Kernighan 저, 하성창 번역)
유닉스가 무엇이고, 어떤 이유로 개발됐는지, 어떤 과정을 거쳐 발전했는지 생생하게 느낄 수 있는 책.
Y Combinator의 폴 그레이엄의 에세이 형식의 프로그래밍 이야기.
▸ 세상을 바꾼 32개의 통찰(J. Livingston 저, 김익환 번역)
지금은 사라진 서비스도 있지만, 21C를 바꾼 서비스가 어떻게 만들어졌는지 알 수 있는 책.
▸ HTTP 완벽 가이드(D. Gourley, B. Totty, M. Sayer, S. Reddy & A. Aggarwal 저, 이응준, 정상일 번역)
HTTP 규약이 어떻게 작동하고, 웹 기반 앱을 개발하는 데 어떻게 사용하는지 소개하는 책.
▸ 테스트 주도 개발(K. Beck 저, 김창준 & 강규영 번역)
테스트 주도 개발의 교과서.
▸ 익스트림 프로그래밍(C. Andres & K. Beck 저, 김창준 & 정지호 번역)
XP의 소개와 철학 안내.
→ 유튜브
▸ 노마드 코더
→ 팟캐스트
→ 트위터
- 디테일 높이자
→ 차별화하기
▸ ex, 토이 프로젝트 개발 후 직접 배포, 개인 도메인을 구해 연결, 새로운 기술 시도,
블로그에 왜?어떻게?와 같은 과정이 담긴 글들을 최근까지 꾸준하게 작성,
오픈 소스에 공개한 내용에 발생한 이슈를 고민하고 수정한 흔적 등
→ 기록하기
▸ 블로깅, 노트 정리를 하자.
▸ 공부한 걸 기록하는 과정 → 잘 이해하지 못한 부분을 한 번 더 찾게 되고 나중에 같은 삽질 반복하는 걸 줄여준다.
▸ 내가 이런 걸 공부하고 있고, 이렇게 성장하고 있다. - 이것을 보여줄 도구가 된다.
▸ 블로그에 쓰는 내용을 점수로 표현한다면?
♪ 제목 한 줄 + 링크 한 줄 (0점)
♪ 공부한 내용 블로그에 정리하기 (+ 1점)
♪ 관심 있는 항목을 좀 더 깊이 공부하고 장/단점과 실제 사용 후기 정리하기 (+ 5점)
♪ 각각의 기술을 조합하여 무언가를 만들고 내용 정리하기 (+ 10점)
- 잘 물어보자.
→ 좋은 질문은 좋은 답변을 들을 수 있다.
- 목표를 정하자.
→ 주간 or 월간으로 명확한 목표 & 기간을 정하자. (뜨으끔.. 계획은 어렵다ㅏㅏㅏ...)
▸ 노션이나 사용하는 노트에 목표와 기간을 적고 진행한 내용을 정리하자.
▸ 주기적으로 진행한 내용을 확인하고 회고하자.
▸ 너무 빡빡한 일정보다는 적당히 할 수 있는 목표를 정하고 조금씩 늘려가자.
- 환경을 바꿔보자.
→ 공부가 힘들고 번아웃이 올 때는 환경을 한 번 바꿔보자.
▸ 제주도/강원도 등 완전히 새로운 공간에서 혼자 여행을 가서 개발해보자.
▸ 인터넷이 안 되는 곳에 컴퓨터 없이 책만 들고 가보자. 새로운 내용을 발견할 수도 있다.
- 회사 선택
→ 이런 데에서 일하지 말자. (ref. https://subicura.com/2021/06/27/study-guide.html)
▸ 버전 컨트롤 시스템이 없다.
▸ Automated deploy system, build system이 없다.
▸ 모니터링 시스템이 없다.
▸ 테스터가 없거나, 테스팅 environment, staging environment가 없다.
▸ 유닛 테스트를 안 쓰고, 코드 리뷰가 없다.
▸ 버그 트랙킹 시스템이 없다.
▸ 개발자에게 웹 디자인을 시킨다든지, 하드웨어 서포트를 요구한다.
▸ + 새로운 시도를 할 수 없고, 문제가 생기면 개인에게 책임을 전가한다.
https://subicura.com/2021/06/27/study-guide.html
19. 개발자로 일하기 위해 공부해야 할 것은? (라인개발실록 Youtube)
Q1. 컴퓨터공학과 열풍, 식지는 않을까요?
A1. 다른 분야에 비해서 비교적 신생 분야이긴 한데, 파도파도 만들 것이 너무 많고 흥미로운 것도 많아서,
학문 분야로서나 엔지니어링 분과로 봤을 때나 앞으로 장기간 인기가 안 식을 것 같다.
학문 분야의 인기는 그 학문으로 가치 창출을 얼마나 해 내느냐에 달린 것 같다.
그렇기 때문에 컴공과에 대한 니즈는 앞으로 30~40년, 우리가 일할 시기에는 문제 없을 것이다.
Q2. '개발자'란 직업이 대체될까요?
A2. 코딩할 때, 주석으로 명령하면 코드를 만들어주는 AI 코딩, 서포트 기능은 앞으로 계속 발전하긴 할 것이다.
BUT, 개발자의 역할은 실질적으로 문제를 이해하고, 그 문제를 어떻게 해결할까 하는 방법에 대한 것을
제시하는 사람이지, 단순히 코드만 작성하는 사람이 아니라고 생각하기 때문에 앞으로 수요는 꾸준히
있을 것이다. 더구나 실질적으로 코딩 레벨까지는 AI가 대체하지 못할 것으로 보고 있다.
어떻게 코드를 작성해야 하는지 잘 이해하기 위해서 설명을 잘 하려면, 컴퓨터 시스템에 대해서
깊이 이해하고 있어야 하기 때문이다.
Q3. 비전공자가 전공자에 비해서 많이 뒤쳐질까요?
A3. 현업에서 쌓을 수 있는 경험과 지식도 충분히 많기 때문에 반.드.시. 전공을 해야할 필요는 없는 것 같다.
Q4. 개발자로 일하면서 도움이 된 전공 지식이 있나요?
A4. 입사지원할 때는 많이 못 느꼈다. 연차가 쌓이면서 깊게 개발하다 보면 예전에 '왜 배우지?' 했던 걸
찾아보게 됐다. 강제적으로 공부하는 게 도움이 될 때가 있다.
Q5. 백엔드는 컴공 전공이 필요하다고 하지만, 프론트엔드는 비전공도 충분히 독학으로 가능하다던데, 맞나요?
A5. 백엔드나 프론트엔드 둘 다 독학은 당연히 가능하다. 다만 전공 지식이 백엔드에서 조금 더 유용한 건 맞다.
'효율화'가 굉장히 중요한 백엔드쪽에서 필요하기 마련이다.
하지만 깊이 보면 컴퓨터 원리를 알아야 하는 건 어느 분야냐 똑같다.
Q6. 백엔드 개발에 필요한 CS 과목은 무엇이 있을까요?
A6. 유명 대학의 CS 강의는 무료로 공개되어 있는 경우가 많다.
하지만 이걸 듣는다고 전부가 아니라 뭐라도 작동하게끔 만들면서 이것저것 살을 붙여보고 그걸 깊게 파면서
원리를 파악해보려고 해야 한다.
전공필수 과목만 찾아서 듣는 사람도 본 적 있다.
자료구조, 알고리즘, 시스템 프로그래밍, OS + 네트워크, 보안 이렇게 6개정도는 굉장히 도움이 많이 됐다.
Q7. 독학하는 비전공자가 협업 경험 없이 개인 프로젝트만으로 취업할 수 있나요?
A7. '협업 경험이 없으니 넌 탈락이야!' 전혀 이러지 않는다. 개인 토이 프로젝트라도 Git 등을 이용해 코드를
올려보는 등의 경험이 플러스가 되는 것 같다. 온라인 상에서 협업을 하는 것의 한 종류인 오픈 소스 기여도
협업 경험의 하나이다. 고객들의 니즈 파악, 니즈에 대한 것을 contribution하는 등의 다양한 협업 방식이
있기 때문에 '나는 외부와 communication 하는 것이 익숙하다, 능숙하다'를 어필하면 될 것 같다.
Q8. 간단한 good first issue에 기여하는 정도만으로도 협업 능력을 어필할 수 있을까요?
A8. good first issue란, 오픈소스에 처음으로 기여해 보고 싶은 사람도 해결할 수 있는 쉬운 문제를
분류해 놓은 이슈이지 않나. 그런것도 어쨌든 내가 다른 사람의 코드를 보고 그러한 문제상황이 있다는 것을
인지했고, 그에 대한 피드백을 결과물로서 냈다는 것이니, 이 역시 협업 능력을 어필하기에 매우 좋은 것
같다. 찾아 들어가는 것까지가 정성이다. 지원자들의 Github도 여러가지 유형이 있는데, good first issue라
하더라도 콕 집어 contribution한 결과가 있는 지원자라면 상위 2% 안에 드는 사람일 것이라 생각한다.
Q9. 라인 개발자들이 많이 사용하는 '기록 남기기'용 블로그는 무엇인가요?
A9. 미디어가 중요하다는 생각을 하지 않는다. 콘텐츠와 꾸준함을 통해 관심을 표하는 것이 중요하다.
https://www.youtube.com/watch?v=I0kGLV4kULI
"비전공자의 경우 두렵고 막막하겠지만, 전공자들도 같은 어려움을 겪기 때문에, 비전공이 핸디캡이 아니라고 생각했으면 좋겠다." - 김정엽(라인 백엔드 개발자)
한정수 강사님의 강의를 통해서 많은 훌륭한 개발자 분들의 견해와 조언, 팁들을 볼 수 있어서 뜻 깊은 시간이었던 것 같다.
실제로 '개발자'라는 직업에 대해서 많은 조사를 했다고 생각했지만, 너무도 모르는 점이 많았음을 다시 한 번 깨달았다.
시간이 오래 걸렸음에도 굳이굳이 5개의 포스팅으로 나눠가면서 내용을 정리한 것은.. 나 자신을 잘 알기 때문이었다.
그냥 강의에서 가볍게 언급하는 것을 듣고 넘어가면 내가 이 많은 양질의 자료들을 일부러 시간 내서 보지는 않았을 것 같았기에...ㅎㅎ;;
앞으로 개발 공부를 하면서 초지일관(初志一貫)을 유지하기 위해서 자주 들러서 읽어봐야 할 것 같다ㅎㅎㅎ
나를 포함한 비전공 개발자 준비생(?) 분들 모두 화이팅이다!
'프밍 > [인강] 비전공자를 위한 개발자 취업 올인원 가이드' 카테고리의 다른 글
(개발 학습 도구로서의) 책의 장단점 (0) | 2023.01.15 |
---|---|
제일 먼저 읽어야 할 2가지 책 - 한정수 강사님 pick (0) | 2022.10.27 |
반드시 읽어봐야 할 개발 학습법 19가지(4) (1) | 2022.10.23 |
반드시 읽어봐야 할 개발 학습법 19가지(3) (1) | 2022.10.22 |
반드시 읽어봐야 할 개발 학습법 19가지(2) (0) | 2022.10.22 |