Software engineer가 되기 위한 여정
오아리
발표자 소개
‣ Amazon Software engineer @Vancouver
‣ Kakao Mobility Software engineer
‣ Kakao corp. Software engineer
‣ 6년차 개발자
학교 졸업하고 뭐하나요?
진로 고민
‣ 개발자로 취직
‣ 대학원에 진학
어떻게 개발자가 될 수 있을까요?
1. 나는 개발자가 되고 싶은 걸까요?
2. 개발자로 취업을 준비합니다
3. 개발자로 취직을 합니다. 회사에서 열심히 성장합니다.
1. 개발자가 되고 싶나요?
개발자는 너무 광범위한 용어
‣ Software engineer
‣ Embedded system
engineer
‣ DevOps engineer
‣ Data engineer
‣ Security engineer
‣ QA (Quality Assurance)
engineer
‣ Network engineer
‣ System engineer
Software engineer
‣ IT 기술을 이용해서 비지니스 플랜을 실현시켜 주는 사람
‣ 흔히들 말하는 서버 개발자, 앱 개발자, 웹 개발자 등
‣ 소프트웨어 개발, 유지보수 및 관리
‣ 서비스 장애에 책임을 질 수 있는 사람
다양한 분야
‣ Front-end
‣ Back-end
‣ Full-stack
‣ Mobile application
‣ Window/MacOS application
https://www.linkedin.com/business/learning/blog/productivity-tips/the-american-city-that-pays-software-engineers-the-most
내가 좋은 영향을 미치고 싶은 분야는 어디인가요?
재미있는 걸 먼저 찾아보세요!
필요한 역량
https://insights.stackoverflow.com/survey/2019
필요한 역량 - 논리로 무장
‣ 우리가 하는 일은 problem solving
‣ 문제를 어떻게 해결할지 작은 조각들로 나눌 수 있어야 한다
‣ Critical 하게 사고해서 문제에 대한 해결 방법을 코드로 작성해야 한다
‣ 서비스를 개발하다 보면 커버 되지 않은 edge case가 있기 마련, 차분
하게 한 번 더 생각해봐야 한다
‣ 손이 머리보다 빠르지 말 것
필요한 역량 - 도전 정신
‣ 끊임 없이 새로운 일의 연속

“웹 사이트 만들어 주세요” -> “이번엔 API 서버 만들어 주세요”
‣ 점점 복잡해지는 문제의 난이도

“택시만 잡히면 좋겠다” -> “택시가 빨리 잡히고 결제 까지 되면 좋겠다”
‣ 끊임없이 나오는 새로운 기술
‣ 도전을 즐기지 않는다면 금방 도태됨
필요한 역량 - 빠른 습득력
‣ 하루가 멀다하고 쏟아지는 새로운 기술
‣ 변화에 빠른 습득력이 필요
어떻게 공부해야 할까?
‣ 시작은 한가지 기술에 대해 깊이 팔 것
‣ 공식 document를 먼저 읽어보고 찾는 습관
‣ 새로운 기술은 그 기술의 철학과 신념, 아키텍쳐를 먼저 이해하
려고 해야 한다
‣ Googling!

검색 키워드에 따라 나오는 결과페이지가 다르다

키워드를 어떻게 검색해야할 지 모르겠다면 공식 document를
참고하거나 주변 개발자에게 키워드를 물어보자
개발자의 커뮤니케이션 스킬
‣ 정말 중요합니다
‣ 혼자 개발하지 않아요. 결국은 팀워크
‣ 대부분의 요구사항은 일반 사용자나 기획자 등 비 개발자로 부터 온다
‣ 서비스 기획, 사업 기획, 디자이너 등 비 개발자 직군 에게 ‘얼마나 걸릴
지’, ‘왜 안 되는지’, ’시스템 구성을 어렵지 않게 설명’ 할 수 있어야 한다
‣ 모든 문제는 명확하게 정의하고 지금 우리에게 필요한게 뭔지, 장기적으
로 생각했을 때 어떤게 필요할 지 잘 논의하고 정리할 수 있어야 한다
2. 개발 직군 취준생이 됐다
이력서
‣ 분량은 A4 기준 1장~2장
‣ 묻기 전까진 넣지 않아도 될 것
‣ 사진
‣ 취미, 주소, 생년월일 등 과도한 개인 정보
‣ 아주 오래된 일들 (e.g. 10년 전..)
‣ 희망 연봉
‣ 봉사활동 내역
https://brunch.co.kr/@aria-grande/17
https://brunch.co.kr/@aria-grande/17
1. 프로젝트 소개
2. 구체적으로 한 일과 성과 (증명할 데이터가 있다면 꼭 적기)
3. 사용 기술 나열
이력서
‣ 지양해야 할 포맷팅
https://brunch.co.kr/@aria-grande/18
이력서
‣ 지양해야 할 포맷팅
https://brunch.co.kr/@aria-grande/18
이력서
‣ 지양해야 할 포맷팅
https://brunch.co.kr/@aria-grande/18
이력서
‣ 지양해야 할 포맷팅
https://brunch.co.kr/@aria-grande/18
이력서
‣ 지양해야 할 포맷팅
https://brunch.co.kr/@aria-grande/18
이력서
‣ 지양해야 할 포맷팅
https://brunch.co.kr/@aria-grande/18
이력서
‣ LinkedIn 에 주기적으로 업데이트하자
‣ 물론.. 학생 때에는 연락 안온다. 경력이 쌓이면 오기 시작한다
면접
https://brunch.co.kr/@aria-grande/20
‣ 서류에 적었던 경험/프로젝트에 대한 구체적인 설명이 가능해
야 한다

e.g. 지금의 ‘나'라면 다시 이 프로젝트를 진행할 때, 어떻게 설계할 것인가요?
‣ 프로젝트 진행 시 겪었던 어려움과 이를 해결하기 위해 시도했
던 것들을 미리 정리해서 가면 좋다
이력서 포트폴리오 관련 질문
면접
https://brunch.co.kr/@aria-grande/20
‣ 한국에서는 신입에게 주로 많이 물어본다
‣ 북미권 major IT 회사에서는 신입~경력 관계 없이 물어본다
‣ 자료구조, 알고리즘 (Problem solving) 질문이 일반적

e.g. HashTable이 어떻게 동작하나요?

e.g. BST 에서 특정 노드는 어떻게 찾나요?
‣ 노트에 미리 정리해두고 필요할 때마다 쉽게 찾아볼 수 있도록 하자

- 정의

- 특징/특이사항

- 접근시간

- 사용 상황 구분

기본적인 CS 지식
면접
https://brunch.co.kr/@aria-grande/20
‣ 지원한 팀에서 사용하고 있는 기술, JD의 요구사항에 있는 기술
에 대한 질문을 하곤 한다

e.g. React.js는 어떤 특징이 있나요?

e.g. 웹사이트를 만들어야 하는데 어떤 기술을 사용하면 좋을까요?
‣ 다이어그램을 그려가면서 설명하면 훨씬 있어보이고 면접관 입장에서
도 내가 무슨말을 하는지 더 쉽게 이해함
도메인 지식
면접 태도
https://brunch.co.kr/@aria-grande/20
‣ 모르는 질문이 들어왔다면?
•‘모르겠어요’ 하고 끝 (X)
•기죽고 쭈뼛하게 있는 것보다 왜 이걸 몰랐는지 설명하자
•‘그건 모르지만 비슷하게 이런건 알아요’ 하고 그 쪽으로 화제를 돌리면서 설명하자
‣ 내가 갖고 있는 개발 철학/가치관 공유하자
•개발은 비지니스를 도와주는 도구라서 디자인 패턴도 중요하지만, 비지니스 일정도 고려를 하면서 진행해야 한다
•내가 작성한 코드에 대한 책임감을 가지고 있다
‣ 내가 잘할 수 있는 것에 대해 어필
•협업을 잘할 수 있는 사람임을 어필
•열정적인 사람임을 어필 -> 신입일 때는 다들 이해 할거에요

추천하는 면접 준비 과정
‣ 평소라면?
‣ PS 문제 풀기; 백준OJ, Leetcode, HackerRank, AlgoExport.io
‣ 그룹 스터디 진행 (https://github.com/monkeys-code/save-the-monkey)
‣ 면접이 잡히면?
‣ 채용 담당자에게 어떤 것을 준비해 가야할지 물어보세요
‣ 이력서에 기입한 경험/프로젝트의 try/fail/learn 포인트 정리
‣ PS 문제 복습
‣ 꼭 모의 면접을 하자!
https://brunch.co.kr/@aria-grande/20
면접
‣ 추천하는 면접 준비 과정
•평소 - Leetcode, HackerRank, AlgoExport.io
•면접이 잡히면 - 이력서에 있던 내용은 꼭 다시 숙지하고 가
기, 꼭 모의 면접을 하자!
신입을 뽑긴 하나요?
‣ 공채 뿐만 아니라 수시 채용도 많다
‣ 채용 페이지를 자주 체크하고 주변 네트워킹을 통해서 정보를 빨리 수
집할 수 있도록 합니다
‣ N년 이상의 경험을 요구하고 있지 않다면, 그 말은 신입도 뽑겠다는
의미
‣ 공고를 봤고 관심이 간다면 일단 들이대 봅니다. 적극적인 사람이 더
많은 기회를 얻습니다
‣ LinkedIn jobs, Wanted, Programmers, 학교 온라인 게시판, …
취준생을 위한 공부 키워드
#자료구조 #알고리즘
#재귀 #BFS #DFS #Tree #Stack #Queue #Heap
#SystemDesign
#OOP
3. 취직 했어요.

이젠 뭘 하는거죠?
Junior와 Senior
Junior
‣ 프로젝트 내 작은 기능 구현, 버그 픽스
‣ 주어진 문제를 해결
‣ Development lifecycle에서 한 부분
을 맡아 개발할 수 있는 사람
‣ 코드 작성 >> 리뷰
‣ 열정도 120%! 더 빨리 배우고 성장
할 수 있는 사람
‣ 팀 내 영향을 미치는 사람
Senior
‣ 시스템 디자인, 아키텍팅
‣ 문제를 찾아내고 장기적인 솔루션 제
공
‣ 전반적인 development lifecycle을
리딩 할 수 있는 사람
‣ 주니어 멘토링
‣ 리뷰 >> 코드 작성
‣ 팀, 조직 내 영향을 미치는 사람
Software를 개발하실거에요
개발자의 daily life
‣ 커피 마시기
‣ Stand-up
‣ 미팅
‣ 기획자와 스펙 논의
‣ 디자이너의 시안 공유
‣ 개발 팀 내 기술셋 결정, 시스템 디자인 리뷰 등
‣ 코딩
‣ 문서 읽고 작성
소프트웨어 디자인 패턴과 아키텍쳐
‣ 소프트웨어 개발 생산성, 유지보수성을 높이기 위한 패러다임
‣ 사용하는 언어, 프레임워크 별로 추천하는 개발 패턴들이 있다
‣ 개발 패턴을 공부해서 실제 프로덕에 도입해 볼 수 있음
#FactoryDesignPattern
#PubSub (Publish-Subscribe pattern)
#DDD (Domain Driven Design)
#DI (Dependency Injection) #MSA (Micro Service Architecture)
#CleanArchitecture #BLoC (Business Logic Component)
…
https://en.wikipedia.org/wiki/Software_design_pattern
마지막으로 하고 싶은 말
‣ 내가 하고 싶은 일이 뭘지 생각해보세요. 

다양한 상황 속에서 나를 놓아야, 내가 어떤 사람인지 알아야겠죠?
✓ 사이드 프로젝트, 인턴십
✓ 리더로서의 경험, 팀원으로서의 경험
‣ 커리어에 대한 고민은 계속 하는 것 같아요. 자연스러운 일이에요!
‣ 공부는 정말 끝이 없더라구요. 즐겨야 할 것 같아요!
‣ 주변 사람으로 인해 좋은 기회가 많이 오더라구요
‣ 적극적으로 재밌게 살아보아요 :)
https://brunch.co.kr/@aria-grande
Software engineering is all about solving problems through code

Software engineer가 되기 위한 여정

  • 1.
    Software engineer가 되기위한 여정 오아리
  • 2.
    발표자 소개 ‣ AmazonSoftware engineer @Vancouver ‣ Kakao Mobility Software engineer ‣ Kakao corp. Software engineer ‣ 6년차 개발자
  • 3.
  • 4.
    진로 고민 ‣ 개발자로취직 ‣ 대학원에 진학
  • 5.
    어떻게 개발자가 될수 있을까요? 1. 나는 개발자가 되고 싶은 걸까요? 2. 개발자로 취업을 준비합니다 3. 개발자로 취직을 합니다. 회사에서 열심히 성장합니다.
  • 6.
  • 7.
    개발자는 너무 광범위한용어 ‣ Software engineer ‣ Embedded system engineer ‣ DevOps engineer ‣ Data engineer ‣ Security engineer ‣ QA (Quality Assurance) engineer ‣ Network engineer ‣ System engineer
  • 8.
    Software engineer ‣ IT기술을 이용해서 비지니스 플랜을 실현시켜 주는 사람 ‣ 흔히들 말하는 서버 개발자, 앱 개발자, 웹 개발자 등 ‣ 소프트웨어 개발, 유지보수 및 관리 ‣ 서비스 장애에 책임을 질 수 있는 사람
  • 9.
    다양한 분야 ‣ Front-end ‣Back-end ‣ Full-stack ‣ Mobile application ‣ Window/MacOS application https://www.linkedin.com/business/learning/blog/productivity-tips/the-american-city-that-pays-software-engineers-the-most
  • 10.
    내가 좋은 영향을미치고 싶은 분야는 어디인가요? 재미있는 걸 먼저 찾아보세요!
  • 11.
  • 12.
    필요한 역량 -논리로 무장 ‣ 우리가 하는 일은 problem solving ‣ 문제를 어떻게 해결할지 작은 조각들로 나눌 수 있어야 한다 ‣ Critical 하게 사고해서 문제에 대한 해결 방법을 코드로 작성해야 한다 ‣ 서비스를 개발하다 보면 커버 되지 않은 edge case가 있기 마련, 차분 하게 한 번 더 생각해봐야 한다 ‣ 손이 머리보다 빠르지 말 것
  • 13.
    필요한 역량 -도전 정신 ‣ 끊임 없이 새로운 일의 연속
 “웹 사이트 만들어 주세요” -> “이번엔 API 서버 만들어 주세요” ‣ 점점 복잡해지는 문제의 난이도
 “택시만 잡히면 좋겠다” -> “택시가 빨리 잡히고 결제 까지 되면 좋겠다” ‣ 끊임없이 나오는 새로운 기술 ‣ 도전을 즐기지 않는다면 금방 도태됨
  • 14.
    필요한 역량 -빠른 습득력 ‣ 하루가 멀다하고 쏟아지는 새로운 기술 ‣ 변화에 빠른 습득력이 필요
  • 15.
    어떻게 공부해야 할까? ‣시작은 한가지 기술에 대해 깊이 팔 것 ‣ 공식 document를 먼저 읽어보고 찾는 습관 ‣ 새로운 기술은 그 기술의 철학과 신념, 아키텍쳐를 먼저 이해하 려고 해야 한다 ‣ Googling!
 검색 키워드에 따라 나오는 결과페이지가 다르다
 키워드를 어떻게 검색해야할 지 모르겠다면 공식 document를 참고하거나 주변 개발자에게 키워드를 물어보자
  • 16.
    개발자의 커뮤니케이션 스킬 ‣정말 중요합니다 ‣ 혼자 개발하지 않아요. 결국은 팀워크 ‣ 대부분의 요구사항은 일반 사용자나 기획자 등 비 개발자로 부터 온다 ‣ 서비스 기획, 사업 기획, 디자이너 등 비 개발자 직군 에게 ‘얼마나 걸릴 지’, ‘왜 안 되는지’, ’시스템 구성을 어렵지 않게 설명’ 할 수 있어야 한다 ‣ 모든 문제는 명확하게 정의하고 지금 우리에게 필요한게 뭔지, 장기적으 로 생각했을 때 어떤게 필요할 지 잘 논의하고 정리할 수 있어야 한다
  • 17.
    2. 개발 직군취준생이 됐다
  • 18.
    이력서 ‣ 분량은 A4기준 1장~2장 ‣ 묻기 전까진 넣지 않아도 될 것 ‣ 사진 ‣ 취미, 주소, 생년월일 등 과도한 개인 정보 ‣ 아주 오래된 일들 (e.g. 10년 전..) ‣ 희망 연봉 ‣ 봉사활동 내역 https://brunch.co.kr/@aria-grande/17
  • 19.
    https://brunch.co.kr/@aria-grande/17 1. 프로젝트 소개 2.구체적으로 한 일과 성과 (증명할 데이터가 있다면 꼭 적기) 3. 사용 기술 나열
  • 20.
    이력서 ‣ 지양해야 할포맷팅 https://brunch.co.kr/@aria-grande/18
  • 21.
    이력서 ‣ 지양해야 할포맷팅 https://brunch.co.kr/@aria-grande/18
  • 22.
    이력서 ‣ 지양해야 할포맷팅 https://brunch.co.kr/@aria-grande/18
  • 23.
    이력서 ‣ 지양해야 할포맷팅 https://brunch.co.kr/@aria-grande/18
  • 24.
    이력서 ‣ 지양해야 할포맷팅 https://brunch.co.kr/@aria-grande/18
  • 25.
    이력서 ‣ 지양해야 할포맷팅 https://brunch.co.kr/@aria-grande/18
  • 26.
    이력서 ‣ LinkedIn 에주기적으로 업데이트하자 ‣ 물론.. 학생 때에는 연락 안온다. 경력이 쌓이면 오기 시작한다
  • 27.
    면접 https://brunch.co.kr/@aria-grande/20 ‣ 서류에 적었던경험/프로젝트에 대한 구체적인 설명이 가능해 야 한다
 e.g. 지금의 ‘나'라면 다시 이 프로젝트를 진행할 때, 어떻게 설계할 것인가요? ‣ 프로젝트 진행 시 겪었던 어려움과 이를 해결하기 위해 시도했 던 것들을 미리 정리해서 가면 좋다 이력서 포트폴리오 관련 질문
  • 28.
    면접 https://brunch.co.kr/@aria-grande/20 ‣ 한국에서는 신입에게주로 많이 물어본다 ‣ 북미권 major IT 회사에서는 신입~경력 관계 없이 물어본다 ‣ 자료구조, 알고리즘 (Problem solving) 질문이 일반적
 e.g. HashTable이 어떻게 동작하나요?
 e.g. BST 에서 특정 노드는 어떻게 찾나요? ‣ 노트에 미리 정리해두고 필요할 때마다 쉽게 찾아볼 수 있도록 하자
 - 정의
 - 특징/특이사항
 - 접근시간
 - 사용 상황 구분
 기본적인 CS 지식
  • 29.
    면접 https://brunch.co.kr/@aria-grande/20 ‣ 지원한 팀에서사용하고 있는 기술, JD의 요구사항에 있는 기술 에 대한 질문을 하곤 한다
 e.g. React.js는 어떤 특징이 있나요?
 e.g. 웹사이트를 만들어야 하는데 어떤 기술을 사용하면 좋을까요? ‣ 다이어그램을 그려가면서 설명하면 훨씬 있어보이고 면접관 입장에서 도 내가 무슨말을 하는지 더 쉽게 이해함 도메인 지식
  • 30.
    면접 태도 https://brunch.co.kr/@aria-grande/20 ‣ 모르는질문이 들어왔다면? •‘모르겠어요’ 하고 끝 (X) •기죽고 쭈뼛하게 있는 것보다 왜 이걸 몰랐는지 설명하자 •‘그건 모르지만 비슷하게 이런건 알아요’ 하고 그 쪽으로 화제를 돌리면서 설명하자 ‣ 내가 갖고 있는 개발 철학/가치관 공유하자 •개발은 비지니스를 도와주는 도구라서 디자인 패턴도 중요하지만, 비지니스 일정도 고려를 하면서 진행해야 한다 •내가 작성한 코드에 대한 책임감을 가지고 있다 ‣ 내가 잘할 수 있는 것에 대해 어필 •협업을 잘할 수 있는 사람임을 어필 •열정적인 사람임을 어필 -> 신입일 때는 다들 이해 할거에요

  • 31.
    추천하는 면접 준비과정 ‣ 평소라면? ‣ PS 문제 풀기; 백준OJ, Leetcode, HackerRank, AlgoExport.io ‣ 그룹 스터디 진행 (https://github.com/monkeys-code/save-the-monkey) ‣ 면접이 잡히면? ‣ 채용 담당자에게 어떤 것을 준비해 가야할지 물어보세요 ‣ 이력서에 기입한 경험/프로젝트의 try/fail/learn 포인트 정리 ‣ PS 문제 복습 ‣ 꼭 모의 면접을 하자! https://brunch.co.kr/@aria-grande/20
  • 32.
    면접 ‣ 추천하는 면접준비 과정 •평소 - Leetcode, HackerRank, AlgoExport.io •면접이 잡히면 - 이력서에 있던 내용은 꼭 다시 숙지하고 가 기, 꼭 모의 면접을 하자!
  • 33.
    신입을 뽑긴 하나요? ‣공채 뿐만 아니라 수시 채용도 많다 ‣ 채용 페이지를 자주 체크하고 주변 네트워킹을 통해서 정보를 빨리 수 집할 수 있도록 합니다 ‣ N년 이상의 경험을 요구하고 있지 않다면, 그 말은 신입도 뽑겠다는 의미 ‣ 공고를 봤고 관심이 간다면 일단 들이대 봅니다. 적극적인 사람이 더 많은 기회를 얻습니다 ‣ LinkedIn jobs, Wanted, Programmers, 학교 온라인 게시판, …
  • 34.
    취준생을 위한 공부키워드 #자료구조 #알고리즘 #재귀 #BFS #DFS #Tree #Stack #Queue #Heap #SystemDesign #OOP
  • 35.
  • 36.
    Junior와 Senior Junior ‣ 프로젝트내 작은 기능 구현, 버그 픽스 ‣ 주어진 문제를 해결 ‣ Development lifecycle에서 한 부분 을 맡아 개발할 수 있는 사람 ‣ 코드 작성 >> 리뷰 ‣ 열정도 120%! 더 빨리 배우고 성장 할 수 있는 사람 ‣ 팀 내 영향을 미치는 사람 Senior ‣ 시스템 디자인, 아키텍팅 ‣ 문제를 찾아내고 장기적인 솔루션 제 공 ‣ 전반적인 development lifecycle을 리딩 할 수 있는 사람 ‣ 주니어 멘토링 ‣ 리뷰 >> 코드 작성 ‣ 팀, 조직 내 영향을 미치는 사람
  • 37.
  • 38.
    개발자의 daily life ‣커피 마시기 ‣ Stand-up ‣ 미팅 ‣ 기획자와 스펙 논의 ‣ 디자이너의 시안 공유 ‣ 개발 팀 내 기술셋 결정, 시스템 디자인 리뷰 등 ‣ 코딩 ‣ 문서 읽고 작성
  • 39.
    소프트웨어 디자인 패턴과아키텍쳐 ‣ 소프트웨어 개발 생산성, 유지보수성을 높이기 위한 패러다임 ‣ 사용하는 언어, 프레임워크 별로 추천하는 개발 패턴들이 있다 ‣ 개발 패턴을 공부해서 실제 프로덕에 도입해 볼 수 있음 #FactoryDesignPattern #PubSub (Publish-Subscribe pattern) #DDD (Domain Driven Design) #DI (Dependency Injection) #MSA (Micro Service Architecture) #CleanArchitecture #BLoC (Business Logic Component) … https://en.wikipedia.org/wiki/Software_design_pattern
  • 40.
    마지막으로 하고 싶은말 ‣ 내가 하고 싶은 일이 뭘지 생각해보세요. 
 다양한 상황 속에서 나를 놓아야, 내가 어떤 사람인지 알아야겠죠? ✓ 사이드 프로젝트, 인턴십 ✓ 리더로서의 경험, 팀원으로서의 경험 ‣ 커리어에 대한 고민은 계속 하는 것 같아요. 자연스러운 일이에요! ‣ 공부는 정말 끝이 없더라구요. 즐겨야 할 것 같아요! ‣ 주변 사람으로 인해 좋은 기회가 많이 오더라구요 ‣ 적극적으로 재밌게 살아보아요 :)
  • 41.
    https://brunch.co.kr/@aria-grande Software engineering isall about solving problems through code