CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·방탄소년당 ·일본산당 ·MaClien ·개발한당 ·자전거당 ·AI당 ·이륜차당 ·안드로메당 ·소시당 ·콘솔한당 ·소셜게임한당 ·바다건너당 ·물고기당 ·키보드당 ·VR당 ·노젓는당 ·ADHD당 ·창업한당 ·나혼자산당 ·PC튜닝한당 ·테니스친당 ·갖고다닌당 ·육아당 ·골프당 ·클다방 ·냐옹이당 ·어학당 ·레고당 ·방송한당 ·라즈베리파이당 ·달린당 ·여행을떠난당 ·IoT당 ·나스당 ·3D메이킹 ·X세대당 ·AI그림당 ·날아간당 ·사과시계당 ·배드민턴당 ·야구당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·문명하셨당 ·클래시앙 ·요리한당 ·쿠키런당 ·대구당 ·DANGER당 ·뚝딱뚝당 ·디아블로당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·이브한당 ·패셔니앙 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·걸그룹당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·덕질한당 ·가죽당 ·리눅서당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·노키앙 ·적는당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·품앱이당 ·리듬탄당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·스타한당 ·스팀한당 ·파도탄당 ·퐁당퐁당 ·테스트당 ·빨콩이당 ·공대시계당 ·터치패드당 ·트윗당 ·가상화폐당 ·시계찬당 ·WebOs당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

개발한당

자유 고성능 프로그래머의 세계 23

31
2022-08-03 05:39:44 수정일 : 2022-08-03 07:27:50 221.♡.118.44
커블

고성능 프로그래머의 습성

 

10년차 프로그래머 기준, 생산성이 가장 좋은 그룹과 낮은 그룹의 프로그래머의 생산성 차이는 40배가 넘는다는 조사 결과가 있습니다.

실제로 대형 프로젝트를 진행하다 보면, 프로젝트가 복잡할 수록, 유지보수 및 향후 재사용까지 고려하면 40배 수준이 아니라, 더 큰 차이가 발생할 수 있다고 생각합니다.

 

'일반인'들은 수긍하기 힘들수 있겠습니다만, 

자신이 '잘하는 이' 에 들어봐야 '정말 잘하는 이'들이 보이고, '정말 잘하는 이'들에 들어봐야 '따라잡을 수 없는 이'가 있다는 것을 비로소 알 수 있습니다. 분야를 막론하고 말이죠.

 

어떤 차이가 동일한 시간을 숙련했는데도 불구하고, 이런 차이를 만들게 될까요?

상위 1%, '그들'의 습성을 세가지만 들여다 보겠습니다. 특정 언어나, 분야에 종속적이지 않은 특성으로요.



 

  1. 추론 속도가 다릅니다.

프로그래밍이란것이, 문제가 주어지면 문제를 분석해서 식을 만드는 일입니다.

문제를 명확히 주는 경우도 있지만, 모호한 미션이 주어지더라도 여러가지 상황을 고려해서, 문제를 형상화 해서 구현하는 능력이 중요합니다.

두가지 예를 들어보지요.


  • 소수를 출력하는 함수를 작성하라.
  • 다음은 함수의 결과이다. 1, 2, 3, 5, 7, 11… 의 결과를 내는 함수를 작성하라.


둘 다 같은 말이지요. 좋은 개발자는 2번문항을 보고 이거 소수네 하고 추론해 낼 수 있어야 합니다. 소수를 배우지 않았더라도 '1과 자신을 제외하고 다른 정수로 나누어지지 않는 수'를 빠르게 도출해 낼 수 있어야 합니다. 


문제를 두번째처럼 주는 사람이 잘못 아니냐구요? 아닙니다. 개발자가 해야 합니다. 실제 요구사항은 명확하게 정의되지 않고 주어지니까요.


여담이지만, 이런 문제 본적이 많지 않나요? 네. 온갖 종류의 IQ테스트 문제로 이런 식의 문제가 많이 나옵니다. IQ테스트 문제는 개발자가 만든거 아닐까 싶을 정도로 개발뇌를 만들기 좋은 훈련도구입니다.


훈련을 통해 어느정도 극복 가능하겠습니다만, 문제는 그들은 생활 속에서 이런 훈련들을 항상 하고 있다는게 문제입니다. 


특히 다른사람의 s/w를 사용하다 문제점을 발견했을때, 증상을 살펴보고, 동일한 증상을 잘 끌어내곤 합니다. 어떤식으로 짰을지 머리속으로 그려봤기 때문이죠. 구현 방법도 대게는 큰틀에서 맞습니다. 그리고, 틀렸을 때 더 좋아 합니다. '이렇게도 할 수 있구나! 쩔어!' 하고...


엘리베이터 버튼을 누르더라도, 어떤 규칙으로 동작하는구나 하는것을 파악하고 있습니다. 행여 다른 방식으로 동작하는 엘리베이터라도 만나면 왜 이따위로 동작하는지, 논리의 차이를 분석하고 있지요.


'공부'해서는 따라잡기 힘들어요. 공부 이야기는 뒤에 한번 더 언급하겠습니다.




2. 사고의 넓이가 다릅니다.

중대형 프로젝트를 진행해 보면 알 수 있습니다만, 그들은 자신이 참여하고 있는 프로젝트의 코드를 모두 알고 있습니다. 어떤 코드는 정확한 논리 루틴까지 알고 있기도 하며, 적어도 S/W에 어떤 영향을 주는지를 파악하고 있습니다. 그래서 가끔은 결정을 하는데 어려움을 겪기도 합니다. 내가 짜는 코드가 수십만 라인을 넘어설지 모르는 전체 코드에 어떤 영향을 줄지를 판단하느라… 


물론 내가 짜는 코드가 다른 함수들에 영향을 광범위하게 미치는 코드는 좋은 코드는 아닙니다만, 현실적으로 *수없이* 미친듯한 사이드 이펙트가 발생할 수 있습니다.


일례로, 누가 어떤 함수를 수정했다는 로그를 확인하였다면, 이미 수많은 생각이 머리를 스칩니다. 이 함수의 수정은 어떤 식으로 잘 못 짜기 쉽고, 만약에 그렇다면 어떤 영향을 미칠건데, 확인해 봐야겠다. 하는 의식의 흐름이 자연스럽게 이루어집니다. 의식적으로 하는게 아니라, '수정됨' 한줄 읽고 거기까지 생각이 그냥 나는겁니다.


          보통개발자와 '그들'의 코딩 과정 차이를 살펴보겠습니다.

  • 보통: 솔루션을 찾는다. -> 짠다.
  • 그들: 솔루션'들'을 찾는다. / 사실 대부분의 솔루션은 머리속에 '대충 이런 방법이 있지'라는 사실을 이미 써 봤거나, 알고 있거나, '당연히 있겠지.' 라고 생각하고 있습니다. '당연히 있겠지.'가 중요한데, 막연히 있겠거니 하는게 아니라, 사용하는 라이브러리의 수준과, 유사한 기능을 가지는 다른 내가 알고있는 라이브러리의 상황이나, 라이브러리에서 제공을 해야할만한 당위성을 추측해서 판단하는거지요.


다음으로, 솔루션들을 머리속에 그려보고, 추가로 내가 아직 모르는 방법이 있을지 구글링 해 보고 아래 사항들,


  • 요구사항
  • 코드 간결성
  • 품질과 리소스
  • 코드의 지향성
  • 현재 프로그램 상황 (기 사용중인 라이브러리 등)
  • 발생할 사이드이펙트의 심각성과 대응 비용
  • 유지보수 비용
  • 향후 확장성
  • 해당 방법에 대한 숙련도


등을 고려해 결정합니다.

심지어, 비프로그래밍적인 방법까지 잘 고려합니다. (예를들어, 데이터를 잘 정제하는것이 더 좋은지에 대한 판단)

확신이 들지 않는다면 가코드 만들어 성능 테스트도 수행합니다. 

그래야 다음에 더 확실하게 결정 할 수 있으니까.

 

두가지 예시를 너무 극단적으로 들었습니다. 아무것도 고려 안하고 구글링 해서 나온거 바로 코딩하고 덮어버리는 사람이 많지는 않겠지요. 중요한건, '그들'은 수많은 고려사항을 종합해 판단하는 것을 의식해서 하는게 아니라, 그냥 합니다. 

 

상황이 복잡하고 중대한 사항일수록 오히려 개발 속도가 느리기도 합니다. 물론, 고려사항을 줄인다면 당장 함수 하나 짜는 시간은 줄 수 있겠지만, 전체 개발기간으로 따지면 더 느리거나, 영원히 개발이 끝나지 않을 수 있습니다.




3. 공부하는 자세가 다릅니다.

새로운 문법이나 기술이 등장하면 의무감에 공부하는 사람이 많겠습니다만, '그들'은 새로운 기술에 대한 컨셉을 들으면서 자신들이 짜왔던 코드를 어떻게 바꿀 수 있으며, 어떤식으로 사용할지에 대해 생각하며 정신 없습니다. 너무 멋져서요! 


그리고 나서 자세한 내용을 들여다 보며 머리속에 그렸던 작동방식과 동일한지, 예측한 사용처에 진짜로 적합한지. '확인'합니다.


그들이 하고 있는것은 공부가 아니라 재미있는 놀이입니다.

 

천재는 노력으로 만들어지는게 아니라, 습관으로 만들어지는겁니다.

사람이 노력할 수 있는것은 한계가 있어요. 한달, 두달, 일년, 이년은 노력 할 수 있지만, 평생 노력하며 산다는 것은 거짓말입니다. 

특히나 프로그래머가 되려 하거나, 막 된분들에게 부탁드리는 말씀입니다. 

노력하지 말고 습관을 들이세요. 습관! 생활!

커블 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [23]
daehyun14
IP 175.♡.11.230
08-03 2022-08-03 06:42:27 / 수정일: 2022-08-03 06:42:44
·
ㅠㅜ 저는 저성능 프로그래머
커블
IP 221.♡.118.44
08-03 2022-08-03 07:23:59
·
@라풀님 자신의 성능을 저성능으로 평가하는 사람이면 이미 저성능은 아닙니다. :)
바비즈
IP 1.♡.147.236
08-03 2022-08-03 09:04:52
·
엇... 아파요...
커블
IP 221.♡.118.44
08-03 2022-08-03 10:12:30
·
@바비즈님 우린 안될거에요. 아마.
드래고나
IP 115.♡.67.42
08-03 2022-08-03 09:52:47
·
개인적으로 습관을 노력을 만들수 있다는 것 자체가 천재는 아니더라도 범재의 범주에 들어가야 가능 할 것 같습니다.
주변에 전부다 저성능 프로그래머만 있는 상태에서 일을 잘하겠다고 오버클락 걸고 설쳐 봤는데 고성능 가기전에 오버히트 되서 쓰로틀링 걸리더군요.
커블
IP 221.♡.118.44
08-03 2022-08-03 10:11:17
·
@드래고나님 아앗... 주변에 경지에 도달하신분들 보면 체력관리, 멘탈관리를 잘 하시는 분들이더군요. 저는 실패했습니당. ㅠ_ㅡ
너구리남편
IP 118.♡.42.144
08-03 2022-08-03 10:43:34
·
최저성능에 미치지 못하는군요 저는 ㅠㅠ

그나마 엘베 로직을 한번씩 생각해봤다는데에 의의를 둡니다.
커블
IP 221.♡.118.44
08-03 2022-08-03 12:24:28
·
@너구리남편님 다음 단계는 스타나 LOL의 아키텍쳐를 추론해 보면 됩니다.
고등어
IP 175.♡.14.230
08-03 2022-08-03 11:10:31
·
I..NTP??
커블
IP 221.♡.118.44
08-03 2022-08-03 12:13:37
·
@고등어님 취업을 거부한다는 그 INTP!
코드무
IP 165.♡.108.170
08-03 2022-08-03 11:42:15
·
제가 하던 생각과 비슷하네요. 좋은 프로그래머가 되려면 여러가지 소질이 필요하지만 단적인 예로 들던게 어릴 때 '재밌는 수학문제'를 즐겨했는가였습니다. 어렵고 복잡하냐를 떠나서 추론을 하는 것 자체에 흥미를 느끼던 사람들이 코딩도 재밌어하면서 쉽게 잘 푸는 것 같습니다.

그 다음은 영어라고 생각하는데, 본문 2.의 사고의 넓이를 뒷받침해주려면 구글링을 통해 다양한 소스의 정보를 빠르고 비교적 정확하게 인지하는게 생산성에 큰 영향을 미치지 않나 싶네요.
커블
IP 221.♡.118.44
08-03 2022-08-03 12:12:07 / 수정일: 2022-08-03 12:21:58
·
@퐌무님 동의 합니다. 저도 영어를 잘 못하지만, 개발자들이 한글로 검색하는 것을 보면 읽다 보면 읽히니 영어 봐라, 자꾸 그러면 사이트 찢어버린... 아니, 차단 해버린다고 협박도 합니다. 오히려 너무 기본인지라 글에선 생략 했습니다. :)

여담으로, 어느 유튭 썸네일에 개발자들 네이버 막으면 개발 못한다는 것을 본 적 있는데, 아마 그 말을 한 사람은 개발을 못하지 않을까 생각 했더랬죠.
Mr.nonentity
IP 121.♡.206.100
08-03 2022-08-03 13:45:17
·
@커블님 저는 구글을 막으면 개발 못하긴 하는데...ㅠㅠ
Mr.nonentity
IP 121.♡.206.100
08-03 2022-08-03 13:45:28 / 수정일: 2022-08-03 13:45:54
·
좋은 글 감사합니다
엄청 재밌게 읽었네요 ㅋㅋ
저도 저런 고성능 프로그래머를 목표로 더 열심히 공부하면서 놀아야겠네요
삭제 되었습니다.
퓨리넬
IP 59.♡.196.195
08-03 2022-08-03 16:02:50
·
@배먹어배님 삽질은 누구나 하게 되죠.
하지만 삽질을하면서 문제를 해결하기 위하여 노력을 하는지, 어떤 접근으로 풀어나가는지 알아가는게 중요하다고 생각합니다.
삽질 없이 처음부터 다 아는 사람은 없잖아요. ㅎㅎㅎ :)
HolyFire
IP 222.♡.139.72
08-03 2022-08-03 20:48:32
·
너무 아프잖아요 ㅠㅠ
tjdwoty
IP 220.♡.91.183
08-03 2022-08-03 23:07:39 / 수정일: 2022-08-03 23:08:45
·
1질문 : 어셈블리어를 할 줄 아세요? --> 공부는 해 봤다. 2질문으로.
2질문 : 어셈블리어를 아무도 안 쓰는데, 왜 공부하셨나요?

답변: 컴퓨터 동작이 궁금해서요.... --> 합격!




웃자고 쓴글입니다.
IIIxe
IP 125.♡.213.14
08-04 2022-08-04 04:43:46
·
상당히 공감가는 글이네요.
저는 대부분 실천하고 있는 거군요.
저거외에도 몇 개가 있지만,
젤 중요한 것은 코어를 선별하는 센스와 집중할 수 있는 에너지가 있어야 가능한 거 같습니다.
삭제 되었습니다.
잉여다
IP 106.♡.142.47
08-04 2022-08-04 11:52:39
·
시스템이라는 큰 그림을 보게된 이후부터

코드 한줄 수정할때마다 생각이 많아지더군요

좋은 코드짜기는 정말 쉽지않습니다.
아리아리션
IP 125.♡.111.106
08-04 2022-08-04 12:23:28
·
우리집 엘베 코드 다시 짜고 싶어요!
아오 QA도 없나 왜 그따구로 동작하는걸 PASS 했는지..
구름빵
IP 220.♡.96.71
08-04 2022-08-04 15:58:53
·
큐나 스택 혹은 search 처리하면서 O(N) 와 log(O(N)) 이런거 생각하는 하는 사람과 안하는 사람의 차이는 하늘과 땅차이입니다.
무플방지위원회장
IP 14.♡.109.189
08-07 2022-08-07 09:28:37
·
저는 Control CV 프로그래머네요.
떡갈
IP 118.♡.26.129
08-21 2022-08-21 02:31:31
·
추론능력은 타고난거 입니다 ㅜㅜ
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.