대부분의 IT업계 졸업생 및 사회초년생을 대상으로 합니다. 진로를 선택하는 방법, 우수한 소프트웨어 엔지니어가 되는 방법, 빠르게 실력을 향상시키는 방법 등 얽힌 질문이 얽혀 있습니다. 오늘 우리의 PHP 중국어 웹사이트는 훌륭한 풀 스택 엔지니어가 되는 방법에 대해 이야기하기 위해 왔습니다.
풀스택 엔지니어란
풀 스택 엔지니어라는 용어는 Facebook 엔지니어 Calos Bueno의 기사 - 풀 스택(방화벽을 우회해야 함)에서 처음 등장했습니다. 그는 풀 스택 엔지니어를 성능에 대한 깊은 이해를 갖춘 기술 제너럴리스트로 정의합니다. 그 이후로 풀 스택이라는 용어가 대중화되었습니다. 풀 스택 엔지니어, 풀 스택 디자이너, 풀 스택 운영 및 유지 관리, 풀 스택 마케터 등을 보았습니다. '라구(Lagou)', '100Offer' 등 인터넷 인재를 대상으로 한 채용사이트에서는 풀스택 엔지니어가 인기 채용 포지션으로 자리 잡았으며, 연봉 수준도 일반 개발 엔지니어 포지션보다 높다. 그렇다면 풀스택 엔지니어란 무엇이며, 풀스택 엔지니어를 어떻게 정의해야 할까요?
바이두백과사전에서는 풀스택 엔지니어를 “다양한 기술을 터득하고 여러 기술을 활용해 독립적으로 제품을 완성할 수 있는 사람”이라고 정의한다. 저는 이 정의가 충분히 포괄적이지 않다고 생각합니다. 풀 스택 엔지니어는 애자일 개발 기술을 갖춘 수석 개발 엔지니어이자 설계자이자 프로그래머여야 한다고 생각합니다. 풀스택 엔지니어의 소프트웨어 개발에 대한 이해는 종종 발전해 왔으며, 기술 업데이트가 항상 컴퓨터 이론보다 빠르다는 것을 이해하고 있습니다. 따라서 그들은 핵심 기술을 강화하고 다른 기술에 주의를 기울이고 기꺼이 실천합니다. 기술. 풀 스택 엔지니어는 종종 한 분야의 전문가이지만 적절한 상황에서 다른 언어, 도구 및 기술을 능숙하고 능숙하게 사용합니다.
풀스택 엔지니어의 가치
시간이 지날수록 점점 더 많은 제품이나 프로젝트에서 풀스택 엔지니어의 역할과 가치가 확인되고 있습니다. 그렇다면 풀스택 엔지니어가 개인이나 기업에게 어떤 의미인지 살펴보겠습니다.
● 개인의 가치와 자유가 크게 향상 —— 풀스택 엔지니어를 소개하는 기사를 본 적이 있는데, 대부분 풀스택 엔지니어의 중요성을 강조하는 글이었습니다. 회사와 팀의 가치. 제가 말씀드리고 싶은 것은 좋은 풀스택 엔지니어는 회사에 얼마나 많은 이익을 가져다 줄지 모르기 때문에 다양한 기술을 열심히 배우지 않는다는 것입니다. 제가 아는 사람들은 모두 독창성을 갖고, 끊임없이 더 높은 기술을 추구하며, 더 좋은 제품을 만들기 위해 헌신하는 사람들입니다. 그리고 진정한 풀스택 엔지니어가 되면 개인적 가치와 기술적 자유가 전례 없이 증가하는 것을 느끼게 될 것입니다. 좋은 아이디어가 떠오르면 혼자 실현할 수도 있고, 팀을 이끌고 지속적으로 개선할 수도 있다는 걸 상상해보세요.
● 글로벌 사고와 기술적 안목 —— 풀스택 엔지니어는 다양한 개발 링크와 기술 분야에 대한 지식으로 인해 전반적으로 더 나은 시각과 기술을 보유하는 경우가 많습니다. 미래 지향적이며 프로젝트 초기 단계에서 올바른 기술을 선택할 수 있으며 프로젝트의 전반적인 방향을 잘 제어할 수 있습니다. 현대 프로젝트는 매우 복잡한 경우가 많으며, 풀스택 엔지니어는 기술 및 품질 보증을 제공하여 프로젝트 성공의 핵심 인물이 되는 경우가 많습니다.
● 커뮤니케이션 비용 절감 —— 프론트엔드 엔지니어는 디자인을 100% 복원할 수 없다고 디자이너가 불평하고, 프런트엔드 엔지니어는 뒷면에 대해 불평하는 경우를 자주 듣습니다. -end 엔지니어가 인터페이스에서 반환한 데이터를 직접 사용할 수 없으며, 백엔드 엔지니어도 제품 관리자가 제기한 요구 사항을 전혀 충족할 수 없다고 불평하고 있습니다. 팀 수가 늘어나면 서로 다른 스킬 스택으로 인해 커뮤니케이션 비용이 필연적으로 증가합니다. 풀스택 엔지니어는 프런트엔드와 백엔드 개발(심지어 설계까지)을 독립적으로 완료할 수 있을 뿐만 아니라, 프로젝트 초기 단계에 개입할 수 있다면 기술적인 위험을 효과적으로 방지하고 불합리한 요구를 걸러낼 수 있어 상당한 효과를 거둘 수 있습니다. 다양한 기술적 차이로 인한 의사소통을 줄이고 프로젝트 위험을 크게 줄입니다.
● 스타트업 - 모두가 창업하고, 모두가 혁신하는 시대가 왔습니다. 비 온 뒤 스타트업도 버섯처럼 움츠러들고 있다. 스타트업 기업에서는 좋은 아이디어가 떠오르지만 '프로그래머가 한 명 빠진 것뿐이다'라는 당혹감을 느끼는 경우가 많다. 제가 말하고 싶은 것은 실제로 프로그래머가 부족한 것이 아니라 풀스택 엔지니어가 부족하다는 것입니다. 스타트업은 자금이 제한된 경우가 많으며, 우수한 풀스택 엔지니어는 스타트업이 가장 낮은 비용과 최단 시간에 제품을 출시하도록 도울 수 있습니다. 이는 스타트업이 살아남고, 더 많은 투자를 받고, 나아가 '유니콘'이 되기 위한 가장 중요한 단계입니다.
풀 스택 엔지니어 스킬 트리
이것을 볼 때 풀 스택 엔지니어가 되려면 어떤 기술이 필요합니까? 아래 그림은 Medium에서 가져온 것입니다. 저자는 소프트웨어 개발과 관련된 모든 측면을 레이어로 나누고, 각 레이어에 포함된 주요 기술을 구성 요소로 사용하여 이 풀 스택 기술 다이어그램을 만들었습니다.
위의 그림을 보면 현재 기술 시스템이 얼마나 거대한지 쉽게 알 수 있습니다. 이러한 계층에는 매년 새로운 기술이 추가되고 기존 기술도 지속적으로 업데이트됩니다. 따라서 모든 기술을 마스터하는 것은 단순히 불가능하며, 풀 스택 엔지니어가 되기 위해 모든 기술을 실제로 마스터할 필요는 없습니다. 핵심 개발 기술과 마스터해야 하는 몇 가지 추가 기술에 에너지를 집중해야 합니다.
주요 개발 기술(어려운 기술):
● Git/GitHub - Git을 사용하여 코드를 관리하고 공유하는 방법을 마스터해야 합니다. Git은 코드 관리 도구일 뿐만 아니라 권장되는 작업 방식이기 때문에 첫 번째 핵심 기술로 나열됩니다. Git을 통해 어디서나 개발하고 효율적으로 프로젝트를 관리할 수 있으며, 다른 팀원과도 분산 협업을 수행할 수 있어 업무 효율성이 크게 향상됩니다. GitHub를 통해 전 세계 모든 개발자와 연결할 수도 있습니다.
● 하나 이상의 프로그래밍 언어 - 하나 이상의 프로그래밍 언어에 능숙해야 합니다. JAVA, PHP , C#, Python, Ruby, Perl 등. 핵심 비즈니스 처리의 대부분은 다음 언어로 작성되어야 하기 때문입니다. 이 언어 . 이 언어의 구문을 마스터해야 하며, 이 언어를 기반으로 프로젝트를 설계, 설계, 구현 및 테스트하는 방법도 잘 알고 있어야 합니다. JAVA를 선택했다면 객체지향 설계 및 개발, 디자인 패턴 적용, J2EE 기반의 다양한 컴포넌트 개발 등을 마스터해야 합니다.
● 개발 프레임워크 및 타사 라이브러리 사용 - 널리 사용되는 개발 언어에는 일반적으로 JAVA의 Spring, MyBatis, Hibernate와 같은 우수한 개발 프레임워크가 함께 제공됩니다. , Python의 Django, PHP의 thinkphp, yin, nodeJs의 express 등 이러한 개발 프레임워크는 소프트웨어 개발의 일부 모범 사례를 따르는 경향이 있으며 매우 훌륭한 개발자에 의해 만들어졌습니다. 이러한 개발 프레임워크 또는 타사 라이브러리를 능숙하게 사용하면 수레바퀴를 재발명하는 것을 방지하고 절반의 노력으로 작업을 더욱 효과적으로 만들 수 있습니다. 더 중요한 것은 이러한 뛰어난 프레임워크나 타사 라이브러리가 일반적으로 지속적으로 유지 관리된다는 점입니다. 이는 제품이나 프로젝트의 품질, 안전 및 편의성을 가장 효과적으로 보장하는 것입니다.
● 프론트엔드 기술 - 프론트엔드 기술이 핵심 기술로 독립된 이유는 오늘날의 프로젝트 개발 과정에서 그 중요성이 점점 더 커지고 있기 때문입니다. 그리고 제품이 점점 더 중요해지고 있습니다. 요구되는 기능을 구현하는 것 외에도 제품이 사용하기 쉬운지(사용자 경험)도 제품의 성공 여부를 판단하는 중요한 기준이 되고 있습니다. 그리고 이 모든 것은 프론트엔드 기술의 구현에 달려있습니다. 최소한 HTML5, CSS3, JavaScript와 같은 기본적인 프론트엔드 기술을 마스터해야 합니다. JQuery, LESS, SASS, AngularJS 또는 REACT 및 기타 프런트엔드 프레임워크나 타사 라이브러리에 대해 자세히 알아보세요.
● 데이터베이스 및 캐시 - 모든 제품이나 프로젝트에는 데이터를 저장하기 위한 데이터베이스가 필요합니다. 풀 스택 엔지니어로서 당신은 적어도 하나 또는 두 개의 데이터베이스를 마스터하고 데이터베이스와 상호 작용하는 방법을 알아야 합니다. 현재 많이 사용되는 데이터베이스로는 주로 MySQL, MongoDB, Redis, Oracle, SQLServer 등이 있습니다. 문서 데이터베이스인 MongoDB는 인터넷 제품에서 점점 더 많이 사용되고 있습니다. 대규모 프로젝트의 경우에도 백엔드 데이터베이스로 MySQL이나 상용 Oracle을 사용하는 것이 좋습니다. Redis와 같은 인메모리 데이터베이스를 캐싱에 사용하여 시스템 성능을 향상시킬 수 있습니다.
● 기본 설계 역량 - 풀 스택 엔지니어에 관한 대부분의 기사나 토론에서는 풀 스택 엔지니어의 핵심 역량으로 설계 역량을 언급하지 않지만, 제 생각에는 이 기술은 매우 중요합니다. 소프트웨어 엔지니어가 직접 개발한 일부 제품을 평가해 달라는 요청을 받았습니다. 이러한 제품은 좋은 아이디어와 기능 구현을 가지고 있지만, 언뜻 보면 좋은 제품이 아닙니다. 이러한 제품의 디자인이 너무 나빠서 사용자는 사용하고 싶지 않습니다. , 그리고 종종 해당 개발자들은 일관되지 않은 색상, 지저분한 레이아웃, 부적절한 아이콘 등과 같은 문제의 존재를 전혀 인식하지 못합니다. 제가 제안하는 기본 디자인 기술은 전문 디자이너처럼 멋진 그림을 그리고 멋진 시각 효과를 만들어낼 수 있는 능력을 요구하는 것이 아니라, 색상 매칭, 기본 레이아웃, 그리고 Have good 등 가장 기본적인 UI 디자인 원칙을 숙지해야 합니다. 미적 능력과 몇 가지 기본적인 UI 디자인 기술을 갖추어 당신이 만드는 제품이 나쁘지 않을 것입니다.
이러한 핵심 기술을 습득한 후에는 관심 분야와 개발 방향에 따라 다른 기술을 배울 수 있습니다. 예를 들어 데이터 처리에 관심이 있다면 빅데이터 기술을 배울 수 있습니다. 모바일 인터넷에 더 관심이 있다면 Swift를 배워서 iOS 애플리케이션을 개발해 보세요. 지식은 항상 연결되어 있으며, 좋은 기술 기반을 갖춘 후에는 다른 지식을 배우는 것이 매우 쉽습니다.
추가 스킬(소프트파워):
● 의사소통 —— 개인 프로젝트나 대규모 프로젝트를 진행하는 경우 항상 동료, 이해관계자, 고객과 소통해야 합니다. 성공적인 의사소통은 효과적인 요구 사항을 파악하고 팀의 자신감을 구축하기 위한 첫 번째 단계인 경우가 많습니다. 프로젝트 중에는 효과적인 의사소통을 통해 계획을 결정하고, 오해를 없애고, 프로젝트 구성원과 협력하여 앞으로 나아갈 수 있어야 합니다. 좋은 의사소통 능력은 당신을 팀 내에서 더욱 영향력 있게 만들고 더 많은 존경과 관심을 받게 할 것입니다.
● 문제 해결 능력 - 풀스택 엔지니어는 무엇보다 엔지니어로서 다양한 문제를 해결하는 방법을 터득해야 합니다. 내 경력의 거의 모든 하이라이트는 전체 프로젝트에 대한 건축 솔루션 제공부터 생산 문제를 최대한 빨리 해결하는 것까지 문제 해결과 관련되어 있습니다. 문제 해결 능력을 향상시키는 방법은 실제로 여러 가지가 있지만 그 중 연습만큼 효과적인 방법은 없습니다. 제가 보아온 우수한 엔지니어들은 직관을 바탕으로 가장 짧은 시간에 올바른 솔루션을 제시하는 경우가 많지만, 그 이면에는 많은 연습을 통해 축적된 경험이 있다는 것을 보지 못할 수도 있습니다.
● 시간 관리 - 풀스택 엔지니어로서 동시에 여러 프로젝트에서 서로 다른 역할을 맡게 될 수도 있습니다. 모든 작업이 제 시간에 완료되도록 시간을 합리적으로 할당해야 합니다. 또한 여가 시간에는 독서와 학습에 시간을 투자해야 하며, 자신만의 사이드 프로젝트를 가질 수도 있습니다. 따라서 시간을 합리적으로 할당하고 몇 가지 주요 작업을 계획하는 것이 중요합니다. 약간의 압박감을 느낄 수도 있지만 이는 창의력을 자극하고 모든 일이 원활하게 진행되도록 해줍니다.
● 호기심 —— 어떤 일이든 호기심을 갖고 끊임없이 배우고 발전하려는 의지는 뛰어난 엔지니어의 공통된 특징입니다. 소프트웨어 개발 분야는 세계에서 가장 똑똑한 사람들을 하나로 모으고 있으며, 다양한 유형의 기술, 제품 및 프레임워크가 날마다 변화하고 끝없이 등장하고 있습니다. 우수한 풀스택 엔지니어는 이러한 변화를 파악하고 컴퓨터 분야의 발전을 따라잡는 방법을 지속적으로 학습해야 합니다. 사람들은 종종 컴퓨터 산업에 새로운 것이 나오므로 계속 배우는 것이 피곤하지 않느냐고 묻곤 합니다. 제가 말씀드리고 싶은 것은, 지속적인 학습을 생활습관으로 삼는 사람들에게는 새로운 것을 배우는 것이 부담이 아니라 즐거움이 될 것이라는 점입니다.
● 리더십 - 뛰어난 풀스택 엔지니어에게 기술 리더나 프로젝트 관리자 역할이 주어지는 경우가 많습니다. 관리자가 된다는 것은 다른 사람을 지배하거나 다른 사람이 당신을 위해 일하도록 하는 것이 아닙니다. 관리자는 팀원의 강점과 약점을 이해하고 서비스 태도로 팀의 성과를 극대화하는 방법을 알아야 합니다. 나는 팀을 관리하는 임무를 받았을 때 거부감을 느끼고 종종 혼자 일하는 것을 선호하는 매우 훌륭한 엔지니어들을 본 적이 있습니다. 하지만 관리자가 되면 더 현명해지고, 더 신뢰할 수 있고, 신뢰할 수 있는 사람이 될 뿐만 아니라, 미래의 경력에도 큰 이점을 가져다 줄 것이라고 말하고 싶습니다. 그러니 기회가 오면 도전으로 받아들이고 거절하지 마세요.
채용 시 숙련된 기술 리더는 후보자의 기술 능력과 위에서 언급한 추가 기술을 동시에 검토하는 경우가 많습니다. 주니어 프로그래머 채용의 경우 우수한 기술 회사에서는 이러한 추가 기술을 더 중요하게 생각하는 경우가 많습니다. 개발 스킬은 하드 파워이고, 추가 스킬은 소프트 파워라고 할 수 있습니다. 이 두 스킬을 모두 갖추어야 뛰어난 풀스택 엔지니어가 될 수 있습니다.
우수한 풀스택 엔지니어는 나가야 한다
훌륭한 풀스택 엔지니어는 자신의 업무에만 국한되어서는 안 되며, 나가서 다양한 기술을 접하고 자신의 경험과 통찰력을 공유하며 더 많은 친구를 사귀어야 합니다. 내 관행 중 일부는 다음과 같습니다.
● 기술 컨퍼런스 참가 - InfoQ, CSDN, GITC, Youzhu, TED 등 홈페이지에서 정기적으로 다양한 기술 컨퍼런스를 개최합니다. 이러한 컨퍼런스에서는 기술 전문가들이 제공하는 해당 분야 최고의 기술 사례를 들을 수 있을 뿐만 아니라 업계의 많은 친구들을 만날 수도 있습니다. 이는 아이디어를 확장하고 기술적인 사회적 관계를 확장하는 데 매우 도움이 됩니다. 따라서 회사에서 이러한 기술 컨퍼런스에 참석하도록 주선하지 않는 경우 자신에 대한 투자로 참석할 티켓을 직접 구입하십시오.
● 대중 연설 - 풀스택 엔지니어는 연설을 할 필요는 없지만 팀의 핵심 구성원으로서 해야 합니다. 팀 내에서 기술, 경영 및 기타 측면에 대해 강의합니다. 공유할 의향이 있는 기술 전문가라면 개인 강좌(비디오 또는 오디오)를 녹화하고 MOOC, NetEase Classroom, Youku 또는 Litchi, Himalaya 등과 같은 다양한 미디어에서 기술과 지식을 공유할 수도 있습니다. t 전문가가 아니기 때문에 시도하고 싶지 않을 것입니다. 정성껏 만든 콘텐츠는 모두에게 인정받고 많은 팬을 확보하게 될 것입니다.
● 개인 블로그 - 날마다 조금씩 발전하다 보면 1년 안에 질적으로 도약하게 될 것입니다. 우수한 풀스택 엔지니어들은 지식을 축적하는 방법을 알고 있으며, 기술 블로그는 그들의 평소 관행과 생각을 기록하고 태그를 추가하여 향후 검토를 용이하게 하는 좋은 방법입니다. 가장 흥미로운 점은 계속해서 블로그를 기록하고 업데이트하면 전 세계 프로그래머도 귀하의 블로그를 통해 귀하를 알게 된다는 것입니다.
● 오프라인 활동 참여 —— 프로그래머들이 항상 집에 머물던 과거와 달리 오늘날 젊은 프로그래머들은 공유하고 소통하려는 의지가 더 강합니다. 또한 많은 웹사이트에서는 다양한 기술 주제에 대한 오프라인 활동을 조직합니다. 이러한 활동에서 일부 기술 전문가의 의견을 들을 수 있고 귀하만큼 기술에 열정을 갖고 있는 많은 사람들을 찾을 수도 있습니다. 제가 현재 진행하고 있는 오픈소스 프로젝트의 팀원 중 다수는 이러한 오프라인 활동을 통해 만났습니다.
풀스택 엔지니어가 되는 것은 결코 하루아침에 달성되는 것이 아닙니다. 탄탄한 기술 기반을 마련하고 핵심 기술을 강화하며 계속 학습해야 합니다. 언젠가 여러분도 저처럼 자유롭게 기술을 사용해 우수한 제품을 개발하는 즐거움을 느끼실 수 있을 거라 믿습니다.
관련기사 :