- 1부 기술
- 컴퓨터 과학의 세계
- 프로그래밍
- 베어메탈 - 언어와 하드웨어 사이에 존재하는 소프트웨어 계층(ex JVM)이 따로 없이 언어에서 하드웨어를 직접 제어
- 정적 언어 : 프로그램 내에서 타입이 제대로 사용되었는지 코드를 컴파일할 때 검사 / 자바나 C
- 동적 타입시스템을 사용하는 언어: 코드를 실제로 실행할 때 검사하면 / 루비나 파이썬
- 강한 타입 시스템 : 프로그래머가 타입과 관련된 실수를 저질렀을 때 언어가 가차없이 에러를 발생
- 약한 타입 시스템 : 언어가 알아서 타입 변환을 수행한다.
- 개발자와 컨퍼런스
- 콘퍼런스에 참여하는 것은 동기부여라는 측면에서 엄청난 도움이 된다.
- 열정 + 해당 기술과 관련된 실천과 고민 => 관심에 초점이 생긴다.
- 위에 것이 없다면 집에서 유투브 동영상을 보는 것이 낫다.
- 열정 => 예습 => 철판깔고 네트워킹 => 정리 => 발표
- 좋은 프로그래머의 자질
- 머릿속으로 궁리하기 / 코드가 전개되는 모습을 머릿속으로 정밀하게 궁리 , 바둑의 수를 계산
- 빈틈없이 생각하기 / 깊은 추상, 명확한 개념, 반복된 훈련, 경험의 축적
- 커뮤니케이션 능력
- 명확하지 않은 이야기에서 본질을 파악
- 복잡한 놀리나 추상적인 개념을 상대방이 이해할 수 있게 설명
- 타인의 감정을 이해하는 공감능력
- 커뮤니케이션이 뛰어나면서 코딩을 못하는 사람은 본적이 없기도 하다.
- 독서를 통해 키울수 있다.
- 풀스택 개발자의 꿈, Node.js
- 스탠바이
- Node.js의 엔진이 V8은 특성상 여러 스레드와 CPU를 같이 사용하지 못한다.
- 치명적인 매력, 생산성
- I/O가 큰 작업들, DBMS의 트랜잭션이 되게 긴 쿼리를 처리하는 경우에는 쥐약
- 짦은 이벤트 단위로 많은 트레픽을 받는 서버의 경우에는 Node.js를 매력적으로 활용
- 게임의 유저 상태를 업데이트하는 잛은 이벤트만 존재하는 경우에는 효과적으로 트래픽을 받을 수 있다.
- Node.js와 RDBMS
- 전통적인 데이터 베이스들은 다 트랜잭션 개념을 가지고 있다. 비동기가 될 수 없음. 그래서 Node.js와 맞지 않다.
- 정말 데이타 무결성이 필요한 거면 Node.js를 안 쓰는 것이 맞을 것 같다.
- 해킹에서 보안까지
- 제로데이 취약점 시장
- 제로데이 : 그 즉시 대응할 수 없는 보안 이슈 , 대중은 보안 패치가 완료될 떄까지 타경을 받는다.
- 많은 기업이 보안 문제를 해결학 위해 제보를 받고 상금을 지급하는 버그 바운티라는 제도를 운영한다.
- 데이타 과학 , 생활 데이타로 시작하라
- 데이타 분석의 시작
- 데이터에서 통찰로 이어지는 과정에서 필요한 것은 사소한 실천 , 그것 하나뿐이었다. 사소하게 데이타를 모으는 작업
- 빅데이터와 스몰데이타
- 자기도 정확하게 이해한 것이 아니면서 함부로 어려운 용어를 들먹이면서 함수 언어에 대한 진입장벽을 세우지 마라
- 데이타 과학
- 통계를 좀 알아야하고, 프로그래밍도 좀 알아야하고
- 그렇게 될 때까지 그렇게 된 것처럼 행동하라, Fake it till you make it
- 머신 러닝
- 약빤 알고리즘 , 머신 러닝 알고리즘은 동적이고, 피드백을 받으며 개선되어 나간다.
- 개발자도 머신러닝 알고리즘을 자연스럽게 활용하는 시대가 아니 활용해야만 하는 시대가 무서운 속도로 다가오고 있다.
- 빅데이터와 인공지능 연구의 꽃 , 자연어처리
- NLP(Natural Language Process) 는 빅데이터와 머신러닝을 모두 아우르는 인공지능 분야의 꽃
- NLP의 관건은 보유하고 있는 데이타 양
- 누가 얼마나 더 많은 데이타를 보유하고 있느냐가 NLP 연구에 있어서 승부의 열쇠
- 구글은 웹 전체에서 수집된 결과를 알고리즘을 통해 점수를 부여하고 , 이를 바탕으로 사용자들에게 노출
- 네이버는 기본적으로 자사의 포탈 내부의 데이터를 우선적으로 노축시키는 정책
- 알고리즘, 개발자의 자기계발 전략
- 알고스팟
- 게일 라크만 멕도웰 - Cracking the coding interview
- 들어가기 어려운 회사 일수록 철저하게 문제풀이 능력을 평가하는 질문으로, 알고리즘은 문제풀이 능력이다.
- 문제 풀이 능력을 평상시에 취미처럼 기르는 사람들은 모든 회사의 문을 마음대로 열어젖힐 수 있는 황금열쇠를 손에 쥐다.
- 즐거움을 추구하는 것이 목적이다. 놀이가 일이 되는 순간 지구력도 사라진다.
- 한국과 미국의 첨단 기술 스택
- 기술 스택 전체를 구성하는 윤관을 이해하는 것이 그 안에 담긴 제품 하나하나에 대해서 아는 것보다 더 중요하다.
- 커다란 아키텍처의 윤곽과 코드베이스 내부에 있는 알고리즘의 미세한 흐름을 동시에 이해하고 다룰 수 있어야 한다.
- 미세한 코딩만 고집하고 큰 그림을 이해하지 않으려는 개발자는 성장할 수 없고
- 코딩의 미세한 감각을 상실한 채 거대한 그림만 상상하는 사람은 입개발로 빠질 수밖에 없다.
- 개발자와 알고리즘
- 알고리즘 대회에서 푸는 문제들과 현실적인 개발셰게에서 마주치는 문제는 완벽하게 직접적인 상관은 없지만 , 분명히 현실 세계에서도 도움이 된다.
- 알고리즘 : 수학적인 문제를 해결하거나 컴퓨터 프로세스를 완결하기 위해서 차례로 뒤따르는 단계으 집합
- 미국의 IT회사들은 특정 기술에 정통한 사람을 찾지 않는다. 기본적인 능력, 즉 문제를 해결하는 알고리즘을 능력을 갖춘 상태에서 새로운 기술을 빠르게 습득할 숭 ㅣㅆ는 사람을 찾는다.
- 손코딩 , 뇌컴파일, 눈 디버깅
- 고수는 생각한 다음 코딩을 하고 하수는 코딩을 한 다음 생각은 한다.
- 현대 소프트웨어 프로젝트는 당현히 팀 스포츠다
- 마음을 확짝열고 자기 실력을 인정하고 타인을 존경하고, 배우려고 노력하고, 질문하거나 도움을 청하는 것을 부끄러워하지 않는 B팀은 어느 정도 시간이 지나면 A급들이 존경해 마지 않는 A급 개발자의 일원이 되어 있다.
- 알고리즘 문제
- 미국에서 개발자가 회사를 옮겨다니려면 트리플릿 정도의 문제는 해결할 힘이 있어야 한다. N제곱 해가 떠오르지 않아도 해결책을 향해서 조금씩 다가가는 모습만 보여워도 충분하다. 그리고 그 아이디어를 코드로 적을 수 있으면 좋다.
- 문제를 잘 풀기 위한 방법은 매일 조금씩 훈련하고 공부가 아니라 놀이라 생각하는 것
- 2부 커리어
- 글로벌 기업 코딩 인터뷰
- 무언가 아웃풋을 내라
- 시간 복잡도라 공간 복잡도에 대한 개념이 기본적으로 같이 제시 .좀 더 적은 메모리와 좀 더 적은 시간으로 동일한 시간으로 해결할 수 있겠는가? 일단 동작하는 어떤 아웃풋을 내는 것도 굉장히 중요하다.
- 코딩 인터뷰 패턴 이해하기
- 코딩은 뒷전이고 계속 회의실에서 뜬 구름 잡는 친구들이 잘하는 경우가 맞죠. 정확하게 이해를 하고 설계하면 코딩을 그냥 설계를 코드로 옮기는 작업에 불과하니까 일을 더 잘하게 되는 거죠. 어떻게 이런 설계 실력을 쌓을 수 있는가? 코딩 리뷰, 코딩 인터뷰 책을 보라. 탑코더 사이트.
- 인터뷰에 영향을 미치는 + 알파
- 채용을 핸던 사람들의 공통점은 문제를 주면 해결을 한다는 것. 우아한 방식으로 답을 주는 사람이 매력있다. ^^
- 똑같은 실력이면 더 호감이 가는 사람, 좀 더 열정적이 사람에게 마음이간다.
- 공학이라는 것은 현실의 문제를 푸는 것이기 때문에 트레이드 오프를 보는 게 굉장히 중요. 솔루션에 여러 가지 옵션이 있을 텐데, 각각의 옵션에 장단점을 분석하고, 현재 주어진 요구사행에서 제일 좋은 옵션들을 선택하는 과정을 보여주는 것
- 인터뷰여하고 마치 토론식으로 내가 지금 짜는 코드는 앞으로 이런 이유 댸문에 이러게 짜려고 하고, 이런 로직으로 짜려고 한다고 하면서 풀어가자.
- 코딩 인터뷰는 단순히 기술 실력만이 아니라, 문제를 풀어가는 전체적인 과정을 본다 => 커뮤니케이션 스킬을 본다.
- 코딩 인터뷰는 2~3개월 전부터 대비
- 삶의 선택지, 해외 취업
- 일주일에 최소 한,두번은 자택 근무를 한다.
- 아이들이 커가는 시간을 함꼐 할 수 있다는 것. 한국에서는 일을 위해서 가정을 포기하는 것이 너무 당연시 되고 있다.
- 미국의 경우는 일정보다는 품질이 우선시 됩니다.
- 좋은 석사보다는 이수하기 쉬운 석사학위를 찾는 것이 한가지 포인트 이수하면서 직장을 구할 수 있다.
- 디지털 노마드로 사는 법
- 3부 삶
- 어린이 소프트웨어 교육의 방향성
- PC방 알바에서 구글 개발자로
- 그릇이 큰 사람은 자기 눈에 보이지 않을지라도 궁극의 실력을 갖춘 사람들, 즉 창조하는 사람을 마음에 담는다. 상상 속에서 그들에게 묻고, 대화하고, 실력을 엿보면서 자기 노력의 자양분으로 삼는다. 그들에게 건강한 열등감을 느끼면서 자기 자신을 행한 채찍질을 멈추지 않는다.
- 수많은 기술고 언어가 눈앞에 왔다 갔다 하지만 그런 것들의 껍질을 벗겨내고 속에 있는 본질을 모려고 노력해야 합니다.
- SI가 살맛나는 세상을 위하여