쭉-하!
나는 소프트웨어공학과를 나왔고 현재는 개발자로 취직하기 위해
여러 포트폴리오를 쌓으며 취준하고 있는 평범한 쭉종인이야!
요즘 4차 혁명웅앵이다 뭐다 하면서 코딩, 프로그래밍이 뜨기 시작했잖아?
쭉빵을 하다보면 코딩을 배워보고 싶은데 적성이 맞지 않을까 고민하는 두팔, 게녀들이 많더라고
그들을 위해 글을 쓰게 되었어.
'과연 나는 프로그래밍 적성에 맞을까?'에 대한 답변이야.
코딩에서 가장 중요한게 뭔지 알아?
수리력도, 추리력도 아닌 바로
논리력
이야.
논리란?
1. 사고와 행동 면에서 타당한 규범과 기준을 취급하는 과학을 말한다. 추론의 형식적 원리에 대한 과학.
2. 컴퓨터에서의 진리표, 명제의 상호 관계, 개폐 회로 요소의 상호 접속 등에 관한 기초적 원칙과 응용.
이 논리력을 확인하는 방법이 무엇일까?
바로 '수학적 명제를 풀어보기' 이거야.
다들 고등학생, 중학생때 명제 문제를 수도없이 풀어봤을 거야.
네이버 사전에 따르면 명제는
' 논리 어떤 문제에 대한 하나의 논리적 판단 내용과 주장을 언어 또는 기호로 표시한 것. 참과 거짓을 판단할 수 있는 내용이라는 점이 특징이다'
를 의미하지.
참과 거짓, 컴퓨터는 2진법으로 되어있잖아. 0과 1.
보통 언어마다 다를때도 있는데 보통 프로그래밍에서 0은 false이고 1은 true야.
코딩에서 가장 기본적인 문법은 if-else문이고 이걸 조건문이라고 해
만약, if문이 사실이면 if문의 내용이 수행되고,
else, 거짓이라면 else문의 내용이 수행된다는 뜻이지.
간단 예제를 볼까?
이 문제는 알고리즘 문제풀이 사이트인 '백준 알고리즘'사이트의 1330 번 문제를 발췌했어.
이 문제는 아주아주아주아주아주 기초적인 문제야.
정수형인 두 수 A, B를 입력받아 A와 B의 크기를 비교하여 원하는 문자를 출력하는 것이지.
나는 'java'라는 언어로 이렇게 풀었어.
java의 문법에 따라,
Scanner를 통해 int 형 A, B 두 수를 입력받고
만약(if) A와 B의 크기가 같으면 ==를 출력하고 그게 아니라 A가 더 크면(if-else) > 를 출력, 둘 다 아니라면(else) < 를 출력하지.
이것의 기본 개념은 '명제'야. 명제에 따라 참, 거짓을 구별하고 참과 거짓에 따른 명령을 수행하는 것이지.
이렇듯 코딩과 명제는 정말 뗄레야 뗄 수 없는 관계이지.
그리고 수학적 명제 문제는 자신의 논리력을 확인 할 수 있는 가장 쉬운 적성 검사야.
자, 그럼 명제 문제를 어느정도의 수준에서 풀어야 적성에 맞는다고 할까?
요새 커리큘럼이 하도 달라져서 어느 나이때 명제를 처음 배우는지는 모르겠는데,
내가 예전에 인적성 공부할 때 풀어봤던 추론 응용 영역문제들이야.
잘 보이나?
대충 이런 문제들이지.
내 입으로 말하기 부끄럽지만 난 논리력이 뛰어난 편이야.
이 특강을 들었을 때 다른학과 친구는 어려워 하는데,
나는 명제 추론들은 한 문제당 빠르면 30초 느려도 적어도 1분 30초만에 푸는 것 같아. 그리고 절대 틀리지 않지 ㅎㅎ
왜냐면 문제를 읽고, 예시를 보면 어느정도 머릿속에서 각 상황에 따라, true와 flase일 때의 상황이 그려지거든.
그래서 예측한대로 슥슥 쓰면 정답이지.
(참고로 대기업 인적성의 수준은 대부분 이 정도 중고 수준이긴 한데 모든 영역에서 내가 추론 영역 푸는 것 처럼 풀어야함)
한 개 문제를 제대로 봐볼까?
자 이 5명의 친구들이 대화를 하고 있어. 이들의 발언은 전부 엇갈리며, 누가 진실이고 누가 거짓인지 알 수는 없지만
발표자는 단 한사람이라는 사실을 알고 있지.
그렇다면 상황에 따라, 논리에 따라 '단 한명 뿐인 발표자'가 나올수 있도록 어떤 발언이 거짓이고 어떤 발언이 참인지를 찾아야 해.
다시 한 번 말하지만 여기서의 힌트는 단 한명뿐인 발표자이고, 이 발언들은 한 명뿐인 발표자를 가리키고 있는 발언들이라는 거야.
자, 풀어볼까?
우선 상우의 발언이 사실이라고 해보자. 그러면 우성이가 발표자가 되겠네?
그렇다면 나머지 발표자를 가리키는 제니, 우성, 나리는 거짓이 되겠지? 발표자는 여러명일 순 없으니까.
근데 태현이를 보자. 진실을 말하는 사람은 많아야 한 사람이래.
어라? 이상하네?
태현이의 말이 거짓이라면 진실을 말하는 사람은 여러명이어야 할 텐데,
상우의 말이 사실이 됨에 따라 진실을 말하는 사람은 한 사람 뿐이잖아????
반대로 태현이의 말이 사실이라면 진실을 말하는 사람은 상우, 태현으로 두 명이 돼
이것을 '논리 오류'라고해.
또, 그리고 상우의 경우처럼 제니, 우성, 나리의 말이 각각 한명씩 사실이 되더라도
태현의 말은 항상 논리 오류를 불러와.
(이건 잠깐 프로그래밍 이야긴데 오류에는 크게 3가지가 있어.
컴파일 오류, 런타임 오류, 논리 오류
논리 오류란 위의 예시처럼 내가 원하는 결과가 나와야 하는데,
논리 오류로 인해 원하는 결과가 나오지 못했을 때의 오류를 얘기해.)
그렇다면 결과는 어떻게 될까? 태현이 F가 됨에 따라 항상 논리오류를 불러 일으키니,
태현의 말이 T라고 생각해보자.
그럼 자연스럽게 나머지 4명의 발언은 거짓이게 되잖아?
그리고 이들이 발언한 애들은 우성, 나리, 상우, 제니야.
이들이 언급하지 않은 사람은 태현 단 한사람 뿐이지.
그렇다면 자연스럽게 발표자는 태현이가 되는거야.
논리력을 설명하기에는 되게 어려워
내가 표현력이 부족한 전형적인 이과생이기도 하고,
논리이기 때문에 물리적으로 보여주기가 어렵지.
가장 간단하게 우리 주변에서 논리력을 확인하는 방법은 이처럼 명제뿐이야.
뭐, 알고리즘 조직도에 따라 수학적 귀납법 문제를 푸는게 있긴 한데,
이보단 명제가 더 쉽잖아?ㅋㅋㅋㅋㅋ
이렇게 명제들을 풀어보면서 술술풀린다면,
코딩에도 적성이 잘 맞을 것이고 조금 어렵다면 논리력을 향상시키고 도전해도 좋아.
명제와 아까 말한 알고리즘 조직도에 따른 수학적 귀납법을 통해서 논리력을 높일 수 있어.
아, 그리고 내가 이해를 하기 위해서 맨 처음 예시인 상우의 말을 true일 때를 먼저 예시로 들었는데,
나는 이 문제를 풀 때 딱 상황이랑 설명 보고 태현 말이 가장 중요한 키워드라는 걸 캐치해서 한 개의 경우의 수일때 바로 맞췄거든
이처럼 명제를 잘 푼다는 기준은,
문제와 예시를 읽고 키포인트를 바로 짚고, 키포인트와 예시들의 상호작용을 바로 캐치할 수 있어야 잘푼다고 해!
그리고 이렇게 키포이느를 잘 잡으면 코딩을 할 때, 퍼포먼스가 더 좋은 코드를 짤 수 있고
알고리즘 문제를 풀 때 문제 상황과 필요한 요소들을 바로 캐치해서 원하는 알고리즘 순서 조직도 대로 코딩 할 수 있거든!!
논리력은 수리력이랑 달라.
게임, 엔진, AI, 컴퓨터 비전, 연구 등등 이 아니면 솔직히
앱, 웹을 개발하다보면 수학을 그~렇게 중요하진 않아.
물론 고오오그으읍 개발자가 되기 위해서는 수학은 필수지만...
(아, 혹시나 하는 소린데 코딩할거면 이산수학은 필수야
자료구조, 알고리즘의 기본이라 ㅎㅎ.. 내가 말한 덜 중요한건 공학수학,,,, 근데 게임 엔진 등등 얘네는 개~~~~중요함~~~~~~~~~)
물론 적성만으로도 취업이 빨리 되는 것은 절대절대 아니야. 또 살아남기도 어려워.
이쪽 계열이 블루오션인 이유는 매우 간단해.
컴공, 소공, 전기전자, 정보통신 등 관련 학과는 굉장히 많지만,
기본적으로 알아야 하는 개념(전산학, 컴퓨터 사이언스)들이 너무 많고 또 어렵기 때문이야.
이론만으로도 너무 어려운데 이걸 알고 활용까지 한다? 또 매 분기마다 새로운 개념들이 나오고
내가 잘 쓰던 함수같은 것들이 정책에 따라 버려지기도 하고
하드웨어 성능 발전에 따라도 달라지고 유행하는 툴, 라이브러리, 코딩 스타일 등등 엄청 빨리 변화돼
그렇기 때문에 도전하기 전에 가장 기본적인 적성검사를 해봤으면 좋겠어!
여성 개발자들이 더 많아지는 날을 기원하며, 빠염!
나 열혈c 라는 교재독학중인데 한달안에 마무리하는게 목표거든 ㅠ 한달이 넘어갈꺼 같은데.. 직장이랑 병행중이라 혹시 내가 넘 느린걸까.... 적성에 안맞는거 같기도해 도전프로그래밍이라는 문제들풀때 막혀서 답지보면서 이해하는데 시간이걸리거든....
고마워 ㅠ 한달안에 결국 못끝냈지만... 포인터이해한거 위안얻는당....
퍼블 일하는데 자바스크립트.. 후
재밌는데 논리력 제로라 하는데 시간이 개오래걸림..따흐흐흑.....
헐 고마워!!
하 컴공의 세계란.. 힘들다ㅏ
이산수학..
좋은 정보 고마워!
진짜 너무 고마워
고마워!!