Better Code, Better Life

커리어 스킬(John Sonmez) 리뷰 - 3-1부 본문

Book Review/커리어 스킬

커리어 스킬(John Sonmez) 리뷰 - 3-1부

심재훈 2019. 7. 11. 13:57

3부 소프트웨어 개발에 대해 알아야 할 것 - 1

21장 프로그래밍 언어 개요

언어마다 특징이 있다. 대학에서는 C, 자바, 파이썬 순으로 많이 쓰이는 것 같다.

전공자가 하나만 배운다면 보통 C를 배우고 그 다음으로 자바를 배우는 것 같다. 비전공자는 파이썬을 배우는 추세다.

C는 포인터를 다룰 수 있어 직접 메모리에 접근이 가능하다. 코드 길이가 길지만 속도가 빠르다. 메모리 관리도 용이해서 임베디드, IoT를 포함한 저사양PC에 많이 쓰인다.

자바는 대규모 프로젝트에 필수적인 객체지향언어 개념을 배우기 좋다. 클래스를 기본으로 프로그래밍한다. 객체라는 말이 정말 추상적인데 영어로는 object다. 실제 사물을 코드로 표현하고 사물간 기능, 관계를 엮어 프로그래밍하는 것이 객체지향 프로그래밍이다. 만약 사람이라는 객체를 추상화해 코드로 만들었다면 사람에 속하는 직원, 학생, 선생님을 파생시켜 코드를 재사용할 수 있게 된다. 이런 객체지향언어를 배우는 것은 좋지만, 처음 컴퓨터공학을 익히는데 있어 더 복잡하게 느껴질 수 있다.

파이썬은 정말 간단하다. 그래서 처음 프로그래밍을 배우는 분들에게 추천한다. 메모리를 다루는 포인터는 숨겨져 있고 자료형 또한 직접 선언 안해줘도 된다. 그래서 프로그래밍에 있어 제일 공통적이고 핵심적인 조건문, 반복문을 익히기에 적합한 언어이다. 코드 길이가 제일 짧은 편으로 빠르게 아이디어를 구현하고자 할 때도 적합하다. 속도나 메모리 또한 최근에는 최적화가 잘 이루어지고 있기 때문에 여러모로 장점이 많은 언어다. 배우기 좋은 사이트

자바스크립트도 웹에서 제일 중요하게 다루는 언어이고 파이썬만큼 쉽다고 들어 배워볼만한 언어다.

 

22장 ~ 28장

22장부터 28장은 개발의 다양한 분야를 간단하게 설명하고 있다. 이를 읽음으로서 모르는 것을 알게 된다. 좀 더 알고 싶으면 구글링을 통해 더 자세히 알아볼 수 있다.

22장 웹 개발이란 무엇인가

HTML, CSS, JavaScript에 대해 설명하고 있다. 모바일, IoT 추세에 따라 웹의 중요성이 나날히 늘어나고 있다. 웹은 PC든 모바일과 같은 다양한 기기와 Windows, MacOS, Linux 같은 다양한 OS에서 접근이 쉽기 때문에 앞으로도 미래가 밝을거라 생각한다. 웹 개발은 기기간 통신, 네트워크를 배울 수 있어 여러모로 쓸모가 많다.

 

23장 모바일 개발

안드로이드, iOS개발에 대해서 배웠고 이런 네이티브앱과 모바일 웹앱의 차이를 알게 됐다. 크로스 플랫폼이라고 하나의 프레임워크로 안드로이드, iOS앱 전부를 개발 할 수 있는 개념 또한 알게 됐다.

 

24장 백엔드 개발

웹 개발은 크게 프론트엔드와 백엔드로 나뉘어진다. 이는 서비스 관점에서 보면 이해가 잘 간다. 고객에게 개발자가 서비스를 제공해 주는 것이라고 하면, 여기서 고객에게 제일 맡다은 부분을 프론트엔드로 볼 수 있다. 반면에 백엔드는 개발자와 제일 맡다은 부분이라고 볼 수 있다. 서버쪽에서 각 비지니스 로직에 속하는 부분을 프로그래밍하는 것이 백엔드로 볼 수 있다. 프론트엔드는 디자인적 요소가 많이 들어가고 백엔드는 알고리즘으로 원하는 문제를 풀어나간다고도 볼 수 있다. 요즘에는 이 둘간의 경계가 사라지는 추세다.

 

25장 비디오 게임 개발

우리나라로 치면 3N(넥슨, 넷마블, 엔씨소프트) 기업에 들어가고 싶으면 배워야 하는 개발 기술이다. 개인적으로 도메인이 흥미로울 수록 사람들이 몰려 열정페이가 될 가능성이 높다고 생각한다. 패키지 게임이 아니라면 수익 모델이 꾸미기(아바타)나 랜덤박스, 정액제인데 이 때문에 원하는 게임을 만들지 못할 가능성이 높다. 완벽하고 재밌는 게임보다 돈이 되는 게임을 만들어야 하기 때문에 회의감이 들 수 있다.

 

26장 DBA와 데브옵스

데이터베이스와 데브옵스에 대해서 알려줬다. 데브옵스는 27장 내용과 연관이 깊다. 애자일CI/CD 내용을 참고하면 좋다.

27장 소프트웨어 개발 방법론

폭포수 개발 방법론과 애자일 개발 방법론을 설명한다. 애자일 중 스크럼에 대해 비중있게 다뤘다. 요즘 자료들을 보면 애자일 개발 방법론이 폭포수 개발 방법론보다 좋은 점만을 나열하는데, 둘 간의 장단점이 있다. 이에 대해서는 Code Complete2 의 Chapter 3.참고하면 좋다.

Code Complete2 Chp 3.2에서

28장 테스트와 QA 기초

테스트는 자주 변경하는 프로그램에 있어서 매우 중요하다. 그래서 애자일 팀의 테스트 방식도 따로 언급하는 것 같다. 프로그램을 업데이트 하다보면 내가 변경한 코드가 기존 기능을 망가뜨리는 경우가 있다. 반드시 통과해야하는 테스트 코드를 작성하면 이를 방지할 수 있다. 테스트의 개념과 종류를 설명해주고 있어서 매우 도움이 됐다. 29장의 TDD(Test Driven Development)와도 연관이 깊은 장이다.

Comments