독학으로 우수한 풀스택 엔지니어가 되는 방법은 무엇인가요?
독학으로 우수한 풀스택 엔지니어가 되려면?
대부분의 IT 업계 졸업생과 사회에 첫발을 내딛는 신입사원을 대상으로 합니다. 진로를 선택하는 방법, 우수한 소프트웨어 엔지니어가 되는 방법, 빠르게 실력을 향상시키는 방법 등 얽힌 질문이 얽혀 있습니다. 오늘 우리의 PHP 중국어 웹사이트는 훌륭한 풀 스택 엔지니어가 되는 방법에 대해 이야기하기 위해 왔습니다.
풀 스택 엔지니어란 무엇인가요?
풀 스택 엔지니어라는 용어는 Facebook 엔지니어 Calos Bueno의 기사 - 풀 스택(방화벽을 우회해야 함)에서 처음 등장했습니다. 그는 풀 스택 엔지니어를 성능에 미치는 영향에 대한 깊은 이해를 갖춘 기술 제너럴리스트로 정의합니다. 그 이후로 풀 스택이라는 용어가 대중화되었습니다. 풀 스택 엔지니어, 풀 스택 디자이너, 풀 스택 운영 및 유지 관리, 풀 스택 마케터 등을 보았습니다. '라구(Lagou)', '100Offer' 등 인터넷 인재를 대상으로 한 채용사이트에서는 풀스택 엔지니어가 인기 채용 포지션으로 자리 잡았으며, 연봉 수준도 일반 개발 엔지니어 포지션보다 높다. 그렇다면 풀스택 엔지니어란 무엇이며, 풀스택 엔지니어를 어떻게 정의해야 할까요?
바이두백과사전에서는 풀스택 엔지니어를 다음과 같이 정의하고 있다. “다양한 기술을 터득하고 여러 기술을 활용해 독립적으로 제품을 완성할 수 있는 사람.” 저는 이 정의가 충분히 포괄적이지 않다고 생각합니다. 풀 스택 엔지니어는 애자일 개발 기술을 갖춘 수석 개발 엔지니어이자 설계자이자 프로그래머여야 한다고 생각합니다. 풀스택 엔지니어의 소프트웨어 개발에 대한 이해는 종종 발전해 왔으며, 기술 업데이트가 항상 컴퓨터 이론보다 빠르다는 것을 이해하고 있습니다. 따라서 그들은 핵심 기술을 강화하고 다른 기술에 주의를 기울이고 기꺼이 실천합니다. 기술. 풀 스택 엔지니어는 종종 한 분야의 전문가이지만 적절한 상황에서 다른 언어, 도구 및 기술을 능숙하고 능숙하게 사용합니다.
풀스택 엔지니어의 가치
시간이 지날수록 점점 더 많은 제품이나 프로젝트에서 풀스택 엔지니어의 역할과 가치가 확인되고 있습니다. 그렇다면 풀스택 엔지니어가 개인이나 기업에게 어떤 의미인지 살펴보겠습니다.
개인의 가치와 자유가 크게 향상됨 - 풀 스택 엔지니어를 소개하는 기사를 읽은 적이 있는데, 그 중 대부분은 회사와 팀에 대한 풀 스택 엔지니어의 가치를 강조했습니다. 제가 말씀드리고 싶은 것은 좋은 풀스택 엔지니어는 회사에 얼마나 많은 이익을 가져다 줄지 모르기 때문에 다양한 기술을 열심히 배우지 않는다는 것입니다. 제가 아는 사람들은 모두 독창성을 갖고, 끊임없이 더 높은 기술을 추구하며, 더 좋은 제품을 만들기 위해 헌신하는 사람들입니다. 그리고 진정한 풀스택 엔지니어가 되면 개인적 가치와 기술적 자유가 전례 없이 증가하는 것을 느끼게 될 것입니다. 좋은 아이디어가 떠오르면 혼자 실현할 수도 있고, 팀을 이끌고 지속적으로 개선할 수도 있다는 걸 상상해보세요.
글로벌 사고 및 기술 예측 - 다양한 개발 링크 및 기술 분야에 대한 지식으로 인해 풀 스택 엔지니어는 종종 더 나은 전반적인 관점과 기술 예측을 갖고 초기 단계에서 올바른 것을 선택할 수 있습니다. 프로젝트의 전반적인 방향을 잘 제어합니다. 현대 프로젝트는 매우 복잡한 경우가 많으며, 풀스택 엔지니어는 기술 및 품질 보증을 제공하여 프로젝트 성공의 핵심 인물이 되는 경우가 많습니다.
통신 비용 절감 - 디자이너는 프런트엔드 엔지니어가 자신의 디자인을 100% 복원할 수 없다고 불평하고, 프런트엔드 엔지니어는 백엔드 엔지니어가 인터페이스에서 반환한 데이터를 직접 사용할 수 없다고 불평하는 경우를 자주 듣습니다. 백엔드 엔지니어들도 제품 관리자가 제기한 요구 사항을 전혀 충족할 수 없다고 불평하고 있습니다. 팀원 수가 늘어날수록 스킬 스택의 차이로 인해 커뮤니케이션 비용도 필연적으로 증가합니다. 풀스택 엔지니어는 프런트엔드와 백엔드 개발(심지어 설계까지)을 독립적으로 완료할 수 있을 뿐만 아니라, 프로젝트 초기 단계에 개입할 수 있다면 기술적인 위험을 효과적으로 방지하고 불합리한 요구를 걸러낼 수 있어 상당한 효과를 거둘 수 있습니다. 다양한 기술적 차이로 인한 의사소통을 줄이고 프로젝트 위험을 크게 줄입니다.
창업기업 - 우리는 국민 모두의 창업과 혁신의 시대에 들어섰습니다. 비 온 뒤 스타트업도 버섯처럼 움츠러들고 있다. 스타트업 기업에서는 좋은 아이디어가 떠오르지만 '프로그래머가 한 명 빠진 것뿐이다'라는 당혹감을 느끼는 경우가 많다. 제가 말하고 싶은 것은 실제로 프로그래머가 부족한 것이 아니라 풀스택 엔지니어가 부족하다는 것입니다.
스타트업은 자금이 제한된 경우가 많으며, 우수한 풀스택 엔지니어는 스타트업이 가장 낮은 비용과 최단 시간에 제품을 출시하도록 도울 수 있습니다. 이는 스타트업이 살아남고, 더 많은 투자를 받고, 나아가 '유니콘'이 되기 위한 가장 중요한 단계입니다.
풀스택 엔지니어 스킬 트리
이것을 보면 풀스택 엔지니어가 되려면 어떤 스킬이 필요한지 묻게 될 것입니다. 아래 그림은 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, Youshe, TED 등의 웹사이트에서는 정기적으로 다양한 기술 컨퍼런스를 개최합니다. 이러한 컨퍼런스에서는 기술 전문가들이 제공하는 해당 분야 최고의 기술 사례를 들을 수 있을 뿐만 아니라 업계의 많은 친구들을 만날 수도 있습니다. 이는 아이디어를 확장하고 기술적인 사회적 관계를 확장하는 데 매우 도움이 될 것입니다. 따라서 회사에서 이러한 기술 컨퍼런스에 참석하도록 주선하지 않는 경우 자신에 대한 투자로 참석할 티켓을 직접 구입하십시오.
공개 연설하기 - 풀 스택 엔지니어는 공개 연설자가 될 필요는 없지만 팀의 핵심 구성원으로서 팀 내 기술, 관리 및 기타 측면에 대해 연설해야 합니다. 공유할 의향이 있는 기술 전문가라면 개인 강좌(비디오 또는 오디오)를 녹화하고 MOOC, NetEase Classroom, Youku 또는 Litchi, Himalaya 등과 같은 다양한 미디어에서 기술과 지식을 공유할 수도 있습니다. t 전문가가 아니기 때문에 시도하고 싶지 않을 것입니다. 정성껏 만든 콘텐츠는 모두에게 인정받고 많은 팬을 확보하게 될 것입니다.
개인 블로그 - 매일 조금씩 발전하다 보면 1년 안에 질적 도약을 하게 될 것이다. 우수한 풀스택 엔지니어들은 지식을 축적하는 방법을 알고 있으며, 기술 블로그는 그들의 평소 관행과 생각을 기록하고 태그를 추가하여 향후 검토를 용이하게 하는 좋은 방법입니다. 가장 흥미로운 점은 계속해서 블로그를 기록하고 업데이트하면 전 세계 프로그래머도 귀하의 블로그를 통해 귀하를 알게 된다는 것입니다.
오프라인 활동에 참여하세요 - 프로그래머들이 항상 집에 머물던 과거와 달리 오늘날 젊은 프로그래머들은 공유하고 소통하려는 의지가 더 강합니다. 또한 많은 웹사이트에서는 다양한 기술 주제에 대한 오프라인 활동을 조직합니다. 이러한 활동에서 일부 기술 전문가의 의견을 들을 수 있고 귀하만큼 기술에 열정을 갖고 있는 많은 사람들을 찾을 수도 있습니다. 제가 현재 진행하고 있는 오픈소스 프로젝트의 팀원 중 다수는 이러한 오프라인 활동을 통해 만났습니다.
풀 스택 엔지니어가 되는 것은 결코 하루아침에 달성되는 것이 아닙니다. 탄탄한 기술 기반을 마련하고 핵심 기술을 강화하며 계속 학습해야 합니다. 언젠가 여러분도 저처럼 자유롭게 기술을 사용하여 우수한 제품을 개발하는 즐거움을 느끼실 것이라고 믿습니다