910.00 d

Description: We have a hard time choosing a job. the right fit, the right money, etc... It's important and difficult, but it's a problem we have to solve, right? So I thought about metrics. The idea came from computer science worst-case time complexity. The point is to do what you can sustain when it's hardest..

#900#Life_Lessons#910#Self_Discoveries#910.00#Approach_to_Life#910.00 d#Methods_to_use_metrics_to_evaluate_which_job_is_better

TL;DR

  1. 알고리즘의 성능을 평가할 때 사용하는 최선,평균,최악 복잡도를 직업에서 가장 재밌을때, 평소에, 가장 힘들때라고 생각하여 비교
  2. 알고리즘 성능평가에서는 최악 을 기준으로 잡는 것처럼, 위의 평가요소들 중에서도 가장 힘들 때 버틸수 있는지를 기준으로 선정
  3. 아무리 재밌더라도 힘들 때 한 번에 꺾여 버리면 성장하기 힘듬
  4. 한계점으로는 각 직업에 대한 시간 복잡도를 해보기전까지는 평가하기는 힘듬, 시간 복잡도가 외부요인에(사람,환경, 업무)의해 변경되는 경우 결과의 부적합성이 올라감

1. 문제

직업을 선택할 때 좀 더 객관적인 지표를 만들 수 없을까?

다음과 같은 문제를 곰곰이 생각하다가 이론적으로 접근할 수 있는 방법을 생각해보게 됐습니다.
해당 문제는 앞으로 살면서도 겪을 일이고, 중요도 또한 높으며, 흥미 또한 있기 때문에 충분히 마주해볼 문제로 생각하고 시작했습니다.

문제 정의 하기

해당 문제는 먼저 어떤 지표로 할 것인가? 객관적인 수치는? 이라는 부분이 명확해야할텐데 이 부분에 있어 먼저 절대성 보다는 상대성이라는 기준으로 설정하였습니다. 왜냐하면 절대성 을 기준으로 할 경우 연봉, 근속년수 등등으로 평가하다보면 실제로는 개인에게 적용하였을 때 맞지 않거나 의미가 없는경우가 많기 때문이죠.

그러면서 객관성이 필요했습니다. 아무리 상대적 이라고 하지만 A가 B보다 낫다라는 주장을 판단하기 위해서는 그 근거가 필요하기 때문입니다. 문제인 A직업과 B직업을 비교하기 위해서기 때문이죠.

또한 범용성 입니다. 왜냐하면 특정 대상과 환경만을 대상으로 하면 의미가 없기 때문이죠. 예를 들어 중학생때부터 IT를 좋아하던 사람이 성인이 되서 IT와 화가라는 직업중 무엇을 선호할까? 와 같이 특수한 환경을 대상으로 하면 정보 전달에서 큰 의미가 없는 것처럼 말이죠

이러한 속성들을 기반으로 문제를 다시 정의하면

문제의 성질은 상대적으로 평가하면서 객관적인 지표가 있고, 범용성이라는 일반적인 성질을 가져야함

2. 솔루션

그러던 와중 한 창 코딩테스트를 공부하면서 시간복잡도를 고려하게 되면서 이를 해당 문제에 적용해볼까라는 생각을 하게 됐습니다.

먼저 시간복잡도라는 개념은 알고리즘의 성능을 평가하는 방법입니다. (이 개념에서부터 뭔가 직업의 우선순위를 평가라는 문제의식과 맞닿았다고 느꼈습니다.) 대표적으로 시간복잡도라는 개념을 최선(Ω 빅 오메가 표기법) 평균 (Θ 빅쎄타 표기법), 최악(O 빅오 표기법)을 기준으로 지표를 가지는데 이를 통해 알고리즘에 따른 성능 평가 가 가능해집니다. 이 대표적인 3가지 지표 중에서 최악을 기준으로 성능으르 평가 하게 됩니다. 왜냐하면 일반적으로 최선의 경우는 임의로 조작가능해서 구분이 못해서 정보를 전달하지 못하거나, 또는 문제가 생기는 상황은 최악의 경우이기 때문이죠. 그리고 해당 시간복잡도를 표현할 때는 다음과 같은 특징이 있습니다

위와 같은 특징들을 종합하여 보자면 영향을 주는 요소 중 제곱 위주로만 판단하면 이에따라 log와 윗첨자만을 고려한다고 생각하면 될것 같습니다

위에서 언급한 부분을 문제에 적용 시켜본다면 많은 부분이 일치하는 것을 알 수 있습니다

알고리즘의 성능지표를 통해 평가하는 시간복잡도
직업우선순위를 상대적이고 객관적으로 평가 하고 싶은 문제

또한 범용적인면에서 시간복잡도의 경우 일반적으로 사용되며 특정상황이나, 알고리즘에 한해서 적용되기보다는 일반적으로 모든 알고리즘에 적용됩니다.

이에 기준에 맞춰 문제를 해결해 본다면

솔루션 적용하기

직업을 선택할 때 해당 직업을 가장 재밌을 때(최선), 평소 다닐 때(평균), 가장 힘들 때(최악)를 기준으로 그 정도를 평가합니다.
해당 지표의 평가 요소는 차원이 다를 정도를 기준으로 합니다.(n, logn, nlogn, n^2등)

3. 사례 적용

한 번 해당 내용을 적용 시켜본다면 다음과 같은 경우

  1. 백엔드 개발자의 경우 개인이 느끼는 흥미와 적성에대한 종합적인 평가가 당므과 같은경우
  1. 프론트엔드 개발자의 경우

-> O(n^2)

여기서 이 이론을 통해 평가한다면 이 사람은 백엔드 개발자를 선택하게 될 것입니다. 왜냐하면 아무리 힘들어도 버티는 정도가 더 낫고, 이는 우선순위를 결정하는 요소기 때문이죠.

프로그램에서도 최고의 성능이 괜찮고, 평소에도 잘 돌아가지만 , 특정 경우에 반드시 멈춘다고 한다면 그건 안적적인 선택이 아니게 된 것처럼
사람도 비슷하게 재밌을때는 문제가 안되고, 평소에도 문제가 안되지만, 힘들 때 한 번에 꺾여버린다면 이는 적절한 선택이라고 보기는 힘들겠죠.

그래서 개인적으로는 직업을 선택할 때 해당 직업들에 대한 당신의 재밌을때, 평소에 , 가장 힘들때를 지표로 생각하고 힘들때는 기준으로 평가 하면 좀 더 합리적인 선택이 될 수 있을 것같습니다.

그리고 만약 힘들 때 버틸 수 있다는 것은 오래 지속할 수 있다는 것이고, 일반적으로 오래 지속하게 된다는 것은 그 분야에서 높은 성취를 얻을 수 있게됨으로서 결과론적으로 높은 보상을 얻게 될 확률이 증가하게 된다고 생각합니다

이럿듯 좀 더 일반화 하며 말한다면 적성과 흥미를 종합적으로 고려했을 때, 직업 선택의 제1요소는 힘들 때 버틸 수 있는것 이며, 이는 힘들 때 버티지 못하면 번아웃에 한번에 꺾여버리기 때문

4. 한계점

한계점은 크게 2가지입니다.

  1. 해당 재밌을때, 평소에,힘들때에 대한 종합적인 성능을 직업을 가지기 전까지 정확히 얻기 어려움
  2. 외부요인에 영향을(사람, 필수 요건, 환경) 받기 쉬움

1번째로는 시간복잡도의 경우 알고리즘에서 이미 명확히 나와있지만 이걸 직업 우선순위 정할 때 파악하기 위해서는 어려움이 있습니다. 왜냐하면 처음하는 직업, 또는 같은 직종의 이직한 경우라도 이런 재밌을 때, 평소에, 힘들 때에 대한 평가가 부정확하기 때문입니다. 예를 들어 나는 정말 재밌다고 Ω(n)생각했는데 막상 해보니 그렇게 즐겁지 않을 수가 있거든요Ω(n^2) 그래서 해당 데이터를 정확하게 얻기 힘들기 때문에 최대한 유사하게 얻는것이 중요합니다.

2번째로는 외부요인이 너무 많이 영향을 끼칠 수 있다는 것입니다. 예를 들어 아무리 O(n)이 나왔어도 당장 돈이 필요한 경우O(n^2)이라도 고를 수 밖에 없으며, O(n)이 맞음에도 불구하고 나를 집요하게 괴롭히는 상사라던가의 인간관계 등으로 O(n^3)이 될 수 있거든요. 개발환경과 스테이지 환경에서는 문제없지만, 운영 환경에서 이슈가 생기는것처럼...

그래서 제약이 있긴하지만 그럼에도 불구하고 다음과 같이 내가 직업을 선택하는데 있어 어느정도 판단이 되고(재밌을떄, 평소에, 재미없을때에 대한 종합적인 지표), 외부 요인을 어느 정도 필터링 한다면 의사결정을 하는데 도움을 주는 방법으로 활용할 수 있을 것입니다.


같이 읽으면 더 좋은 글

가장 좋아하진 않는 프로그래밍

https://jojoldu.tistory.com/739|