중화사전망 - 명인 명언 - 어떻게 독학을 통해 우수한 전체 스택 엔지니어가 될 수 있습니까?
어떻게 독학을 통해 우수한 전체 스택 엔지니어가 될 수 있습니까?
대부분의 IT 업계 졸업생과 막 입사한 신입사원들에게는. 고민하는 문제는 어떻게 직업의 방향을 선택하고, 어떻게 훌륭한 소프트웨어 엔지니어가 되고, 어떻게 자신의 기술을 빠르게 향상시킬 수 있는가이다. (존 F. 케네디, 일명언) 오늘 우리 PHP 중문망은 어떻게 훌륭한 전스택 엔지니어가 될 수 있는지에 대해 여러분과 이야기를 나누었습니다.
전체 스택 엔지니어란 무엇입니까?
전체 스택 엔지니어라는 단어가 페이스북 엔지니어 Calos Bueno 의 한 문장 중 최초로 등장했다. 그는 전체 스택 엔지니어를 성능에 대한 깊은 이해를 가진 기술 일반재로 정의했다. 그 이후로, 전체 스택이라는 단어가 유행하기 시작했다. 나는 전체 스택 엔지니어, 전체 스택 디자이너, 전체 스택 운영 및 유지 보수, 전체 스택 마케팅 담당자 등을 보았습니다. 갈고리',' 100Offer' 등 인터넷 인재 채용 사이트에서 전체 스택 엔지니어는 이미 인기 있는 채용직이 되었으며, 급여 수준도 일반 개발 엔지니어 직위보다 높다. 그렇다면, 전체 스택 엔지니어란 무엇이며, 우리는 어떻게 전체 스택 엔지니어를 정의해야 합니까?
바이두 백과사전의 전체 스택 엔지니어에 대한 정의는 "다양한 기술을 가지고 있으며, 이러한 기술을 이용하여 독립적으로 제품을 완성할 수 있는 사람" 이다. 나는이 정의가 충분히 포괄적이지 않다고 생각한다. 전 스택 엔지니어는 고급 개발 엔지니어, 설계자, 민첩한 개발 기술을 갖춘 프로그래머여야 한다고 생각합니다. 소프트웨어 개발에 대한 전체 스택 엔지니어의 이해는 일반적으로 끊임없이 발전한다. 그들은 특정 기술을 잊어버리고 기술 갱신이 컴퓨터 이론보다 항상 빠르다는 것을 깨달았다. 그래서 그들은 자신의 핵심 기술을 강화하고, 다른 기술을 중시하고 실천할 의향이 있다. 전체 스택 엔지니어는 종종 한 분야의 전문가이며, 적절한 경우 다른 언어, 도구 및 기술을 익히고 잘 사용합니다.
전체 스택 프로젝트의 가치
시간이 지남에 따라 전체 스택 엔지니어의 역할과 가치는 점점 더 많은 제품이나 프로젝트에서 확인되었습니다. 그럼, 전체 스택 엔지니어가 개인이나 회사에 어떤 의미인지 살펴봅시다.
개인적 가치와 자유의 급격한 향상-전체 스택 엔지니어를 소개하는 문장 몇 장을 보면 대부분 회사와 팀에 대한 전체 스택 엔지니어의 가치를 강조하고 있습니다. 제가 말하고자하는 것은 우수한 전체 스택 엔지니어가 회사에 얼마나 많은 이익을 가져다 줄 것이기 때문에 다양한 기술을 연구하기 위해 열심히 노력할 것이라는 것입니다. 내가 아는 사람은 모두 장인심이 있고, 끊임없이 더 높은 기술을 추구하고, 더 좋은 제품을 만드는 것에 집착하는 사람들이다. 진정한 전체 스택 엔지니어가 되면 전례 없는 개인적 가치와 기술적 자유를 느낄 수 있다. 좋은 생각이 떠오르면 스스로 실현하거나 팀을 이끌고 끊임없이 보완할 수 있다고 상상해 보세요. 이것은 얼마나 사람을 흥분시키는가!
글로벌 사고와 기술 예측-각 개발 및 기술 분야에 대한 이해를 통해 전체 스택 엔지니어는 종종 더 나은 글로벌 개념과 기술 예측을 통해 프로젝트 초기에 적절한 기술을 선택하고 프로젝트의 전반적인 방향을 잘 제어할 수 있습니다. 현대 프로젝트는 종종 매우 복잡하며, 전체 스택 엔지니어는 종종 기술과 품질을 보장함으로써 프로젝트 성공의 핵심 인물이 됩니다.
커뮤니케이션 비용 절감-프런트엔드 엔지니어가 설계를 100% 복원할 수 없다고 불평하는 디자이너들이 자주 들리고, 프런트엔드 엔지니어는 백엔드 엔지니어가 인터페이스에서 반환한 데이터를 직접 사용할 수 없다고 불평하며, 백엔드 엔지니어도 제품 관리자의 요청이 전혀 이루어지지 않는다고 불평합니다. 팀 수가 늘어남에 따라 기술 스택이 다르기 때문에 교류 비용이 반드시 증가할 것이다. 전체 스택 엔지니어는 프론트 엔드 및 백 엔드 개발 (심지어 디자인) 을 독립적으로 완료 할 수있을뿐만 아니라 프로젝트 초기에 사전에 개입 할 수 있다면 기술적 위험을 피하고 불합리한 요구를 걸러서 다양한 기술적 차이와 프로젝트 위험으로 인한 커뮤니케이션 문제를 크게 줄일 수 있습니다.
신생 회사-우리는 이미 전 국민의 창업과 혁신의 시대에 이르렀다. 그 신생 기업들이 우후죽순처럼 쏟아져 나왔다. 초창기 회사는 종종 좋은 생각을 가지고 있지만,' 마침 프로그래머가 한 명 모자란다' 는 어색함을 자주 만난다. 제가 말하고자하는 것은 프로그래머가 부족한 것이 아니라 전체 스택 엔지니어가 부족하다는 것입니다. 초창기 기업은 종종 자금이 제한되어 있으며, 우수한 전체 스택 엔지니어가 초창기 기업이 가장 저렴한 비용과 가장 짧은 시간에 자신의 제품을 출시할 수 있도록 도울 수 있습니다. 창업회사가 살아남고, 더 많은 투자를 받고, 심지어 유니콘의 일원이 되는 가장 중요한 단계다.
전체 스택 엔지니어 기술 트리
여기를 보면, 전체 스택 프로젝트를 하는 데 어떤 기교가 필요한가? 다음 그림은 Medium 에서 가져온 것입니다. 저자는 소프트웨어 개발에 관련된 모든 측면을 계층화하고 각 계층에 포함된 주요 기술을 구성 요소로 사용하여 전체 스택 테크니컬 일러스트레이션을 만듭니다.
위 그림에서 우리는 현재의 기술 체계가 얼마나 큰지 쉽게 알 수 있다. 매년 새로운 기술이 이 계층에 추가되고 기존 기술도 끊임없이 업데이트되고 있다. 따라서 모든 기술을 습득하는 것은 불가능하며, 모든 기술을 습득해야 전체 스택 엔지니어가 될 수 있는 것은 아닙니다. 너는 반드시 중요한 발전 기술과 반드시 습득해야 할 추가 기술에 정력을 집중해야 한다.
핵심 개발 기술 (하드 파워):
Git/Github-GIT 를 사용하여 코드를 관리하고 공유하는 방법을 익혀야 합니다. Git 는 코드 관리 도구일 뿐만 아니라 권장되는 작업 방법이기 때문에 첫 번째 핵심 기술로 간주됩니다. 어디서나 개발할 수 있으며 모든 규모의 프로젝트를 효율적으로 관리할 수 있습니다. Git 를 통해 다른 팀 구성원과 분산 공동 작업을 수행할 수 있어 생산성이 크게 향상됩니다. GitHub 를 통해, 당신은 또한 세계의 모든 개발자와 연락할 수 있다.
적어도 하나의 프로그래밍 언어-JAVA, PHP, C#, Python, Ruby, Perl 등과 같은 하나 이상의 프로그래밍 언어에 정통해야 합니다. 대부분의 핵심 비즈니스 프로세스는 이 언어로 작성해야 하기 때문입니다. 너는 이 언어의 문법을 장악해야 할 뿐만 아니라, 이 언어를 기반으로 프로젝트를 구성, 설계, 구현 및 테스트하는 방법도 매우 잘 알고 있어야 한다. JAVA 를 선택하면 객체 지향 설계 및 개발, 디자인 패턴 적용, J2EE 기반 구성 요소 개발 등을 파악해야 합니다.
개발 프레임워크 및 제 3 자 라이브러리 사용-인기 있는 개발 언어에는 일반적으로 JAVA 의 Spring, MyBatis, Hibernate, Python 의 Django, PHP 의 thinkphp 및 yin, nodeJs 와 같은 우수한 개발 프레임워크가 함께 제공됩니다. 이러한 개발 프레임워크는 일반적으로 소프트웨어 개발 분야의 모범 사례를 따르며 매우 우수한 개발자가 만듭니다. 이러한 개발 프레임워크 또는 타사 라이브러리를 능숙하게 사용하면 불필요한 작업을 방지하고 작업을 보다 효율적으로 수행할 수 있습니다. 더 중요한 것은 이러한 우수한 프레임워크나 타사 라이브러리는 일반적으로 지속적으로 유지 관리되며, 이는 제품이나 프로젝트의 품질, 안전 및 편리성에 가장 효과적인 보증입니다.
프런트 엔드 기술-프런트 엔드 기술은 오늘날의 프로젝트 및 제품 개발 과정에서 점점 더 중요 해지고 있기 때문에 핵심 기술로 독립적입니다. 필요한 기능을 구현하는 것 외에도 제품의 사용 편의성 (사용자 경험) 도 제품의 성공 여부를 판단하는 중요한 기준이 되고 있습니다. 이 모든 것은 프런트 엔드 기술의 실현에 달려 있습니다. 최소한 HTML5, CSS3, JavaScript 등의 기본 프런트 엔드 기술을 숙지하고 JQuery, LESS, SASS, AngularJS 또는 REACT 와 같은 타사 프런트 엔드 프레임 또는 라이브러리에 대해 자세히 배워야 합니다.
데이터베이스 및 캐시-모든 제품 또는 프로젝트에는 데이터를 저장할 데이터베이스가 필요합니다. 전체 스택 엔지니어로서, 너는 적어도 한두 개의 데이터베이스를 파악하고, 그것들과 상호 작용하는 방법을 알아야 한다. 현재 비교적 인기 있는 데이터베이스는 주로 MySQL, MongoDB, Redis, Oracle, SQL 서버 등이다. MongoDB 는 문서 데이터베이스로서 인터넷 제품에 점점 더 많이 사용되고 있다. 저는 여전히 MySQL 이나 상용 Oracle 을 더 큰 프로젝트의 백엔드 데이터베이스로 추천합니다. Redis 와 같은 메모리 데이터베이스는 시스템 성능을 향상시키기 위해 캐시에 사용할 수 있습니다.
기초 설계 능력-전체 스택 엔지니어에 대한 대부분의 문장 또는 토론은 설계 능력을 전체 스택 엔지니어의 핵심 기술로 삼지 않지만, 나는 이 기술이 중요하다고 생각한다. 나는 소프트웨어 엔지니어들이 직접 개발한 제품을 평가하라는 초대를 받은 적이 있다. 이 제품들은 창의적이고 기능적으로 잘 구현되어 있지만, 보기만 해도 좋은 제품이 아니며, 사용자가 전혀 사용하지 않는 욕망이 있다. 이러한 제품들은 디자인이 너무 나쁘기 때문에 종종 개발자가 문제의 존재를 전혀 의식하지 못하는 경우가 많기 때문이다. 예를 들면 색상 불일치, 조판 어수선, 아이콘 부적절 등이 있다. 제가 제안하는 기본 디자인 능력은 전문 디자이너처럼 멋진 시각 효과를 낼 필요는 없지만, 배색, 기본 조판과 같은 가장 기본적인 UI 디자인 원리를 익혀야 합니다. 또한 좋은 미적 능력과 몇 가지 기본적인 UI 디자인 능력을 갖추어야 당신의 제품이 그리 나쁘지 않을 것입니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언)
이러한 핵심 기술을 습득하면 자신의 흥미와 발전 방향에 따라 다른 기술을 배울 수 있다. 예를 들어, 데이터 처리에 관심이 있으면 큰 데이터의 기술을 배울 수 있다. 모바일 인터넷에 관심이 있다면 Swift 를 배우고 IOs 앱을 개발할 수 있다. 지식은 항상 연결되어 있다. 좋은 기술 기반을 가지고 나서 다른 지식을 배우러 가는 것은 매우 쉬울 것이다. (존 F. 케네디, 지식명언)
추가 기술 (소프트 파워):
커뮤니케이션-개인 프로젝트를 하지 않는 한, 더 큰 프로젝트에 대해서는 항상 동료, 이해 관계자 또는 고객과 소통해야 합니다. 성공적인 의사 소통은 종종 효과적인 요구를 얻고 팀 신뢰를 구축하는 첫 번째 단계입니다. 프로젝트 과정에서 효과적인 소통을 통해 방안을 결정하고 오해를 해소하며 프로젝트 구성원과 함께 노력해야 한다. 좋은 의사소통 능력은 팀에 더 큰 영향력을 부여하고 더 많은 존중과 관심을 받을 수 있게 해준다. (조지 버나드 쇼, 자기관리명언)
문제를 해결할 수 있는 능력-전체 스택 엔지니어는 먼저 엔지니어이며, 발생하는 다양한 문제를 해결하기 위해 엔지니어링 방법을 익혀야 합니다. 내 경력의 거의 모든 하이라이트는 전체 프로젝트의 아키텍처 제공에서 가장 빠른 속도로 생산 문제를 해결하는 것에 이르기까지 문제 해결과 관련이 있다. 사실 문제 해결 능력을 높이는 방법은 많지만 연습보다 더 효과적인 방법은 없다. 내가 만난 우수한 엔지니어들은 종종 직감으로 가장 짧은 시간 내에 정확한 해결책을 제시할 수 있지만, 보이지 않을 수도 있지만, 그 뒤에는 실제로 많은 실천을 통해 축적된 경험이 있다. (알버트 아인슈타인, 경험명언)
시간 관리-전체 스택 엔지니어로서 서로 다른 프로젝트에서 동시에 다른 역할을 수행하도록 할당될 수 있습니다. 너는 모든 일이 제때에 완성될 수 있도록 자신의 시간을 합리적으로 분배해야 한다. 마찬가지로 여가 시간에도 책을 읽고 공부할 시간이 필요하고, 자신의 부업을 가질 수도 있다. 따라서 시간을 합리적으로 분배하고, 몇 가지 중점 작업을 계획하는 것은 매우 중요하다. 스트레스를 받을 수도 있지만, 창의력을 자극하고 모든 것을 질서 있게 진행할 수 있다. (조지 버나드 쇼, 자기관리명언)
호기심-어떤 일에도 호기심이 넘치고, 끊임없이 배우고 향상시키고자 하는 것이 우수한 엔지니어들의 공통된 특징이다. 소프트웨어 개발 분야는 세계에서 가장 똑똑한 사람들을 모아 다양한 유형의 기술, 제품, 프레임워크가 나날이 새로워지고 있다. 우수한 전체 스택 엔지니어는 이러한 변화를 포착하고 컴퓨터 분야의 발전을 따라잡기 위해 끊임없이 공부해야 한다. 컴퓨터 이 분야에 항상 새로운 것이 있어서 계속 배우면 피곤할 것 같다는 질문을 자주 받는다. (윌리엄 셰익스피어, 햄릿, 컴퓨터명언) 내가 말하고 싶은 것은 끊임없이 공부하는 것을 생활습관으로 삼는 사람에게 새로운 것을 배우는 것은 부담이 아니라 즐거움이라는 것이다.
리더십-우수한 전체 스택 엔지니어는 종종 기술 담당자 또는 프로젝트 관리자 역할을 부여받습니다. 관리자가 되는 것은 네가 다른 사람을 지배하게 하는 것도 아니고, 다른 사람이 너를 대신해서 일을 하게 하는 것도 아니다. 관리자는 팀 구성원의 장점과 단점을 이해하고 서비스 태도로 팀 출력을 극대화하는 방법을 알아야 합니다. 나는 몇몇 우수한 엔지니어를 본 적이 있다. 그들이 관리팀에 배정되었을 때, 그들은 배타적이었다. 그들은 보통 혼자 일하는 것을 좋아한다. 하지만 매니저가 되면 더 현명하고, 믿을 만하고, 믿을 만하고, 미래의 경력에 큰 이득이 될 수 있다고 말하고 싶습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 믿음명언) 그러므로 기회가 올 때, 그것을 도전으로 여기고 거절하지 마세요.
숙련된 기술 리더는 채용할 때 지원자의 기술 능력과 이러한 추가 기술을 동시에 조사하는 경우가 많지만 초급 프로그래머의 채용에는 우수한 기술 회사가 중요하게 생각하는 경우가 많습니다. 기술을 발전시키는 것은 너의 강경한 실력이고, 추가 기술은 너의 소프트 파워로 볼 수 있다. 이 두 가지 기술을 동시에 갖추어야만 우수한 전체 스택 엔지니어가 될 수 있다.
우수한 전체 스택 엔지니어는 밖으로 나가야 한다.
좋은 전체 스택 엔지니어는 자신의 일에 국한되어서는 안 되며, 나가서 다른 기술을 접하고, 경험을 공유하고, 더 많은 친구를 만나야 한다. 다음은 나의 몇 가지 방법이다.
기술 컨퍼런스 참가-Infoq, CSDN, GITC, 유유, TED 등의 사이트에서 정기적으로 다양한 기술 회의를 개최합니다. 이 회의에서, 당신은 기술 거물들이 가져온 각 분야의 모범 기술 실천을 들을 수 있을 뿐만 아니라, 많은 업계의 친구들도 알게 될 것입니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언) 이것은 네가 생각을 넓히고 기술 교제권을 확대하는 데 매우 도움이 된다. 따라서, 만약 회사가 당신이 이러한 기술 회의에 참석하도록 안배하지 않는다면, 스스로 표를 사서 자신에 대한 투자로 삼으십시오.
공개 연설-전체 스택 엔지니어는 공개 강연을 할 필요가 없지만 팀의 핵심 구성원으로서 팀 내에서 기술 및 관리 연설을 해야 합니다. 공유하고자 하는 기술 전문가라면 개인 과정 (비디오 또는 오디오) 을 녹화해 보고 온라인 수업, 인터넷 수업, 유쿠 또는 리치, 히말라야 등 다양한 미디어에서 기술과 지식을 공유할 수 있습니다. 자신이 전문가가 아니기 때문에 시도하지 마라. 날 믿어, 네가 열심히 만든 내용은 반드시 모두의 인정을 받고 많은 팬들을 얻게 될 거야.
개인 블로그-매일 조금씩 진보하면 1 년 후에 질적인 도약이 있을 것이다. 우수한 전체 스택 엔지니어는 지식을 축적할 줄 알고, 기술 블로그는 평소 연습과 사고를 기록하는 좋은 방법이며, 태그 태그가 있어 나중에 복습할 수 있다. 가장 흥미로운 점은 블로그를 지속적으로 기록하고 업데이트하는 동안 전 세계 프로그래머들이 블로그를 통해 당신을 알게 된다는 것입니다.
오프라인 활동에 많이 참여하세요. 예전에 집에 있던 프로그래머와는 달리 젊은 프로그래머들은 공유하고 교류하는 것을 선호합니다. 많은 웹사이트도 서로 다른 기술 주제에 대한 오프라인 활동을 조직한다. 이러한 행사에서는 기술자들의 공유를 들을 수 있고, 여러분처럼 기술에 대한 열정이 넘치는 많은 사람들을 찾을 수 있습니다. 제가 지금 하고 있는 오픈 소스 프로젝트의 많은 팀원들은 바로 제가 이 오프라인 활동에서 만난 것입니다. (윌리엄 셰익스피어, 윈스턴, 오픈소스, 오픈소스, 오픈소스, 오픈소스, 오픈소스, 오픈소스)
전체 스택 엔지니어는 하룻밤 사이에 지은 적이 없다. 너는 탄탄한 기술 기반을 다지고 핵심 기술을 강화하고 끊임없이 공부해야 한다. 언젠가 너도 나처럼 기술을 자유롭게 활용하고 우수한 제품을 개발하는 쾌감을 느낄 수 있을 것이라고 믿는다.