1년 반 독학 중인 비전공자가 추천하는 개발 책 10권

Yongjun Park·2022년 2월 1일
26
post-thumbnail

당연히 주관적인 기준에서 책을 선정했습니다

책을 소개하기에 앞서, 개발이라는 카테고리가 분야와 난이도 면에서 천차만별이기 때문에 저의 현재 상황을 먼저 말씀드리는 게 독자님들 이해에 도움될 것이라 생각합니다.

  1. 저는 현재 군복무 중이며, 코딩을 개인 노트북으로 할 수 없는 상황입니다. 따라서 이론 위주의 공부를 선호하는 경향이 있으니 감안해주시기 바랍니다.
  2. 저는 백엔드와 데이터엔지니어링 분야로 취업하고자 하는 사람이기에, 특히 프론트엔드 분야를 염두에 두신 분이라면 핀트가 다를 수 있습니다.
  3. 원래 저는 정치외교학과 학생입니다. 그래도 고등학교 당시 문과 수학은 좋아했습니다. 개발을 본격적으로 진로로 삼아 독학하기 시작한 게 1년 반 가량 되었습니다. 1년 반이 당연히 길지는 않지만, 완전 초심자에서는 조금 벗어났다고 할 수 있기에 저와 비슷한 상황에 있는 분들과 공유하고자 하는 마음으로 작성해보았습니다.

이 글에 등장하는 책은 모두 제가 읽고 있거나 이미 읽은 책입니다. 읽었던 시간 순서에 따라 배치하였으며, 난이도 순이라 생각하셔도 무방합니다.


1. 남궁성, <C언어의 정석>


C언어의 정석 - YES24

  • 코딩과의 첫 만남을 Python으로 정하면 쉽게 갈 수 있을지언정 깊게 갈 수 없다는 일념으로, 근본있는 C를 일단 확실히 떼는 걸 목표삼았다.
  • 당시 시판되는 여러 C언어 책들을 구매해서 보았지만, 이 책만큼 명쾌하게 나와있는 책은 없었다. 개념원리 느낌. (그렇다고 수학의 정석만큼 쓸데없이 어렵고 엄밀하진 않음.) 특히 포인터 파트가 묘미.

2. 윤성우, <윤성우의 열혈 C++ 프로그래밍>


윤성우의 열혈 C++ 프로그래밍 - YES24

  • C 다 읽었다고 바로 C++ 읽기 시작하는 미친 짓은 하지 않도록 하자. C와 C++은 기본적으로 유사하기 때문에 C로 여러 프로그래밍 예제를 습득해본 사람이람녀 인터넷으로 알음알음 공부할 수 있다.
  • C++을 기본적으로 할 줄 안 뒤에 이 책을 읽으면, 일단 굉장히 빨리 읽힐 뿐 아니라 부족했던 부분이 책으로 보완되는, 아주 진귀한 경험을 몸소 체험할 수 있을 것이다.

2.5. Python에 대해…

  • Python은 책으로 공부할 게 못 된다. 입문 단계의 Python은 원리 이해보다 단순 키워드 암기가 상당히 많은 부분을 차지하기 때문에 책으로 읽다가는 금방 지친다.
  • 인터넷 보고 대충 만들어보면서 배우는 게 가장 빠르다. (그렇다고 무지성으로 따라치는 짓은 하지 말자.) 만약 대학생이라면 자신의 학교에서 열리는 Python 교양을 듣는 것이 최선의 방법.

성향에 따라 C보다는 Python으로 개발을 시작하는 것이 맞는 사람도 있습니다. 결국에는 둘 다 해야되기 때문에 둘 다 간단히 경험해보고 정하는 것도 방법이겠지만, 정 여의치 않다면… 자신이 원리를 이해하는 것을 좋아하는 타입이라면 C, 일단 도구를 가지고 크롤러처럼 뭔가 실용적인 걸 만들어내보고 싶은 사람이라면 Python을 추천합니다.

3. 천인국, 공용해, 하상호, <C언어로 쉽게 풀어쓴 자료구조>


C언어로 쉽게 풀어쓴 자료구조 - YES24

  • 초심자 입장에서 자료구조 책은 추상적이라서 읽어도 까먹는 게 반 이상이다. 그래도 읽어두자. 그런게 있는 줄도 몰랐던 사람과, 키워드나 작동 방식을 대충이라도 아는 사람은 천지차이다.
  • 이 책이 특별히 좋다거나 하는 건 아니지만, C를 아는 사람이 자료구조를 처음 공부하기에 꽤 수월한 책이어서 추천한다. 개인적인 생각이지만, 알고리즘은 수도코드와 비슷한 Python이 학습에 좋지만 자료구조는 내부의 메모리나 포인터 단계까지 확실하게 나오는 C가 도움된다 생각한다.

4. 남궁성, <Java의 정석>


Java의 정석 - YES24

  • 또 남궁성님 책이다. 그만큼 강력하게 추천한다는 의미기도 하다. 남궁성님은 재미를 조금 줄이면서라도 확실한 원리 이해를 보장한다.
  • 실제로 언어가 생긴 순서도 C → C++ → Java인데, 그 순서대로 공부하다보면 이전 언어의 아쉬웠던 점, 그리고 이를 보완한 다음 세대 언어의 특성을 직접 체감할 수 있어서 개발 세계에 총체적으로 빠져들 수 있다.

입문자에게, Java냐.. Python이냐.. 그것이 문제로다.. | 블로그 | 딩그르르

5. 찰스 펫졸드, <CODE>


CODE 코드 - YES24

  • 쉬운 부분도 있지만 어려운 부분도 있는 책. 모든 개발 서적이 마찬가지겠지만 1회독에 확실히 이해하려 할 필요 없다. 특히 이 책은 어려운 부분을 대충 무슨 말을 하려는지만 이해하고 넘어가도 한번 다 읽는데 문제는 없다.
  • 하지만 이 책보다 쉽고 재미있게 컴퓨터 구조 전공(에 가까운) 지식을 알려줄 수 있는 책은 결코 없을 것이라 자부한다. 전기회로 쪽은 여러번 읽어서 개념에 익숙해지면 충분히 익힐 수 있다.

6. 박상길, <파이썬 알고리즘 인터뷰>


파이썬 알고리즘 인터뷰 - YES24

  • 코딩 테스트에 당장 급한 사람이 아니라면 이 책으로 코딩 테스트도 준비하고, 자료구조&알고리즘 공부도 하고, 개발 면접 준비도 하는 1석 3조의 효과를 누릴 수 있다. “종만북”에 도전하려 했으나 전공생조차 어렵다는 평이 너무 많아 과감히 포기하고 골랐던 책인데, 매우 만족했다.
  • 사실 책 없이도 백준 단계별로 풀어보기에서 어느 수준까지는 풀 수 있는데, 복잡도 기준이 조금 더 빡세지거나 자료구조나 알고리즘을 본격적으로 활용해야 하는 문제를 맞닥뜨리면 벙찐다. 그 정도 수준에서 막힌 저를 포함한 우리 코테 뉴비들에게 추천한다.

7. 존 손메즈, <커리어 스킬>


커리어 스킬 - YES24

  • 결국엔 다들 취업할 생각 아닌가?
  • 기본적인 자세에 대해서만 언급하는 다른 자기계발서와 달리 실용적인 팁을 아주 구체적인 상황과 곁들여 제공한다. 바로 책에 나온대로 행동하진 않더라도 알아둬서 안 좋을 거 없는 지식들이다. (오히려 모르면 손해본다.)

8. 전공서적 1. 컴퓨터 시스템(CS:APP)


컴퓨터 시스템 - YES24

  • 현재 CS:APP(컴퓨터 시스템 책의 약칭)를 1회독한 상태인데, 바로 공룡책(운영체제 책의 약칭)을 읽다보니 글을 이해하는 건지 그냥 따라가는건지 모르는 상황이 종종 발생해서 일단 CS:APP부터 어느정도 익히기로 했다.
  • 특히, 비전공자 입장에서 CS:APP를 십분 즐기기 위해서는 뒤의 연습문제도 연습문제겠지만 무엇보다 Lab 과제를 시간 들여 다 풀어봐야 하지 않을까 하는 생각이다.
  • (22/02/01 추가) 2회독을 해보니 완벽히는 아니어도 더 상세한 부분을 이해할 수 있게 되었다. 틈날 때 연습문제를 답과 함께 풀어봐야겠다.

9. 전공서적 2. 컴퓨터 네트워킹: 하향식 접근


컴퓨터 네트워킹 하향식 접근 - YES24

  • 다른 컴퓨터 네트워크 서적과 달리 하향식 접근이라는 점에서 차별화되었다. OSI 7 Layer에서 특히 컴퓨터 공학에서 중요하게 다뤄지는 애플리케이션 계층 -> 전송 계층(TCP, UDP) -> 네트워크 계층(IP, 라우터) -> 데이터링크 계층(스위치) 순으로 다루기 때문에 도입부가 매우 재미있다.
  • 후반부에는 알고리즘이나 포워딩 기법이 다수 등장하는데, 위의 파이썬 알고리즘 인터뷰의 내용으로 충분히 커버 가능하다.

10. 전공서적 3. 운영체제(공룡책) - 읽는 중...


운영체제 - YES24

  • 보통 대학에서 공부할 때는 해당 서적의 원서가 주로 쓰이지만, 독학하는 입장에서 번역본이 그나마 낫다. (하지만 영어를 잘 한다면 반드시 원서로 읽기를 추천한다… 읽는 중인데 번역이 그렇게 잘 된 편은 아니다.)

마치며

  • 리눅스나 HTML&CSS, JavaScript는 굳이 책으로 공부하지 않았다.

  • 원래 개발이라는게 직접 코드로 부딪혀본 뒤에 책을 읽는게 훨씬 도움 많이 되고, C나 C++, 전공지식 등과 달리 리눅스, JavaScript, Python 등은 책으로 시작해서는 오히려 막대한 암기량에 막혀 코딩에 대한 흥미를 잃어버릴 수도 있으니 만약 읽어야 된다면 주의하시길 바란다...

  •  추천한 거지, 책 읽어서 공부하라는 소리가 아니라는 말은 다 알거라고 생각한다. 

  • 단순히 예제를 따라치는 수준을 넘어서, 비록 예제보다 간단하더라도, 아무에게도 쓸모없는 하찮은 것이더라도 직접 만들고 실행해보고, 자잘한 버그를 고치는데 반나절을 써보고 해야 한다. 그러지 않으면 결코 언어나 개발 방법에 익숙해질 수 없다. 사이드 프로젝트를 하면 더 좋고, 팀프로젝트르 하면 더더욱 좋다. 코드로 남에게 도움을 줄 수 있는 일이라면 훨씬 좋다.

profile
추상화되었던 기술을 밑단까지 이해했을 때의 쾌감을 잊지 못합니다

2개의 댓글

comment-user-thumbnail
2022년 9월 29일

진짜 큰 도움 되었습니다 고맙습니다 ㅎㅎ

답글 달기
comment-user-thumbnail
2023년 3월 8일

당시 시판되는 여러 C언어 책들을 구매해서 보았지만, 이 책만큼 명쾌하게 나와있는 책은 없었다.

혹시 어떤 C 서적을 읽어 보셨는지 여쭤봐도 될까요? 그리고 C언어의 정석 은 오개념이 많은 서적인데 시판되는 여러 C 책을 읽어보신 박용준님께서 굳이 Bible 이라 불릴만한 서적들(TCPL, KNK, CARM, Modern C) 을 보류하고 위 책을 추천하신 특별한 이유가 있으실까요?

답글 달기