[ Architecture, Technology ,Web ] SSO(Single Sign On) 그리고 SAML에 대해

이미지
이번 프로젝트 내부에서 어쩌다보니  유저 인증 관련 업무를 담당하게 되었고, 해야하는 업무는 내부에 사용했던 적이 없던  새로운 개발 플랫폼에서  SSO의 프로토콜 중  SAML을 이용해 앱의 인증을 구현해야만 했다. SSO를 생각해본적 조차 없는 상황에 이를 새로운 개발 플랫폼에 도입해야 했기 때문에 많은 시행착오를 겪었으나 구현에 성공하였으며 덕분에 SSO에 대한 전반적인 지식을 쌓을 수 있었다. 이번에는 그러한 과정에서 나온 지식들과 경험을  공유하고자 한다. SSO에 대한 정의 먼저 사전적 정의 부터 살펴보자. 다만, 기술적인 용어다보니 자주 사용하는 옥스포드 사전에 정의를 찾을 수 없기 때문에  검색으로 찾을 수 있는 정의를 몇 가지 살펴보고 교차 검증을 해보자. 첫 번째 정의를 살펴보자. Single sign-on (SSO) is an identification method that enables users to log in to multiple applications and websites with one set of credentials.  SSO는 웹사이트에서 한 번의 인증(one set of credentials)으로 복수의 어플리케이션에 로그인 할 수 있는 인증(identification) 방법(method) 이다. 두 번째는 위키피디아의 정의이다. Single sign-on (SSO) is an authentication scheme that allows a user to log in with a single ID to any of several related, yet independent, software systems. SSO는 독립적이지만 연관되어있는 몇몇 소프트웨어에 대해 하나의 ID로 로그인을 할 수 있도록 하는 인증 구조(scheme) 세부 설명에 조금 차이가 있어 보이지만 전체적인 틀은 매우 비슷해 보인다.  몇 가지 포인트가 되는 단어를 추출해 이를 연결해보자면 아래와 같은 의미를 산출 할 수 있다. 독립적이지만 연관되어 있

[ 프로젝트 BEP, Essay - Developer ] 논의① : 개발자에게 학위 또는 학벌은 필요한가?(Developer need a degree or academic background?)


이전 글에서도 언급했듯이,
몇 가지 논의를 하고 넘어갈 예정이다.

일단 첫 번째로
「개발자에게 학사 학위는 필요한가?」에 대한 논의,
물론 석사, 박사는 논외로 하겠다.

석,박사는 개발자보다는 연구직이 어울린다.

그리고 두 번째로
「개발자에게 수학은 필요한가?」에 대한 논의,

그리고 세 번째로
「개발자란 무엇인가?」에 대한 논의만 하고
넘어가려고 생각하고 있다.

물론 이후에 논의가 추가될지는 모르겠다.

이번 글은 이에 대한 첫번째 논의로
「개발자에게 학사 학위는 필요한가?」에 대한 논의부터 시작하자.

사실 이번 주제는 내가 예전부터 고민하던 문제이기도 하다.

그 주제는 「현대인(2010년쯤 시점)에게 학사 학위는 필요한가?」에 대한,
정확히는 「살아가는데 대학의 학사 학위는 의미가 있는가? 혹은 필요한가?」
에 대한 고민이였다.

그리고 '여러가지 의미에서 의미가 있다 혹은 필요하다'고 결론을 내렸다.
물론,
절대적으로 필요하다는 의미가 아니다.

좀 더 자신의 삶을 가치있게 하기 위해서,
여러적인 이유에서 필요하다는 결론을 내렸다.
(경제적인 이유가 아니다)

따라서 나는 내가 아이를 가진다면,
나는 가급적 내 노후자금을 포기 해서라도
대학에 보낼 생각이다.

이야기가 좀 다른대로 갔는데,
어쨋든 다시 원래 이야기로 돌아오면,

동일하게 「개발자에게 학사 학위는 필요한가?」에 대한 결론으로
비슷하게 '있으면 좋다'라고 결론을 내렸다.

그에 대한 이야기는 앞서 천천히 이야기 하도록 하자.

일단 나는 대학생 때,
학기당 최대 학점이 조금 비어있다면,
몇 개씩 경제학 강의를 들었는데
거기서 나온 이야기 부터 시작해보자.

소득 불평등의 원인은 「교육」


내가 들었던 경제학 강의 중 가장 인상 깊었고,
배우고, 공부하면서 재미있었던 강의들은
「소득 분배론」이라는 강의와 「근대 경제사」 강의였다.

여기서 이야기 하려는 것은 「소득 분배론」에서
이야기 하는 것은

'왜 사람들 마다 소득의 차이가 나는 것인가?'
라는 것 부터 시작한다.

그리고 그 요소,
즉, 소득 불평등의 원인을 각각
개인적 요인, 사회적 요인 으로 나뉘었고,

여기서 이 강의는
개인적 요인 교육만 중점적으로 다루던 강의였다.

내가 왜 개발자에게 학사 학위가 필요하느냐를 이야기 하기 앞서서

왜 소득 분배론에서 나오는 이야기를 하느냐고 의문을 가지는
사람이 있을 지는 모르겠다.

하지만, 내가 학사 학위가 필요한 이유에
여기서 언급된 이유도 포함되기도 하고,

결정적으로 「살아가는데 대학의 학사 학위는 의미가 있는가? 혹은 필요한가?」
를 결론 내릴 때 또한 포함되었던 이유였기 때문이다.

소득 분배론에서 언급하는 교육은 이런 학사 학위도 포함된다.

왜냐하면, 대학에서 학사 학위를 줌으로써
졸업장을 통해 교육을 받았다고 증명 해주기 때문이다.

이 강의에서 중점은 크게 두 가지 이론을 설명한다.

인간 자본론(Human Capital)」와 「선별 가설(Screening Hypothesis)
이 두 가지 이다.

여기서는 선별 가설(Screening Hypothesis)만 이야기 할것이기 때문에
인간 자본론(Human Capital)에 대해서는 따로 언급하지는 않으니
궁금하다면 구글링을 해보길 바란다.

또한 부록으로 
내가 이 강의에서 정리했던 노트를 올려놨으니
아래의 링크를 참고하길 바란다.

https://nitro04.blogspot.com/2020/05/bep.html

다만, 정확한 정리라고 할 수는 없으니
교차 검증을 하기 바란다.

또한 선별 가설은 몇 가지 문제점을 가지고 있음은 분명하고,
나는 선별 가설이 옳다고 생각하지는 않으니 오해 말기를 바란다.

선별 가설에도 '부분적 진리'가 있으며,
'부분적 진리'에는 개발자 뿐만 아니라,
현대에서 학위를 소지함으로 써 얻을 수 있는 이점이
분명히 있다고 생각하기 때문에 소개하는 것 뿐이다.

그럼 선별 가설(Screening Hypothesis)이 무슨 이론인지
잠깐 설명하고 넘어가겠다.

정의는 아래와 같다.

"교육이 노동생산성을 높여주는게 아닌 
능력이 있는 것처럼 보이는 사람을 걸러내는 역할을 한다는 이론 이다."

교육,
즉, 교육(학위 같은 증명서)는 
'이 사람이 높은 생산성을 가지고 있는 사람입니다.'
를 증명하는 것이 아니라,

이런 교육을 통해
'이 사람은 최소한 능력이 있는 것 처럼 하고 있는 사람은 아닙니다.'
를 교육이 증명한다는 것이다.

선별 가설에 대해 좀 더 자세한 설명은 아래와 같다.

노동자의 관해 바꿀 수 있는 성질과
바꿀 수 없는 성질이 있는데,

선별 가설(Screening Hypothesis)
교육(또는 건강)이 개인이 비용을 투자할 수 있는
바꿀 수 있는 성질을 나타낸다고 주장 한다.

이 가설에 따르면,
교육을 통한 선별이 없는 경우에는
모든 노동자에게 똑같은 평균 소득이 지불되겠지만,

선별이 있는 경우에는
생산성에 따라 소득의 격차가 생기게 된다는 것이고,

이는 노동자가 자신의 생산성을 알리기 위해
교육이라는 신호를 비용을 들여서라도 사는 것이 유리하다는 것 이다.

하지만,
선별 가설에서는 교육의 비용과 개인의 능력은
마이너스의 상관 관계를 가진다는 가정이 있기 때문에
교육의 역할은 반드시 바람직 한 것은 아니다.

유능한 노동자의 입장에서
교육은 소득을 높이는 유리한 방편이 되지만,

반대로 무능한 노동자의 경우
오히려 소득을 평균 이하로 낮추는 결과밖에 가져오지 않는다.
(교육으로 인한 시간, 비용이 들었기 때문)


위와 같은 것이 선별 가설에서 이야기하는 내용이다.

책에 따르면,
선별 가설의 실증적 연구는 찬반양론으로 갈려져 있다고 한다.
따라서 선별 가설이 '진리'인지 아닌지는 아직 모른다는 이야기이다.

그럼에도 나는 이 선별 가설에도
'부분적 진리'가 포함되어있음은 의심치 않는다.

만약,
이 글을 읽고 있는 당신이
이런 선별 가설의 논지에 어느 정도 동의 한다면,

유능한 노동자라는 가정하에서는
교육을 받는 것이 좋을 것이다.

물론 그 누구도 자신이 무능한 노동자라고 
이야기하지는 않을테지만 말이다.

그래서 개발자에게 학사 학위 또는 학벌이 필요한가?


이제 진짜 본론으로 넘어가 보자.

사실 위의 선별 가설의 논지에 동의하던,
동의하지 않는다는 사실은 크게 중요하지는 않다.

그렇다면,
개발자에게 학사 학위는 필요할까?

나는 이 이야기에 앞서서
'있으면 좋다'라는 결론을 내렸었다.

이에 대해 조금 더 자세히 이야기 해보자.

위에서 선별 가설이라는 이론은
나의 '있으면 좋다'라는 결론의 조금은 힘을 실어 줄 것이다.

사실 학사 학위 자체에 의미가 있는 것은 아니다.

학사 학위가 있다고 해서,
이 사람이 개발자로서 뛰어나다는 이야기는
나의 동료라면 그 누구도 하지 않을 것이다.

왜냐하면,
실제로 학위를 가지고 있다고 해서,
흔히 말하는 좋은 대학을 나왔다고 해서

모든, 아니 대부분의 사람이
좋은 개발자가 되는 것은 아니다라는 것을
경험으로써 알고 있기 때문이다.

당연한 이야기이겠지만,
학자에게 필요한 자질과
실제 솔루션을 개발해야하는 개발자에게 
필요한 자질은 다르기 때문이다.

물론 나의 경험적 사실이 '진리'가 아님은
인정하는 바이다.

하지만,
'학사 학위가 또는 학벌이 좋은 개발자를 만든다' 라는 의견이
'진리'라면,

세계의 많은 IT기업들은 이런 학위를
강력히 요구할 것이며,
이는 절대적 기준이 될 것이다.

하지만,
나는 이런 학위나 학벌을 강력하게 
원하는 기업은 들어본 적도 없으며,

내 짧은 인생 속에서도 그런 IT기업은 본적이 없다.
(있다면 그런 회사는 피하는 것이 좋다.)

학위가 있건 없건
더 나아가 학벌이 좋건 나쁘건

학위 자체는 +@의 개념의 요소이지,
그것이 채용의 결정적 요소로 작용하지는 않는다.

연구직이라면 학자로서의 자질이 필요하기 때문에
역으로 학위 자체가 메인이 될 수 있으나
적어도 개발직에 있어서 학위는 메인이 될 수 없다.

적어도 IT회사에 있어서
채용에 있어서 학위 또는 학벌을 결정적 요소로 
본다는 것은 구직자 입장에서도 회사 입장에서도 큰 손실이다.

좋은 IT회사의 채용 프로세스는
수 많은 면접을 통해
이 사람이 훌륭한 개발자로서 자질이 있는지 시험해 본다.

내가 회사의 사장이라도 이렇게 사람을 채용할 것이다.

특히 신입이라면 
학위를 떠나서, 학벌을 떠나서 
더더욱 이런 면접관과 구직자가 대화를 하는
면접이 필요할 것이다.

왜냐하면 개발자에게 필요한 것은 학위나 학벌이 아니라
이 사람이 개발자로서 자질이 있느냐를 평가해야 한다.

여기서 개발자로서의 자질은 
이 사람이 코딩을 잘하느냐, 프로그래밍을 잘하느냐가 아니라
사회의 문제를 IT 기술로 해결하는 해결사로서
커뮤니케이션 능력이나 문제 해결 능력이 뛰어난가를 말한다. 

또한 여기서 말하는 문제해결능력은 
프로그래밍 만을 말하는 것이 아니다.

넓은 의미에서 말하는 것이다.

예컨데, 프로그래밍을 할 때 막히는 부분이 있다면 어떻게 문제를 해결하는가,
동료들과의 갈등에서 어떻게 문제를 해결하는가,
기술적인 문제로 구현을 할 수 없을 경우에는 어떻게 문제를 해결하는가,
더 나아가 프로젝트를 어떻게 완수 할 것인가 등등 

어떤 문제에 대해 
작고, 큰 프로젝트 내부에서 나타날 수 있는 
수 많은 문제들을 '어떻게' 해결할 것 인가가 중요하다.

프로그래밍으로 
동료와의 갈등을 해결할 수 있다고 생각하는가?

프로그래밍은 컴퓨터와 대화하는 방식이지 
사람과 대화하는 방식이 아님은
굳이 개발자가 아니여도 누구나 아는 사실이다.

또한 프로그래밍 부분은 
이런 수 많은 문제 해결 능력 중의 고작 일부분의 불과하며,
수 많은 문제를 해결하기 위한 하나의 도구일 뿐이고, 

프로그래밍이 IT업계의 전체를 차지하는 것도 아니며
프로그래밍 뿐만 아니라 
기획, 설계, 디자인, UI/UX, 테스터, 아키텍터, PM등등 
프로그래밍을 전혀 하지 않는 직종도 많다.

따라서 이런 다수의 문제를 해결 능력을 가지고 있는
혹은 그런 포텐을 가지고 있는 사람이 있다면 
정확히는 그런 포텐을 가지고 있는 사람처럼 보일 수 있다면

IT업계는 그 사람이 어떤 인종이던, 성별이던, 
좋은 학벌을 가지지 않던, 
학위를 가지고 있지 않던 채용 한다.

물론 신입이 아니라 경력이라 할지라도 해당되는 이야기다.

한국의 동료들의 말을 들어보면
카카오나 네이버도 채용에 있어서 
학위나 학벌을 중시 하지 않는 쪽으로 가고 있다고 한다.

따라서, IT회사 조차
심지어 대학 졸업장의 가치를 
지나치게 높게 평가하고 있는 한국의 사회에서의 
한국 IT 대기업 조차,

'학사 학위가 좋은 개발자를 만든다'라는 의견에
동의 하지 않는듯 하다.

하지만, 나는 그럼에도 불구하고 '있으면 좋다'라는
결론을 내렸다.

왜냐하면, 사실 대학을 다님으로써 얻을 수 있는
여러가지 이점들이 있기 때문이다.

그런 이점들에 대해 하나 씩 이야기 해보기로 하자.

대학을 다님으로써 얻을 수 있는 이점

여기서 말하는 이점들은 결코 
대학 졸업장을 의미하는 것이 아님을 
먼저 밝히는게 좋다고 생각한다.

정확히는 대학 졸업장 보다는 
대학 안에서 시간을 보냄으로써 얻을 수 있는 이점들을 말한다.

물론 그러한 졸업장이 큰 가치가 있다는 사람들은 많지만,
나는 아무리 그런 논지에 대해 고찰하고 생각해도
대학 졸업장에 그렇게 큰 가치가 있다는 것인지는 아직 까지도 잘 모르겠다.

개발자를 떠나서 인간으로서 
흔히 알고 있는 좋은 대학교를 나왔다고 한들
나에게는 큰 차이가 있다고 느끼지는 못했다.

왜냐하면 내 짧은 인생 속에서
대학 졸업장에 큰 가치가 있다고 이야기 하는 사람들은
사람을 볼 때 어떤 한 사람의 매력보다는

대부분 권위를 중요시하고,
지적 허영심이 강한 사람들이였기 때문이다.

물론 자신이 그렇게 생각한다면 
나는 막을 생각이 없다.

엄지를 치켜들며 잘해보라며 박수를 칠 뿐이며,
그들에게 행운이 있기를 바랄 뿐이다.

하지만 그런 인식이 자리잡고 있는 사회는
소수의 사람만이 자아실현을 할 수 있고
다수의 사람은 할 수 없는 
그야 말로 살아있는 지옥일 수 밖에 없을 것이다.

① 4년이라는 시간에서 나오는 차이


사실 이 이유가 가장 크다.
4년이라는 시간의 차이이다.

어떤 학문이던 간에
4년이라는 시간 동안

그에 대해 공부하고, 고민하여
고찰하고, 성찰한 경험

그것이 가장 크다.

또한 여유로운 그 4년이라는 시간 동안
(물론 과제로 인해 여유롭지는 않겠지만)

어떤 사람들과 만나고, 헤어지고 등에서 나오는 고찰과 성찰,
어떤 학문을 배우고 공부함으로써 나오는 고찰과 성찰 등등

사람과 그리고 학문이라는 것을 접할 수 있는
대학교라는 곳에서 4년동안 속해 있는 다는 것은
엄청난 이점이다.

왜냐하면, 사회에서는 그런 시간이 없기 때문이다.

그렇게 4년이나 여유를 가질 수 있는 시간,
그리고 사회에서 허락 받는 시간은 그때 뿐이다.

그때는 실패하고, 실수한다고 해도 용서 받기 쉽다.
정확히 말하면 대개 아무도 신경 쓰지 않는다.

사회에 나오면,
실패하고 실수를 한다면
그에 대한 결과에 따라 전체는 아니더라도
그 일부는 자기 자신이 책임을 져야만 한다.

따라서

바로 고등학교를 졸업하고,
개발자로 뛰어들어간 사람이
어떤 기술적으로 대학 졸업자 보다 뛰어날지는 모르겠지만,

이런 내면적인 성장으로 인한
'자존감' 과 이런 자존감을 기반으로
성장할 수 있는 수 많은 요소들의 성장 가능성을 
나타내는 '포텐셜'은 대학 졸업자가 뛰어나다고 생각하고 있다.
(물론 우리 삶이 늘 그렇듯이
매우 안타깝게도
가끔 이에 예외가 되는 사람이 등장하기는 한다 )

여기서 자존감은 
외적으로 드러나는 자존심이 아니다.

실패해도 잘 무너지지 않는 
'자아'를 의미 한다.

따라서 외부 스트레스에 인해,
실패로 인한 충격에 비교적 강하다.

또한 학문을 익히고 배움으로서

어떤 배운다는 것에 익숙한 대학 졸업자들은
그것이 다른 류의 지식이라도 비교적 빠르게 배울 수 있다.

부수적으로 과제를 하며 제출했던,
다양한 과제들, 프레젠테이션, 팀 과제는

보고서 제출, 팀 프로젝트 진행 등등의
그 외의 회사 활동에 있어서 틀림없이 도움이 되는 경험들 이다.

여기에 더해 
만약 학위가 만약 컴퓨터 관련 학과거나
특히 '컴퓨터 공학(Computer Engineering)' 이나
'컴퓨터 과학(Computer Science)' 이라면

확실한 이점이 있다고 자신 있게 말할 수 있다.

위에서 이야기를 포함해

다양한 과제 제출을 프로그래밍을 통해서 제출 할 것이며,
팀 프로젝트 또한 대부분 프로그래밍을 통해 진행되었을 것이다.

이를 통해 팀 프로젝트를 통해 나왔던
여러가지 어려웠던 점들을 통한 고찰과 성찰은

회사에서 실제로 팀 프로젝트를 진행했을 때의
분명한 경험적 가치를 지닌다.

또한 그 학과의 커리큘럼에서 나오는
주요한 지식들 또한 그만한 가치를 지니고 있는 것들이다.

따라서 면접자가 대학을 나왔다는 것
그리고 그 중에서 컴퓨터 관력 학과에 있었다는 것은
채용하는 입장에서는 매우 반가운 면접자임에는 틀림없다.

② 선별 가설에 의한 이점

두번째는
위에서 시작했을 때 언급했던 선별 가설에 의한 이점이다.

위에서 이야기 했던 내용을 조금 가져오겠다.

교육을 통한 선별이 없는 경우에는
모든 노동자에게 똑같은 평균 소득이 지불되겠지만,

선별이 있는 경우에는
생산성에 따라 소득의 격차가 생기게 된다는 것이고,

이는 노동자가 자신의 생산성을 알리기 위해
교육이라는 신호를 비용을 들여서라도 사는 것이 유리하다는 것 이다.


물론 아래와 같이 고려해야할 사항도 있다.

하지만,
선별 가설에서는 교육의 비용과 개인의 능력은
마이너스의 상관 관계를 가진다는 가정이 있기 때문에
교육의 역할은 반드시 바람직 한 것은 아니다.

유능한 노동자의 입장에서
교육은 소득을 높이는 유리한 방편이 되지만,

반대로 무능한 노동자의 경우
오히려 소득을 평균 이하로 낮추는 결과밖에 가져오지 않는다.
(교육으로 인한 시간, 비용이 들었기 때문)


즉, 자기 자신이 유능한 노동자라는 가정하에서만 성립한다.
(물론 자신이 무능한 노동자라는 것을 말하는 사람은 없겠지만)

따라서 이런 선별 가설의 논지에 어느정도 동의한다면,

노동자로서 자신의 생산성을 알리기 위해
정말 학사 학위가 노동 생산성을 증가시키던,
증가시키지 않던간에,

자신이 유능한 노동자라면 
돈을 주고라도 학사 학위를 취득하는 것이 좋다.

③ 대학을 나온 사람들에 대한 사람들의 인식 


물론 나는 대학이 그리고 학벌이 
그 사람을 나타낸다는 말에 동의하지 않는다.

특히, 더 나아가 인생을 보장해준다는 
말에는 절대 동의하지 않는다.

하지만
세상에는 이에 동의 하는 사람들이 꽤나 있는 듯하다.

대학을 졸업했다는 사람은 다른 사람들로
하여금 어떤 신뢰감을 주는 것 같다.

이를 증명하듯이,
비교적 대학을 나온 사람들은 취업이 잘되는 편이다.

이는 한국을 제외하고도 다른 나라도 마찬 가지다.

물론 한국의 경우에는 좀 더 심하지만 말이다.

따라서 이런
대학 졸업자(학사,석사,박사)가 가지는
사회적 위치와 사회적 인식을 생각한다면,

학사 학위라는 것은 가치가 있다.

④ 전문 지식 


이 전문 지식은 학사 레벨의 전문 지식을 의미한다.

이 또한 학사 학위를 가지지 못한 사람들이 가지지 못하는 이점이다.

물론 어떤 사람에게는
학사 레벨이 너무너무나도 쉬워서 가치가 없다고
이야기 할 수 있을 지는 모르겠다.

하지만, 학사 레벨의 지식이라도
그만의 가치를 가지고 있다.

왜냐하면 학사 레벨의 한 가지 지식을 파고 들면
'석사'레벨이 되고 그 '석사'레벨을 좀 더 파고 들어가면
'박사'레벨이 되기 때문이다.

또한 내 경험상 학사 레벨의 지식을 무시하는 사람들은
대개 지적 허영심이나 
커뮤니케이션 능력이 떨어지는 사람들이 많았기 때문에
이런 사람들을 신뢰하지 않는다.

생각보다 세상에는 자신의 지적 수준을 자랑하고 싶어하는
허영심을 과시하고 싶은 사람들이 많기 때문에 조심하는것이 좋다.

또한 첫번째 이유로 언급했던 4년간이라는 시간에서 나오는 차이
연장선의 개념으로

4년동안 학사 레벨의 지식을 고민했다는 사실,
그리고 그것에 대해 일부 정확히 이해하고 있다는 사실은
실제 개발자로서 업무를 하는데에 있어서
생각보다 큰 도움이 된다.

⑤ 진학의 가능성 


진학의 가능성의 면을 봐도 분명히 가치는 있다.

만약,
미래에 좀 더 공부하고 싶다면
'학사'라는 학위는 분명히 이점이 된다.

왜냐하면,
'학사' 학위를 인정받을 수 있으면,
어떤 대학교라도 '석사'과정으로 바로 진입할 수 있기 때문이다.

설사 미래에 좀 더 공부하고 싶은 생각이 없을지라도,

사람의 미래는 알 수 없는 것이다.

개발자로서 새로운 기술을 익히기 위해,
다른 개발자보다 더 앞서가기 위해,
자신이 개발자로서 가치를 증명하기 위해,

대학에서 연구되고 있는 기술들을 먼저 습득하고,
연구할 필요가 있다.

따라서 '학사'라는 학위를 가지고 있지 않으면,
이런 새로운 기술을 익히기 위해
대학에 들어가기 힘들다는 리스크가 생긴다.

그런 리스크를 생각해서라도
학사 학위가 필요함은 의심의 여지가 없어 보인다.


이러한 이점들 때문에 대학은 꼭
나와야 하는가?


여기까지 도달하면,
그럼 '대학에 꼭 나와야겠다'라는 생각이 들지는 모르겠다.

하지만, 나는 앞서 '있으면 좋다'라는 결론을 내렸다는 것을
다시 한번 강조하고 싶다.

왜냐하면,
대학 학위라는 것은 개발자로서, 인생에 있어서
+𝜶가 되는 요소다.

즉, 개발자로서, 인생을 살아가는 인간으로서

학사 학위라는 것이 있다면
당신의 가치는 +𝜶가 되지만,

반대로 없다고 해서
당신의 가치가 -𝜶가 되는것이 아니기 때문이다.

어떤 사람들은 이런 사실을 아는지 모르는지는
모르겠지만,
그리고 이것이 '진리'라고는 생각하지 않지만

이런 사실에 대해서는 생각하지도,
이야기하지도 않는다.

이런 𝜶의 요소는
다른 𝜶의 요소로 증명하면 된다.

대학 졸업장의 가치를 지나치게 높게 평가하고 있고,
그런 인식을 가지고 있는
한국에서 내가 이런 말을 했다면,
아마 미친놈 취급을 받을지는 모르겠다.

왜냐하면 현대인들이 자랑하는 
자랑스러운 현대 교육에서 나온 '훌륭한 인간'
실제 사회에서 원하는 '훌륭한 인간'과 매우 다르기 때문이다.

본론으로 다시 돌아와서
내가 4년이라는 시간의 차이에서 언급했던 내용 중
하나를 가져와보겠다.

어떤 사람들과 만나고, 헤어지고 등에서 나오는 고찰과 성찰,
어떤 학문을 배우고 공부함으로써 나오는 고찰과 성찰 등등

이라는 구절이 있을 것 이다.
그리고 대학을 통해 이것들을 얻을 수 있다고 이야기 했지만,

그것이 꼭 대학에서만 얻을 수 있는 것은 아니다.

사람이 모이는 곳은 대학에 한정되어 있지 않다.

그것이 아르바이트 하던 곳이 될 수도 있고,
인터넷 상일 수 도 있으며,
다른 어떤 공동체나 단체 일 수도 있다.

학문도 많은 정보가 공개되어 있는 인터넷 시대에서
구글링을 통해도 충분히 학문을 배우고 연구할 수 있으며

이런 것들을 통해 성찰과 고찰도 충분히 할 수 있다.

이 이야기에 대해 서는 이전 
툰베리에 대한 에세이에서도 이야기 했듯이

인터넷 시대에서는 
그리고 공유하는 것이 힘이 되는 이 시대에서는
더 이상 지식은 어른들만의 것이 아니며,
어떤 특별한 사람들 만의 것은 아니게 되었다.

IT업계에서 이를 증명하듯이
비교적 최근에 공유 경제라는 이름하에 비교적 시끄럽기도 했고,
엘론 머스크는 전기 자동차의 기술을 공개하기도 했다.

적어도 지금은 감추는 것 보다 
공유하는 것이 더 많은 이득을 가져오는 시대에 살아가고 있다.

따라서 인터넷이 세계의 패러다임으로 자리 잡으면서
지식과 학문은 더 이상 학자들만의 것은 아니라는 말이다.

내가 위에서 이야기 한 것은
대학을 나옴으로서 얻을 수 있는 이점이라는 것이지
꼭 대학에 나오라는 이야기는 아니다.

당신이 충분히  다른  𝜶요소를 가지고 있다면,
학위를 가지고 있던, 가지고 있지 않던간에,
당신의 가치는 사회에서 충분히 높게 평가 받을 수 있다.

또한 '학사' 라는 학위는
그렇게 조건이 까다로운 학위도 아니며,

대학 입학에 나이란 존재하지 않기 때문에
언제든지 시간만 있다면 ' 학사' 학위는 누구나 얻을 수 있다.

왜냐하면 대학 또한 자본주의와 강력하게 결합하면서
신입생을 받는 다는 것이 손해는 아니며, 
오히려 이득(대개 비싼 학비)이기 때문이다.

하지만, 
이 4년이라는 시간을 대학에 입학하여
그러한 자격을 얻고,
모두 똑같이 4년이라는 시간을 보냈다고 하더라도 
내가 언급한 이점들을 가졌으리라는 보장할 수는 없다.

왜냐하면
어떻게 보냈는지는 자기 자신만이 알 수 있기 때문이다.

이 시간을 어떻게 보냈는지는 
면접을 통해 다른 사람들이 엿 볼 수는 있지만,
 
이는 충분히 1%의 진실에 온갖 조미료를 뿌리고
설탕을 묻혀 달콤하게 말할 수는 있기 때문에
그 사람의 본질을 추측할 수는 있지만 알기란 힘들 것이다.

하지만
아무리 훌륭하게 거짓을 꾸며 이야기한다고 한들
자기 자신을 속일 수는 없다.

왜냐하면 자신의 '자아'는
그게 좋고 훌륭한 진실이던, 추악하고 불편한 진실이건 
자신을 지켜보고 있기 때문이다.

남들을 속일 수 있을지 언정
자신과 함께 했던 '자아'를 
무시할 수는 있지만 속일 수는 없다.

만일 이를 속일 수 있다면 
그것은 일반적인 '인간'의 범주를 벗어난 사람일 것이다.

왜냐하면 이런 추악하고 불편한 진실로 부터 
일반적인 '인간'은 고찰하고 성찰하여 
어제보다 나은 내일을 만들기 때문이다.

고찰과 성찰이 없는 인간은
어제보다 나은 내일을 만들 수 없다.

그런 인간이 인간의 존엄성을 가지고 있다고 
나는 생각하지 않으며,
그런 사람이 IT업계에 발을 들이지 않았으면 한다.

그런 사람이 업계에 많아지면 많아질 수록
아무리 커뮤니케이션 능력이 훌륭하다고 하더라도
프로젝트를 성공적으로 이루기는 힘들어지기 때문이다.

실제로 커뮤니케이션의 문제로 
프로젝트가 지지부진해지는 경우는 너무나도 많아서 
하루종일 이야기해도 모자랄 지경이다.

결론


결국 개발자에게 학사 학위는 필요한가?에 대해

위와 같은 이유에서
나는 '있으면 좋다'라는 결론을 내렸다.

내가 가진 생각들을 나의 의도에 맞게
잘 풀어서 이야기를 했는지는 모르겠다.

왜냐하면,
나는 전문적으로 글을 쓰는 사람이 아니기 때문에
그리고 학자가 아니기 때문에

그리고 계속해서 개선해 나가겠지만

분명 논리적 허점은 분명히 존재할 것이고,
그 만큼 퀄리티가 떨어질 수 있음은 부정할 수 없다.

하지만 내가 이 글을 쓴 이유는
내 의견에 동의 시키기 위해서 쓴 글이 아님을 알리고 싶다.

내 의견이 어떤지 보다, 이것이 사실인지 아닌지 보다
정말로 개발자를 목표로 하고 있다면
그리고 그런 개발자로서 일하고 있는 나의 동료라면
한번 쯤은 생각을 해봐야하는 문제이다.

현대인으로서 학사 학위를 포함한 모든 학위,
자격증을 포함한 모든 현대 교육이
정말로 사람들의 인식만큼의 가치가 있는지에 대해
생각해볼 필요가 있다는 것이다.

나는 그 인식 만큼의 가치는 없다고 생각하지만,
분명히 이점은 있다고 생각한다.

아마 내가 이야기하지 않은 이점 또한
내가 눈치채지 못했을 뿐,
있을 것이라 생각한다.

물론 어떤 사람은  이런 나의 논지에
나의 멱살을 잡으며,
'무조건 대학에 나와야 하며,
다른 사람의 인생을 망치지 말라'고 비난할지는 모르겠다.

하지만 생각해보아라.

그런 사람들은 나의 말이 '진리'가 아님을 강조하겠지만,

나의 말이 '진리'가 아닐 수 있듯이
그들의 말 또한 '진리'가 아닐 수 있음 역시 동일하다.

하지만,
어떤 의견에는 대게 '부분적 진리'가 포함되어 있다는
밀의 말 처럼

나의 이 의견 또한 '부분적 진리'가 있음에는 의심치 않으며,
비난하는 자들의 의견 역시 '부분적 진리'가 있음에는 의심치 않는다.

다만,블록체인이라는 것이 비트코인에 의해 
현실에 드러나기 시작하면서
어쩌면 멀지 않은 미래에 이런 것들은 무용지물이 될 지도 모른다.

따라서 중요한 것은 누군가가 발행하고 보증해주는
학위나 학벌을 나타내는 증명서나 자격증의 수가 아니다.

그것이 짧은 인생이라 할지라도 
자신이 어떻게 살아왔고, 현재 어떤 위치에 있고
마지막으로 어떤 미래를 그리고 있는지에 대한 
자신의 '자아'와 머리를 맞대면서 고찰과 성찰한 결론이다.

그런 고찰과 성찰한 결론으로서
과거와 현재의 잘못됨으로 인해
비참한 결론이 나왔다고 할지라도

중요한 것은 과거와 현재가 아닌 미래이다.

어떤 이유에서든 
당신의 미래가 불행하다면
과거 얼마나 많은 부귀영화를 누렸다고 한들
아무런 위로가 되지 않는다.

역으로 당신의 과거가 얼마나 참혹한 불행으로 
물들여있다고 한들
나은 미래 속에 살고 있다면
그러한 불행조차 이런 미래에 도달하기 위한 
과정으로서 인식할 수 있다.

그렇기에 멀리서 볼때 
인간에게 중요한 것은 과거나 현재가 아닌 미래이며,
인간이 나아갈 길은 
오늘 보다 나은 내일이라는 의미의
그리고 옛것에 새것을 더한다는 의미의 '진보' 뿐이다.

따라서 미래를 그리고 실행하는 과정 속에서
얼마나 보잘것 없는 것이라도

어제보다 나은 오늘이 되었다면 그것으로 만족하고 
좀 더 앞으로 끊임 없이 나아가는 것이 
존엄성을 가지고 있는 '인간'이다.

그리고 나는 그것이 더 나은 내일을 만드는 
진정한 진보라고 믿고 있다.

하지만 매우 안타깝게도
이 세상에는 단순히 정신적으로 
그리고 육체적으로 편하게 있고 싶기 때문에

이런 존엄성을 버리는 사람들이 너무나도 많기 때문에 
어쩌면 그러한 존엄성을 버리는 것이 옳바른 선택일지는 모르겠다.

다른 사람들이 그러한 선택을 한다고 하더라도
내가 그들의 선택에 뭐라고 할 권리는 없다.

다만,
그렇게 하는 것이 이 세상을 살아가는 방법이라고 
그들의 다음 세대나 다다음 세대에게 이야기 한다면
그리고 그들이 아닌 공동체가, 더 나아가 사회가 
그렇게 이야기 한다면 
나는 강력하게 거부할 것 이다.

왜냐하면 인간의 존엄성을 버리면 
탐욕만 갈구하는 짐승과도 같은 사람이 되기 때문이다.

고찰과 성찰이 없으며,
그런 인간의 존엄성을 버린 사람들이 많은 사회에서 
정말로 진정한 진보를 이룰 수 있다고 생각하지 않는다.

하지만 늘 그렇듯이 그렇게 
멱살을 잡는 사람들은
자신이 의견이나 논지가 '진리'라고 믿고 있는 사람이기에
다른 사람들의 '부분적 진리'를 인정하지 않을 것이며,
비판을 거부 할 것이다.

이런 상황에서 
내가 할 수있는 일이라고는 잘해보라며 박수를 치며 
엄지를 치켜드는 것 뿐이다.
 
나의 의견에서의 그 '부분적 진리'
내 글을 읽고 있는 당신 혹은
이 글을 기반으로
교육되었던 사람들이 얻어갔으면 좋겠다.

여기까지 해서 「개발자에게 학사 학위는 필요한가?」에 대한
논의를 마치려고 한다.




2020.03.14 초기 논의 작성 완료
2020.03.17 세번째 논의 추가 및 개행, 수정
2020.07.16 인용문 수정
2020.08.08 내용 개선
2020.08.23 내용 개선
2020.11.15 내용 개선



이 블로그의 인기 게시물

[ Web ] 웹 애플리케이션 아키텍처 (Web Application Architecture)

[ Web ] 서버 사이드(Sever Side) ? 클라이언트 사이드(Client Side)? 1 [서론, 클라이언트 사이드(Client Side)]

[ Web ] 웹 애플리케이션 서버 아키텍처의 정의 및 유형 ( Define and Types of Web Application Server Architecture )