The Law of Jante

  1. You're not to think you are anything special.
    당신이 특별하다고 생각하지 말라.

  2. You're not to think you are as good as we are.
    당신이 다른 사람처럼 좋은 사람이라고 생각하지 말라.

  3. You're not to think you are smarter than we are.
    당신이 다른 사람보다 더 똑똑하다고 생각하지 말라.

  4. You're not to convince yourself that you are better than we are.
    당신이 다른 사람보다 더 낫다고 확신하지 말라.

  5. You're not to think you know more than we do.
    당신이 다른 사람보다 더 많이 안다고 생각하지 말라.

  6. You're not to think you are more important than we are.
    당신이 다른 사람보다 더 중요하다고 생각하지 말라.

  7. You're not to think you are good at anything.
    당신이 모든 것을 다 잘한다고 생각하지 말라.

  8. You're not to laugh at us.
    다른 사람을 비웃지 말라.

  9. You're not to think anyone cares about you.
    다른 사람이 당신을 신경 쓴다고 생각하지 말라.

  10. You're not to think you can teach us anything.
    어떤 것이든 다른 사람을 가르치려 들지 말라.

  11. Perhaps you don't think we know a few things about you?
    당신에 대해서 다른 사람들이 모른다고 생각하지 말라.


"겸손하지만 강한, 다른 사람의 시선에서 자유로운 사람이 되자"


'주절주절' 카테고리의 다른 글

더 나은 무지  (2) 2018.07.06
My own roadmap to be back-end dev.(~18.07)  (0) 2018.07.01
비전공자의 C언어 입문기  (0) 2018.01.07
Library 함수 사용에 관한 고찰  (0) 2017.10.05

배움이 나에게 가져다 주는 것.
내가 무엇을 모르는지 알게 해주는 것.
자만하지 않게 해주는 것.


'주절주절' 카테고리의 다른 글

얀테의 법칙  (1) 2018.07.19
My own roadmap to be back-end dev.(~18.07)  (0) 2018.07.01
비전공자의 C언어 입문기  (0) 2018.01.07
Library 함수 사용에 관한 고찰  (0) 2017.10.05

<2018.07>


현재까지 4학년 1학기를 이수하였고, 졸업까지 1년을 앞둔 시점에서 취업을 위한 로드맵과

체크리스트를 작성하여 따르고자 함


- 현재까지 이수한 수업


C Lang / Logic Circuit / Python / Data Structure / Algorithm / Network / Computer Architecture 

/ Operating System / Database / Software Engineering


- 앞으로 이수해야 할 수업


OOP / Capstone project / ?


- 추가적으로 공부하고 있는 것 


MySQL / Hadoop eco system(Spark, Kafka, ... ) / linux



- 추가적으로 공부해야 '할' 것


Java Design Pattern / Spring Framework / 버전 관리 툴 / Node.JS / NoSQL 중 하나 MongoDB or Cassandra / Regex / Oracle

Java 이용한 알고리즘 문제 풀이



- 취득 할 자격증


정보처리기사 / SQLD / 리눅스마스터 



- CS 기본 과목들에 대한 세심한 공부가 필요함. 

OS, Network, Database, Data Structure, Algorithm, Computer Architecture 놓지 않기.

+ SW 테스트에 대비한 문제 해결 능력 기르기

'주절주절' 카테고리의 다른 글

얀테의 법칙  (1) 2018.07.19
더 나은 무지  (2) 2018.07.06
비전공자의 C언어 입문기  (0) 2018.01.07
Library 함수 사용에 관한 고찰  (0) 2017.10.05


최근 많은 비전공자들이 프로그래밍 분야에 발을 내딛고 있는 것 같다. 나도 지난 여름까지 비전공자였던 사람 중 하나로(현재는 제 2전공을 통해 소프트웨어를 따로 공부하고 있다), 프로그래밍에 새로이 발을 디딛고자 하는 분들에게 조금이나마 도움이 되고자 내가 어떻게 C를 통해 프로그래밍에 입문하였는지에 대한 간략한 후기글을 남기고자 한다. 

* 비전공자가 아니거나, 이미 Visual C 등을 통해 프로그래밍 언어를 접해본 분이 지금 이 글을 읽고 계시다면 과감하게 '뒤로 가기'를 눌러주시기를 권고한다.. 나도 아직 미흡한 점이 많은 초보 학부생이기 때문에..


사실 Machine Learning에 대한 관심의 급증과 더불어 요즘 대세라 칭할만한 Python이나 생활코딩의 이고잉님이 가르치시는 CSS, HTML 등 비전공자들이 처음으로 프로그래밍에 입문하기에 충분한 동기부여와 학습 의지를 줄 수 있는 많은 다양한 언어(?)들이 존재한다. 그럼에도 내가 C를 첫 프로그래밍 언어로 선정한 데에는 두 가지 이유가 있다.



1. 프로그램이 돌아가는 컴퓨터 작동 원리에 대해 더 자세히 알고 싶었다. 

2. Native Language 하나를 제대로 알면 다른 언어를 쉽게 알 수 있을 것이라 믿었다

3. 학교의 자료구조 수업이 C로 진행되었다..



이러한 이유(사정)들로 인해 나는 C를 나의 첫 언어로 선택하였고, 내가 선택한 첫 책은 지금은 절판된 최호성 저자의 '최호성의 C 프로그래밍' 이었다. 이 책을 선택한 이유는 우선 절판된 책이었기에 인터넷 상에서 PDF를 무료로 구할 수 있었고, 목차를 살펴본 결과 C 언어를 상당히 Hardware의 관점에서 다룬다는 점이 내가 원하는 부분과 일치했기 때문이다. 또한 유튜브를 통해 무료 강의를 제공한다는 점에 있어서도 상당히 매력적인 교안이라고 생각한다.

('최호성의 C 프로그래밍' PDF: http://freelec.co.kr/bbs/read.asp?BBSName=BOOKPDS&page=3&id=206115)



<최호성 강사의 YouTube 채널, 자신의 모든 책들에 대한 강의를 '무료'로 제공한다>



결과적으로 이 책을 첫 C 교재로 선택한 것은 정말 탁월한 선택이었다. 나는 당시 여름방학을 이용해 2학기에 있을 자료구조, 컴퓨터구조 등의 수업에 대비하기 위해 C 언어를 시작하였는데, 이 때 당시의 예습이 2학기 수업을 따라감에 있어 정말 많은 도움이 되었다. 앞서 언급한 것과 같이 C를 Hardware로 접근하기 때문에 최호성 강사는 디버깅을 굉장히 많이 실습시킨다. 디버깅을 통해 내가 사용한 변수와 포인터 등이 메모리에서 어떻게 자리잡고 변화하는지에 대한 흐름을 익히라는 뜻에서였을 것이다.

*디버깅: 쉽게 말하면 작성한 코드를 한 줄 한 줄 따라가며, 그에 따라 생기는 변화를 확인하는 과정 (to find bug)


이렇게 시작 언어였던 C에서부터 메모리를 뒤지고, Data가 담기는 과정을 확인하는 등의 방식을 학습 하니 컴퓨터구조를 학습함에 있어 레지스터와 메모리 PC(Program Counter) 등의 변화에 대한 공부에 정말 많은 도움이 되었다. 또한 내가 다니는 학교는 자료구조를 C로 구현하도록 하였는데, 생각보다 많은 학생들이 Pointer를 제대로 활용하지 못해 제대로 된 자료구조를 구현하지 못하였다. 그러나 최호성 강사는 Pointer를 정말 이해하기 쉽게 가르치기에 이 책을 통해 공부한 나는 큰 어려움 없이 수업에 임할 수 있었다.


내가 그랬듯, 처음 입문하는 비전공자분들이 이 수업을 처음으로 선택하는 것에는 많은 노력이 필요하다. 강사의 스타일이 Pointer, 메모리 구조 등의 어려운 부분을 초반 부에 미리 주입시키는 방식으로 가르치기 때문이다. 따라서 초반에 많이 고전할 가능성이 크지만, 그 힘든 초반을 잘 이해하고 넘어낸다면 후반 부의 내용을 만나는 순간 '아, 이런거였구나.' 라는 탄식을 내뱉고 있는 자신을 발견하게 될 것이다. 개인적으로도 이같이 초반에 고생하고 후반에 깨우치는 수업을 굉장히 좋아한다.





앞서 소개한 '최호성의 C 프로그래밍'을 다 학습한다면, 2015년에 새로이 나온 최호성의 '독하게 시작하는 C 프로그래밍'을 학습하는 것이 좋다. 아니, 처음부터 이 책으로 시작하면 더더욱 좋다. '최호성의 C 프로그래밍'을 먼저 소개한 이유는 PDF를 통해 지금 당장이라도 쉽게 구할 수 있는 책이기에 소개를 한 것이며, 개정된 이 '독C'를 사실 더 추천한다. 이 책은 앞전에 소개한 책에는 존재하지 않는 C 언어의 함수에 대한 고급 이론 등을 더 수록하고 있다. 그리고 일단 무언가를 공부한다면 서적을 하나 가지고 있는 것이 좋다고 생각한다. 모르는 부분이 생겼을 때 언제건 책을 꺼내 확인할 수 있는 것이 좋다고 생각하기 때문이다. 


두 책의 저자인 최호성 강사는 네이버에 개인이 운영하는 카페(http://cafe.naver.com/windev)가 따로 존재하니 질문 등 저자와 소통하고 싶으신 분이 있다면 가입을 해두는 것도 좋을 것 같다. 나는 개인적으로 정말 많은 도움을 받은 두 강의였고, 카페를 통해서도 다양한 정보를 꾸준히 받고 있어서 참 감사한 인터넷 스승(?)이 아닌가 싶다. 지난 여름방학 이전까지 컴퓨터라곤 온라인 게임을 즐기는 용도로만 사용한 나도 이 강의들을 통해 수준을 많이 끌어 올렸으니, 나보다 뛰어난 비전공자 여러분들은 훨씬 더 고급진 개발 지식을 함양할 수 있을 것이다. 무료로 강의까지 제공하는데 굳이 마다할 이유는 없지 않는가? 


C언어를 통해 전반적인 프로그래밍 언어에 대한 지식을 다졌다면 다음으로는 자료구조와 알고리즘을 학습하는 것이 좋다고 생각한다. 물론, 바로 실무적 지식을 쌓고자 하는 분들은 이 두 과목의 중요성에 의문 부호를 품겠지만, 기업 취업은 물론이거니와 Computer Science의 근간이 되는 두 과목은 '내 입장에서는' 정말 중요한 과목이라고 생각한다. 두 과목의 대한 공부 방법은 다음 포스팅으로 잠시 미룬다. 


나를 비롯한 많은 비전공자 출신 개발자 지망생들이 더 많아졌으면 좋겠다는 생각을 한다. 그리고 그들이 모여 그들만의 시너지를 낼 수 있다면 더 할 나위 없이 좋지 않겠는가? 뒤늦게 시작하다 보니 고충을 나눌 주변 사람이 없다는 것이 참 서글프다는 것을 이제야 느끼고 있다. 아무튼 많은 분들이 더 함께 공부하고, 더 같이 소통할 수 있는 날이 왔으면 좋겠다 :)




'주절주절' 카테고리의 다른 글

얀테의 법칙  (1) 2018.07.19
더 나은 무지  (2) 2018.07.06
My own roadmap to be back-end dev.(~18.07)  (0) 2018.07.01
Library 함수 사용에 관한 고찰  (0) 2017.10.05

혼자 프로그래밍 언어를 공부하다 이번 학기 전공 수업으로 강의를 수강하며 듣다보니, 과제의 조건이 굉장히 낯선 경우가 많다.

이전까지는 간단한 문제 풀이로 복습을 해왔다면, 학교에서는 프로그램의 구현을 통해 복습을 하는 느낌이랄까..

그 중 나에게 있어 가장 골치 아프고 과제 수행을 하는 내내 화를 참기 어려운 것이 바로 이 조건이다.


"Don't use library functions."


모든 교수들이 이같은 조건을 내거는 것은 아니지만, 초장부터 끝장까지 뚝심있게 이 조건을 내거는 강의들 또한 존재한다.

과제를 처음 내받을 때는 큰 감정의 변화는 없다. 다 한 번쯤은 써본 함수로 구현하는 과제일테고, 어떻게 어떻게 작동 과정을 거치면 되겠다!

그리고 이러한 생각이 끝나갈 때 쯤, 항상 위 말을 한국어 버전으로 들을 수 있다. "함수나 메소드 사용하지 않고, 직접 구현해서 작성하세요" 


하나의 조건이 추가된 것 뿐이지만 이전에 떠올린 생각은 완전히 무의미한 사고가 되었다. 도움이 될 때도 있지만, 대부분은 아니다. 그리고 과제의 수행을 위해 라이브러리 함수가 가진 기능을 직접 구현하고 있는 자신을 보고 있자면 이런 생각들이 나를 지배한다. 왜 멀쩡히 존재하는 기능을 쓰지 않는 것일까? 우리가 함수 개발자가 되길 바라시는 것일까? 굉장히 변태적이구나.. 


대학 과제 외에도 이처럼 라이브러리 함수 사용의 제한을 두는 집단들이 존재한다. 듣자하니 삼성 소프트웨어 멤버십의 일정 하이 레벨에 이러한 제한이 있고, 사내 심사에 있어 제한을 두는 기업들도 있다고 한다. 모두 비슷한 생각을 가지고 시험에 임할 것이 눈에 그려진다.


그렇다면 이러한 제약은 왜 존재하는 것이고, 이로 인해서 피시험자 혹은 학생이 얻게 될 이점은 무엇이 있을까?

생활코딩의 '이고잉'님은 HTML / CSS 강의 내 초기 수업들을 메모장을 이용하여 진행하신다. 그리고 일정 시차가 지났을 때, Atom을 소개해주신다. Visual Studio를 이용하는 많은 프로그래머들은 초보 코더가 Visual Studio로 코딩을 시작하는 것을 완전히 추천하지 않는다고 한다.


나는 라이브러리 함수 사용의 제약이 앞의 두 가지 예와 같은 이유를 공유한다고 생각한다. '불편함의 미학'이 바로 그 이유이다. 이 말은 불편한 것이 최고이며, 아름답다는 말이 아니다. 본인이 직접 불편함을 마주하여 겪어보고, 겪은 불편함에 대한 고민을 해 본 경험이 있는 사람이 그렇지 않은 사람보다 더 비판적 사고를 지닐 수 있게 되는 것이다. 불편함을 겪지 않는다면 왜? 그리고 어떻게?에 대한 고민없이 너무나도 쉽게 편리한 기능에 익숙해지기 때문이다. 그리고 이는 우리가 쉽게 사용하고 있는 기능, 컴파일러, 언어 등 모든 개발자 영역에 적용이 가능한 매너리즘의 한 부분이라고 생각한다.


물론 이같이 불편함으로부터 소중한 경험을 하는 것 외에도 말 그대로 라이브러리 함수, 컴파일러 등이 어떻게 구현되고 작동하는지에 대한 정확한 이해를 묻기 위해 이 제약을 내걸 수도 있다(레벨 및 사내 심사는 이 부분에 분류되어야 할 것이다.) 그러나 대학 과제에서 제시하는 이 제약은 불편함의 미학을 가르치기 위함이 확실하다고 믿고 있다.


그럼에도 앞으로 '라이브러리 함수 사용 금지'라는 조건이 내걸린 과제를 본다면 탐탁치 않은 기분으로 과제를 받아 들이겠지만, 이같은 고찰을 한 번이라도 해보았으니 내가 이 제약으로부터 얻을 수 있는 긍정적 요소들(이를테면 라이브러리 함수에 대한 이해, 선대 개발자가 이전에 느꼈을 불편함..)을 많이 떠올리며 최대한 즐겁게(?) 과제에 임할 수 있도록 시도해봐야겠...다...


'주절주절' 카테고리의 다른 글

얀테의 법칙  (1) 2018.07.19
더 나은 무지  (2) 2018.07.06
My own roadmap to be back-end dev.(~18.07)  (0) 2018.07.01
비전공자의 C언어 입문기  (0) 2018.01.07

+ Recent posts