Prinzipien und Wege für exzellente Programmierer, über neue Technologien nachzudenken und sie zu erlernen

WBOY
Freigeben: 2016-08-08 09:26:01
Original
940 Leute haben es durchsucht

Kürzlich habe ich unter anderem mehrere MVCPHPFrameworks kennengelernt welche zwei unternehmensintern sind. Ich habe festgestellt, dass diese Dinge ähnlich sind, von der Verarbeitungslogik bis zum Seitenrendering; vom Service bis zum Layout; mehr als XML oder Annotation... Ich habe das Gefühl, dass ich aus diesem Denkkreis vielleicht nicht mehr herauskomme ?

Die heutige Ära ist eine Ära aufregender Konzepte in oschina. Welche Technologie ist es wert, gelernt zu werden? ?

Ein Freund sagte, dass er aus Interesse einige Entwicklungstechniken auf Android erlernen wollte. Ein paar Monate sind vergangen und er sagte, dass er viele kleine Programme erstellen konnte. Aber jetzt, wo er darüber nachdenkt, ist es gut, eine Technologie zu beherrschen, aber was gibt es außer seinem Interesse noch? Er sagte: „Wenn ich die Android-Plattform nicht bei meiner Arbeit verwende, welchen Sinn hat es dann, sie zu lernen?“

Ist Lerntechnologie eine interessante oder eine schmerzhafte Sache? Als ich studierte, kaufte ich einmal „Learning in Simple Language MFC “, übersetzt von Hou Jie. Es schien mir damals etwas zu schwierig, also zwang ich mich zum Lesen Erstens fehlt mir wirklich die Willenskraft, weiterzulesen. Ich konnte keine Freude darin entdecken und das Buch wirkte damals voller Rohheit.

Es gibt zu viele Geschichten wie die oben genannten. Oftmals lernen Programmierer (einschließlich mir) hart, aber einige haben keine guten Ergebnisse, andere sind voller Schmerzen und einige wissen nicht einmal, was ich gelernt habe der Zweck.

Das inländische Bildungssystem hat eine solche Gruppe von Menschen hervorgebracht:

Sie sind fleißig und unternehmungslustig, lieben Technologie, sind bereit, in die Softwarebranche einzusteigen und sind bereit, qualitativ hochwertigen Code zu schreiben. Sie sind sehr an Dingen in der Branche interessiert und bereit, solide Grundkenntnisse zu erlernen. Sie sind begierig auf heiße neue Technologien...

Einige Jahre später verfügen sie über eine umfassende Vision, umfangreiche Erfahrung, erfahrene, scharfsinnige Worte und ein gutes Verständnis für Branchentrends. Offensichtlich sind sie Branchenexperten.

Allerdings...

Ihnen fehlt eine solche Fähigkeit – das Denken.

Mangelndes Denken kann leicht zu diesem Phänomen führen:

Kann kein Design machen

Wenn Sie auf ein Problem stoßen, wenden Sie vertraute Frameworks, Lösungen und Modelle an, die Sie gesehen und gelernt haben, ohne die Vor- und Nachteile sorgfältig zu analysieren, und versuchen einfach, so weit wie möglich die Lösung zu finden, die dem aktuellen Problem am nächsten kommt.

Manche Leute wissen nicht, wie man Systemdesign macht. Ich habe mit einigen sogenannten „Architekten“ Kontakt aufgenommen, die „nur etwas vom Geschäft verstehen, aber nichts von der Technologie verstehen.“ Das so konzipierte System kann nur funktionale Anforderungen erfüllen und die Diskussionsthemen einiger spezifischer Themen im Forum offenbaren einige zugrunde liegende Probleme. Der Kommentator spricht „nur über Technologie, nicht über Geschäft“, wie „XXXLösung mit großer Kapazität“ und „Die ultimative Architektur des Flash-Sale-Systems“, in einem Versuchen Sie, eine bestimmte allgemeine Art von Problem zu diskutieren und eine universelle Lösung zu finden, die überall funktioniert.

Es gibt noch mehr Beispiele, die nicht wissen, wie man objektorientiertes Design macht und denen die Fähigkeit zur Abstraktion und Entkopplung fehlt. Ein Freund erzählte mir, dass sein Unternehmen einen alten Mitarbeiter hatte, der Ruby schrieb. Für ein riesiges Projekt gab es nur eine God-Klasse im Code, die alle Probleme löste.

Kann nicht bei deinem eigenen Standpunkt bleiben

Dies lässt sich am einfachsten bei Vorstellungsgesprächen beobachten. Zu den Bewerbern zählen frischgebackene Hochschulabsolventen und erfahrene Praktiker, die seit mehr als 10 Jahren tätig sind. Nachdem er einen groben Plan vorgelegt hat, ist es schwierig, die Vor- und Nachteile zu kommentieren, bevor der Plan bis zu einem gewissen Grad verfeinert ist. Wenn man ihn jedoch vorsichtig herausfordert, gibt er schnell auf seine ursprüngliche Idee und lief zu Ihrer Idee.

Zum Beispiel SNS Wie benachrichtigt der Server den Client über Nachrichten? Es gibt viele Lösungen für dieses Problem, z. B. Client-Abfrage, DienstendehaltenVerbindung drücken, drücken usw., jedes hat seine eigenen Vor- und Nachteile. Kandidaten sollten ihre eigene Meinung haben.

Eine Lösung für ein Problem kann nicht verfeinert werden

Wie unterscheidet man einen Redner von einem Macher? Der beste Weg ist, ihm eine konkrete Frage zu stellen. Als ich anfing zu arbeiten, bewunderte ich Menschen, die bei Veranstaltungen und Diskussionen lautstark sprachen. Ich fand sie sehr gesprächig. Doch später stellte ich nach und nach fest, dass es zu viele Menschen gibt, die sprechen können. Die Verfeinerung des Designs, bis hin zur Codierung, ist der wahre Test eines Programmierers. Wenn Sie natürlich der Meinung sind, dass Leute, die Software entwerfen, nicht mit Codierung vertraut sein müssen und Architekten nicht zuerst erfahrene Programmierer sein müssen, dann haben wir nichts, worüber wir reden können :).

Wenn Sie lernen können, können Sie sehr schnell wachsen; wenn Sie nicht denken können, werden Sie immer in der Lage sein, hinter anderen zurückzubleiben.

Ich denke, wir sollten mehr über das Erlernen neuer Technologien nachdenken. Verschiedene Menschen haben unterschiedliche Motivationen zum Lernen. Sofern nicht von der Außenwelt erzwungen, lassen sich meine Ansichten zum Erlernen neuer Technologien wie folgt zusammenfassen:

Welches Problem möchte es lösen, die sogenannte Problemdomäne, ist das, was mich interessiert?

Ich habe die zugrunde liegende Implementierung des Betriebssystems nicht untersucht. Es ist nicht so, dass sie keinen Wert hat, aber ich habe kein Interesse daran. Dies ist die Auswirkung der Problemdomäne (aber jetzt, wo ich interessiert bin, möchte ich etwas in diesem Bereich tun).

Was sind die Vorteile gegenüber bisherigen Lösungen und sind diese signifikant?

Das ist Wettbewerb Es gibt keinen Platz für wiederholte Technologien (außer natürlich, wenn Sie Microsoft sind :) ), genau wie bei der gleichen Art von Websites im Internet, werden am Ende nur zwei oder drei konkurrieren. Wie Groovy, ich liebe es, aber mit Scala denke ich, dass vielleicht einer von ihnen sterben wird (GroovyDer Gründer sagte, wenn er früher von Scala gewusst hätte, hätte es kein Groovy Was ist passiert? Für spezifische Berichte suchen Sie bitte seinen Blog auf Google). Gibt es im Hinblick auf die Umsetzung und die Auswirkungen interessante Ideen, von denen es sich zu lernen und über die es sich lohnt nachzudenken?

Dies ist die am schwierigsten zu beantwortende Frage. Nehmen Sie als Beispiel

Node.js, mit dem ich Anfang letzten Jahres Kontakt aufgenommen habe. Es kann das Backend aggregieren (z. B. Portlet und dergleichen) Wenn das Back-End im Front-End platziert wird, behält es nur eine Art von Seitendienst bei – Seitenvorlage und mehrere einfach zu verwaltende API-Schnittstellen, die vereinfacht die Komplexität des Back-End-Systems erheblich und kann den Druck auf das Front-End verteilen, was ich in früheren Jahren nicht gesehen habe. Nachdem ich über diese drei Fragen nachgedacht und sie für wertvoll befunden hatte, begann ich mit dem Lernen. Ansonsten ist es für mich etwas, auf das ich nicht näher eingehen möchte, sondern es nur verstehen möchte.

Zur Art und Weise, neue Technologien zu erlernen, möchte ich Folgendes sagen:

Einstiegspunkt finden

Mir gefallen die Worte auf

BlueDavy

s Blog sehr gut: „Wenn du die Theorie nicht verstehst, übe sie. Wenn du die Theorie nicht verstehst, wirst du die Theorie lernen.“ Letztendlich ist es am besten, sich an die praktische Übung zu machen, aber wenn Sie es gewohnt sind, mit Texten zu beginnen, in denen Prinzipien vorgestellt werden, ist das vielleicht keine schlechte Wahl. Darüber hinaus wird die Realität einige Einschränkungen aufweisen, beispielsweise beim Verständnis der Cloud-Plattformen mehrerer Internetunternehmen (

Amazon

sEC2, M$s Azure usw.), es sei denn, Sie sind Mitarbeiter dieser Unternehmen, ist der Einstieg schwierig . Finden Sie Ihre eigenen Sehenswürdigkeiten

Lernen sollte Spaß machen, und ich glaube nicht, dass es einfach ist, diese neue Technologie zu beherrschen, wenn Ihr Gehirn sie ablehnt. Wenn Sie den interessanten Punkt nicht finden können, können Sie genauso gut auf meinen vorherigen Punkt zurückkommen, ob es sich lohnt, neue Technologien zu erlernen. Warum sollten Sie sich nicht dafür interessieren? Xi'an Softwareschulung

Seien Sie gut im Vergleich

Vergleiche sind eine sehr einfache Denkweise. Womit soll man vergleichen? Vergleichen Sie mit ähnlichen Technologien, vergleichen Sie mit Infrastrukturbeispielen wie Betriebssystemen und Netzwerken und vergleichen Sie schließlich mit Beispielen aus dem Leben (zum Beispiel ist die Implementierung von

JAVANIO

ein gutes Beispiel). . Kontinuierlich Feedback erhalten

Was ist Feedback? Ein Beispiel für

HelloWorld

zu geben, ist ein hervorragendes Feedback; das Verstehen eines bestimmten Implementierungsprinzips, das Nachdenken über andere ähnliche Implementierungen und das Gefühl der Erleuchtung ist auch eine Art Zurückgeben. Während des Lernprozesses führt kontinuierliches Feedback dazu, dass Sie immer wieder Erfolgserlebnisse verspüren, was eine der Motivationen ist, weiterzumachen.

Das Obige hat die Prinzipien und Methoden vorgestellt, mit denen hervorragende Programmierer über neue Technologien nachdenken und diese lernen können. Ich hoffe, dass sie für Freunde, die sich für PHP-Tutorials interessieren, hilfreich sein werden.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage