노마드 코더에서 진행하는 챌린지 기록들
노개북 챌린지 1일차
오늘의 범위
- episode 1: 개발자에 대한 오해 5가지!
- episode 2: 어떤 언어부터 공부해야 할까?
- episode 3: 새 언어를 쉽게 배우는 노하우?
- episode 4: 언어 이름은 왜 그렇게 지었을까?
- episode 5: C, C++, C#은 이름처럼 비슷할까?
Ep 1 개발자에 대한 오해 5가지!
첫 번째 오해: 개발은 누구나 쉽게 배우고, 할 수 있다?
대다수의 직업이 그렇겠지만 가장 중요한 건 무엇보다 자신의 흥미와 적성에 맞아야 한다는 것이다.
개발자는 논리적으로 생각하는 것을 좋아하고 문제 해결을 즐기는 성향이 있는 사람에게 잘 맞다. 프로그래밍하면서 고민도 하고 자괴감에 빠지기도 하는 등 괴로운 과정의 연속이지만, 결국 그것을 잘 이겨내어 결과물을 탄생시켰을 때의 그 성취감이 계속 개발을 이어갈 수 있는 원동력이 된다.
개발은 누구나 할 수 있는 것은 아닙니다. 사실 괴롭고 어렵습니다. 하지만 결과물을 보면 정말 뿌듯하죠. 적성이 잘 맞는다면 꼭 도전해 보세요. (p.16)
두 번째 오해: 개발을 잘하려면 암기를 잘해야 한다?
처음 프로그래밍을 배운 사람들은 ‘개발을 하려면 프로그래밍 문법을 모두 외워야 하는 걸까?‘라는 생각을 할 수도 있겠다. 나 역시 코딩에 입문할 때 해본 생각이다. 근데 그러면 세상 모든 개발자는 다 천재여야 한다. 그럴 리가
개발자에게 필요한 건 암기력이 아니라 개발 과정을 잘 이해하는 것이다. 우리에겐 뭐가 있다? 마법의 구.글.링이 있다. 외울 필요 없이 과정만 잘 이해하고 있다면 그다음은 구선생님이 알아서 해줄 것이다.
세 번째 오해: 개발자는 천재 또는 해커?
개발자는 모두 천재라고? 영화가 다 망쳐놨다. 영화나 드라마에서 나오는 개발자는 대부분 다 해커의 모습을 하고 있다. 실제 해커도 그렇게 키보드 부술 정도로 자판을 두드릴 것 같진 않은데,,
매체에서 부풀려진 그 모습만 보고 본인은 한참 부족하다고 생각하면서 자신감이 떨어질 수 있다. 그 결과 취업은 하지 않고 방구석에 처박혀 계속 공부만 하는 사람도 있.. 어라 나잖아?
결론은 다 천재는 아니라는 거. 이 세상에는 보통 실력의 개발자가 훨씬 많으니 자신의 수준을 너무 낮게 평가하지는 말자.
네 번째 오해: 개발자는 타고난 재능이 필요하다?
코딩은 재능이라는 수식어가 늘 따라온다. 물론 태어나면서부터 컴퓨터를 잘 다루는 사람들도 있겠지만 위에서 말했듯이 세상에는 보통의 개발자가 더 많다. 그럼 그들은 재능이 없는데 어떻게 살아남는 것인가?
끈기와 성실함이 재능을 이길 수 있다.
아마 재능있는 소수를 제외하면 누구보다 끈기 있는 사람들이 아닐까.
개발자가 되려면 '이 함수 고칠 때까지 잠자지 않겠다'라는 각오가 필요해.(p.18)
위 인용구는 개발하면서 너무 와닿는 말이다. 밤새우면서 코드랑 싸우고 결국 내가 이겼을 때의 그 뿌듯함이란,,
다섯 번째 오해: 개발자는 수학을 잘해야 한다?
논리적인 사고 능력 = 수학 = 코딩 ????
인공지능이나 게임 개발에서는 수학이 중요하지만 모든 개발에 있어서 수학이 필수 조건인 것은 아니다. 물리 엔진이나 자율주행, 머신러닝 등과 같은 분야에 관심이 있다면 수학을 잘해야겠지만 그것들에 별로 관심이 없다면? 수학에 너무 힘 쏟지 말고 다른 공부 열심히 하자.
🎯 개발자에 대한 오해
- 개발은 누구나 쉽게 배우고, 할 수 있다? → 성향 차이
- 개발을 잘하려면 암기를 잘해야 한다? → 암기보다는 이해력
- 개발자는 천재 또는 해커? → 아님
- 개발자는 타고난 재능이 필요하다? → 끈기의 영역
- 개발자는 수학을 잘해야 한다? → 관심 분야에 따라 다름
Ep 2 어떤 언어부터 공부해야 할까?
프로그래밍 언어를 선택할 때는 무엇을 하고 싶은지 목적에 맞게!
자신이 하고 싶은 것이 무엇인지, 어떤 회사에 가고 싶은지 목적에 따라 배워야 하는 언어도 다르다. 아무 언어나 배워서 시간 낭비하지 말고 효율적으로 선택하자.
가전제품과 같은 기기: C 언어
C 언어는 제한된 상황에서 최대 성능을 내기 위해 만들어졌다. 냉장고, 에어컨, TV와 같은 가전 기기에서는 프로그램을 실행하는 부품의 성능이 컴퓨터만큼 좋지 않아서 성능을 최대한으로 끌어낼 수 있어야 하기 때문이다.
시스템 유지보수: Java
우리나라에서 많이 사용되는 언어인 자바는 정부나, 은행과 같은 관공서에서 주로 선호한다. 채용 공고가 다른 언어에 비해 많기 때문에 취업 시장에서 유리할 수 있다. 단, 스타트업 같은 경우에는 최신 기술을 주로 사용하기 때문에 오래된 프로그램을 보수하는 자바는 많이 쓰이지 않는다.
웹, 인공지능 개발: Python
초보자가 입문하기 좋은 언어로 파이썬이 가장 잘 알려져 있다. 현 개발 시장에서 가장 많이 사용되고 있기 때문에 배워 두면 쓸모도 있고 범용성이 넓어 다양한 분야에서 활용할 수 있다. 호기심으로 코딩 배워보려는 사람에게 추천!
웹 개발: Javascript
웹 개발을 하고 싶다면 HTML, CSS, Javascript 3종 세트가 필수적이다. 동적인 웹 사이트를 가능하게 해주는 자바스크립트를 특히 공부하는 것이 좋다.
🎯 나는 이런게 하고 싶다!
- 웹 개발 → HTML, CSS, Javascript
- 관공서 취직 → Java
- 인공지능 개발, 초보자 → Python
- 데이터 분석 → Python, R
- 가전 기기 → C
Ep 3 새 언어를 쉽게 배우는 노하우?
새 프로그래밍 언어를 빠르게 공부하는 방법은 아래 6가지가 있다.
- 공식 문서 살펴보기
- 문법 확인하기
- 다른 언어와 비슷한 특징 집중해서 보기
- 새 언어로 코딩 시도하기
- 튜토리얼 시작하기
- 나만의 프로젝트 만들기
Ep 4 언어 이름은 왜 그렇게 지었을까?
자바
언어를 개발하던 사람들이 좋아하던 인도네시아 커피 이름을 본떠서 만들었다. 그래서 자바 언어에는 커피잔 로고가 있다.
코틀린
자바의 영향을 많이 받은 코틀린은 러시아의 섬의 이름을 본따 만들었다.
자바스크립트
원래 이름은 라이브스크립트(LiveScript)였는데 그때 당시 자바가 유행해서 스리슬쩍 묻어가려고 자바스크립트로 이름을 바꿨다. 자바 덕분에 유명해졌지만, 자바스크립트는 자바와 전혀 관련이 없다.
C 언어
C 언어는 당시 가장 유명했던 B 언어의 이름을 따라 지은 것이다. 그 후, 증가를 뜻하는 ++를 붙인 좀 더 발전된 언어 C++이 등장했고 반올림을 뜻하는 # 기호를 붙인 C#이 나타났다.
Ep 5 C, C++, C#은 이름처럼 비슷할까?
C, C++, C#은 이름만 들으면 다 비슷비슷해 보인다.
일단 C 언어가 가장 처음에 등장했는데, 자원이 열악한 상황에서 효율적으로 사용하여 최대 성능을 내도록 개발되었다. 그 후에 C 언어를 확장한 C++이 등장했다. 두 언어의 가장 큰 차이점은 C 언어는 절차 지향을 C++ 언어는 절차 지향, 객체 지향 모두 지원한다는 것이다.
언뜻 보면 C++이 C보다 더 좋을 것 같지만 실제로 두 언어의 속도는 차이가 거의 없다. 단지 언어를 바라보는 관점이 다를 뿐이다.
C#은 마이크로소프트에서 만든 언어로 C, C++과 이름은 비슷하지만 실제로는 자바와 비슷한 언어이다. 다양한 분야에 사용될 수 있고 공부하기도 비교적 쉽다. 다만 실행 속도는 세 언어 중 가장 느리다는 단점이 있다.
🎯 결론
C, C++은 제한된 자원을 효율적으로 사용할 때 적합. 실행 속도 빠르지만 공부하기 어렵고 개발 속도 더딤 C#은 자바랑 비슷한데, 공부하기도 쉽고 개발 속도도 빠름. 실행 속도가 느리다는 단점
느낀 점
나는 인생을 거의 성취감으로 살아왔을 정도로 주기적으로 눈에 보이는 결과를 만들어내지 않으면 견디지 못하는 성향이다. 학생 때는 시험공부에 집중하는 것보다 대회에서 상장을 수집하는 것이 더 좋았고 늘 쉬지 않고 뭔가를 하고 싶어 했다. 밤을 새우고 잠을 반납하더라도 만족스러운 결과물이 좋았다.
이론적인 수식과 문제를 푸는 것이 단지 편했기 때문에 대학은 그럭저럭 만족하며 지냈지만, 막상 직업을 결정하려고 하다 보니 이러한 성향을 감추고 주어진 것만 하면 되는 일들은 하고 싶지 않았다. 1학년 때 파이썬으로 처음 코딩을 경험하고 이게 뭐지? 왜 재밌지? 졸업까지 입덕 부정기를 겪다가 현실이 다가오니 아무리 생각해도 내 성향을 받아줄 직업은 개발자가 가장 어울릴 것 같았다.
이 책의 첫 장부터 개발자가 필요한 성향에 대해 쓰인 글을 보고 있자니 내가 계속 생각하고 있었지만 긴가민가했던 부분들을 콕 집어서 말해주는 느낌이었다. 다 한 번씩은 생각해봤던 내용들이라 정곡을 찔린 것 같기도 하고.
그리고 새 언어를 배우는 방법 중 튜토리얼에 대한 내용과 프로젝트를 만드는 방향에 대해 꿀팁을 얻었다. 책에서는 튜토리얼을 따라 할 때 오픈소스 프로젝트를 가져와서 해체하고 재조립하는 방식을 소개한다. 하나씩 해체해보고 어떤 부분에 무슨 일이 일어나는지 직접 체험하라는 것이다. 나는 보통 공식 문서에 있는 튜토리얼을 자세히 읽기보다는 일단 동작하게 만들고 나중에 자세한 코드를 뜯어보는 편인데 처음부터 시작하지 않고 끝부터 해체해가는 것도 괜찮겠다 싶었다.
또, 새로운 언어로 프로젝트를 만들 때도 이전에 해보지 않았던 프로젝트를 시작하려 하지 말고 경험해봤던 주제의 프로젝트를 만들라고 하는 부분이 기억에 남는다. 난 항상 새로운 걸 도전하고 싶어서 새 언어를 배울 때도 안 해봤던 주제를 시도했었는데 다음에는 해봤던 주제로 만들어봐야겠다. 익히는 데 시간 절약이 될 것 같다.
References
book - IT 5분 잡학사전