Wie kann ich meine Fähigkeiten verbessern, während ich an aktuellen Projekten arbeite, ohne dass erfahrene Entwickler vorhanden sind? [geschlossen]

15

Ich bin der leitende Entwickler in einem kleinen Unternehmen und arbeite mit C # und ASP.Net. Unser Team ist klein, 2-3 Personen, ohne viel Erfahrung in Entwicklung und Design. Ich habe nicht die Möglichkeit, von erfahrenen Entwicklern zu lernen. Es gibt niemanden in meinem Team, der mich anleitet und mir hilft, die besten Ansätze zu finden, da ich die meisten Projekte selbst betreue.

Wie kann ich meine Fähigkeiten in der Softwareentwicklung verbessern, während ich an aktuellen Projekten arbeite, ohne dass erfahrene Entwickler vorhanden sind?

Akash KC
quelle
1
Ihre Frage ist wirklich vage. Sie lernen die besten Entwicklungsstrategien, indem Sie sie in Büchern, Blogs und Podcasts studieren und dann in Ihrem täglichen Programmieren anwenden.
Robert Harvey
Vielen Dank für Ihre Kommentare. Ich habe die meiste Zeit viele Blogs durchgesehen und mich in der Codierungsphase wirklich verbessert, aber wenn die Zeit gekommen ist, Entwicklungsstrategien (wie TDD, DDD usw.) und Designmuster (SOLID, DRY, etc), ich habe Angst, sie zu implementieren, weil die Systementwicklung zeitlich begrenzt ist, und schließlich wähle ich meinen eigenen Entwicklungsstil, der meiner Meinung nach nicht optimal implementiert ist ....
Akash KC
1
@LolCoder Ich verstehe vielleicht, dass einige Leute TDD wegen eines Problems mit begrenzter Entwicklungszeit ablehnen (obwohl TDD später tatsächlich Zeit spart), aber ich verstehe nicht, wie sich das Anwenden von SOLID oder DRY auf die Zeitbeschränkung auswirken kann ?!
Songo
1
@Yannis Rizos: Danke, dass Sie die Frage bearbeitet haben ... Nun, es scheint wirklich gut zu sein ... Das Thema der Frage bleibt dasselbe ... Nochmals danke ...
Akash KC
1
@LolCoder Eigentlich hatte ich ein ähnliches Problem, das ich vor einiger Zeit hier gefragt habe.
Songo

Antworten:

12

Neben erfahrenen Kollegen gibt es viele Quellen, aus denen Sie lernen können: Bücher, Blogs von erfahrenen Entwicklern, Stack Exchange, Vorträge / Konferenzen usw. Auch die Überprüfung von Codes ist von entscheidender Bedeutung Neben CodeReview.SE ist eine wertvolle Ressource.

Mal sehen, wie es an einem Beispiel funktionieren könnte.

Beispiel

Sie lesen einen Blogbeitrag dem der Begriff "ETL" erwähnt wird. Sie wissen nicht, was das bedeutet, aber aus diesem Artikel geht hervor, dass es sich um eine Art Prozess oder Workflow handelt, mit dem Daten von einem Datenträger auf einen anderen verschoben werden.

Sie gehen zu Wikipedia und anderen Ressourcen und erhalten eine genauere Vorstellung von der Sache. Es ist immer noch nicht ganz klar, wann die Verwendung einer ETL sinnvoll ist. Schließlich scheint es viel einfacher zu sein, eine SQL-Abfrage zu schreiben, die die ganze Arbeit erledigt, anstatt zu viel Zeit mit dem Aufbau einer echten ETL zu verbringen.

Um diese Fragen zu beantworten, leihen Sie sich in Ihrer örtlichen Bibliothek ein Buch über die ETLs aus. Es wird erklärt, dass einige Extrakt-Transformation-Lade-Prozesse mit einer einfachen SQL-Abfrage nicht einfach zu bewerkstelligen sind: Nicht nur die Extraktphase kann mit mehreren, unterschiedlichen Datenträgern umgehen, nicht nur mit einer relationalen Datenbank, sondern auch der Transformationsschritt kann sehr kompliziert sein Validieren / Normalisieren der Daten und Zuordnen derselben.

Sie haben jetzt eine klare Vorstellung davon, was eine ETL ist, wie sie verwendet wird und insbesondere, wann Sie eine ETL benötigen und wann sie kein geeignetes Werkzeug ist. In der Zwischenzeit haben Sie eine kleine ETL als persönliches Projekt implementiert. In diesem Projekt können Sie einige Punkte entdecken, die für Sie nicht klar genug sind und nicht in einem Buch behandelt werden. Da diese Punkte eher abstrakt sind und sich nicht auf den Quellcode beziehen, stellen Sie eine Frage an Programmers.SE .

Wenn Sie die Möglichkeit haben, eines in Ihrem Unternehmen zu errichten, erstellen Sie es. Sie haben ein paar Probleme. Einige beziehen sich auf Code; Sie stellen Fragen zum Stapelüberlauf . Andere beziehen sich auf die Datenbank; Sie stellen die Fragen auf DBA.SE .

Schließlich gibt es eine Konferenz , die von einem hochqualifizierten Entwickler über die Optimierung von ETLs abgehalten wird. Sie nehmen an dieser Konferenz teil und erhalten wertvolle Hinweise zu den Verbesserungen, die Sie für Ihr Projekt vornehmen können.

Sie folgen auch einem Blog eines Entwicklers, der jahrelang an verschiedenen ETLs gearbeitet hat. Es ist interessant, die verschiedenen Ansätze zu sehen, und in diesem Blog erfahren Sie mehr über ECCD. Sie interessiert sind , so dass Sie die Data Warehouse ETL Toolkit von Ralph Kimball, der borgen Buch , das spricht ausführlich über die „Extrakt, sauber, entsprechen und liefern“ -Prozess. Im selben Blog werden auch viele Anwendungen erwähnt, mit denen ETLs ohne Programmierkenntnisse erstellt werden sollen. Dies ist besonders nützlich für die ETL, die Sie für Ihr Unternehmen durchgeführt haben, da Ihr Chef, eine nicht technisch versierte Person, Sie ständig auffordert, einige kleine Änderungen an dem, was Sie getan haben, vorzunehmen.

Dinge entdecken

IMHO, der schwierige Teil, wenn Sie keinen Mentor oder einen erfahreneren Kollegen haben, ist es , Dinge zu entdecken , und mit entdecken meine ich, vom Zustand "Ich habe noch nie von dieser Sache gehört" zu "Ich habe es gehört" überzugehen habe davon gehört, weiß aber nicht genau, was es ist ".

Wenn jemand meinen Code überprüft und sagt, dass ich wirklich anfangen sollte, einige Stilkonventionen zu verwenden, kann ich mit ein wenig Neugier feststellen, dass es beim Programmieren verschiedene Stile für das Schreiben von Code gibt, bei denen man sich an einen Stil für eine bestimmte Sprache und Codebasis halten sollte. und dass viele Sprachen Werkzeuge haben, um einen Stil zu erzwingen (wie StyleCop für C #).

Wenn mir niemand etwas über den Stil erzählt, woher weiß ich dann, dass es so etwas gibt?

Hier sind Ressourcen wie Blogs oder Stack Exchange praktisch. Wikipedia würde nicht helfen (es sei denn, Sie verbringen Tage damit, zufällige Seiten über das Programmieren aufzusuchen), und Bücher sprechen selten über diese Dinge.

Gleiches gilt auch für Muster und Praktiken oder Dinge, die weniger mit Code zu tun haben. Ich kann mir zum Beispiel kaum vorstellen, dass ein Entwickler morgens aufwacht und sich sagt, dass er etwas über ITIL lernen muss, während er noch nie zuvor etwas über ITIL gehört hat.

Sobald Sie entdeckt einen neuen Begriff, ist es recht einfach , darüber zu erfahren. Wenn Sie einen neuen Begriff "Codeverträge" eingegeben haben und ein C # -Entwickler sind, finden Sie auf einfache Weise selbst genügend Informationen zu MSDN (oder besser gesagt, in Jon Skeets Buch).

Neugier hilft

Wenn ich mit Praktikanten zusammenarbeite, bemerke ich immer, dass die besten diejenigen sind, die außerhalb ihrer Vorlesungen neugierig waren. Sie wissen vielleicht, dass es etwas gibt, das als funktionale Programmierung bezeichnet wird, auch wenn keiner ihrer Lehrer es nie erwähnt hat, und obwohl sie keine funktionale Sprache beherrschen, können sie dennoch allgemein erklären, was FP ist und wie es sich von anderen unterscheidet Paradigmen. Möglicherweise kennen sie sich mit Agile, Unicode oder Partial-Trust- / Sandbox-Modellen aus, nur weil sie Blogs gelesen und Stack Exchange verwendet haben, anstatt einfach nur an ihren Vorlesungen teilzunehmen.

Selbst wenn sie keinen Mentor haben, lernen sie all die Dinge, die im College nicht erzählt werden.

Arseni Mourzenko
quelle
Vielen Dank für die wundervolle Antwort. ETL-Beispiel ist großartig. Von Beginn des Berufslebens an habe ich immer den Eindruck, dass es mir einen tiefen Einblick in die Softwareentwicklung geben würde, wenn ich für ein kleines Team arbeiten und das Projekt selbst leiten würde und kann daher besser die Entwicklung lernen .... Jetzt bin ich in der Verfassung, wo ich denke, ich vermisse die besten Entwicklungsansätze als Blick in andere Projekte wie GitHub, Codeplex .... Diese Art von besten Ansätze können nur von erfahrenen Entwicklern gelernt werden oder ich könnte es selbst lernen?
Akash KC
@LolCoder: IMO, diese besten Ansätze sind mit einem Mentor leichter zu erlernen, aber es ist immer noch möglich, sie mithilfe der in meiner Antwort aufgeführten Ressourcen selbst zu erlernen.
Arseni Mourzenko
Vielen Dank für diese großartige, erklärte Antwort. Es ist Zeit, die Antwort mit vielen, vielen Dankeschöns anzunehmen.
Akash KC,
4

Ich bin in einer ähnlichen Situation: Wir sind ein kleines Team und unsere Hauptarbeit bei der Entwicklung von Produkten besteht aus inkrementellen Änderungen auf einer Codebasis, die einige Jahre alt ist.

Einige Techniken, die ich verwende, um auf dem neuesten Stand zu bleiben und meine Fähigkeiten zu verbessern.

Bei der Arbeit:

  • Lesen: Bücher, Blogs, PR-Materialien. Ich verfolge eine Reihe von RSS-Feeds. Wenn der O'Reilly-Deal des Tages eine Technologie zum Gegenstand hat, von der ich noch nichts gehört habe, habe ich die Beschreibung des Buches durchgelesen. Wenn die Technologie einen großen Bezug zu irgendetwas hat, an dem ich arbeite, verbringe ich fünf oder zehn Minuten damit, sie etwas ausführlicher zu untersuchen, ähnlich wie bei der Antwort von MainMa. Ich wiederhole dies mit ein paar verschiedenen RSS-Feeds.
  • Erstellen Sie mit Ihrem Management einen Schulungsplan, der mit Unternehmensressourcen (Zeit und / oder Geld) unterstützt werden kann.
  • Versuchen Sie im Gegensatz zu den meisten Programmierern, Veränderungen und neue Gestaltungsmöglichkeiten zu akzeptieren. Veränderung um der Veränderung willen ist nicht gut , aber ich glaube, dass Entwickler aufgrund von Veränderungen zu oft auf die Verwendung eines neuen Designs oder Frameworks verzichten. Dies ist eine feine Linie, um zu Fuß zu gehen und keine verbindlichen Entscheidungen zu treffen, sondern nach neuen Wegen Ausschau zu halten. Einige Änderungen können unerwartete Vorteile haben: Wenn ich auf DVCS umsteige, kann ich einfacher mit unserem Code experimentieren und dort neue Technologien ausprobieren.
  • Manche Leute mögen Konferenzen; Ich habe festgestellt, dass die Auszahlung für die investierte Zeit gering ist.

Außerhalb der Arbeit:

Ich habe festgestellt, dass die Arbeit an meinen Fähigkeiten außerhalb der täglichen Arbeit von entscheidender Bedeutung ist. Die Freiheit zu experimentieren, Fehler zu machen und Interessen zu verfolgen beschäftigt mich mit IT. Wenn ich nur meine Arbeitsprojekte hätte und mein Lernen auf das beschränken müsste, was sofort nützlich ist, würde ich schnell ausbrennen.

  • Beteiligen Sie sich an einem arbeitsfreien Projekt. Für mich ist dies die Entwicklung einer funktionalen Website, die sich auf ein persönliches Interesse bezieht. Ich überarbeite frei und versuche aktiv, mit verschiedenen Technologien zu experimentieren. Wenn Sie zu Open Source beitragen, werden Sie auch mit dem Code anderer Leute bekannt. Dies gibt Ihnen auch gutes Material für Interviews mit dem Unternehmen, das erfahrenere Entwickler haben wird.
  • Code Camp: Liegt ein Code Camp in Ihrer Gegend besuchen. Da diese nicht während der Arbeitszeit stattfinden und kostenlos sind, haben Sie die Freiheit, an Sitzungen zu Themen teilzunehmen, die Sie persönlich interessieren. Im Vergleich zu typischen Konferenzen handelt es sich in der Regel um lokale Konferenzen, die eine breite Palette von Technologien abdecken. Ich bin daher der Meinung, dass hier ein konzentrierterer Wert besteht.

Und vergessen Sie nicht, SO oder Programmers.SE regelmäßig zu besuchen.

Jamie F
quelle
Vielen Dank für die Antwort .... Code Camp Idee ist wirklich gut, aber leider gibt es an meiner Stelle keine solche Sache .... Jetzt werde ich sicherlich in Open Source Projekt einbezogen ....
Akash KC
3

Die Antworten hier werden wahrscheinlich eine große Hilfe sein, aber ich möchte etwas betonen: Nichts kann es ersetzen, 8 Stunden am Tag, 5 Tage die Woche mit jemandem zu arbeiten, der besser ist als Sie (für willkürliche und persönliche Definitionen von besser). Soviel ist sicher.

Wenn Sie der Entwicklertyp sind, der immer besser werden möchte, immer lernen möchte, müssen Sie irgendwann zu einem anderen Unternehmen wechseln. Das ist unvermeidlich und sollte eingeplant werden.

Wenn Sie das Unternehmen finden, das zu Ihnen passt, werden Sie feststellen, dass Sie innerhalb des Unternehmens weiter wachsen können, anstatt daraus zu wachsen.

Steven Evers
quelle
Vielen Dank für die großartige Antwort .... Von Beginn des Berufslebens an habe ich immer den Eindruck, dass wenn ich für ein kleines Team arbeiten und das Projekt selbst leiten würde, es mir einen tiefen Einblick in die Softwareentwicklung geben würde und daher die Entwicklung besser lernen kann Zeug ... Jetzt bin ich in dem Zustand, in dem ich denke, dass mir die besten Entwicklungsansätze fehlen, da ich andere Projekte wie GitHub oder Codeplex untersuche. Diese Art der besten Ansätze kann man nur aus Erfahrung lernen Entwickler oder ich könnte es selbst lernen?
Akash KC
1

Softwareentwicklung ist ein Mannschaftssport. Um auf einem sehr hohen Niveau zu spielen, muss man wie ein Sport mit anderen zusammen sein und gegen sie antreten, die das Gleiche tun. Suchen Sie nach Bewegungsmöglichkeiten.

Denken Sie daran, dass Übung dauerhaft ist. Wenn Sie also nicht ständig auf bessere Techniken und Kenntnisse hinarbeiten, wenn Sie isoliert und ohne Kritiker oder Vorbild arbeiten, werden Ihre Fähigkeiten möglicherweise nicht wachsen.

Weltweit wird es immer wettbewerbsfähiger. Erwarten Sie also, dass Ihre Nische vorübergehend ist, und bereiten Sie sich auf die Gelegenheit vor, die Ihren Kriterien für eine zufriedenstellende Arbeit entspricht. Gleichzeitig verlassen Sie Ihre Komfortzone, um mit einem überlegenen Team zusammenzuarbeiten.

DeveloperDon
quelle
1

Bevor ich zu irgendwelchen Vorschlägen komme, muss ich sagen, dass ich vor etwas mehr als einem Jahr in einer sehr ähnlichen Position war.

Wenn Sie die Projekte fertigstellen, aber das Gefühl haben, dass es viel Raum für Verbesserungen gibt, dann ist das eine gute Sache.

Einmal hatte ich keine technischen Fähigkeiten und kein Selbstvertrauen, um das Projekt abzuschließen. Oft kaufte ich ein Buch, las einen ziemlich technischen Blog und fand mich "aus meiner Tiefe". Ich denke, das größte Problem für mich war die Tatsache, dass ich keinen großen Unternehmensanwendungen ausgesetzt war. Ziemlich oft würde ich etwas gut machen, aber ich würde niemanden an meiner Seite haben, der bestätigt, was ich getan habe.

Das war demotivierend und herausfordernd, also sehe ich, woher du kommst. Wie habe ich dieses Problem behoben? Ich habe ein Unternehmen verlassen und bin einem etablierten Softwareentwicklungshaus beigetreten, wodurch ich im vergangenen Jahr viel Erfahrung gesammelt habe.

Sofern Sie das Unternehmen nicht verlassen möchten, würde ich Bücher vorschlagen, die von den Pionieren unserer Branche geschrieben wurden. Ich würde mit The Pragmatic Programmer von Andrew Hunt beginnen. Das Buch enthält Unmengen nützlicher Analogien, die sich leicht merken lassen. Die ersten Kapitel dieses Buches haben mich ermutigt, eine andere Programmiersprache zu verwenden als die, die wir bei der Arbeit verwenden. Ich habe angefangen, nicht-technische Literatur zu lesen - ich glaube jetzt, dass das Lesen von Romanen und Science-Fiction mich zu einem besseren Programmierer machen wird. Das Schreiben von Aufsätzen ist nicht weit davon entfernt, sauberen Code zu schreiben. Einige Autoren sind gut und andere schlecht. In diesem Buch habe ich mich darum gekümmert, was ich schreibe. Eine der Analogien heißt "Broken Windows". Sie lassen ein Auto tagelang auf einer Straße stehen und es passiert nichts. Sobald Sie ein einzelnes Fenster brechen, Das Auto wird wahrscheinlich am nächsten Tag zerstört. Code ist nicht anders. Wenn Sie kaputten oder schlecht geschriebenen Code sehen, reparieren Sie ihn sofort. Lassen Sie ihn nicht dort, da er Sie früher oder später "heimgesucht" hat. Sobald Sie anfangen, sich durch dieses Buch zu arbeiten, werden Sie Dutzende ähnlicher Analogien aufgreifen, die Sie dazu bringen, über Code auf andere Weise nachzudenken.

Ich würde Ihnen dann vorschlagen, mit Clean Code von Robert C. Martin fortzufahren. Dieses Buch ist praktischer, da Sie gezwungen sind, schlechten und guten (sauberen) Code zu lesen. Der Autor verwendet Codebeispiele aus einem der Open Source-Projekte. Sie sagen, es gibt niemanden, der Sie führt. Es bietet sich die perfekte Gelegenheit, den Code eines anderen Benutzers anzusehen, ihn mit dem eigenen Code zu vergleichen und herauszufinden, wie Sie ihn verbessern können. Für mich war das Lesen dieses Buches, als würde man jemanden beschatten, der an einem Projekt arbeitet. Das Buch konzentriert sich auch stark auf das Schwierigste - die Trennung von Bedenken. Der Autor hat Pioniere unserer Branche gefragt, was sie für einen "sauberen" Code halten. Sobald Sie ihre Antworten gelesen haben, können Sie sie mit Ihrer eigenen Meinung darüber vergleichen, worum es bei sauberem Code geht.

Haben Sie darüber nachgedacht, an Open Source-Projekten zu arbeiten? Sie werden mit anderen, wahrscheinlich erfahreneren Entwicklern zusammenarbeiten, die in der Lage sind, Ihren Code zu überprüfen und Sie in die richtige Richtung zu lenken.

Wie ich in meiner ursprünglichen Antwort gesagt habe, wird es nicht über Nacht passieren. Ich mache das jetzt seit ein paar Jahren und fast jeden Tag stelle ich fest, dass ich es falsch gemacht habe.

Viel Glück!

CodeART
quelle
1

Übe das Lösen von Problemen. Lesen und arbeiten Sie, um den Code anderer zu verstehen (Github ist hierfür eine großartige Ressource), und reichen Sie Verbesserungen ein. Beratungsarbeit kann Ihnen wirklich helfen, Ihre Fähigkeiten zu erweitern.

Nathan Pilling
quelle