>  기사  >  백엔드 개발  >  이상적인 프로그래머는 어떤 모습일까요?

이상적인 프로그래머는 어떤 모습일까요?

WBOY
WBOY원래의
2016-07-25 08:55:45867검색
CTO 교육 캠프 http://yun.itxdl.cn/online/cto/index.php?u=5
나는 속여서 프로그래머의 집 문으로 들어간 다음 끝까지 달렸습니다. 26세 이전에는 코딩 경험이 거의 없었습니다. 대학원을 졸업한 후 실수로 교육을 제공할 수 없는 스타트업 회사를 선택하게 되었습니다. 현재 회사의 부도에 대한 걱정과 두려움의 삼중 압박에 시달렸습니다. 해고당하고, 동료들로부터 1년 동안 매일 무시당하며 반년 만에 사임하고, 사용자가 500만 명에 달하는 제품의 메인 백엔드 관리자가 되었습니다. 나는 컴퓨터 기술을 두려워했습니다. 숙련된 사람은 부처의 빛에 둘러싸여 수만 줄의 코드를 뱉어내는 날아가는 태양처럼 밤낮으로 일해야 한다고 믿었습니다. 이제 세상의 모습을 조금 봤으니, 마치 첫날밤처럼 불안하고 불안했던 그 시절을 되돌아보면서 딱히 감동적인 의미는 찾지 못하지만 당연한 것으로 받아들인다. 이상적인 프로그래머와 이상적인 건축가, 이상적인 회계사, 이상적인 안마사 사이에는 차이가 없습니다. 그들은 본질적으로 장인 집단입니다. 저는 누구나 이상적인 프로그래머가 될 수 있다고 믿습니다.
지난 3년 동안 저는 인터넷 서클에서 어울리며 몇몇 PHP 프로그래머들을 만났고, 몇몇 프로그래머들과 함께 일하고, 몇몇 프로그래머들을 이끌고, 몇몇 프로그래머들을 인터뷰했습니다. 그들은 교육 배경이 다르고 일부는 북경 대학교 출신이고 일부는 북경 대학교 Jade Bird 출신이며 일부는 박사 학위가 있으며 일부는 고등학교 중퇴자이며 일부는 BAT 출신이고 일부는 파산 펀드 회사 출신입니다. 여전히 영업사원임) 경력도 0~15년입니다. 하지만 프로그래머는 천재 프로그래머, 이상적인 프로그래머, 평범한 프로그래머의 세 가지 범주로만 나누어지면 된다고 생각합니다. 저는 세 명의 재능 있는 프로그래머를 만났다고밖에 말할 수 없습니다. 이것이 운명입니다. 당신은 정자였기 때문에 7점이 결정됩니다. 당신은 뛰어난 수학적 재능, 차분하고 치밀한 논리, 24시간 내내 문제를 해결하고 문제 해결에 큰 기쁨을 누리려는 기술적 열정을 가지고 있습니다. 진흙탕에서 놀 때는 컴퓨터로 게임을 시작해야 한다. 대학을 졸업하기 전에는 1만 시간의 법칙을 깨뜨리는 것이 게임 생활이다.
제가 보는 프로그래머 중 90%는 아직 평범한 프로그래머입니다. IT 시대의 확장으로 인해 프로그래머는 르네상스 시대의 프린터처럼 평범해졌습니다. 조상의 견습생에 합류하는 사람들의 대부분은 더 큰 직업, 더 높은 급여, 더 나은 생활을 위해 있습니다. 평범한 프로그래머는 썩은 코드를 작성하고, 표준과 일관성이 없으며, 구세계 언어를 고수하고, 큰 아키텍처와 성능에 대해 자신보다 더 잘 이야기합니다. 예외 없이 기술에는 미래가 없으며, 제품, 마케팅, 관리는 더 높은 수준의 기술이라고 믿으며, 그들 중 99%는 자연스럽게 그런 재능이 있다는 것을 그 과정에서 드러낸다. 왜냐는 질문이다. 충돌이 발생한다는 것은 내가 이해하기 힘든 것입니다.
그리고 저는 이상적인 프로그래머들과 어울리는 것을 가장 좋아합니다. 그들과 함께 먹고 살 수 있다면 우리 팀이 그들의 깃발로 가득 차기를 바랍니다. 이상적인 프로그래머는 좋은 마음을 가지고 있고(그들은 사무실 정치의 사랑을 받은 적이 없으며, 단순하고 밝고 행복한 장인들의 그룹입니다) 순수한 호기심을 가지고 있습니다(그들의 눈은 종종 "와, 이게 어떻게 가능하지?" ) 항상 우수성을 위해 노력하고(그들의 신조는 "더 공부하겠습니다"입니다) 기꺼이 공유합니다(GitHub, 주요 Q&A 커뮤니티 및 주변에서 활동하며 귀중한 시간을 기꺼이 초보자를 돕는 데 사용합니다) ). 예, 관리할 필요가 없으며 일반적인 방향만 제시하면 되며 항상 예상치 못한 결과가 반환될 수 있습니다.
이상적인 프로그래머와 평범한 프로그래머 사이에는 벽만 있을 뿐입니다. 둘 사이의 격차는 단지 6개의 작은 점에 불과하며, 시간이 지남에 따라 축적된 이 작은 점에서 사람들 사이의 격차는 영원히 넓어진다. 흥미롭게도 이 6가지 사항은 모두 의식과 관련이 있다는 사실을 발견했습니다. 즉, 프로그래머도 신흥 산업의 다른 모든 유형의 작업과 동일하게 인식과 시간만 있으면 누구나 이상적인 단계에 도달할 수 있습니다. 이상적인 프로그래머는 뛰어난 문제 해결자이기도 해야 합니다.
첫 번째 포인트: 현재에 집중하세요
주의가 산만한 프로그래머들을 너무 많이 봐왔기 때문에 '현재에 집중'하는 것을 첫 번째 원칙으로 삼아야 합니다. 그들은 작은 차 농부, 거위 장수, 제품 만들기, 판매, 투자 등 다양한 작은 꿈을 꾸는 경우가 많지만 프로그래머의 높은 연봉이나 직업을 바꿀 용기가 부족하여 '지연'되기 때문입니다. 집중하지 않고, 자신의 역할을 수행하거나 기술을 연마하거나 새로운 기술을 배우는 데 관심이 없습니다. 세상에는 훌륭한 제품(Mr. Joe 같은), 훌륭한 세일즈맨(Ellison 같은), 훌륭한 투자자(Peterffy 같은)가 있다는 사실은 부인할 수 없으며, 그들은 예외 없이 모두 프로그래머입니다. 하지만 빌 게이츠가 개 판매로 직업을 바꾼다면 버핏이 게이츠에 대해 한 말을 들어본 적 있나요? 나는 소수의 천재를 제외하고는 모든 생명체가 집중만 한다면 다양한 분야에서 성공할 수 있다고 굳게 믿습니다. 그리고 내년에 개를 팔고 싶어도 프로그래머로서의 경험은 여전히 ​​강력한 논리, 신중함, 인내심을 갖도록 훈련할 수 있으며 어떤 산업에서든 상당한 경쟁력을 갖게 될 것입니다.
두 번째 포인트: 사고력과 추진력
버그, 충돌, 튜닝, 침입과 같은 긴급 상황에 대처하는 것이 프로그래밍 자체보다 평범한 프로그래머와 이상적인 프로그래머 사이의 격차를 더 잘 반영할 수 있다고 생각합니다. 알려지지 않은 문제에 직면했을 때 복잡한 조건에서 핵심 문제를 찾는 방법, 문제의 잠재적 원인을 자세히 분석하는 방법, 간섭을 제거하고 최소한으로 검증 가능한 시나리오를 복원하는 방법, 핵심 데이터를 확보하여 추측을 검증하는 방법 및 실험, 프로그래머의 사고력을 반영한 최고의 시나리오입니다. 그렇습니다. 이상적인 프로그래머를 측정하는 데는 경험보다 사고력이 더 중요합니다.
가끔 친구가 와서 "과제를 제출했는데 막혔는데 어떻게 해야 하나요?"라고 묻는다면 그 친구가 더 잘할 수 있다는 느낌이 항상 듭니다. 예를 들어, 코드 자체의 원인을 제거하기 위해 다른 작업을 확인하고 테스트할 수 있으며, 웹 UI를 통해 예외를 확인할 수 있습니다(계정이 없는 경우 제공을 요청할 수 있음). 호스트 로그를 삭제하거나 캐시를 삭제해도 작동하지 않으면 항상 작업 ID와 콘솔 로그를 제공해야 합니다. 이상적인 프로그래머는 일이 앞으로 나아갈 때까지 기다리지 않고 일이 앞으로 나아갈 수 있도록 무엇이든 합니다.
세 번째 포인트: No라고 말하지 마세요
공장을 떠나기 전에 사장님과 이야기를 나눴는데, 제가 할 수 없다고 말한 적이 없다는 것이 가장 큰 장점이라고 하더군요. 그것. 나중에 나는 많은 팀에서 기술과 제품 사이에 대립이 있다는 것을 발견했습니다. 프로그래머는 종종 "기술적으로 불가능하다"고 말하면서 제품 요구를 차단하고 제품은 종종 "Facebook은 할 수 있는데 왜 우리는 할 수 없습니까?"라고 조롱합니다. 프로그램 제작자. 이 두 문장은 프로그래머와 제품견 사이의 사랑에 근본적으로 불리한 금지어여야 합니다.
'기술적으로 불가능하다'고 말하기는 쉽지만, 이 문장을 말할 때 100% 확신하는 사람이 얼마나 될까요? 확실하지 않다면 답변하기 전에 돌아가서 Google에 검색해 보시는 것은 어떨까요? 원래 프로그래머는 상상력이 풍부하다고 생각했는데, 그 상상력 때문에 우리의 삶을 변화시키는 수많은 소프트웨어와 인터넷 제품이 탄생했습니다. 더 많은 것을 보고 나서 나는 대부분의 프로그래머가 버그 퇴치에 보수적이 되어 위험을 감수하려고 하지 않는다는 것을 깨달았습니다. 동시에 많은 팀이 실패를 용납하지 않으려고 합니다. 그래서 "Say No"는 습관적인 저항이 되었습니다. Zeng Guofan이 호남군을 해산한 이유를 아직도 기억하십니까? 그는 군대가 "지쳐가고 있어" 더 이상 싸울 수 없다고 말했습니다. 이상적인 프로그래머가 되고 싶다면 스스로에게 좌절할 기회를 주어서는 안 된다. 무리한 요구에 직면했을 때, 나라를 구하기 위한 시간 비용과 계획을 세우는 것은 간단하고 투박한 "아니오"라고 하는 것이다. 바람직하지 않습니다.
네 번째 포인트: 미래에 투자하세요
프로그래머는 매우 잔인한 직업입니다. 당신이 배우고 사용한 언어, 프레임워크, 패턴은 몇 년 안에 어제의 꽃이 될 가능성이 높습니다. 지금 당신이 비웃는 또 다른 프로그래머 그룹이 곧 돌아서 당신을 비웃을 수도 있습니다. 따라서 이상적인 프로그래머는 자신의 업무를 잘 수행하는 것 외에도 미래에 투자하는 데 시간을 투자합니다. "투자"란 무엇입니까? 투자는 지금 투자하는 시간이며, 이는 미래에 더 많은 시간이나 돈을 돌려줄 것입니다(몇 년 전에 iOS를 배운 프로그래머들의 현재 급여를 살펴보세요!). 제가 맡은 분야인 데이터마이닝을 예로 들어보겠습니다. 하둡은 2008년경부터 떠오르기 시작했습니다. 당시에는 '빅데이터'라는 개념이 화두였고, 하둡 엔지니어들은 데이터 통계와 데이터 사이를 오가는 경우가 많았습니다. 분석 및 데이터 마이닝을 분산 플랫폼으로 수행합니다. 지난 몇 년 동안 Hadoop은 계속 반복되었으며 Spark가 갑자기 등장하여 Hadoop이 보유한 정렬 기록을 갱신했습니다. 중간 데이터를 메모리에 저장함으로써 얻을 수 있는 성능 이점과 풍부한 데이터 구조는 사람들을 끊임없이 사랑하게 만듭니다. 이상한 작은 버그와 가파른 학습 곡선은 실망스럽습니다. 뭐, 안목이 있는 사람이라면 누구나 Spark가 미래의 트렌드라는 것을 알고 있을 것입니다(메모리는 점점 더 저렴해질 것입니다). 만약 주요 사업이 Hadoop에 배치된다면, 일부 작은 모듈을 Spark로 적절하게 전환하고 Spark의 발전에 주목할 수 있습니다. 지역 사회. Spark를 통해 얻은 성능 향상으로 곧 학습에 투자한 시간이 절약될 것입니다.
다섯 번째 포인트: 도구를 잘 활용하세요
도구를 잘 사용하는 것은 4단계로 나눌 수 있습니다.
1 검색엔진
2 하지 마세요 중복을 믿으세요
3개의 코드 스니펫
4개의 자동화
처음 업계에 들어왔을 때 컴퓨터 공학을 전공했지만 공무원이었던 친구가 저에게 물었습니다. 프로그래밍을 전혀 배운 적이 없나요? 나는 Google이라고 말했고 무자비하게 조롱을 받았기 때문에 모든 곳의 내 계정은 2shou라고 불리며 내가 뻔뻔한 중고 프로그래머라고 스스로 경고했습니다. 농담이지만 ​​지금 나한테 물어보면 그래도 구글이라고 대답하겠지. 프로그래머의 성장은 바깥에 무한한 바다가 있는 부풀려진 둥근 케이크와 같습니다. 둥근 케이크가 클수록 바다와의 접촉 영역이 넓어지고, 컴퓨터 과학은 또 다른 것입니다. 매우 빠르게 업데이트되는 과목이자 지식인터넷에서 가장 뛰어난 과목이기도 합니다. 검색엔진을 통해 최신 지식을 얻으세요.
저는 반복을 믿지 않습니다. 마스터는 이것을 DRY 원칙(반복하지 마세요)이라고 부릅니다. 코드를 너무 많이 작성하면 인간의 직관에 따라 좋은 코드와 나쁜 코드를 판단하게 됩니다. 표준화는 미적인 것이 아닙니다. 중복이 적을수록 실수할 기회가 줄어들고 향후 유지 관리 비용도 낮아집니다.
불운하게도 3주 전의 코드를 잃어버렸다면, 비범한 기억력을 이용해 마음속에 남은 조각을 복사할 수도 있겠지만, 3개월 전의 코드를 잃어버리면 나는 당신은 그렇게 행운을 빌 수 없을 것 같아요. 이상적인 프로그래머는 데이터를 저장하는 효과적인 방법을 찾고, 직장에서 영감을 받아 기록한 짧은 코드 조각, 스크립트, 구성, 경험 등을 저장하여 언제든지 검토할 수 있도록 노력할 것입니다.
이상적인 프로그래머는 게으른 사람이어야 합니다. 그들에게 반복되는 단계는 반복되는 코드만큼 추악한 것입니다. 작업이 오랫동안 반복될 가능성이 높다는 것을 깨닫는다면 빠를수록 좋습니다.
여섯 번째 포인트: 시간 관리
프로그래머에게 시간 관리가 특히 중요한 이유는 작업을 완료할 때 황야의 늑대처럼 "혼자 걷는" 자세를 취해야 하기 때문입니다. 외부의 제약 없이 안정적으로 자신을 통제할 수 있고, 효율적으로 일하고 공부할 수 있다면 시간이 지나면서 당신은 분명히 평범한 사람들보다 더 나아질 것입니다.
프로그래머는 고강도 정신작업을 합니다. 일반적으로 하루 4~5시간 정도 본연의 업무에 집중하면 충분하지만 업무 외 시간에는 학습에 시간을 할당해야 합니다. 공부하는 것 외에도 휴식을 취하는 시간도 필요합니다. 차를 마시거나 커피를 마시는 사이에 소중한 시간을 투자하고 앞뒤로 생각하여 절반의 노력으로 두 배의 결과를 얻으십시오.
너무 많이 말하면서 어떤 사람들은 이상적인 프로그래머가 되기 위해 열심히 노력하는 것이 무슨 소용이 있느냐고 묻습니다. 연봉이 높을까요? 아니요. 승진할 수 있나요? 반드시 그런 것은 아닙니다. Bai Fumei와 결혼하는 것은 어떻습니까? 개를 파는 것이 낫습니다.
이나모리 가즈오는 메이지 시대의 장인들이 천황의 부름을 받았다는 이야기를 한 적이 있습니다. 그들은 모두 공부를 하지 않은 동포였지만 평생 동안 한 가지 일에 열심히 일하는 천성적인 기질을 가지고 있었습니다. . 이상적인 프로그래머는 이런 고귀한 기질을 따라야 합니다.
LAMP Brothers의 원본 PHP 비디오 튜토리얼 CD/"Essential PHP in Detail"을 무료로 받아보세요. 자세한 내용은 공식 웹사이트 고객 서비스에 문의하세요: http://www.lampbrother.net
PHPCMS 2차 개발 http://yun.itxdl.cn/online/phpcms/index.php?u=5
WeChat 개발 http://yun.itxdl.cn/online/weixin/index.php ?u=5
모바일 인터넷 서버측 개발 http://yun.itxdl.cn/online/server/index.php?u=5
Javascript 강좌 http://yun.itxdl.cn/online/server/index.php?u=5
Javascript Course http://yun.itxdl.cn/online/server/index.php?u=5

itxdl.cn/online /js/index.php?u=5


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.