Als Programmierer ärgere ich mich über meine Werkzeuge, den Code anderer Leute, meinen Code und die Welt im Allgemeinen. Ich möchte es immer verbessern. Also überarbeite ich, ich bleibe auf dem neuesten Stand der Technik. Ich versuche Muster zu lernen, ich versuche Frameworks zu verwenden, um das Rad nicht neu zu erfinden. Ich kann eine technische Spezifikation schreiben, die Ihre Socken mit der Menge an Mustern abbläst, die ich einpressen kann.
In letzter Zeit habe ich jedoch das Gefühl, mehr über die von mir verwendeten Tools zu wissen, als über die Implementierung erfolgreicher Software.
Ich habe das Gefühl, dass mir die Fähigkeiten der menschlichen Faktoren fehlen, und ich glaube, dass ein erfolgreicher Softwareentwickler mehr erfordert, als das coolste Framework zu kennen. Ich denke, es braucht auch einige der folgenden Fähigkeiten.
- Interaktionsdesign
- Benutzererfahrung
- Marketing
Ich habe ein bisschen davon, das ich von Leuten gelernt habe, mit denen ich gearbeitet habe, und großartige Projekte, an denen ich gearbeitet habe, aber ich habe nicht das Gefühl, diese Fähigkeiten zu "besitzen".
Habe ich recht? Sollte ich versuchen, diese Fähigkeiten weiterzuentwickeln, oder sollte dies den Menschen überlassen bleiben, die dies für eine Karriere tun?
Wie stellen Sie sicher, dass Sie nicht zu sehr damit beschäftigt sind, wie Sie etwas tun, und stellen Sie sicher, dass Sie "Ihre Benutzer großartig machen"?
Kennt jemand gute Ressourcen zum Erlernen dieser Fähigkeiten aus programmtechnischer Sicht?
quelle
Antworten:
Mein Rat: Sprechen Sie so viel wie möglich mit Ihren Benutzern. Ich weiß nicht, ob Sie in einem großen Unternehmen sind und sich auf einem anderen Kontinent befinden als Ihre Benutzer, oder ob Sie sich in einer freiberuflichen Position befinden, aber wenn möglich, sprechen Sie einfach mit Ihren Benutzern.
Ich weiß, dass ich mich oft zurücklehnen und daran denken muss, dass es nicht meine Aufgabe ist, den größten Code zu erstellen, den die Welt je gesehen hat, oder eine Funktion zu erstellen, die die geringste Anzahl von Zyklen und Takes benötigt die kürzeste technologisch mögliche Zeit, aber um alles zu machen, was die Benutzer für ihre Arbeit benötigen. In diesem Sinne finde ich, dass die besten zwei Eigenschaften, die über die technischen Fähigkeiten hinausgehen (für mich jedenfalls), gute Kenntnisse des Geschäfts der Benutzer und eine gute Zusammenarbeit mit ihnen sind.
Ich arbeite in einer kleinen Firma (~ 50 Personen) und ich mag es, zu jedem Würfel zu gehen und über das Neueste zu plaudern, was ich für ihn gemacht / repariert habe. Das absolut beste Gefühl, das ich je von meinem Job bekommen habe, ist, wenn ich sie über ihre Arbeit sprechen hören und etwas vorschlagen kann, das ein Problem löst, für das sie nie realisiert haben, dass es überhaupt eine technische Lösung geben könnte. Das wäre nicht möglich, wenn ich ihr Geschäft nicht verstehen und keine gelegentlichen Gespräche mit ihnen führen könnte.
quelle
Ich würde sagen, es hängt davon ab, wo Sie arbeiten und zu welchen Arten von Unternehmen Sie sich in Zukunft bewegen - was wirklich eine offene Diskussion ist.
Bei kleineren Unternehmen können Sie viele Hüte tragen (obwohl ich nicht sicher bin, warum Marketing in dieser Liste enthalten ist, es sei denn, Sie beabsichtigen, Ihr eigenes Produkt zu verkaufen).
In größeren Unternehmen haben sie möglicherweise Leute, die sich speziell auf diese Dinge konzentrieren.
Es geht also wirklich darum, wohin Sie sich gehen sehen und möglicherweise mehr Türen für sich selbst öffnen.
quelle
Für jede Codezeile, die Sie schreiben, führen Sie die Möglichkeit eines Fehlers ein.
Die besten Designs minimieren also die Menge des eingeführten Codes - möglicherweise durch das DRY-Prinzip (Don't Repeat Yourself). Startups bevorzugen jedoch den YAGNI- Ansatz (Sie werden ihn nicht brauchen), der viel schneller zum MVP (Minimum Viable Product) führt.
Wenn es Ihr Ziel ist, ein sauberes, benutzerfreundliches Produkt zu erstellen, das genau das tut, was Ihre Benutzer wollen, dann ist YAGNI Ihr ultimatives Designmuster. Wirf alles raus, was nicht direkt zum Arbeitscode beiträgt. Dazu gehören puristische Bauprozesse und die obsessive Verwendung von Mustern.
Etwas Lesematerial
Vielleicht möchten Sie " Lass mich nicht nachdenken " lesen, ein ausgezeichnetes Buch über das Design von Benutzeroberflächen. Außerdem hilft Ihnen jede der Gitomer-Buchreihen (insbesondere The Little Green Book ) bei Ihren Verkaufs-, Netzwerk- und Marketingfähigkeiten.
quelle
Ich denke, ein gewisses Maß an Interaktionsdesign und User Experience-Wissen ist selbst in einem großen Unternehmen aus einem Grund sehr nützlich: Sie als Entwickler sind die erste Person, die die Benutzeroberfläche tatsächlich verwendet, Wochen oder sogar Monate, bevor sie in einem nutzbaren Zustand ist ein Tester zum Testen.
Es kann in einem frühen Stadium sehr nützlich sein, auf eine Schnittstelle hinzuweisen, die nicht ganz so einfach zu bedienen ist wie geplant, oder auf ein Designprinzip, das möglicherweise übersehen wurde. Diese Dinge können manchmal schwer zu erkennen sein, bevor Sie etwas Konkretes zum Arbeiten haben, und Sie sind immer die erste Person, die etwas Konkretes zum Arbeiten hat.
quelle
Ich kann eine technische Spezifikation schreiben, die Ihre Socken mit der Menge an Mustern abbläst, die ich einpressen kann.
Allein diese Aussage lässt mich glauben, dass Sie an anderen Aspekten der Softwareentwicklung arbeiten müssen.
quelle
Während Sie möglicherweise nie für jeden Aspekt der Software Ihres Unternehmens verantwortlich sind, kann es äußerst wertvoll sein, über ein breites Wissensspektrum in vielen Bereichen zu verfügen. Wenn nichts anderes, ist es mehr Zeug, das Sie in einem Interview ablegen können, damit Sie Ihre Karriere vorantreiben können.
Wenn Sie in einigen Bereichen Ihres Jobs nicht genug herausgefordert werden, starten Sie zu Hause ein eigenes Projekt, um etwas zu tun, das Sie interessant finden. Oder engagieren Sie sich für ein Open Source-Projekt.
quelle
Nein, das tue ich nicht. Es ist nicht meine Aufgabe, mir Gedanken darüber zu machen, was ich baue, sondern es nach den Vorgaben meines Kunden / Arbeitgebers zu bauen. Sie wissen bereits, was sie wollen und es liegt an mir, es richtig umzusetzen, damit es gewartet werden kann. Ich werde Ratschläge geben, wenn sich die Chance ergibt, wenn ich feststellen kann, dass sie nicht ganz sicher sind, wie sie eine Funktion am besten in die Software integrieren können
Wahrscheinlich werde ich irgendwann mein eigenes Projekt machen und mir Gedanken darüber machen wollen, was ich baue, aber ich denke für eine Weile, wenn ich eine Karriere als Softwareentwickler beginne, ist es wichtig, ständig danach zu streben, den richtigen Weg zu lernen, um Dinge zu tun
quelle