머리말: PHP를 배우는 것은 시대에 뒤떨어진 것인가요? PHP 개발자는 어떻게 빠르게 성장할 수 있나요? 진로계획은 어떻게 진행하나요? 특히 최근 몇 년간 큰 인기를 끌고 있는 인공지능, 머신러닝, 블록체인 기술 등은 일부 사람들을 맹목적으로 추세를 따르고 혼란스럽게 만들 수도 있습니다. 다음은 PHP 전문가인 Wei Yongqiang이 가져온 기사입니다. 그의 수년간의 PHP 작업 경험은 PHP 중국어 웹사이트의 네티즌들에게 영감을 줄 수 있기를 바랍니다.
저자 정보: Wei Yongqiang은 수백만 건의 방문을 통해 기업용 애플리케이션 개발 및 아키텍처에 전념해 왔으며 Zhubajie 금융 상품 Bajie 금융 시스템 개발에 참여했습니다. , Zhubajie BOSS 시스템 개발의 지원을 받아 AVIC Real Estate Chongqing 기자 회견 중 실시간 이벤트 시스템의 아키텍처 및 개발을 담당하고 Yongchuan Wanda WeChat 마케팅 플랫폼의 아키텍처 및 개발을 담당했습니다. Chongqing Yirongde E-Commerce Co., Ltd. 프로젝트 아키텍처 기술 컨설턴트 나는 다양한 신기술을 가지고 놀고 탐구하는 것을 좋아합니다.
이런 기회를 통해 모든 분들과 개발자에 대해 이야기하고, PHP 중국어 웹사이트 네티즌들과 경험과 이해를 공유할 수 있는 기회를 주셔서 감사합니다.
사실 프로그래머 위기는 진짜 문제입니다. 어떤 사람들은 인터넷 산업의 쇠퇴라거나 인터넷 산업이 주류를 넘어섰다는 말도 합니다. 여기서 제가 주로 이야기하고 있는 것은 PHP 프로그래머의 위기인데, 이 위기의 대부분은 풍부한 언어의 다양성과 회사의 언어 선택에서 비롯됩니다.
특히 최근 큰 인기를 끌고 있는 인공지능, 머신러닝 등, 그리고 요즘 각광받고 있는 파이썬. 이는 일부 사람들이 맹목적으로 추세를 따르도록 다소 장려할 것입니다. 실제로 개발 엔지니어는 자신의 지식 시스템을 확장하고 변화시키려는 명확한 목표를 가지고 있어야 합니다. 유행을 따르는 것이 더 위험한 일이고, 변화는 소유한 모든 것을 버리는 것과는 다릅니다. 프로그래머의 탄생과 프로그래머의 성장을 통해 선택하는 방법에 대해 논의하고 싶다. 다음과 같은 측면에서 설명하겠습니다.
PHP 프로그래머의 현재 상황 프로그래머의 계층화를 초래하는 요인; 🎜# 수석 엔지니어가 충족해야 할 요구 사항;
프로그래머가 빠르게 성장할 수 있는 방법
PHP 프로그래머가 원하는 변화 좋은 정보, 필요한 변환 경로 프로그래머 계층화의 원인 언어를 추구하는 사람들 즐거운 사람들 프로그래머가 빠르게 성장할 수 있는 방법 PHP 프로그래머가 원하는 변화 마른 정보, 필요한 변환 경로 객체 지향에 대한 아이디어는 모두가 객체 지향에 대해 엇갈린 의견을 가지고 있으며, 특히 점점 더 많은 사람들이 함수형 프로그래밍을 칭찬합니다. 사실 둘 다 고유한 장점이 있습니다. 우리에게 필요한 것은 객체 지향이 가져오는 장점과 단점을 진정으로 이해하는 것입니다. PHP가 다양한 유형의 변수와 이를 사용하는 방법을 이해하는 데 도움이 되기를 바랍니다. 요약 마지막으로 공유해주신 PHP 전문가 Wei Yongqiang님께 다시 한 번 감사드립니다! 【관련 추천】
요약 .
PHP 프로그래머의 현재 상황
이 단계에서 대부분의 PHP 프로그래머는 상대적으로 혼란스럽고 주니어 PHPer 이 업계는 어렵다고 생각합니다. 대부분의 중급 PHPer는 학습을 통해 자신을 향상시키고 싶어하지만, 오늘은 이 기술을 쫓고 내일은 저 기술을 쫓는 상황에 빠지는 경우가 많습니다.
대부분의 선배 PHPer는 자신만의 지식 시스템을 가지고 있습니다. 그 중 일부는 아키텍처에 있습니다.
프로그래머가 자신의 산업, 즉 진로 계획을 이해하는 것은 매우 중요합니다. 이것은 어려운 질문입니다. 경력을 계획하기 위해서는 먼저 업계를 완전히 이해해야 하기 때문입니다. 이것은 제가 처음에 프로그래머가 되기로 선택한 이유와 많은 관련이 있습니다.
일반적으로 개발 경력의 진입 기간에서 살아남기가 어렵다면 전환 기간을 통과하지 못하면 이 업계에 적합하지 않을 수 있습니다. 많은 것을 성취하십시오. 개발직에 입문하는 과정은 사람마다 다릅니다. 뚜렷한 진로 계획은 없어도 이 업계에 관심이 있고 목표를 갖고 있는 사람도 있을 것입니다. 필드. 3~4개월 훈련을 받고 이 업계에 입문하는 사람들도 있다. 이전에 충칭 인터넷 대학의 교육 기관(YMSD)에서 데이터를 분석한 적이 있습니다. 교육을 받은 후 업계에 진출한 학생 중 2년 후에도 이 위치에서 발전하고 있는 학생은 20%에 불과합니다. . 즉, 80%의 학생들이 단지 달리기 선수가 되기 위해 돈과 시간을 소비한다는 것입니다. 이는 우리가 이 업계에 진출하려면 많은 돈을 벌겠다는 기대와 더불어 미래 발전에 대한 기대도 가져야 한다는 측면에서도 나타납니다.
일반적으로 교육을 통해 업계에 진출하는 개발자들은 기술 루트에 대한 체계적인 목표가 없기 때문에 직장에서 매우 어려운 시간을 보내게 되며, 오프라인 교육 기관에서 받는 것은 맹목적인 모방이기 때문에 혁신능력이 매우 부족합니다. 그리고 제가 아는 한 대부분의 오프라인 교육기관의 커리큘럼 시스템은 최소 5년 이상 기업 현장과 접촉이 끊긴 상태입니다. 그러므로 이러한 프로그래머들은 현재 상황을 바꾸고 상황을 명확히 하기 위해 더 열심히 노력해야 합니다.
프로그래머 계층화는 매우 명백한 문제입니다. 회사에서 직접적으로 나타나는 것은 같은 유형의 프로그래머라도 직위가 매우 다르거나 급여가 매우 크다는 것입니다.
이 레이어링의 원인은 무엇입니까?
첫 번째 이유는 프로그램 개발자의 근무 연한입니다.
사실 업무 경험은 그다지 중요한 요소는 아닙니다. 사실 이전 인터뷰에서 우리는 경력이 1년밖에 되지 않은 아주 좋은 개발자들을 만났습니다. 그러나 구직 소프트웨어를 사용하면 거의 모든 직업 설명에 수년간의 근무 경험이라는 지표가 있음을 알 수 있습니다.
이런 걸 왜 가지고 있어요? 회사 채용담당자가 여러 구직자들과 한 명씩 소통하는 것은 시간과 에너지가 많이 소모되는 일이기 때문에, 업무 경험이 첫 번째 관문입니다.
일반적으로 1~3년의 경력이 한 수준이고 베이징의 일반 급여 범위는 10~20,000입니다.
3~5년의 경력이 다른 수준이고 베이징의 급여 범위는 15~25,000입니다.
5년 이상은 여러 레벨입니다.
물론, 1~3년 경력자도 3~5년 경력자와 동일한 급여를 받을 수 있습니다. 이는 주로 실력에 달려 있습니다. 저희 채팅에서도 이 부분을 주로 논의하겠습니다.
앞에서 프로그래머는 크게 전공 출신과 중간에 출가한 사람으로 나누어진다고 했는데, 전공 출신이 확실히 그보다 낫다는 뜻은 아닙니다. 중간에 승려가 된 사람은 완전히 다른 것입니다. 단지 전공 출신이라는 것은 그 사람이 더 넓은 범위의 지식을 가지고 있다는 것을 의미하기 때문에 다른 사람들도 지식과 기본 기술에 집중해야 합니다.
이 채팅에서는 특정 언어에 대한 질문을 하지 않았습니다. 개발 엔지니어로서 언어에 너무 많은 관심을 기울이는 것이 종종 자신에게 걸림돌이 되기 때문입니다.
종종 이런 문제에 직면합니다. 개발 친구들과 채팅을 하다가 마지막으로 만났을 때 프론트엔드 기술을 배우고 있다고 했고, 한 달 뒤에는 Python을 다시 배우면서 Python이 여전히 사용하기 쉽다고 말했습니다. 한 달 후에 만났을 때 그는 Go 언어를 공부하고 있다고 말했습니다. Go 언어에 대한 이야기는 앞으로 확실히 트렌드가 될 것입니다. 나는 이런 유형의 사람들을 '언어 추구자'라고 부른다.
맹목적으로 언어를 따르지 않도록 기억하세요. 고급 언어를 마스터한 후에는 문법을 시작하는 것이 매우 빠르고 현재 언어의 의미론이 매우 친숙하며 이해하기 매우 쉽기 때문입니다. 우리는 그것에 대해 배우고 연락할 수 있습니다. 사실 우리가 가장 이해해야 할 것은 언어의 특성이다.
예를 들어 많은 사람들이 머신러닝, Python 등을 배우고 싶어합니다. 그렇다면 그들이 Python 언어를 선택하는 이유는 물론 R 언어, Java, JavaScript, C, C++, Scala 등을 선택하는지 생각해 봐야 합니다. 장점은 무엇입니까?
이렇게 생각해보세요. 회사가 현재보다 더 복잡한 다른 시나리오에 직면했을 때 그러한 시나리오를 해결하기 위해 어떤 종류의 언어와 기술 스택을 사용해야 하는지 알게 될 것입니다. 개발에 대한 이해가 한 단계 더 높아집니다.
같은 일을 반복하면서 성취감을 느끼는 사람들이 있는데, 이는 큰 실수는 아니지만 우리를 침체하게 만듭니다.
사람들이 이런 말을 자주 듣습니다. 우리 회사는 할 일이 별로 없고, 끝내고 나면 할 일이 없어서 너무 지루해요. 사실 이것은 그가 더 나은 프로그래머가 될 기회를 포기했다는 것을 의미합니다. 학습은 발전의 사다리입니다. 귀하의 회사가 현재 이 기술을 사용하고 있지 않더라도 여가 시간을 활용하여 이를 배워야 합니다.
사실 프로그래머가 계층화되는 가장 큰 이유는 학습 습관 때문입니다. 왜 이런 말을 하는가? 계층화의 가장 직접적인 원인은 지식이고, 지식의 형성에는 지속적인 학습이 필요하며, 학습의 효율성도 중요하기 때문이다. 나는 이전에 많은 사람들로부터 기술 디렉터가 그들만큼 기술적이지 않다고 불평하는 것을 들었습니다. 이는 또한 두 수준의 프로그래머 사이의 차이점을 보여주는 것이기도 합니다. 그들은 문제를 다른 관점에서 보기 때문에 문제 해결과 솔루션 제공 사이의 관계를 이해하지 못합니다.
저희는 주로 토론과 제안을 제공합니다.
우리가 가장 먼저 보고 싶은 단어는 성장입니다.
저는 이전에 프로그래머를 지도한 적이 있는데, 그는 1년 동안 개발을 해왔습니다. 사용자가 WeChat에 액세스했는지 확인하기 위해 User-Agent를 사용하라고 요청했지만 그는 User-Agent가 무엇인지 물었습니다. 말도 안 되는 소리라고 생각하지 마세요. 사실 왜인지 모르는 사람들이 많죠? 왜냐하면 그들은 CURD 기능에만 집중하기 때문입니다. 나는 CURD가 나쁘다고 말하는 것이 아닙니다. 단지 CURD가 User-Agent를 이해하는 것과 같은 기본이라는 것입니다.
컴퓨터 관련 전공을 졸업한 사람이라면 누구나 컴퓨터 네트워크 과목을 공부해 본 적이 있을 만큼 개발자에게 컴퓨터 네트워크 지식을 이해하는 것은 매우 중요합니다. 컴퓨터 전공이 아니더라도 상관없습니다. 가장 기본적인 http 요청 메시지와 해당 메시지의 구조를 이해해야 합니다.
전에 교육 기관에서 기계화를 할 때 학생들에게 물어보았던 인터뷰 질문 중 하나는 mysql의 InnoDb 엔진과 MyISAM 엔진의 차이점이었습니다. 학생들이 트랜잭션을 지원하는 엔진과 지원하지 않는 엔진으로 대답하는 것을 볼 때마다 저는 찾아보곤 했습니다. 리더를 만나서 너무 기뻐서 웃으면 웃고 싶다는 생각이 들었습니다.
트랜잭션 지원 여부가 다르므로, InnoDb 엔진을 사용하면 어떤 문제가 있나요? 그래서 현장 밖의 지식 포인트에 대해 이야기하는 것이 프로그래머를 최하위 계열로 분류하는 가장 직접적인 이유인 경우가 많다고 생각합니다.
위는 단지 예시일 뿐이며, 학습도 시나리오로 나누어야 함을 보여줍니다. 언어를 배울 때도 마찬가지입니다. 왜 현재 언어가 아닌 새로운 언어를 선택해야 하는지 생각해 보아야 합니다. 예를 들어, 머신러닝에 PHP를 사용하면 어떨까요? 아마도 이 문제에 대해 이야기할 때 많은 사람들은 "PHP는 세계 최고의 언어다"라고 웃고 싶을 것입니다. (저는 PHP를 좋아하기 때문에 부끄럽습니다.)
하지만 이 문제를 다시 한 번 진지하게 생각해 보시기 바랍니다. 머신러닝을 공부하는 많은 분들도 이런 추세에 밀려서 Python을 배우는 분들도 계시는데, 저도 Python을 배우고 싶습니다. 물론 인생은 짧고, 파이썬을 배우겠다는 당신의 선택은 잘못된 것이 아닙니다. Python을 쫓는 C, C++ 및 Java 프로그래머가 많이 있습니다. 참고 기사: 웹 개발이 처음이라면 PHP, Python, Ruby 중 어떤 것을 배워야 할까요?
"몇 년 전 사람들이 자바가 죽을 거라고 불평했는데, 자바가 죽었나요?"라는 말을 인용하면서, 언어에 대한 고민은 이제 그만 배워야 합니다.
물론 채용사이트에서는 기업이 프로그래머에게 마스터해야 할 언어 유형이 일부 프로그래머의 학습 방향이기도 합니다. 기업은 언어를 선택할 때 이전 프로젝트에 사용된 언어, 마이그레이션 비용, 인력 교육 비용, 언어 하드웨어 비용, 인력 통신 비용, 그리고 가장 중요한 것은 현재 발생한 문제를 해결할 수 있는지 여부와 기간을 포함하여 많은 요소를 고려합니다. 문제를 해결하는 데 시간이 걸립니다.
따라서 급속한 성장을 위해서는 다양한 시나리오에서 기술적 세부 사항을 독립적으로 탐색해야 하며 강력한 학습 능력이 필요합니다.
PHP 프로그래머의 변화와 개발에는 두 가지 방향이 있습니다. 하나는 Go 또는 더 깊은 백엔드 개발에 익숙할 수 있습니다. Java 언어를 사용하고 해당 언어와 관련된 회사를 찾으십시오. 예를 들어 PHP 개발을 할 때 비동기, 코루틴, 멀티스레딩과 같은 문제를 이해하는 사람은 거의 없습니다. 다른 하나는 프론트엔드로 눈을 돌리는 것입니다. 프론트엔드 역시 경쟁이 매우 치열한 분야이며, 프론트엔드는 백엔드 못지않게 배워야 합니다.
어떤 사람들은 제가 풀스택 엔지니어가 되고 싶다고 말할 수도 있습니다. 저와 동료들은 모든 것을 알고 있지만 모든 것을 깊이 이해하지 못하는 풀스택 엔지니어가 되어서는 안 된다는 데 동의합니다.
물론, 매우 불안한 프로그래머들에게 하고 싶은 말이 있습니다. PHP는 죽지 않았습니다.
현재 Sina, Shenma Search, Baidu 및 기타 회사는 모두 PHP를 사용하고 소규모 회사는 물론 PHP 직위를 설정했습니다. 중소기업, 단기 및 빠른 비즈니스에서는 PHP가 여전히 첫 번째 선택입니다. PHP의 초기 기능은 웹 애플리케이션을 빠르게 개발하는 것이기 때문입니다. 다른 언어를 추구하는 것이 불가능하지는 않지만 천천히 기초를 다지는 것을 잊지 마십시오. 당신의 지식 시스템이 뚱뚱한 사람이 되도록 두지 마십시오.
또한 모든 프로그래머는 인공지능과 머신러닝에 빠르게 투자하고 싶어할 것입니다. 여전히 이 분야의 코더가 되고 싶다면 인터넷의 다양한 문서 튜토리얼을 통해 배울 수 있습니다. TensorFlow와 같이 외부 세계에 제공되는 많은 API도 있습니다. 이 분야에서 발전하려면 먼저 고전적인 알고리즘을 이해해야 합니다.
프로그래머가 작업을 개발하는 제품 수준에 따라 프로그래머는 프런트엔드 엔지니어와 백엔드 엔지니어라는 두 가지 범주로 나뉩니다. 이제 개발 엔지니어를 위한 분류가 더 많아졌습니다. 저는 프론트엔드와 백엔드라는 두 가지 범주를 여러분과 공유하겠습니다.
사실 PHP가 이상한 위치에 있다는 것은 다행스러운 일입니다. 어떤 사람들은 PHP가 프론트엔드 언어라고 말하고, 어떤 사람들은 PHP가 백엔드 언어라고 말합니다. 이 경계는 그다지 명확하지 않습니다. 일반적으로 프레젠테이션 계층의 작업을 해결하는 언어는 주로 PHP가 처리하는 문제의 수준에 따라 다릅니다.
PHP는 전환을 생각하기도 전에 이미 이러한 지식을 갖추어야 합니다.
먼저 MVC 모델을 이해하는 것이 어렵지는 않지만, 이 출발점에서 어떻게 확장해야 하는지 알아야 합니다. 예를 들어 MVVM, MVP 모델 등의 차이점을 이해할 수 있어야 하는데, 이론은 비교적 단순한 경우가 많기 때문에 프로젝트 영역과 연계하여 이해해야 한다는 점을 기억하세요.
숙달해야 할 또 다른 지식은 http 요청과 응답입니다. 실제로 이 지식은 우리가 사용해 왔지만 많은 사람들이 이를 이해하지 못합니다. 네트워크에서 요청을 클릭하면 요청 헤더를 볼 수 있습니다.
아래와 같이:
PHP에는 부울, 정수, 부동 소수점 및 문자열이라는 네 가지 스칼라 유형이 있습니다. 세 가지 복합 유형, 즉 배열, 객체 및 호출 가능이라는 두 가지 특수 유형, 즉 리소스 및 NULL이 있으며 물론 일부는 의사 유형도 제공됩니다.
위 콘텐츠를 마스터하면 변신의 길을 가는 것이 더 쉬울 수도 있습니다.
먼저 프론트엔드의 변화에 대해 이야기해보겠습니다.
프런트엔드로 변신하고 싶다면 js를 배워야 합니다. 그러나 어느 정도인가? js를 어느 정도 배워야 하는지는 누구에게나 가장 헷갈리는 질문이기도 합니다. 많은 사람들이 js의 구문을 계속 씹을 수 있습니다. 하지만 지식 포인트가 매우 복잡한 js와 같은 경우 구문에 계속 얽매이면 얻는 것보다 잃는 것이 더 많습니다.
사실 가장 중요한 것은 프론트엔드 사고입니다. 문자열, 배열, 객체 및 json 처리를 포함하여 js의 몇 가지 기본 유형 작업을 마스터한 후 vue.js 또는 반응과 같은 프레임워크를 살펴볼 수 있습니다. 비교적 간단하고 시작하기 쉬운 vuejs로 시작하는 것이 좋습니다. 물론, 여전히 html과 css의 기본적인 사용법을 이해해야 합니다. 학습 과정에서 다른 사람의 프로젝트를 살펴보는 것은 매우 중요합니다. github에 가서 일부 vue.js 프로젝트를 검색하여 다른 사람이 어떻게 구현하는지 확인할 수 있습니다.
또 다른 변화 방향은 서버사이드 개발로 전환하는 것입니다.
더 일반적으로 사용되는 서버 측 개발 언어를 선택해야 합니다. Java이든 Go이든 다른 많은 옵션이 있습니다. 처음부터 기초적인 프로그래머가 있다면 두꺼운 문법 기초부터 시작해서는 안 됩니다. 이 과정은 시간이 많이 걸리기 때문입니다. 가장 기본적인 문법을 이해한 후 학습할 프레임워크를 선택하고, 학습 중 문제를 찾은 다음 다시 문법을 학습할 수 있습니다.
여기에는 선택 사항이 너무 많아서 자세히 설명하지는 않고 제안만 드리겠습니다.
많은 프로그래머들은 go 언어에 대해 더 낙관적입니다. 실제로 go 언어는 다른 언어보다 간단하고 엔지니어링 측면에서 신뢰할 수 있으며 자연스러운 개발 표준을 가지고 있어 서버 개발에 이점을 제공합니다. 중국에서는 Qiniu Cloud가 오랫동안 go 언어를 사용해 왔으며 현재 많은 대기업이 일부 문제를 해결하기 위해 go 언어를 사용하기 시작했습니다.
인공지능과 파이썬의 장점으로 인해 많은 사람들이 파이썬 루트를 택하지만, 파이썬 루트를 택한다면 데이터 마이닝, 처리, 계산의 방향으로 갈 준비를 하시기 바랍니다. 언어 선택은 의견의 문제입니다. 가장 간단한 기초는 회사의 요구 사항을 살펴보는 것입니다.
성능 최적화 등 서버사이드 개발에 깊이 들어갈 때 알아야 할 지식이 많습니다. 많은 사람들이 redis가 캐시로 사용된다고 언급했습니다. 이것이 앞서 말씀드린 비즈니스 시나리오의 문제점입니다. 즉, 이해하고 있는 비즈니스 시나리오가 너무 단일하여 지식에 대한 지식이 부족하다는 뜻입니다.
물론 통신 메커니즘의 문제도 있습니다. MQ, Cron, RMI 및 RPC 기술에 대해 많은 사람들이 매우 익숙하지 않다고 생각합니다. 나는 여러분에게 즉시 몇 권의 책을 사서 공부하라고 권유하기 위해 이 목록을 나열하는 것이 아닙니다. 기술을 배우기 전에 먼저 시나리오를 만들어야 한다는 점을 기억하세요.
프로그래머에게 가장 필요한 것, 모든 프로그래머에게 가장 부족한 것은 소통입니다. 모든 사람은 다른 프로그래머와 더 많이 소통하고 의견을 교환해야 하며 이는 자신의 성장에 매우 도움이 됩니다.
인터넷 산업은 입사 후 가만히 앉아 쉴 수 있는 산업이 아닙니다. 계속해서 배우고 발전해야 합니다.
이 업계에 진출하려는 예비 프로그래머는 낙담해서는 안 되며 올바른 방법과 접근 방식을 찾아야 합니다. 오프라인 교육기관이 고르지 못한 경우가 많으므로 신중하게 선택하시기 바랍니다. 인터넷에서 정보를 찾는 법을 배울 수 없다면 뭔가 잘못된 것입니다. 지금은 온라인 자료가 많이 발달해 정보를 찾는 것이 상대적으로 쉽습니다.
PHP 프로그래머는 언어 자체에 큰 위기의식을 가질 필요가 없습니다.
빠른 성장의 열쇠는 무작정 유행을 따르지 않고 자신에 대한 올바른 이해를 갖는 것입니다. 시나리오 기반 학습에 주의를 기울이고, 시나리오에서 발생하는 문제를 생각하고 해결하며, 병목 현상을 해결하거나 최적화할 수 있습니다. 이 과정은 좋은 학습 과정이기도 합니다.