# [책갈피] 항목은 책을 읽으면서 기억에 남는, 기억하고 싶은 부분을 메모한 페이지 입니다.
01. 개발자의 소양
"소프트웨어는 컴퓨터 안에서 돌아가는 단순한 로직의 집합체가 아닙니다."
"소프트웨어는 과학, 기술, 엔지니어링, 수학이 잘 융합된 STEM(Science, Technology, Engineering, Mathematics)의 결정체입니다."
"개발자는 STEM의 결정체인 소프트웨어를 만드는 사람이며, 기획자나 프로젝트 매니저, QA 등 다른 직군의 사람들과 창의적으로 협업하여 사용자에게 가치를 제공하는 사람입니다."
"프로그래밍 언어는 유행을 따르는 도구일 뿐입니다. 그래서 빠르게 새로운 걸 터득하는 능력과 기반 지식이 중요합니다."
"개발자 기본은 영어입니다. 그다음은 수학과 물리입니다."
"개발자는 평생 공부하는 직업입니다."
"다시 강조하지만 빠르게 세상이 변하므로 새로운 하드웨어, 새로운 운영체제, 새로운 프로그래밍 언어를 빠르게 익힐 수 있는 능력을 갖추는 데 집중해야 합니다."
*개발에 대한 기본 지식*
분야 | 상세 지식 |
자료구조 | 스택, 힙 |
알고리즘 | 회귀 호출, 인덱스, 정렬, 이진 검색 |
운영체제 | 프로세스, 스레드, 뮤텍스, 세마포어 |
디자인 패턴 | MVC 아키텍처 |
프로그래밍 언어 | 네이티브 코드, 콜 바이 밸류, 콜 바이 레퍼런스 |
경험 | 간단한 텍스트 기반 게임 만들어보기 |
*위의 내용들은 다른 게시글에서 하나씩 알아가보도록 합시다
"문제의 상하좌우까지 고민하는 사고 방식을 습관으로 들이면 모든 일을 더 깊이 들여다볼 수 있습니다."
"크리티컬 싱킹 습관이 들어 있으면 그 사람이 감당하는 업무 스케일이 계속 커지게 됩니다."
"소프트웨어를 개발하면서 왜, 어떻게, 무엇을, 누가, 언제까지 출시해야 하는지를 종합적으로 고려해야 합니다."
"크리티컬 싱킹은 종합적인 관점에서 해법을 구하는 습관입니다. 같은 시간을 투자해도 상대적으로 더 큰 성장을 이끌어냅니다."
*크리티컬 싱킹*
>> 상황 분석하기 > 이유 생각하기 > 근거 평가하기 > 문제 해결하기 > 합리적인 결정하기 > 상황 분석하기 >>
"무엇까지 알야 하냐고요? 프로젝트를 성공적으로 개발하는 데 필요한 모든 것입니다."
"당연히 사전에 모든 걸 알 수는 없습니다. 꾸준히 공부하는 수밖에 없습니다."
"그렇기에 특정 언어나 도구와 사랑에 빠지면 안 됩니다."
"현업에 바쁘더라도 6개월 주기로 새로운 기술과 도구를 확인하고 공부하는 시간을 갖길 바랍니다."
"기술 흐름을 조망하고 큰 흐름을 계속 따라가야 합니다."
"다음 제품을 만드는 데도 쓸모가 있는지 생각하면서 기술을 채택해야 합니다. 다음에도 유용한 기술이면 이직할 때 매력 포인트가 되어줄 겁니다."
"개발은 협업의 연속입니다. 원활히 협업하려면 (다른 직무에 대한 지식을) 알아야 합니다."
"T자를 넘어 요즘에는 π자형 인재라는 말도 나왔습니다. 하나가 아니라 두 가지에서 전문성이 있어야 한다는 이야깁니다."
"하나가 아니라 두 가지에서 전문성이 있어야 한다는 이야깁니다."
"시작은 I자형 인재입니다. T자형을 거쳐 π자형 인재로 차근차근 나아가면 됩니다."
"π자형 인재가 되려면 눈물 나게 노력해야 합니다. 정말 힘듭니다."
"개발자 커리어패스 30년 중에서 처음 10년, 모르는 게 가장 많은 시기에 최대한 많이 깊게 공부하세요."
"제가 좋아하는 멘자민 바버(Benjamin R. Barber)는 말했습니다."
"나는 세상을 약한 자와 강한 자로 나누지 않고, 성공한 자나 실패한 자로 나누지 않고, 무엇을 만들거나 만들지 못하는 자로 나누지 않는다. 나는 세상을 배우는 자와 배우지 않은 자로 나눈다."
고객이 원하는 제품 디자인
"좋은 제품을 디자인하려면 누가 사용하나, 사용자가 원하는 일은 무엇인가, 만드는 제품이 사용자가 원하는 바를 제공해주는가, 경쟁 제품은 어떤 접근을 하는가 등을 고려해야 합니다."
"한발 더 나아가서 고객 경험도 고려하는 시대입니다."
"사용자 경험이 특정 제품 안에 국한되는 경험이라면 고객 경험은 탐색, 구매, 사용, 사용 후 평가까지 모든 접점에서의 경험입니다."
*사용자 경험 vs 고객 경험*
사용자 경험 | 고객 경험 | |
정의 | 제품을 이용하는 사용자의 인지 반응 또는 기대하는 바 | 서비스를 이용하는 고객이 체험하는 모든 경험 총체 |
대상 | 이용자, 고객일 수도 아닐 수도 있음 | 고객이거나 잠재 고객 |
접근 방식 | 사용자 니즈 분석 사용 접점 정의 접점 설계 테스트 및 검증 |
고객에 대한 이해 고객 접점 정의 비즈니스 사례 도출 전략 수립 KPI 수립 서비스 구조 확립 |
"이제부터 고객이 원하는 제품을 디자인하는 방법론을 몇 가지(5가지) 소개합니다."
*경쟁 제품 분석
"경쟁 제품 분석에는 디테일에 신경을 써야 합니다."
*고객 여정
"고객 여정으로는 인식, 고려, 결정, 유지 단계가 기본입니다."
"제품 기획과 개발 단계에서 고객 여정을 설정하고 미리 시뮬레이션해야 하며, 각 과정은 숫자로 정의되어야 합니다."
*A/B 테스트
"새로운 기능을 추가하거나 바꾸고 싶을 때 전체 사용자 중 일부에게는 기존 기능을, 나머지에게는 새 기능을 제공하여 그 결과를 비교하는 방법입니다."
"이방법은 최소기능제품(Minimum Viable Product, MVP)의 시대에도 딱 들어맞습니다.
"최소한의 기능을 좋은 품질로 만들어서 빠르게 시장에 내고 계속 시장 반응을 보면서 업데이트하는 개발 방법입니다."
*데이터 주도 개발
"사람의 인사이트도 중요하지만 실제 사용자의 행동을 데이터로 모아서 분석해야 최고의 선택을 할 수 있습니다."
"데이터 주도 개발이란 이처럼 제품 출시 이후에도 지속해서 데이터를 모아 모든 과정에 데이터를 사용하는 겁니다."
"데이터 수집 시스템 설계는 총 3단계로 나눌 수 있습니다.
"데이터 설계 단계 > 데이터를 수집하는 시스템 설계 단계 > 모은 데이터를 정리하고 활용하는 단계"
"피터 드러커는 '측정할 수 없으면 관리할 수 없고, 관리할 수 없으면 개선할 수도 없다'고 말했습니다."
*도그 푸딩
"도그 푸딩(Dogfooding)이라는 말이 있습니다. '내가 만든 개밥을 스스로 먹어라(Eat your own dof food)'라는 말에서 유례했습니다. 우리말로 풀면 '본인이 만든 제품을 직접 써보라'라는 격언이 되겠습니다."
"내가 먼저 제품을 써보고 좋아해야 사용자도 좋아하게 되는 겁니다. 그래야 성공하는 제품이 되는 거죠."
"개발은 좋은 제품 만들기가 목적입니다. 멋진 코드와 확장성 있는 아키텍처도 좋지만 기술은 좋은 제품을 만들어내야 의미가 있습니다. 그래서 개발자도 제품에 대한 이해력을 키워야 합니다."
"좋은 제품을 개발하길 원한다면 고객 데이터 기반, 지속적인 업데이트를 잊지 마세요."
# To-Be..
03. 30년간 실천할 개발 주기

'Book' 카테고리의 다른 글
[책갈피] 개발자로 살아남기 - 04 (0) | 2022.08.01 |
---|---|
[책갈피] 개발자로 살아남기 - 03 (0) | 2022.07.30 |
[책갈피] 개발자로 살아남기 - 01 (0) | 2022.07.28 |
[도서리뷰] 인프라 엔지니어의 교과서 - 요구사항 분석과 설계 (0) | 2021.06.10 |
Book 카테고리 (0) | 2019.08.06 |