Wie werde ich ein autonomerer und autarker Programmierer? [geschlossen]

13

Der größte Faktor, der mich davon abhält, ein herausragender Entwickler zu sein, ist mein Vertrauen in andere. Ich habe das Gefühl, dass ich zu viele Fragen stelle, weil ich die Konsequenzen fürchte, wenn ich alles kaputt mache und alle zurückhalte. Deshalb bin ich zu vorsichtig, wenn ich so viele Fragen stelle, dass ich die Antworten im Grunde nach genügend Fragen bekomme. Ich habe erkannt, dass das schlecht ist, aber ich möchte es aufhalten. Ein Teil davon ist, dass ich manchmal den Code einfach nicht kenne (entweder eine Branche, mit der ich noch nie gearbeitet habe, oder ein brandneues Produkt), aber ich möchte mich weniger auf andere verlassen. Vorab geht es bei diesen Fragen nicht um allgemeine Muster oder Sprachen: In der Regel dreht sich meine Frage darum, wie wir in unserem Unternehmen Code erstellen und wie wir die Dinge in unserem Ökosystem zum Laufen bringen. Ich möchte in der Lage sein, Brillen zu nehmen und mit ihnen zu rollen, ohne das Gefühl zu haben, bei jedem Schritt Hilfe zu benötigen. Ist das normal? Haben Sie das durchgemacht und wenn ja, wie sind Sie darüber hinweggekommen?

acconrad
quelle
1
Vielleicht ist das nur eine kulturelle / sprachliche Sache ... aber warum denkst du, dass du jemals ein herausragender Entwickler sein wirst? Was macht Sie so viel besser als die 99% der anderen neuen Entwickler?
Stephen C
5
Ich bin jetzt keiner, aber ich will es sein. Ich bemühe mich immer zu lernen und mich zu verbessern. Die meisten Menschen haben Angst zuzugeben, dass sie ein Problem haben. Ich möchte meine Probleme finden, anerkennen und angehen. Die Besten auf jedem Gebiet streben nach kontinuierlicher Verbesserung, und ich versuche das Gleiche zu tun.
Acconrad

Antworten:

24

Ich sehe, dass einige neue Entwickler einen Job bekommen und sich sofort unzulänglich fühlen. Das habe ich schon früh in meiner Karriere gemacht. Ich denke, es gibt mindestens zwei Hauptprobleme, die die meisten Schlauen überwinden müssen: Zeitwahrnehmung und ihre eigenen natürlichen Fähigkeiten.

Zeitwahrnehmung
Kluge Köpfe sind es gewohnt, Probleme relativ schnell zu lösen. Ich erinnere mich, dass ich entsetzt war, als ich eine Stunde mit einem einzelnen Kalkülproblem verbringen musste. 60 Minuten für ein Problem aufzuwenden, ist nichts mehr. Diese Tage sind vorbei ... begrabe sie und verabschiede dich. Die Komplexität und Größe der meisten Software ist heutzutage ungeheuerlich. Die Leute verstehen nicht alle Werkzeuge, die sie benötigen, um die Dinge länger zu erledigen. Douglas Crockford, einer der wichtigsten Männer der JavaScript-Sprache, sagte:

"Misapplication of standard tools...is the new standard."

Es ist einfach nicht genug Zeit auf der Welt, um alle Entwicklerwerkzeuge zu erlernen.

Natürliche Fähigkeiten
Ihre Intelligenz, Ihre Fähigkeiten zur Problemlösung und Ihre natürlichen Fähigkeiten haben Sie in erster Linie in den gesamten Entwickler-Gig mit einbezogen. In diesem Bereich gibt es einfach keinen Platz für weniger. Also, was machen Sie mit 100.000 Zeilen Code, Sprachen und Frameworks, die Sie kaum kennen, Designmustern und Paradigmen, die die Leute auf Sie ausüben, Leute, die das meiste wie ihre Westentasche wissen, Kunden, die es gestern wollen, und ein Chef wer erwartet die welt von dir Freak out als Ihre natürliche Fähigkeit versagt.

Ja, das ist normal. Ich flippe immer noch mit einigen Sachen aus, die mir in die Quere kommen.

Was kann getan werden?

Es ist Zeit, diese natürlichen Fähigkeiten mit guter, altmodischer harter Arbeit zu verbessern. Arbeiten Sie daran, Probleme in kleinere Teile zu zerlegen. Und stellen Sie fest, dass diese Probleme im Gegensatz zu vielen Dingen, die Sie in der Vergangenheit getan haben, sehr viel Zeit in Anspruch nehmen, um gelöst zu werden. Geben Sie also nicht nach nur 15 Minuten Untersuchung eines komplexen Problems auf. Brechen Sie stattdessen die Probleme auf und hören Sie auf, auf die Uhr zu schauen. Nach einer Weile ist die Arbeit von 30 Minuten mit einem Problem nicht mehr das, was es früher war.

Selbstvertrauen spielt eine große Rolle bei der Fähigkeit zur Selbstverwaltung. Dies gilt auch für das Team, insbesondere für die erfahreneren Senioren. Es ist gut, vorsichtig zu sein, um Dinge nicht zu zerbrechen, aber das bedeutet nicht, dass Sie einen ständigen Strom von Fragen stellen müssen.

Verwenden Sie stattdessen die Quellcodeverwaltung. Solange Sie keine Änderung einchecken, können Sie das Hauptprodukt nicht beschädigen und andere Entwickler verärgern. Nehmen Sie außerdem Änderungen vor, die Sie verstehen und testen können, und stellen Sie sicher, dass Sie diese vor dem Einchecken gut testen.

Ich habe sogar ein kleines Testprojekt, mit dem ich einmalige, einfache Programme schreibe, damit ich mich nicht um alle Vorgänge in der Hauptanwendung kümmern muss.

Denken Sie schließlich daran, dass jede Entscheidung mit einem gewissen Maß an Geben und Nehmen verbunden ist. Es gibt keine Fortschritte, ohne auf irgendeiner Ebene Opfer zu bringen. Strebe nicht nach Perfektion, strebe nicht nach Ehrfurcht und achte auf deine Handlungen. Weil Sie immer bereit sein müssen, Kritik zu üben und Ihre Ideen zu erklären und warum Sie sie gemacht haben. Seien Sie stolz auf Ihre Entscheidungen. Auch wenn sie falsch liegen, gibt es viel zu lernen.

P. Brian Mackey
quelle
2
+1 arbeite daran, bis du aufgibst. Ich habe manchmal 2-3 Tage damit verbracht , ein einzelnes Problem zu lösen. Zum Brechen: Versuchen Sie es mit TDD oder schreiben Sie zumindest Komponententests.
Asche999
12

Das erste ist , keine Angst davor zu haben, Fragen zu stellen. Ich habe sogar erfahrene Architekten gesehen, die Fragen zum Code stellten. Es wird nicht erwartet, dass sie alles wissen. Von ihnen wird erwartet, dass sie genug wissen, um die Arbeit zu erledigen und den Rest herauszufinden.

Die wahrscheinlich beste Taktik wäre:

  • Erfahren Sie, wie Sie bei Google recherchieren. Mit ein wenig Nachforschungsarbeit finden Sie Antworten auf fast alles. Der Stapelüberlauf wirkt Wunder bei diesen schwer zu lösenden Problemen.
  • Erfahren Sie, wie Sie Fehler beheben. Ich habe Stunden damit verbracht, mich mit schrulligem, tiefem Unternehmenscode zu befassen, nur um herauszufinden, dass die Variable X 3 statt 7 ist. Das Lesen von Code und das Debuggen sind wahrscheinlich die beste Möglichkeit, autonom zu werden.
ashes999
quelle
Nicht, dass ich eine besondere Blume wäre, aber meine Probleme liegen nicht in den Sprachen. Es geht nicht darum, wie man Dinge in meiner Sprache macht. Die meisten meiner Fragen sind sehr unternehmensorientiert: Es geht darum, wie man Dinge in dem für unsere Umgebung spezifischen Bereich an unserem Arbeitsplatz erledigt. Sie sind die Dinge, die Sie nicht googeln können, wenn Sie so wollen.
Acconrad
3
Ich verstehe vollkommen; Ich war drei Jahre lang in der gleichen Situation. Aufzählungspunkt 2 lautet die Antwort: Lernen Sie, Fehler zu beheben. Die Leute erinnern sich nicht oft an Details. Debugging ist der Schlüssel.
Asche999
1
Genau. Stellen Sie so lange Fragen, bis Sie mehr Antworten wissen als die Menschen in Ihrer Umgebung. Gehen Sie runter und sprechen Sie mit dem QA-Team, bis Sie Fehler entdecken und beheben können. Google ist Ihr Experte Kumpel; benutze ihn ausgiebig. Eines Tages werden Sie feststellen, dass Sie eine Frage-E-Mail senden und die Antwort selbst finden, bevor die Antwort zurückkommt.
Andy Canfield
5

Haben Sie keine Angst, "Big Picture" -Fragen zu stellen

Früher habe ich versucht, die kleinste Frage zu finden, die ich stellen konnte, und trotzdem konnte ich meine Arbeit fortsetzen. Aus Angst, ich wäre inkompetent, wenn ich umfassende Fragen stelle, auf die alle anderen die Antwort zu wissen scheinen. Ich habe den Unterschied zwischen Unwissenheit und Inkompetenz nicht verstanden. Ignoranz bedeutet nur, dass Sie noch nichts gelernt haben, und ist vollkommen akzeptabel, solange es nicht andauert. Vorgeben, nicht unwissend zu sein, ist viel schlimmer.

Wenn Sie feststellen, dass die Antworten der Leute Sie nur so weit bringen, müssen Sie sie bitten, Ihnen das Fischen beizubringen, anstatt Ihnen einen anderen Fisch zu geben. Fragen Sie, wie Ihr Teil zum Ganzen passt. Wenn Ihre Frage so einfach zu sein scheint wie "Was ist SQL überhaupt?", Fragen Sie sie eher früher als später. Sie sehen jetzt vielleicht ein bisschen dumm aus, aber später werden Sie viel dummer aussehen.

Gönnen Sie sich eine Wartezeit

Stelle keine Fragen, sobald du sie hast. Geben Sie sich je nach Komplexität zwischen einer halben Stunde und einem Tag Zeit, um es selbst herauszufinden. Oft wirst du es selbst lösen. Wenn nicht, können Sie Ihrem Kollegen mitteilen, was nicht funktioniert hat, wodurch er Ihnen eine bessere Antwort geben kann.

Wenn Ihr Kollege keine klare Antwort kennt, achten Sie auch darauf, wie er darauf kommt. Oft brauchst du nicht so viel Hilfe, wie du denkst. Wenn ich keine Zeit für eine Frage habe, zeige ich jemandem oft in eine vage Richtung und sage ihm, dass ich nachverfolgt werde, wenn ich eine Minute Zeit habe, und sie haben es in der Regel gelöst, bis ich dort bin.

Wirf ein paar Zugluft weg

Setzen Sie sich und legen Sie alles nieder, was Ihnen in den Sinn kommt, und dann sind Sie Schriftsteller. Aber ein Autor ist einer, der den Wert seines eigenen Materials ohne Mitleid beurteilen und das meiste davon zerstören kann.
- Sidonie Gabrielle Colette

Haben Sie keine Angst, Code zu schreiben, der es nie in eine Veröffentlichung schafft. Je mehr Erfahrung Sie sammeln, desto eher können Sie feststellen, dass Sie den falschen Weg eingeschlagen haben, aber es kommt immer noch vor, dass Sie den falschen Weg eingeschlagen haben. Oft ist der Wert einer Lösung erst dann ersichtlich, wenn Sie zuerst gesehen haben, dass sie falsch funktioniert.

Karl Bielefeldt
quelle
1

Selbstgenügsamkeit würde mit sich kommen

  • Erhöhte Erfahrung und Exposition in der Domäne.
  • Verbesserte Beobachtungs- und Analysefähigkeiten, um vorhandene Systeme und ihr Verhalten sowie Abhängigkeiten zu verstehen.

Wenn Sie häufig Fragen stellen, besteht die Gefahr, dass Ihnen beides fehlt.

Wenn Sie Ihre Domain, Technologie, Plattform oder Sprache ändern, sind Sie wieder auf dem ersten Platz (fast ohne Berücksichtigung Ihrer gesteigerten Fähigkeit, ähnliche Probleme und übertragbares Wissen anzugehen).

Keine Fragen zu stellen, wenn es wirklich gebraucht wird, würde viel wertvolle Produktionszeit verschwenden.

Es könnte zu Ihrem Vorteil sein, wenn Sie ein Wort über Ihre Vermutung über das Ausmaß des möglichen Schadens verlieren, wenn Sie es falsch machen. oder was Sie denken, könnte brechen, um eine tatsächliche Einschätzung Ihrer Annahmen zu erhalten. Oft können Sie Punkte und Winkel aufdecken, die Sie verpasst haben.

Vorsicht ist gut. Aber am besten bestimmen Sie die Art Ihrer Fragen. Es ist am besten, wenn Sie es auf Papier schreiben und seine Schwierigkeit / Würdigkeit untersuchen.

  1. Ist es etwas, was Sie mit Google / Foren herausfinden können oder indem Sie länger daran arbeiten?
  2. Ist es etwas, mit dem Sie durchkommen oder das Sie ohne große Kosten reparieren können, wenn Sie es vermasseln?
Aditya P
quelle
0

Ich würde sagen, Sie schauen sich die Dinge an, an denen Sie arbeiten, und fangen an, selbst Entscheidungen zu treffen (halten Sie sich natürlich an die Anwendungsspezifikationen). Inzwischen sollten Sie ein gutes Gefühl dafür haben, was eine weitreichende Veränderung und was eine einfache Veränderung ist. Beginnen Sie mit den einfachen. Wenn Sie denken, was Sie tun, ist richtig, tun Sie es.

Sie WILL Fehler machen und die sind von unschätzbarem Wert. Lernen Sie von ihnen alles, was Sie können, wenn sie passieren, denn sie werden Sie das nächste Mal besser machen.

Sobald Sie mit den kleineren Entscheidungen vertraut sind, treffen Sie die größeren. Sie müssen entscheiden, wie weit dies gehen soll, basierend auf Ihrem Projekt / Ihrer Umgebung / Ihrem Team.

Das ist die Seite, die Entscheidungen trifft. Das andere, was Sie tun müssen, ist, Ihr Gehirn weiter zu füttern, damit es Ihre Entscheidungen leiten kann. Folgen Sie Websites, die Ihre Technologie abdecken. Es gibt Online-Tutorials für fast alles, von einfachen bis hin zu bizarren Komplexen. Haben Sie keine Angst, Menschen zu fragen, warum sie bestimmte Entscheidungen treffen - als Informationssuchender, nicht um konfrontativ zu sein. Die meisten Menschen erklären gerne Dinge und man kann einiges daraus lernen.

Sobald Sie das technische Wissen haben, ist der Rest Weisheit und Vertrauen und die mit Erfahrung kommen.

Dave Wise
quelle
0

Wenn ich ein Neuling war, der Fragen stellte, versuchte ich immer, mit den verfügbaren Tools eine teilweise Antwort auf die Sache zu bekommen. und wenn ich so weit kam wie ich konnte, würde ich genau herausfinden, wie ich meine Frage formulieren sollte, um so klar und prägnant wie möglich zu sein, unter der Annahme, dass die Person, zu der ich Hilfe suchte, beschäftigt war. Ich glaube, mit dieser Vorbereitung hat es niemanden gestört, ihnen Fragen zu stellen, und tatsächlich hatte ich den Eindruck, dass sie es genossen haben. Später, als ich Domain-Experte wurde, half ich gerne Menschen, die deutlich machten, dass sie meine Zeit respektierten.

Das andere, was ich getan habe, war, jeden Tag die Architektur des Systems durchzugehen. Andere Plakate haben kommentiert, was für ein massives Unterfangen moderne Systeme sind, wie schwer es ist, sich damit abzufinden. Also machte ich eine Tour durch den Code: Beginnen Sie an einem vernünftigen Einstiegspunkt, gehen Sie ihn durch, notieren Sie sich, wie er funktioniert, und stellen Sie Fragen, die ich manchmal für mich selbst beantworte, manchmal andere Leute nachfragen. Diese Art der übergreifenden Vertrautheit und Domänenkompetenz braucht Zeit, aber Sie können sie beschleunigen. und je mehr Sie tun, desto eher sind Sie in der von Ihnen gewünschten Weise autark.

shanusmagnus
quelle