Kämpfe als Programmierer. Brauche einen Rat [geschlossen]


20

Ich bin jetzt seit einigen Jahren Entwickler. Ich bin ziemlich gut in dem, was ich tue und kann "die Arbeit erledigen".

Es gibt jedoch einen Unterschied zwischen "die Arbeit erledigen" und "die Arbeit richtig erledigen". Nehmen wir ein Beispiel.

Kürzlich habe ich eine Website von Grund auf neu entwickelt. Die Website läuft gut und ich hatte keine Probleme. Als ich den Code durchgesehen habe, dachte ich mir, ich hätte es besser machen können. Ich hätte meine MySQL-Abfragen reduzieren können. Ich hätte MVC verwenden können, um die Erweiterung zu vereinfachen (es muss jetzt erweitert werden).

Ich beschloss, das Projekt mit CodeIgniter neu zu schreiben. Ich mag den Rahmen. Aber dann wurde ich abgelenkt, weil ich fortgeschrittene Joins lernen musste, um meine MySQL-Abfragen zu reduzieren.

Und das ist das Problem. Wann immer ich einen Job richtig mache, bin ich in einem ständigen Lernrad. Und Themen wie erweiterte MySQL-Verknüpfungen brauchen Zeit zum Lernen und dann zum Implementieren.

Ich arbeite nicht für eine Firma. Ich mache alles alleine. Wenn ich als PHP-Entwickler für ein Unternehmen arbeiten würde, gäbe es wahrscheinlich separate Teams, die sich mit SQL befassen.

Solo zu sein ist schwierig. Und manchmal stelle ich, obwohl mein Wissen fortgeschritten ist, Frage für Frage. Ich bin wahrscheinlich sehr stolz auf meine Arbeit. Aber wenn ich für ein Unternehmen arbeiten müsste, das komplette Projekte abwickelt, könnte ich mir vorstellen, dass Projekte eine Weile dauern, weil ich immer mehr lernen müsste, um meinen Stolz zu befriedigen und sicherzustellen, dass ich die Dinge "richtig" mache.

Ich plane, nach dem neuen Jahr einen Job zu bekommen. Ich brauche die Arbeitssicherheit. Deshalb stelle ich diese Frage.

Welchen Rat können Sie in Bezug auf Selbstentwicklung und Selbstverbesserung geben? Sollte ich mir weniger Sorgen machen? Oder vielleicht suchen Sie einen Job als PHP-Entwickler, wenn ich SQL-Abfragen nicht direkt abwickle?


54
Wenn Sie nicht ständig lernen möchten, befinden Sie sich im falschen Bereich

6
@JamesGuvnaJeffery: Wenn sie (überhaupt) keine Zeit zum Lernen während eines Projekts haben, würde ich nicht dort arbeiten wollen, weil ich als Entwickler aufhören würde, mich selbst zu verbessern.
Marjan Venema

3
die Aufgabe ist das Lernen, sie geben dir nicht diese magische Zeit zum Lernen, eigentlich tun sie es, es heißt "deine persönliche Zeit". Sie nennen es nicht ohne Grund "on the job training". Wenn Sie es nicht mögen, ein selbstinitiierter Lerner zu sein und die ganze Zeit ohne Bezahlung zu lernen, wie ich sagte, sind Sie wahrscheinlich auf dem falschen Gebiet.

5
Alter Code soll scheiße sein. Töte dich nicht darüber hinweg; versuchen Sie einfach, sich im Laufe der Zeit zu verbessern. Ein funktionierendes Projekt umzuschreiben macht praktisch kaum Sinn. Kunden werden nicht extra dafür bezahlen. codinghorror.com/blog/2006/10/…
Job

2
Sie verstehen nicht, was ich sage, für ein Unternehmen zu arbeiten ist genau das GEGENÜBER von dem, wofür Sie sich einsetzen, was Sie gerne tun. Es geht darum, nach einem anderen Zeitplan zu arbeiten und zu verwenden, was sie diktieren und wie sie es mit nichts als Kompromissen diktieren, und keine Zeit, neue Dinge zu ihrer Zeit zu studieren und keine Zeit, etwas in neue aufregende Dinge umzusetzen, die Sie in Ihrer persönlichen Zeit lernen. Dies ist die Realität eines Corporate Software-Entwicklers. Ich bezweifle, dass Sie einem Unternehmensumfeld genauso verpflichtet sind wie Ihrem experimentellen Forschungs- und Entwicklungsstil, den Sie gewohnt sind.

Antworten:


33

Tipp: Haben Sie keine Angst davor, neue Dinge zu lernen - Sie haben einen guten ersten Schritt unternommen, um zu erkennen, dass Sie es besser machen können, und haben sich dann die Mühe gemacht, zu lernen, wie Sie es besser machen können. Ja, es braucht mehr Zeit, aber die Auszahlung lohnt sich normalerweise auf lange Sicht. Nachdem Sie CodeIgniter kennen, können Sie es für die nächsten zukünftigen Projekte verwenden. Sie können es in Ihren Lebenslauf aufnehmen. Jetzt, da Sie fortgeschrittene SQL-Techniken kennen, werden Ihre zukünftigen Projekte davon profitieren. Wenn Sie aufhören zu lernen, werden Sie stagnieren.


21

Was du durchmachst, klingt für mich ganz normal. So arbeiten wir an unserem Handwerk und werden immer besser in dem, was wir tun.


10

... Ich habe beschlossen, das Projekt mit CodeIgniter neu zu schreiben. Ich mag den Rahmen. Aber dann wurde ich abgelenkt, weil ich fortgeschrittene Joins lernen musste, um meine MySQL-Abfragen zu reduzieren.

Und das ist das Problem. Wann immer ich einen Job richtig mache, bin ich in einem ständigen Lernrad. Und Themen wie fortgeschrittene MySQL-Verknüpfungen brauchen Zeit zum Lernen und dann Zeit zum Implementieren ...

Ich denke, es ist sinnvoll, dass Sie sich darauf konzentrieren, Ihre Fähigkeit zu verbessern, vorausschauend zu planen, Arbeitswarteschlangen einzurichten und zu priorisieren und Ihre Zeit zu verwalten - solche Dinge.

Wirklich, dies scheint das einzige zu sein, was in deiner Einstellung fehlt. Was Sie "Sidetracking" nennen, ist im Wesentlichen eine weitere Arbeit ("Learn Advanced Joins"), die geplant, priorisiert und in die Warteschlange gestellt werden muss.


Danke @gnat. Ich schätze diese positiven Reaktionen sehr. Ich kann Ihnen trotzig zustimmen, was Sie gesagt haben.
James Guvna Jeffery

9

Ein Profi auf diesem Gebiet zu sein, bedeutet, sich ständig gegen seine eigene Unzulänglichkeit zu behaupten. Machen Sie das von Montag bis Freitag zwischen 8 und 5 Uhr, vielleicht auch länger, wenn ein Termin bevorsteht, ein schönes Wochenende und am Montag mehr. Das ist der Job.

Das Erstellen von Software erfordert eine gewisse Demut. Wenn Sie jemand sind, der Recht haben muss und beweisen muss, dass er bereits alles wusste, ist dies möglicherweise nicht das richtige Feld für Sie.

Ich kann nicht verstehen, dass ich nicht jeden Tag etwas lerne. Ich glaube nicht, dass ich diesen Job möchte.


Ich habe die Erfahrung gemacht, dass es in Ordnung ist, jemand zu sein, der Recht haben muss, solange man auch Magenversagen haben kann. Ich stoße mich über alles, was nicht perfekt ist. Deshalb mache ich es mit der Zeit besser.
Tom Anderson

Nun, das ist das Paradox, nicht wahr? Hybris ist eine der drei Tugenden des Programmierers. Aber meiner Erfahrung nach ist es eine Tendenz, Anfänger-Entwickler entweder loszulassen oder sie halten in diesem Bereich nicht lange an.
Dan Ray

Vielleicht lieber Gas geben, als loszulassen? Vor langer Zeit hatte ich glücklicherweise die Gewohnheit, zu verkünden, dass ich Dinge wusste, die ich nicht wusste. Trotzdem hasse ich es, zuzugeben, Dinge nicht zu wissen. Das Bedürfnis, die Lücke zwischen dem, was ich weiß und dem, was ich sagen möchte, zu schließen, ist für mich ein ziemlicher Treiber. Nicht unbedingt für alle!
Tom Anderson

Ich weiß es nicht, Tom. Es scheint mir, als ob es Ihnen peinlich ist, dass Sie noch nicht wissen, dass etwas ein Moment ist, in dem Sie es lernen könnten. Ich mag es, so viel wie der nächste zu wissen, aber ich habe überhaupt kein Problem damit, "Ich weiß es nicht" zu sagen.
Dan Ray

6

Solo zu sein ist schwierig. Wenn Sie dagegen mit einem Entwicklerteam arbeiten, lernen alle voneinander. Als Teil des Teams werden Sie durch die Zusammenarbeit mit anderen Entwicklern viel Wissen erlangen, und das mit weniger Aufwand, als wenn Sie versuchen, alles selbst herauszufinden.

Als Entwickler muss man sich jedoch dem ständigen Lernen widmen. Egal, ob Sie Dokumentation für neue Frameworks lesen oder Bücher über die Entwicklung lesen, Sie müssen sich ständig bemühen, Ihr Wissen auf dem neuesten Stand zu halten und zu erweitern. Wenn Sie jedoch Teil eines Teams sind, kann sich herausstellen, welchen Bereich Sie zu einem bestimmten Zeitpunkt am meisten kennenlernen müssen.

Bezüglich Ihrer Überlegung, Ihren älteren Code zu überarbeiten und neu zu schreiben: Ich habe festgestellt, dass mein eigener Code immer das Beste von dem darstellt, was ich zu dem Zeitpunkt wusste, als ich ihn geschrieben habe. Oft gehe ich zu etwas zurück, das ich vor Jahren geschrieben habe, und klopfe mir auf die Stirn, wenn ich sehe, wie viel besser ich es hätte machen können, wenn ich das gegeben hätte, was ich jetzt weiß . Aber das ist die Natur der Erfahrung, die Sie bekommen, wenn Sie sie brauchen ...

Schließlich müssen Sie bei der Entwicklung einer Anwendung immer ein gutes Gespür für Ihr Geschäft entwickeln, um zu entscheiden, wann es am besten ist, die Ecken zu kürzen, um schneller fertig zu werden, und wann Sie sich mehr Zeit nehmen müssen, um etwas Neues zu lernen, das das Design und die Qualität verbessert der Anwendung. In der Software-Welt gibt es ein Universum von Dingen zu lernen. Ohne ein solches Urteilsvermögen könnten Sie lernen, nachdenken, umgestalten, aber nie etwas erreichen.


+1 für den zweiten Satz. Ich habe mehr von meinen Kollegen gelernt, die in verschiedenen Organisationen gearbeitet haben, als ich jemals durch Lesen gelernt habe (Bücher oder online). Es hört sich nach Ihrer Frage an, als würde es Ihnen eine gute Welt tun, eine Weile in einem Team zu arbeiten.
Laut Dawood wird Monica

3

Ich denke, Ihre Bedenken sind berechtigt, aber Sie sollten keinen Schlaf verlieren. Ich glaube, dass ein Technologe folgendes Gepäck mit sich bringt:

  • Sie müssen ständig neue Dinge lernen. Entweder lernst du es zu lieben oder nicht.
  • Es gibt viel mehr Dinge, die Sie meistern wollen, als man jemals wissen könnte.
  • Sie entwickeln Fähigkeiten während eines Projekts, das Sie sich während des Projekts gewünscht haben.
  • Infolgedessen möchten Sie immer wieder dieses Projekt wiederholen. Es ist so schwer, etwas zu veröffentlichen, von dem Sie wissen, dass es besser sein könnte.

Am Ende scheint es Ihnen wichtig zu sein, qualitativ hochwertige Software zu entwickeln, was Sie nicht lernen können . Wissen, dass Sie den Aufbau einer qualitativ hochwertigen Lösung von dem Aufbau einer perfekten Lösung unterscheiden müssen. Es hört sich so an, als wärst du wie ich und würde nie das Gefühl haben, dass es perfekt ist. Es wäre besorgniserregender, wenn Sie nicht das Gefühl hätten, sich und Ihre Arbeit verbessern zu können.

Es ist schwierig, ein Alleskönner zu sein (Meister aller Klassen), aber Sie müssen wirklich herausfinden, wie Sie die für Sie interessantesten und nützlichsten Dinge identifizieren und sich auf sie konzentrieren können. Finden Sie heraus, wie Sie andere Arbeiten am besten an andere Personen oder Werkzeuge auslagern können .


2

Ich denke, Sie müssen sich weniger Gedanken darüber machen, wie Sie es richtig machen. Streben Sie nach Perfektion, aber stellen Sie fest, dass es nicht wirklich möglich ist, eine perfekte Lösung zu finden. Die Tatsache, dass Sie sich genug Sorgen machen, um diese Frage richtig zu beantworten, bedeutet, dass Sie bereits auf dem richtigen Weg sind.

Was Ihre Frustration beim Erlernen neuer Dinge angeht, so stellte ich fest, dass die Arbeit in einer Gruppe und die Möglichkeit, das Problem mit anderen Programmierern zu erfragen und zu diskutieren, den Schmerz beseitigte, herauszufinden, was ich lernen musste, und es durch die Freude von ersetzte Neues entdecken und anwenden lernen.

Ich liebe es, Software zu schreiben, aber manchmal tut es wirklich weh, nicht wirklich etwas Neues zu lernen, sondern genau das zu finden, was man lernen muss, um das zu erreichen, was man tun möchte.

Soweit ich weiß, war ich in einer ähnlichen Position wie Sie. Etwas alleine zu programmieren kann sowohl frustrierend als auch schwierig sein und zu anderen Zeiten lohnend und etwas lustig.

Mach genau das, was du vorhast, finde einen Job, bei dem du Teil eines Teams bist (und tu dein Bestes, um sicherzustellen, dass du einen Job bekommst, der nicht schlecht läuft). Wenn Sie mit anderen Personen zusammenarbeiten, die dieselben Technologien verwenden und dieselbe Software entwerfen, können Sie diese Technologien und Entwurfsmuster fast über Nacht besser verstehen und anwenden.

Was das Wissen angeht, wie man etwas beim ersten Mal richtig macht, woher solltest du wissen, dass es einen besseren Weg gibt, wenn du es nicht schon beim ersten Mal auf eine bestimmte Weise getan hast? Kenntnisse im Software-Design hängen häufig stark von der Erfahrung ab. Joel Spolsky ist ein Software-Genie, aber wenn Sie viele seiner Artikel lesen, werden Sie feststellen, dass sie in hohem Maße auf Erfahrung und Intelligenz beruhen.

Was den SQL-Teil angeht, so haben wir als .NET-Entwickler, für den ich bisher noch keinen Datenbankentwickler hatte, alle unser eigenes SQL geschrieben, aber es gibt oft wirklich gute SQL-Entwickler, die bereit sind, Ihnen zu helfen mit dem tieferen Zeug.

Du klingst wie ein kluger Kerl, ich denke nicht, dass du so hart zu dir selbst sein solltest.


1

Dies ist völlig normal und nichts, worüber Sie sich zu viele Sorgen machen sollten. Sie müssen ständig neue Fähigkeiten erlernen, aber Sie müssen auch lernen, Ihre Zeit zu priorisieren und zu verwalten. Sie müssen auch die Falle einer unnötigen Sanierung vermeiden.

Der unerfahrene Programmierer wird oft in die Falle der Neuentwicklung hineingezogen:

Ich habe dieses Programm nicht perfekt geschrieben, und jetzt muss ich es erweitern oder ändern. Es wird eine Menge Arbeit bedeuten, den vorhandenen Code aufgrund der Art und Weise, wie ich ihn geschrieben habe, zu modifizieren. Ich habe seitdem so viel mehr gelernt, ich bin sicher, das Beste wäre, das ganze Programm neu zu schreiben. Ich bin sicher, ich könnte es diesmal viel besser schreiben.

Es gibt eine Reihe von Dingen, die an dieser Logik falsch sind.

  • Es ist eine Menge Arbeit, den vorhandenen Code zu ändern oder zu ergänzen, aber wird es nicht eine Menge mehr Arbeit sein, alles neu zu schreiben?
  • Wenn Sie alles neu schreiben, ist die Chance groß, dass Sie neue Fehler finden und es wird länger dauern, als Sie denken (insbesondere, wenn Sie unerfahren sind). Denken Sie über alles nach, was mit dem Schreiben des Systems zu tun hat? (Denken Sie daran, wie lange Sie das erste Mal gebraucht haben)
  • Sie haben viel gelernt, seit Sie das Programm ursprünglich geschrieben haben (damit Sie es möglicherweise verbessern können), aber Sie werden auch nächsten Monat / Jahr mehr lernen müssen. Was macht Sie denken , dass Sie nicht alles neu schreiben wollen wieder in der Zukunft irgendwann?
  • Der ultimative Test eines Programms ist, dass es funktioniert . Hast du nichts Besseres zu tun?

Es kann niemals schaden, über eine Sanierung nachzudenken und sie zu planen. Überlegen Sie sich also, wie Sie Ihr Programm umschreiben möchten, und versuchen Sie, alle Probleme zu identifizieren, auf die Sie stoßen. In diesem Fall hätten Sie die 'Advanced SQL-Joins' identifiziert, die Sie jetzt benötigen, und dann untersucht, wie sie funktionieren, und erfahren Sie mehr über sie.

Wenn Sie der Meinung sind, dass Sie die fortgeschrittene Wissenslücke beim Beitritt nicht durch Planung erkannt hätten (ohne mit der Entwicklung zu beginnen), müssen Sie Ihre Planungsfähigkeiten verbessern. Überlegen Sie, welcher Teil des Plans nicht detailliert genug war. Sie sollten so lange ins Detail gehen, bis Sie sicher sind, dass das gesamte System technisch möglich ist.

Dieser Ansatz ermöglicht es Ihnen , zu lernen , vor der Zeit .

Schließlich ist Lernen am Arbeitsplatz ein normaler Bestandteil des Programmierens. Dies bedeutet jedoch nicht, dass Sie eine Aufgabe starten und dann feststellen, dass Sie eine Woche innehalten müssen, um beispielsweise grundlegendes HTML zu lernen. Sie können ein paar Stunden innehalten, um sich über etwas zu informieren, aber Ihr Arbeitgeber bezahlt Sie nur, um die Arbeit zu erledigen. Effizientes Lernen - lesen Sie nicht die Einführung und den Verlauf, sondern nur, wie es funktioniert und wie es in Ihr Programm passt. Wenn Sie tagelang aufhören müssen zu arbeiten, um zu lernen, wie Sie einen Teil des Programms abschließen, machen Sie es falsch.


1

Vielleicht denken Sie, dass das Erlernen neuer Technologien und Probleme eine Zeitsenke ist. Aber keine Panik. Es ist normal. Es gehört zu Ihrer Übung als Programmierer, etwas zu lernen ... sonst würden wir alle bei COBOL bleiben.

Freiberufler passen ihre Provisionen entsprechend an, und Lernzeiten sollten unter anderem in Ihre Zeitschätzungen einbezogen werden. Wenn Sie sich das nächste Mal für ein neues Framework entscheiden, stellen Sie sicher, dass Sie genügend Zeit einplanen, um es zu lernen.


0

Es gibt jedoch einen Unterschied zwischen "die Arbeit erledigen" und "die Arbeit richtig erledigen".

Nein, das gibt es nicht, und ich denke, das ist die Wurzel Ihres Problems hier. Mir kommt es so vor, als ob Sie zu sehr darauf aus sind, die Dinge „richtig“ zu machen, weil Sie als einzelner Entwickler nicht sehen, wie andere funktionieren. Aber richtig nach wem? Wer ist diese magische Person, die entscheidet, dass das, was Sie tun, „richtig“ ist? Nehmen Sie 100 der besten Programmierer der Welt, und ich garantiere, dass sich keine zwei zu 100% auf jedes Programmierthema einigen.

Entscheidend ist letztendlich, ob Ihre Kunden zufrieden sind. Wenn die von Ihnen erstellten Programme die Probleme lösen, die sie lösen sollen, und dies auf kostengünstige Weise, dann tun Sie es richtig. Es ist zum Beispiel von Natur aus nicht korrekter, Codeigniter zu verwenden, als Ihr eigenes Framework zu verwenden. Die Konsequenz ist, wenn Sie einen Haufen Mist produzieren, machen Sie es "falsch", unabhängig von den Prozessen oder "Best Practices", die befolgt werden.

Dass Sie Ihren Code überarbeiten und nach Verbesserungsmöglichkeiten suchen, ist ein normaler Teil des Entwicklungsprozesses. Es ist kein Zeichen dafür, dass Sie die Dinge nicht „richtig“ machen. Es ist ein Zeichen dafür, dass Sie sich dem Lernen und Verbessern verschrieben haben. Nach allem, was ich in Ihrem Beitrag sehe, haben Sie kein Problem.

Jetzt geh und trete ein paar * * *


Ich bin damit nicht einverstanden. Es gibt Möglichkeiten der Programmierung, die viel einfacher zu warten und zu lesen sind als andere, und es gibt viele Bücher, die sich der Verbesserung des Programmierers widmen, damit sie besseren Code schreiben können.
TehShrike

Vielen Dank an @grandmasterB. TehShrike und Verweis auf diese Bücher?
James Guvna Jeffery

3
" Keine zwei werden sich zu 100% auf jedes Programmierthema einigen " - vielleicht, aber mindestens 80% werden sich auf mindestens 80% der Programmierthemen einigen. Das ist der professionelle Konsens. Es gibt keine absoluten "Rechte", aber es gibt Best Practices und sie sind wissenswert.
Kirk Broadhurst

1
Schön und gut, aber wenn Ihr Programm das Problem nicht löst, ist es falsch gemacht worden. Es gibt ein objektives Mittel, um festzustellen, ob ein Programm korrekt ausgeführt wurde - ob der Kunde grüne Zettel oder eine andere Zahlung im Austausch für Ihre Arbeit übergibt. Jede andere Maßnahme ist einfach eine Meinung.
GroßmeisterB

2
Und wenn Ihr Kunde das Gefühl hat, dass Ihr Änderungsangebot zu hoch ist, und Sie einen anderen Experten finden, der diese Gefühle bestätigt, weil es schlecht codiert ist, sind Sie arbeitslos.
JeffO
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.