Unfreiwillig Programmierer werden: Wie mache ich es richtig? [geschlossen]

21

Mein Hintergrund ist Elektrotechnik, genauer gesagt DSP. Das Unternehmen, für das ich derzeit arbeite, führt eine Vielzahl unterschiedlicher Projekte durch, hauptsächlich den Bau von analoger Hardware. Da ich etwas näher an Computern bin als alle anderen hier, schreibe ich häufig Code für eingebettete Geräte (mit denen ich vollkommen zufrieden bin) und für Windows- oder Linux-Betriebssysteme. Letzteres ist mir fremd.

Ich kann programmieren und kenne einige Sprachen (C / C ++, Java, einige VB.NET-Sprachen), aber ich habe sie nur für Algorithmus-Simulationen in der Signal- und Bildverarbeitung, in neuronalen Netzen und ähnlichen Anwendungen verwendet. Für mich war das Programmieren mehr als alles andere ein rechnerisches Werkzeug. Ich bekomme jedoch immer mehr Projekte, in denen ich richtige, vollwertige Software schreiben muss, und ich weiß nicht wirklich, wie ich das machen soll, weil ich es nie tun musste und mich nie wirklich genug dafür interessiert habe. Ich habe selbst etliche Ingenieure gesehen, die aufgrund von beruflichen Anforderungen zu einem gewissen Grad in Programmierer umgewandelt wurden, und die meisten von ihnen waren nicht so gut darin, was sie taten. Ich bin mir sicher, dass viele Menschen auf dasselbe gestoßen sind.

Wenn ich lernen sollte, richtige Software mit guter Benutzeroberfläche, guter interner Architektur usw. zu schreiben, wie mache ich das? Wir haben niemanden bei der Arbeit, der mir sagen könnte, was eine gute Praxis ist und was nicht. Da ich schreiben kann Code im rawest Sinne des Wortes, was gibt es sonst noch zu wissen , über gute Software zu schreiben und wie ich das mache ich es auf meinem eigenen?

Phonon
quelle
Wenn Sie uns die von Ihnen verwendete Sprache mitgeteilt haben, können wir Ihnen möglicherweise genauere Antworten geben. Andererseits würde dies den Sinn einer generischen Antwort zunichte machen.
Sardathrion - Wiedereinsetzung von Monica
2
Ohne eine formelle Ausbildung oder direkte Berufserfahrung mit einem Mentor ist der richtige Weg nicht realistisch. Du lernst. Es gibt einen Grund, warum Informatik und Ingenieurwesen von der Elektrotechnik abweichen. Ein vernünftiges Unternehmen wird Software-Ingenieure einstellen, die Anwendungsschnittstellen, Anwendungstreiber und sogar Firmware schreiben, weil sie Qualität wollen und wollen, dass sie richtig ausgeführt werden und gewartet werden können. Ich würde Ihrem Chef erklären, dass das, was Sie tun, etwas außerhalb Ihres Fachwissens liegt und dass diese Aufgaben am besten einem Software-Ingenieur überlassen werden sollten.
maple_shaft
4
... Ich möchte auch hinzufügen, dass ich nicht denke, dass Ihre Situation so "unfreiwillig" ist, wie Sie im Titel angeben. Sie haben selbst gesagt, dass Ihre Kollegen nicht einmal wissen, wie man einen Computer benutzt, und dennoch unfreiwillig ein Software-Ingenieur sein müssen? Das scheint kaum fair. Ich empfehle Ihre Fähigkeit, passable Software zu schreiben, und Ihren Wunsch, Dinge richtig zu lernen und zu tun. Es ist jedoch keine Schande, Ihrem Chef und sich selbst gegenüber zuzugeben, dass einige Dinge nicht Ihren Fähigkeiten entsprechen. Wenn sie es ernst meinen, Sie in diese Rolle zu versetzen, bitten Sie sie, für Ihr Training aufzuwenden.
maple_shaft
@maple_shaft Ich stimme den meisten Aussagen zu. Ich habe jedoch nie gesagt, dass meine Kollegen nicht wissen, wie man einen Computer benutzt. Keiner von ihnen ist ein Software-Ingenieur, der mich ausbessern könnte, aber sie sind alle sehr computerfähig. Ich habe kein Problem damit, das Codieren zu machen, ich lerne gerne neue Dinge und ich habe kein wirkliches Problem damit.
Phonon
6
@Phonon Großartig, das ist eine gute Einstellung, aber stellen Sie sicher, dass Ihr Unternehmen Ihnen Bücher und Schulungen kauft und Ihnen Zeit gibt, zu lernen, ob Sie diese Rolle übernehmen sollen. Das ist alles was ich sage. So viele Unternehmen werden versuchen, Sie zu betrügen, indem sie Sie davon überzeugen, dass es in Ihrer Verantwortung liegt, diese Dinge für sich selbst zu kaufen.
maple_shaft

Antworten:

11

Es gibt ein paar Bücher, die Ihnen sehr helfen werden. Ich schlage vor, immer Code Complete neben sich zu haben . Es ist eine unschätzbare Referenz. In einer früheren Firma, in der ich gearbeitet habe, war dies auch das Buch, das wir jedem Nachwuchsprogrammierer nach seiner Einstellung überreichten.

Der Pragmatic Programmer ist auch eine sehr nützliche Ressource und ziemlich kurz, aber ich schlage vor, dass Sie ihn nach Code Complete lesen.

Diese Bücher werden Ihnen den Einstieg erleichtern, dann Code, Code, Code und Code mehr ... aber Sie wissen, wann Sie aufhören müssen, Ihre Software wird niemals perfekt sein.

Trasplazio Garzuglio
quelle
6

Meine Firma macht das die ganze Zeit ... und es macht mich verrückt.

"Ich bin ein Softwareentwickler. Wie werde ich ein EE?"

Nun, ich denke die Antwort ist ziemlich offensichtlich. Es braucht viel Zeit und harte Arbeit. Und natürlich die richtigen Lernmaterialien. Der technische Hintergrund hilft, an meiner Universität befanden sich die CS und die Ingenieurschulen im selben Gebäude mit vielen Überschneidungen. Die Algorithmen und mathematischen Grundlagen sind da.

Ein Fehler, den die meisten Neulinge machen, ist, viel mehr abzubeißen, als sie kauen können. Lernmaterialien über die Benutzeroberfläche, Architekturen, Qualitätscodes ... das ist eine Menge Grund . Das dauert Jahre und wird oft von Teams verschiedener Experten in Softwareunternehmen durchgeführt.

Um nicht zu sagen, dass Sie alleine nicht anständig sein können, wenn Sie die Zeit einplanen. Erkennen Sie einfach die Größe der Materialien, damit Sie sich selbst und entweder A. Quit oder B. nicht überfordern . Bauen Sie große technische Schulden in Ihre Apps ein, indem Sie wichtige Abkürzungen in Ihrem Lernprozess verwenden.

Aus diesem Grund gibt es mit diesem Buch keinen Grund, ein großartiger Entwickler zu werden. Ich empfehle Ihnen, zunächst ein gut bewertetes Buch in Ihrer am häufigsten verwendeten Sprache zu erwerben und an der Stack-Community teilzunehmen, insbesondere für Codeüberprüfungen.

Versuchen Sie Amazon.com, sie haben gute Buchbesprechungen.

P. Brian Mackey
quelle
3

Bücher : Die Hauptsache ist, (gute) Bücher in der Sprache Ihrer Wahl zu lesen. Sobald Sie die Sprache Ihrer Wahl kennen, erhalten Sie " Effektivere X- oder Y-Best Practices" und so weiter. Ich finde, dass Kochbücher sehr gut darin sind, Lücken zu schließen. Also, ich denke, das sind mindestens drei Bücher, die Sie brauchen, um zu bekommen. Eine Sache: Machen Sie Übungen und Code-Kata, um Ihr Sprachverständnis zu verbessern. Natürlich benötigen Sie ein gutes xUnit- Muster.

Algorithmen sind besonders wichtig, und Sie sollten sich ein Buch aussuchen, in dem die Details aufgeführt sind - ebenfalls in der Sprache Ihrer Wahl. Design Patterns und Anti-Patterns sind in jeder beliebigen Sprache eine gute Kenntnis wert.

Fazit: Es braucht Zeit. Überstürz es nicht.

Sardathrion - Setzen Sie Monica wieder ein
quelle
+1, aber seien Sie sich immer bewusst, dass es nur eine Regel gibt, für die es keine Ausnahmen gibt: Für alle Regeln gibt es Ausnahmen.
Jan Hudec
@JanHudec: Welche (s) hast du hier im Sinn?
Sardathrion - Wiedereinsetzung von Monica
3

Sie saugen in der Codierung. Ja.

Aber - das heißt nicht, dass man keine Software liefern kann, was die Leute glücklich macht;)

Demütig sein. Schreiben Sie die "Business" -Logik, die Sie brauchen. Verwenden Sie für alles andere den Bibliothekscode. Versuchen Sie nicht, grundlegende Algorithmen (wie Array-Sortierung ) zu schreiben , verwenden Sie keine "ausgefallenen Tricks", halten Sie sich an eine drakonische Code-Konvention.

Verwenden Sie eine gute IDE. Dies ist wichtig, da es Ihnen hilft, Ihren Code zu formatieren und Tippfehler / einfache Fehler zu verfolgen.

Lesen Sie Bücher wie " Code Complete " und " Pragmatic Programmer ", versuchen Sie sich zu zwingen und lernen Sie OOP (es ist einfach und hilft Ihnen dabei, Ihren Code besser zu pflegen).

Verwenden Sie SVN , legen Sie häufig fest, damit Sie Ihre Änderungen rückgängig machen können (wenn Sie etwas ruinieren).

Wenn möglich, finden Sie jemanden, der ein echter Programmierer mit akademischem Hintergrund ist. So können Sie mit ihm über Ihre Probleme mit Neulingen sprechen und aufschlussreiche Antworten erhalten.

Und das Wichtigste ist natürlich, auch weiterhin zu codieren, zu codieren, zu codieren .


PS: Wenn Sie in der Lage sind, C ++ - Code zu schreiben, der funktioniert, und neuronale Netze (!) schreiben, ist Ihr Gehirn für die Programmierung gut geeignet. Viel Glück!

c69
quelle
2

Hier gibt es gute Antworten.

Ein großer Vorteil für Sie ist die einfache Tatsache, die Sie wissen möchten.

Ein Großteil der Softwareentwicklung (die Sie natürlich mit gesunder Skepsis angehen sollten) befasst sich mit der Vorgehensweise, die Sie später nicht bereuen werden. Ein Beispiel ist die Verwendung eines Versionskontrollsystems für den Quellcode. Zum anderen wird der Code in Dateien unterteilt, damit es einfacher ist, ihn schrittweise zu bearbeiten. Ein anderes Ziel ist es, die Ordnungsmäßigkeit in den Griff zu bekommen - Code-Formatierung und Namenskonventionen. Die genauen Konventionen sind nicht so wichtig, als dass sie konsistent sind.

Auf diese Weise werden Sie, wenn Sie in einem Jahr oder länger zum Code zurückkehren, nicht denken: "Wer hat dieses Chaos verursacht?" Sie werden in der Lage sein, Dinge zu finden und zu verändern, ohne dass die Gefahr eines Bruchs zu groß wird. **

Ein guter Einstieg besteht darin, verschiedene Beispielprogramme zu finden und durchzuarbeiten. Dann können Sie sie an Ihre Bedürfnisse anpassen.

** Eines meiner größten Probleme ist der Versuch, mit Code zu arbeiten, der von Leuten geschrieben wurde, die nicht der Meinung waren, dass Formatierung oder Benennung von Bedeutung sind.

Mike Dunlavey
quelle
1

Obwohl es sehr viele gute Ressourcen gibt, wie man Dinge macht und was nicht, ist es am Ende das Wichtigste, viel Code zu sehen und damit zu arbeiten und zu sehen, wie einfach oder kompliziert es ist, sich selbst zu pflegen.

Eine gute Möglichkeit, dies zu lernen, besteht darin, jemanden mit der Erstellung des ersten Entwurfs vertraut zu machen und dann Ihren Code zu überprüfen und Ihnen nützliche Techniken zu zeigen, wie Sie sie anwenden können. Wenn Sie es also zufällig schaffen, Ihre Vorgesetzten davon zu überzeugen, mindestens einen Softwareingenieur mit Erfahrung in der Leitung von (kleinen) Softwareprojekten und der Entwicklung von Software für die Leitung der Projekte einzustellen, ist dies meiner Meinung nach die beste Option.

Wenn Sie nicht dazu gebracht werden können, dass Sie jemand zum Schlafen bringt, gibt es heutzutage eine starke Open-Source-Bewegung. Vielleicht verwenden Sie einige Open-Source-Tools in Ihrer Arbeit, versuchen Sie also, Fehler in ihnen zu beheben oder fügen Sie einfache Funktionen hinzu, für die Sie sie verwenden, und diskutieren Sie mit der jeweiligen Community, wie Sie diese Dinge tun können. Es ist eine unsinnige praktische Lernübung, um zu lernen, wie Sie allgemeine Regeln anwenden, die Sie in den Büchern zu tatsächlichen praktischen Problemen finden.

Jan Hudec
quelle
0

Eine Sache, die ich für das Erlernen von Qualitätscodierungen und Architekturbelangen wirklich empfehlen würde, wären die Lehren von "Onkel Bob" (Robert Martin). Er hat ein paar Videos im Wert von 1 US-Dollar , die gut beißen, wenn auch vielleicht übermäßig skurril sind, sowie einige gute Bücher.

Domenic
quelle