본인은 PS도 나름 깊게 파봤고, 개발자든 연구자든 PS가 중요하다고 생각해서 적어봄.
내가 PS를 하면서 얻은 한가지 능력은, 아무리 어려운 알고리즘이더라도 논문이나 해설을 보면 이해할 수 있게 된거임. 어렸을적에 못 푼문제 해설을 봐도 이해가 안되는데 꼴에 자존심은 쎄서 마음에 상처도 많이 받고 했었다. 그래도 꾸준히 문제를 풀면서 알고리즘 관련한 배경지식과 함께 문제해결력을 많이 길렀음. 그래서 이제 앵간한 PS수준 씹덕트릭이나 코포 Div2 에디토리얼은 읽으면 다 이해할 수 있고, 논문도 너무 세부분야(계산기하라던가, 그먼씹 복잡도 분석같은거)만 아니면 커버 가능함.
요즘 코테때문인지 PS를 ㅈ으로 보는놈들도 있는거같은데, 코테따위 아득히 넘어서는 대회수준 문제들은 많이 다름. 물론 쉬운문제는 기출인 경우도 많은데, 최종보스급문제는 가끔 SOTA논문(의 약화버전)도 나오고 심지어는 APIO2016 Fireworks는 문제가 먼저 출제되고 그걸 주제로 논문이 나왔다고 들음. 게다가 PS의 많은 알고리즘 문제는 이론컴퓨터분야에서 연구되는 특정 주제(LP라던가)의 제한된 형태인 경우가 많은데, 그러한 특정 케이스를 먼저 풀 줄 알아야 일반화된 형태를 풀 수 있겠지? 물론 형태를 제한하기 때문에 존재하는 더 효율적인 알고리즘을 요구하니까 항상 더 쉬운문제가 되는건 아니지만 어쨌든.
여기까지가 연구에 PS가 도움될 수 있다고 생각하는 부분임. 이후로는 본인도 몸담고 있는 현업에서의 활용도를 알아보자.
두번째 능력은 내가 짜는 코드에 대한 설명을 논리적으로 남에게 할 수 있게된거임. 물론 남이 발로짜놓은 코드도 논리적으로 분석해가면서 읽을 수도 있음. 이게 기본이라고? 그럴리가 없음. 남이 짠 코드는 물론, 본인이 짠 코드도 1년뒤의 자신이 봤을때 못읽겠다는게 개발자 평균임. 그런데 PS를 하면 그런경우가 많이 줄어듬. 그리고 이러한 능력은 코드리뷰에서 꽤 많은 도움이 된다. PS용 코딩을 할 때는 각 변수 의미와 루프 불변식을 머릿속에서 정리하지 않으면 문제를 푸는것 자체가 힘듬. PS할땐 디버거로 삽질하면서 어떻게든 때려맞춘다 쳐도, 대회에서는 디버깅할 컴퓨터자원 자체가 귀하기 때문에 스스로 싼 코드 혹은 팀원이 싸둔 코드를 읽고 분석하고 구현오류가 있는지를 모두 종이와 펜만으로 해결할 수 있어야 함. 그걸 하다보면 본인이 짜는 코드가 점점 논리적이게 되고, 먼 미래의 내가 와서 다시봐도 이해할 수 있게 됨. 각 변수에 수학적으로 정의한 의미와 불변량은 시간이 지난다고 달라지지 않기 때문이지. 수많은 맞왜틀로 단련된 디버깅능력은 덤.
세번째로 학습능률이 좋아짐. 다른분야 도메인지식 공부하는게 PS에 비해 노잼이라서 그렇지, 알고리즘 잘하는 학식이 원하는 분야 1년정도 준비하면 대부분 갈 수 있다고 봄. 어떤 분야던지 도메인지식을 빼면 남는게 알고리즘 말고 뭐가있음? 도메인 지식이라고 퉁쳐서 말하는게 아니라 정말로 많은 분야에 공통적으로 영향을 줄 수 있는 지식이 알고리즘 말고 뭐가 있는지 모르겠음. 정말로 대학내내 PS만하면 대학원에 납치되겠지만. 대부분의 빅테크기업이 왜 신입뽑을때 SWE직군 하나만 두고 코테를 어렵게 낼까? 영재고/과학고/해외 좋은대학들이 왜 올림피아드 수상경력을 평가할까? 생각해보면 납득할 수 있을거라 생각함.
이건 뇌피셜이지만 많은 구루들이 야크쉐이빙을 즐겨하는거로 앎. 물론 처음부터 세상에 도움되는걸 만들 능력이 된다면 좋겠지만, 그런 번뜩이는 아이디어가 없다면 그냥 야크쉐이빙하다가 기회가 왔을때 발휘하면 된다고 생각함. 그리고 그걸하려면 개발에는 그렇게나 필요없는 PS수준 알고리즘이 반드시 필요해짐. 본인은 요즘 딥러닝 구현해보고 있는데, 뉴럴넷 자체가 거대한 계산그래프 DAG라서 위상정렬, dfs, DP같은건 밥먹듯이 사용해야되더라.
본인이 쉽다고 느끼는 길은 다른사람들에게도 쉬움. 이건 좀 과장된 표현이긴 한데, PS처럼 요구사항 명확한 쉬운것도 못풀면서, 현실세계의 동적으로 변하는 복잡한 요구사항을 가지는 ㅈ같은 문제들은 어떻게 풀겠다는거임? 해봤자 남들 다 할줄 아는거 하는, 대체가능한 인력밖에 안됨. 그래서는 기술로 자신의 가치를 인정받기는 힘들고, 결국 영업과 정치의 길을 가야됨. 그게 나쁘다고는 안하겠지만, 그 길은 우리같은 코딩 아스퍼거들에게 정말 피곤한 일이잖아? 차라리 PS를 하고말지.
위의 첫번째 두번째 능력은 많은 PS무용론자들이 중요시하는 커뮤니케이션과도 직접적인 연관이 있다고 볼 수 있겠다. 세번째 능력은 결국 PS를 하는게 뇌속의 코어 근육을 단련해주는 헬스란 말임. 헬스를 하는 사람에 비해 헬스로 돈을 버는 사람은 극소수 인것처럼, 알고리즘 문제만 풀어서는 이게 좀처럼 돈이 안되긴 함. PS같은거 왜하냐고? 너네는 헬스하는 사람한테도 그런거 왜하냐고 물어봄? 심지어 PS는 시간만 있으면 공짜임.
돈 안된다는거부터 중요하다는거의 반증임
그님티? 그님직?
졸업전인데 계약7500에 스옵1억2천 제안받고 협의 마쳤습니다. 포지션은 딥러닝 Compiler Engineer이고 한 1년정도 준비했네요.
실무딸 개발딸치면서 빼애애액대지말고 그님티?
코포 퍼플이고 별로 중요하게 생각은 안하지만 솔브드 티어는 다이아입니다
네 다음 개발딸 실무딸
당신말이 맞습니다.
다음부턴 겸손하게 코포 퍼플 솔브드 다이아 따리 인사 박습니다! 라고 하십쇼!
이새끼는 병신맞네 ㅋㅋㅋ 코포 퍼플이면 이미 할만큼 한거 맞는데? 레전더리인거 인증해봐 ㅋㅋㅋㅋ
코포 퍼플이면 나름 잘하는거 맞음 ㅇㅇ
시간이 존나 아까운건데
당장 취업해야되는데 코테이상의 PS하는건 시간낭비가 맞지. 시간많을때 미리 해두면 좋다고
얘네들은 왜 맥락을 이해못하고 지들 하고 싶은 말만 하는거냐? ps무용론을 주장하는게 아니라니까 하
맥락 못따라간건 미안하다. 떡밥이랑 별개로 그냥 PS무용론자들에 한 말이라고 생각해줘
그래 그러면 너무 좋은글이네.
시간많으면 이젠 그래픽스랑 비전 기반으로 기하학, 해석학 파는게 나음 정수론이 아니라.
정수론은 대학이전에 파놓고, 이산수학때 좀 하고 잊는게 맞고
오 좋은 이야기다. 컴파일러 엔지니어는 좀 멋지다.
그 일반적으로 말하는 컴파일러 엔지니어랑은 업무가 많이 다르긴 한데 암튼 감사합니다
난 그냥 만드는게 더 재밌어서 취향 차이는 있을수도. 보통 PS나 코테 잘하는 분은 복잡한 요구사항 구현시 잘하시긴 하더라.
알고리즘 어디서배움? - dc App
주변 PS고수들의 신상 빅데이터에 의하면 제일 좋은건 KOI/KMO학원 + 영재고 들어가는것 같고, 나같은 경우 코딩에 관심은 있었는데 알고리즘의 필요성을 대학들어와서 느끼고 그때부터 진득하게 책이랑 온라인자료로 독학했음.
네번째 이유로 글을 매우 잘 읽히게 쓸 수 있음 추가해라
틀린 말은 없다고 생각하는데 디시답게 꼬인 애들 많노