저는 대학에서 전산을 전공하지 않았기 때문에 미국에서 소프트웨어 엔지니어로 취업 준비를 하면서 개인적으로 따로 프로그래밍 공부를 하고 전산학 공부를 해야 했습니다. 소프트웨어 엔지니어로 테크니컬 인터뷰를 보는데 필수적인 알고리즘을 수강하지도 않았고 데이터 구조론은 거의 10년 전에 들은 것이라서 머리 속에 남아 있는 것이 거의 없었습니다. 그리고 외도해서 경영학 공부를 한다고 프로그램 세계와는 거의 4년 정도 떨어져 있다보니 제가 다시 소프트웨어 프로그래밍을 할 수 있을지도 의문이 들었습니다.

아무튼 되든 안되든 예일에 와서 전산학 수업을 들으면서 프로그래밍을 다시 시작해보게 되었습니다. 사람의 뇌라는 것이 참 신기한 것 같습니다. 손을 놓은지 4년이나 지났는데 이상하게 예전에 배웠던 것들이 조금씩 기억이 나고 시간은 좀 걸리지만 책을 찾아보면서 프로그래밍을 다시 할 수 있다는 것을 깨닫게 되었습니다. 사실 이와 비슷한 경험을 한 것은 몇가지 있습니다. 고등학교와 대학교 때 농구를 좋아해서 농구장에서 시간을 많이 보냈는데 거의 5년이 지나서 다시 농구를 해보니 체력은 딸리지만 몸이 기억해서 그 때 자주 쓰던 여러가지 동작들을 할 수가 있었습니다. 예전에 탁구를 좋아해서 학교에서 탁구 수업을 듣고 또 탁구장을 몇 개월동안 다니면서 열심히 배웠습니다. 미국에 와서 탁구 칠 일이 없어 몇 년동안 탁구를 치질 않았는데 2년 전인가 회사에서 탁구 대회가 열렸는데 한명씩 제치다 보니 우승까지 할 수 있었습니다. 그때 느낀 것이 몇 년동안 탁구를 치질 않아도 몸이 예전에 연습한 것을 기억하고 있는 것을 알 수 있었습니다.

이런 일련의 경험들은 저에게 삶에 대한 태도를 다시 일깨워 주게 됩니다. 지금 하는 것이 재미가 있고 또 열심히 한다면 나중에 반드시 도움이 되리라는 것입니다. 중간에 다른 많은 일들이 생겨서 중단할 수도 있지만 지금 흘린 땀들은 나중에 다시 이 일에 도전하게 되면 처음 도전하는 것보다 훨씬 빠르게 성장하고 또 다음 단계로 올라갈 수 있게 해주리라고 믿습니다.

저는 월요일에서 금요일은 거의 매일을 프로그래밍 코드를 보면서 삽니다. 하지만 예전에 배웠던 C/C++, Java 등의 문법과 제가 따로 공부했던 알고리즘, 데이터 구조를 다 기억하고 있냐고 물어보시면 제 답은 NO입니다. 매일 쓰는 프로그래밍 언어가 아니다보니 예전에 공부했던 것을 대부분 잊어버렸고, 지금 제일 많이 쓰는 어셈블리어와 C언어도 제가 자주 쓰는 부분이 아니면 책을 다시 찾아봐야 합니다. 그리고 지금은 다른 일을 찾는 것이 아니니 그것을 따로 공부할 이유도 없어서 예전 잡 인터뷰 때 달달 외웠던 지식들은 거의 사라지고 희미하게 남아있습니다.

하지만 한가지 믿는 것은 그 때 열심히 노력하고 공부했으니 분명히 다시 공부한다면 그 때 보다 훨씬 빠르게 이해하고 다시 그 레벨로 올라갈 수 있으리라고 생각합니다. 운동을 안 하게 되면 근육은 약해지지만 다시 꾸준히 예전에 하던 운동을 하게 되면 금방 익숙해지고 빠르게 예전 레벨로 올라갈 수 있는 것처럼요.

아무튼 여기에 몇가지 제가 전산학 및 프로그래밍을 공부했던 책과 유용한 링크들을 올려놓으려 합니다. 제가 좋아하는 책은 우선 두껍지 않고 그림이 많은 책입니다. 컴퓨터 관련 책이 두꺼운 경우가 많은데 이것을 다 읽고 이해하려면 시간이 무한대로 들어가고 읽는 사람도 많이 지치게 됩니다. 그리고 사실 그 모든 내용이 다 필요하지도 않습니다. 제일 좋은 책은 이해하기 쉽게 그리고 간단하게 기본 이론을 정리해 주는 책입니다. 기본이 바로 선다면 나머지 관심 분야는 자신이 인터넷이나 다른 책을 통해서 찾아보면 됩니다.

어느 정도 프로그래밍 기본이 되어 있지만 미국에서 소프트웨어 엔지니어로 취업하시려고 하시면 반드시 원서로 관련 프로그래밍 언어를 다시 공부해 보시기 바랍니다. 개념을 알고 있다고 해도 이것을 영어로 표현하는 것은 다른 영역의 문제입니다.

여기 있는 책의 사진을 클릭하시면 아마존에서 더 많은 설명과 리뷰를 보실 수 있습니다.

1. C 프로그래밍


C Programming in Easy Steps, Mike McGrath, 4th Edition, In Easy Steps
: 이 책은 C언어를 다시 공부하면서 아마존에서 찾게 된 책입니다. 책도 얇고 그림이 많아서 C언어의 전체적이고 기본적인 문법을 정리해 볼 필요가 있을 때 이 책은 부담없이 읽을 수 있는 좋은 책인 것 같습니다. 저도 이 책을 읽고 C언어를 복습하고 잊고 있었던 많은 부분들에 대한 기억을 되살리게 되었습니다. C++를 공부하기 전에 C를 잘 정리해 볼 수 있는 좋은 책입니다.

 

2. C++ 프로그래밍


C++ Programming in Easy Steps, Mike McGrath, 4th Edition, In Easy Steps
: 이 책도 얇고 그림이 많아서 부담없이 C++에 대해서 공부할 수 있는 책입니다. 위의 C언어 책과 같이 같은 저자가 썼는데 그림도 많고 이해하기 쉽게 잘 만든 책입니다. 제가 생각하는 좋은 책은 핵심을 간단하게 그리고 이해하기 쉽게 쓴 책입니다. 두꺼운 책은 먼지만 쌓입니다.

Explorer C++: http://zoo.cs.yale.edu/classes/cs427/2012a/chapters.html
: 이 책은 Ebook이고 Alice E. Fischer이라는 뉴헤이븐 대학 교수님이 쓴 책입니다. 예일에서 Object Objected Programming 수업을 들을 때 썼던 책인데 조금 어렵지만 상당히 잘 만든 책입니다. 이 책을 공부하면서 C++ 문법과 객체지향 개념에 대해서 잘 공부할 수 있어서 잡 인터뷰에 많은 도움을 받았던 책입니다. 양이 적지는 않지만 한 학기 정도 계획을 세우고 읽는다면 객체 지향 프로그래밍을 하는데 많은 도움을 줄 수 있을 것입니다. 그리고 프로그래밍을 하면서 많이 헷갈릴 수 있는 parameter passing, l-value & r-value, static class, copy constructor, derivation, inheritance, polymorphism, virtual function 등 꼭 필요한 지식들을 잘 이해할 수 있을 것입니다.

 

3. Data Structure & Algorithm


Data Structures and Algorithms Made Easy: Data Structure and Algorithmic Puzzles, Second Edition
: 전산을 학교에서 전공했다면 교과서를 통해서 전산학의 핵심인 데이터구조와 알고리즘을 공부했겠지만 학부 때 전산학 전공자가 아니라면 그 과목들을 따로 공부하기가 정말 난감합니다. 원서로 된 교과서를 들고 처음부터 끝까지 본다는 것은 공부를 오랫동안 해왔던 저로서도 사실 너무 힘든 일입니다. 그것보다는 쉽게 그리고 핵심을 잘 정리해 놓은 이 책을 보는 것이 낫지 않을까 생각해봅니다. 아마존의 리뷰를 보더라도 이 책이 얼마나 잘 씌여졌는지 알 수 있습니다. 이 책을 통해서 데이터구조와 알고리즘을 정리해 보시기 바랍니다.

 

4. Programming Interview

제 개인적 의견으로는 다음 두 책만 충분히 공부하고 다 풀어보아도 프로그래밍 인터뷰  준비는 80% 준비된다고 생각합니다. 일반적인 IT기업의 프로그래밍 인터뷰의 많은 문제들이 이 책의 범위에서 나오고 또 조금 더 변형되어서 나오는 것 같습니다.


Programming Interviews Exposed: Secrets to Landing Your Next Job

 


Cracking the Coding Interview: 150 Programming Questions and Solutions

위의 책들을 열심히 파셔서 프로그래밍 인터뷰에서 좋은 성과를 얻으셨으면 합니다. 추후 괜찮은 책들을 계속 업데이트 하겠습니다.

(Visited 3,742 times, 1 visits today)
Share This