Heim >Schlagzeilen >Wie kann man durch Selbststudium ein exzellenter Full-Stack-Ingenieur werden?
Für die meisten Absolventen der IT-Branche und Berufseinsteiger. Die verworrenen Fragen lauten: Wie wählt man eine Karriererichtung, wie wird man ein hervorragender Software-Ingenieur und wie verbessert man seine Fähigkeiten schnell? Heute ist unsere chinesische PHP-Website hier, um mit Ihnen darüber zu sprechen, wie Sie ein ausgezeichneter Full-Stack-Ingenieur werden.
Was ist ein Full-Stack-Ingenieur?
Der Begriff Full-Stack-Ingenieur tauchte erstmals in einem Artikel des Facebook-Ingenieurs Calos Bueno auf – Full Stack (Notwendigkeit, die Firewall zu umgehen). Er definiert einen Full-Stack-Ingenieur als einen technischen Generalisten mit einem tiefen Verständnis für die Auswirkungen auf die Leistung. Seitdem ist der Begriff Full-Stack populär geworden. Ich habe Full-Stack-Ingenieure, Full-Stack-Designer, Full-Stack-Betrieb und -Wartung, Full-Stack-Vermarkter usw. gesehen. Auf Rekrutierungswebsites, die sich an Internettalente richten, wie „Lagou“ und „100Offer“, sind Full-Stack-Ingenieure zu einer beliebten Rekrutierungsposition geworden, und ihr Gehaltsniveau ist auch höher als das der allgemeinen Entwicklungsingenieurpositionen. Also, Was ist ein Full-Stack-Ingenieur und wie sollten wir einen Full-Stack-Ingenieur definieren?
Die Baidu-Enzyklopädie definiert einen Full-Stack-Ingenieur wie folgt: „Eine Person, die eine Vielzahl von Fähigkeiten beherrscht und mehrere Fähigkeiten nutzen kann, um Produkte selbstständig fertigzustellen.“ Ich denke, diese Definition ist nicht umfassend genug. Ich denke, ein Full-Stack-Ingenieur sollte gleichzeitig ein leitender Entwicklungsingenieur, Architekt und Programmierer sein. Das Verständnis von Full-Stack-Ingenieuren für die Softwareentwicklung hat sich häufig weiterentwickelt. Sie haben bestimmte Technologien hinter sich gelassen und verstehen, dass Technologieaktualisierungen immer schneller sind als die Computertheorie Technologie. Full-Stack-Ingenieure sind oft Experten auf einem Gebiet, beherrschen aber auch andere Sprachen, Tools und Technologien und können diese in den richtigen Situationen gut einsetzen.
Der Wert eines Full-Stack-Ingenieurs
Im Laufe der Zeit haben sich die Rolle und der Wert von Full-Stack-Ingenieuren in immer mehr Produkten oder Projekten bestätigt. Werfen wir also einen Blick darauf, was ein Full-Stack-Ingenieur für eine Einzelperson oder ein Unternehmen bedeutet.
● Große Steigerung des persönlichen Wertes und der persönlichen Freiheit —— Ich habe einige Artikel gelesen, in denen Full-Stack-Ingenieure vorgestellt werden, von denen die meisten die Bedeutung von Full-Stack-Ingenieuren hervorheben Der Wert des Unternehmens und des Teams. Was ich sagen möchte ist, dass kein guter Full-Stack-Ingenieur hart daran arbeitet, verschiedene Technologien zu erlernen, weil sie so viel Nutzen für das Unternehmen bringen. Die Menschen, die ich kenne, sind alle Menschen, die einen Einfallsreichtum haben, ständig höhere Fähigkeiten anstreben und sich der Herstellung besserer Produkte widmen. Und wenn Sie ein echter Full-Stack-Ingenieur werden, werden Sie eine beispiellose Steigerung des persönlichen Wertes und der technischen Freiheit spüren. Stellen Sie sich vor, wenn eine gute Idee auftaucht, können Sie sie alleine umsetzen oder ein Team leiten und sie kontinuierlich verbessern.
● Globales Denken und technischer Weitblick —— Aufgrund der Kenntnis verschiedener Entwicklungszusammenhänge und technischer Bereiche haben Full-Stack-Ingenieure oft einen besseren Gesamtüberblick und eine bessere Technologie vorausschauend, in der Lage, die richtige Technologie in der frühen Phase des Projekts auszuwählen und die Gesamtrichtung eines Projekts gut zu kontrollieren. Moderne Projekte sind oft sehr komplex, und Full-Stack-Ingenieure können oft für die technische und Qualitätssicherung sorgen und werden so zu einer Schlüsselfigur für den Erfolg eines Projekts.
● Reduzieren Sie Kommunikationskosten —— Ich höre oft, dass Designer sich darüber beschweren, dass Front-End-Ingenieure ihre Designs nicht zu 100 % wiederherstellen können, und Front-End-Ingenieure beschweren sich über die Rückseite -end Die von den Ingenieuren von der Schnittstelle zurückgegebenen Daten können nicht direkt verwendet werden, und auch Back-End-Ingenieure bemängeln, dass die von den Produktmanagern gestellten Anforderungen überhaupt nicht erfüllt werden können. Mit zunehmender Anzahl der Teammitglieder werden aufgrund der unterschiedlichen Fähigkeiten der Teammitglieder zwangsläufig auch die Kommunikationskosten steigen. Neben der Möglichkeit, die Front-End- und Back-End-Entwicklung (und sogar das Design) unabhängig voneinander abzuschließen, können Full-Stack-Ingenieure technische Risiken effektiv vermeiden und unangemessene Anforderungen herausfiltern, wenn sie in den frühen Phasen des Projekts erheblich eingreifen können Reduzierung der Kommunikation aufgrund unterschiedlicher technischer Unterschiede und Reduzierung der Projektrisiken.
● Start-up-Unternehmen – Wir sind in einer Ära angekommen, in der jeder ein Unternehmen gründet und Innovationen hervorbringt. Auch Start-ups schießen nach dem Regen wie Pilze aus dem Boden. Start-up-Unternehmen haben oft eine gute Idee, geraten aber oft in die Peinlichkeit, „einfach nur einen Programmierer zu vermissen“. Was ich sagen möchte ist, dass es ihnen nicht wirklich an Programmierern mangelt, sondern dass es ihnen an einem Full-Stack-Ingenieur mangelt. Start-ups verfügen oft nur über begrenzte Mittel, und ein exzellenter Full-Stack-Ingenieur kann Start-ups dabei helfen, ihre Produkte zu den niedrigsten Kosten und in kürzester Zeit auf den Markt zu bringen. Dies ist der wichtigste Schritt für Startups, um zu überleben, mehr Investitionen zu erhalten und sogar ein „Einhorn“ zu werden.
Full-Stack-Ingenieur-Fertigkeitsbaum
Wenn Sie das sehen, müssen Sie sich fragen: Welche Fähigkeiten benötigen Sie, um ein Full-Stack-Ingenieur zu werden? Das Bild unten stammt von Medium. Der Autor hat alle Aspekte der Softwareentwicklung in Schichten unterteilt und die in jeder Schicht enthaltenen Haupttechnologien als Komponenten verwendet, um dieses Full-Stack-Technologiediagramm zu erstellen.
Aus dem Bild oben können wir leicht erkennen, wie groß das aktuelle Technologiesystem ist. Jedes Jahr werden diesen Schichten neue Technologien hinzugefügt und bestehende Technologien werden ständig aktualisiert. Daher ist es einfach unmöglich, alle Technologien zu beherrschen, und um ein Full-Stack-Ingenieur zu werden, müssen Sie nicht wirklich alle Technologien beherrschen. Sie sollten Ihre Energie auf wichtige Entwicklungskompetenzen und einige zusätzliche Fähigkeiten konzentrieren, die es zu beherrschen gilt.
Wichtige Entwicklungskompetenzen (Hard Skills):
● Git/GitHub – Sie müssen beherrschen, wie Sie Git verwenden, um Ihren Code zu verwalten und zu teilen. Git wird als erste Schlüsselkompetenz aufgeführt, da es sich nicht nur um ein Code-Management-Tool, sondern auch um eine empfohlene Arbeitsweise handelt. Es ermöglicht Ihnen, überall zu entwickeln und Projekte jeder Größe effizient zu verwalten. Über Git können Sie auch verteilt mit anderen Teammitgliedern zusammenarbeiten und so die Arbeitseffizienz erheblich verbessern. Über GitHub können Sie sich außerdem mit allen Entwicklern auf der Welt verbinden.
● Mindestens eine Programmiersprache – Sie müssen mindestens eine Programmiersprache beherrschen, JAVA, PHP , C#, Python, Ruby, Perl usw., da der Großteil Ihrer Kerngeschäftsverarbeitung geschrieben werden muss diese Sprache. Sie müssen die Syntax dieser Sprache beherrschen und mit der Architektur, dem Design, der Implementierung und dem Testen von Projekten auf Basis dieser Sprache bestens vertraut sein. Wenn Sie sich für JAVA entscheiden, müssen Sie objektorientiertes Design und Entwicklung, die Anwendung von Designmustern, die Entwicklung verschiedener Komponenten auf Basis von J2EE usw. beherrschen.
● Verwenden Sie Entwicklungsframeworks und Bibliotheken von Drittanbietern – Beliebte Entwicklungssprachen werden im Allgemeinen von hervorragenden Entwicklungsframeworks wie JAVAs Spring, MyBatis und Hibernate begleitet , Pythons Django, PHPs thinkphp, yin, nodeJs' express usw. Diese Entwicklungsframeworks folgen in der Regel einigen der Best Practices der Softwareentwicklung und werden von sehr guten Entwicklern erstellt. Durch den kompetenten Einsatz dieser Entwicklungsframeworks oder Bibliotheken von Drittanbietern können Sie vermeiden, das Rad neu erfinden zu müssen, und Ihre Arbeit mit halbiertem Aufwand effektiver gestalten. Noch wichtiger ist, dass diese hervorragenden Frameworks oder Bibliotheken von Drittanbietern in der Regel kontinuierlich gepflegt werden, was die effektivste Garantie für die Qualität, Sicherheit und Benutzerfreundlichkeit Ihres Produkts oder Projekts darstellt.
● Frontend-Technologie – Der Grund, warum die Frontend-Technologie als Schlüsseltechnologie unabhängig ist, liegt darin, dass sie im Entwicklungsprozess heutiger Projekte immer wichtiger wird und Produkte werden immer wichtiger. Neben der Erreichung der geforderten Funktionen eines Produkts wird auch die einfache Bedienbarkeit (User Experience) zu einem wichtigen Kriterium für die Beurteilung des Erfolgs eines Produkts. Und das hängt alles von der Implementierung der Front-End-Technologie ab. Sie müssen mindestens grundlegende Front-End-Technologien wie HTML5, CSS3, JavaScript beherrschen. und lernen Sie weiter JQuery, LESS, SASS, AngularJS oder REACT und andere Front-End-Frameworks oder Bibliotheken von Drittanbietern.
● Datenbank und Cache – Jedes Produkt oder Projekt erfordert eine Datenbank zum Speichern von Daten. Als Full-Stack-Ingenieur müssen Sie außerdem mindestens eine oder zwei Datenbanken beherrschen und wissen, wie man mit den Datenbanken interagiert. Zu den derzeit beliebten Datenbanken gehören hauptsächlich MySQL, MongoDB, Redis, Oracle, SQLServer usw. MongoDB wird als Dokumentendatenbank zunehmend in Internetprodukten eingesetzt. Für größere Projekte empfehle ich weiterhin die Verwendung von MySQL oder kommerziellem Oracle als Backend-Datenbank. Zur Verbesserung der Systemleistung können In-Memory-Datenbanken wie Redis zum Caching genutzt werden.
● Grundlegende Designfähigkeiten – In den meisten Artikeln oder Diskussionen über Full-Stack-Ingenieure werden Designfähigkeiten nicht als Schlüsselkompetenz für Full-Stack-Ingenieure aufgeführt, aber ich denke Diese Fähigkeit ist sehr wichtig. Ich wurde eingeladen, einige von Software-Ingenieuren selbst entwickelte Produkte zu bewerten. Diese Produkte haben gute Ideen und eine funktionale Umsetzung, aber auf den ersten Blick sind sie keine guten Produkte, weil das Design dieser Produkte zu schlecht ist , und oft sind sich diese Entwickler überhaupt nicht der Existenz von Problemen bewusst, wie z. B. inkonsistente Farben, unordentliches Layout, unpassende Symbole usw. Die grundlegenden Designfähigkeiten, die ich vorschlage, erfordern nicht, dass Sie wie ein professioneller Designer erstaunliche Bilder zeichnen und wunderbare visuelle Effekte erzeugen können, aber Sie müssen die grundlegendsten UI-Designprinzipien beherrschen, wie z. B. Farbanpassung, grundlegendes Layout und Gutes ästhetische Fähigkeiten und einige grundlegende Fähigkeiten im UI-Design, damit die von Ihnen hergestellten Produkte nicht zu schlecht sind.
Nachdem Sie diese Kernkompetenzen beherrscht haben, können Sie je nach Ihren Interessen und Ihrer Entwicklungsrichtung weitere Technologien erlernen. Wenn Sie sich beispielsweise für Datenverarbeitung interessieren, können Sie die Big-Data-Technologie erlernen. Wenn Sie sich mehr für mobiles Internet interessieren, können Sie Swift lernen und iOS-Anwendungen entwickeln. Wissen ist immer miteinander verbunden, und wenn Sie über eine gute technische Grundlage verfügen, wird es sehr einfach sein, anderes Wissen zu erlernen.
Zusätzliche Fähigkeiten (Soft Power):
● Kommunikation —— Es sei denn, Sie sind es Wenn Sie an persönlichen oder größeren Projekten arbeiten, müssen Sie immer mit Kollegen, Stakeholdern oder Kunden kommunizieren. Erfolgreiche Kommunikation ist oft der erste Schritt, um wirksame Bedürfnisse zu ermitteln und das Vertrauen im Team aufzubauen. Während des Projekts müssen Sie eine effektive Kommunikation nutzen, um den Plan festzulegen, Missverständnisse zu beseitigen und mit den Projektmitgliedern zusammenzuarbeiten, um voranzukommen. Durch gute Kommunikationsfähigkeiten werden Sie einflussreicher im Team und erhalten mehr Respekt und Aufmerksamkeit.
● Fähigkeit zur Problemlösung – Ein Full-Stack-Ingenieur ist in erster Linie ein Ingenieur. Er muss technische Methoden beherrschen, um verschiedene aufgetretene Probleme zu lösen. Fast alle Höhepunkte meiner Karriere hängen mit der Problemlösung zusammen, angefangen von der Bereitstellung der architektonischen Lösung für das gesamte Projekt bis hin zur schnellstmöglichen Lösung von Produktionsproblemen. Es gibt tatsächlich viele Möglichkeiten, die Fähigkeiten zur Problemlösung zu verbessern, aber keine davon ist effektiver als Übung. Die exzellenten Ingenieure, die ich gesehen habe, sind oft in der Lage, auf der Grundlage ihrer Intuition in kürzester Zeit die richtige Lösung zu liefern, aber was Sie vielleicht nicht sehen, ist, dass dahinter Erfahrung steckt, die durch viel Übung gesammelt wurde.
● Zeitmanagement – Als Full-Stack-Ingenieur können Sie damit beauftragt werden, gleichzeitig verschiedene Rollen in verschiedenen Projekten zu übernehmen. Sie müssen Ihre Zeit angemessen einteilen, um sicherzustellen, dass alle Arbeiten pünktlich erledigt werden. Auch in Ihrer Freizeit müssen Sie Zeit mit Lesen und Lernen verbringen und möglicherweise auch ein eigenes Nebenprojekt haben. Daher ist es wichtig, die Zeit sinnvoll einzuteilen und einige wichtige Aufgaben zu planen. Sie verspüren vielleicht einen gewissen Druck, aber es wird Ihre Kreativität anregen und dafür sorgen, dass alles reibungslos abläuft.
● Neugier – Neugier auf jeden Job und die Bereitschaft, weiter zu lernen und sich zu verbessern, sind die gemeinsamen Merkmale herausragender Ingenieure. Der Bereich der Softwareentwicklung bringt die klügsten Menschen der Welt zusammen, und verschiedene Arten von Technologien, Produkten und Frameworks ändern sich mit jedem Tag und entstehen endlos. Exzellente Full-Stack-Ingenieure müssen kontinuierlich lernen, diese Veränderungen zu verstehen und mit der Entwicklung im Computerbereich Schritt zu halten. Ich werde oft gefragt, ob es ermüdend sein wird, weiter zu lernen, da in der Computerindustrie immer neue Dinge produziert werden. Was ich sagen möchte ist, dass für Menschen, die kontinuierliches Lernen zur Gewohnheit machen, das Erlernen neuer Dinge nicht zur Belastung, sondern zum Vergnügen wird.
● Führung – Exzellenten Full-Stack-Ingenieuren wird oft die Rolle des technischen Leiters oder sogar des Projektmanagers übertragen. Als Manager geht es nicht darum, andere zu dominieren oder andere Dinge für einen erledigen zu lassen. Manager müssen die Stärken und Schwächen Ihrer Teammitglieder verstehen und wissen, wie sie mit einer serviceorientierten Einstellung den Output des Teams maximieren können. Ich habe einige sehr gute Ingenieure gesehen, die abgestoßen waren, wenn man sie mit der Leitung eines Teams betraute, und die es oft vorzogen, alleine zu arbeiten. Aber ich möchte sagen, dass Sie durch die Tätigkeit als Manager klüger, zuverlässiger und vertrauenswürdiger werden und auch Ihrer zukünftigen Karriere große Vorteile bringen werden. Wenn sich also eine Gelegenheit bietet, nehmen Sie sie als Herausforderung an und lehnen Sie sie nicht ab.
Bei der Rekrutierung prüfen erfahrene technische Führungskräfte häufig gleichzeitig die technischen Fähigkeiten der Kandidaten und die oben genannten zusätzlichen Fähigkeiten. Bei der Rekrutierung von Nachwuchsprogrammierern werden diese zusätzlichen Fähigkeiten von hervorragenden Technologieunternehmen häufig stärker geschätzt. Entwicklungskompetenzen sind Ihre Hard Power, während zusätzliche Fähigkeiten als Ihre Soft Power betrachtet werden können. Nur wenn Sie über beide Fähigkeiten verfügen, können Sie ein exzellenter Full-Stack-Ingenieur werden.
Ausgezeichnete Full-Stack-Ingenieure müssen raus
Ein exzellenter Full-Stack-Ingenieur sollte sich nicht auf seine eigene Arbeit beschränken, sondern sich mit verschiedenen Technologien auseinandersetzen, seine Erfahrungen und Erkenntnisse teilen und mehr Freunde finden. Hier sind einige meiner Praktiken.
● Nehmen Sie an Technologiekonferenzen teil – Websites wie InfoQ, CSDN, GITC, Youzhu und TED veranstalten regelmäßig verschiedene Technologiekonferenzen. Auf diesen Konferenzen können Sie nicht nur die besten technischen Praktiken in ihren jeweiligen Bereichen von technischen Experten hören, sondern auch viele Freunde aus der Branche treffen. Dies wird Ihnen sehr dabei helfen, Ihre Ideen zu erweitern und Ihren technischen sozialen Kreis zu erweitern. Wenn das Unternehmen Ihnen die Teilnahme an diesen Technologiekonferenzen nicht arrangiert, kaufen Sie daher Ihre eigenen Eintrittskarten als Investition in sich selbst.
● Halten Sie öffentliche Reden – Ein Full-Stack-Ingenieur muss kein öffentlicher Redner sein, aber als Kernmitglied des Teams muss er es tun innerhalb des Teams Vorträge zu Technik, Management und anderen Aspekten halten. Wenn Sie ein technischer Experte sind, der bereit ist zu teilen, können Sie auch versuchen, persönliche Kurse (Video oder Audio) aufzuzeichnen und Ihre Fähigkeiten und Kenntnisse auf MOOCs, NetEase Classroom, Youku oder verschiedenen Medien wie Litchi, Himalaya usw. zu teilen. t Sie möchten es nicht ausprobieren, weil Sie kein Experte sind. Glauben Sie mir, die Inhalte, die Sie sorgfältig erstellen, werden von allen erkannt und gewinnen viele Fans.
● Persönlicher Blog – Machen Sie jeden Tag ein wenig Fortschritte und Sie werden in einem Jahr einen qualitativen Sprung machen. Ausgezeichnete Full-Stack-Ingenieure wissen, wie man Wissen ansammelt, und Technologie-Blogs sind eine gute Möglichkeit, ihre üblichen Praktiken und Gedanken aufzuzeichnen und Tags hinzuzufügen, um zukünftige Überprüfungen zu erleichtern. Das Interessanteste ist, dass Programmierer auf der ganzen Welt Sie auch über Ihren Blog kennen, wenn Sie Ihr Blog weiterhin aufzeichnen und aktualisieren.
● Nehmen Sie an Offline-Aktivitäten teil —— Anders als früher, als Programmierer immer zu Hause blieben, sind junge Programmierer von heute eher bereit, sich auszutauschen und zu kommunizieren. Viele Websites organisieren auch Offline-Aktivitäten zu verschiedenen technischen Themen. Bei diesen Aktivitäten können Sie den Austausch einiger technischer Experten hören, und Sie können auch viele Menschen finden, die sich genauso für Technologie begeistern wie Sie. Viele der Teammitglieder in den Open-Source-Projekten, an denen ich derzeit arbeite, habe ich durch diese Offline-Aktivitäten kennengelernt.
Ein Full-Stack-Ingenieur zu werden, gelingt keineswegs über Nacht. Sie müssen eine solide technische Grundlage schaffen, Kernkompetenzen stärken und weiter lernen. Ich glaube, dass Sie eines Tages wie ich die Freude verspüren werden, Technologie frei zu nutzen, um hervorragende Produkte zu entwickeln.
Verwandte Artikel:
PHP-Selbststudien-Roadmap vom Einstieg bis zum Fortgeschrittenen