Meine Ideen in die Software meines Unternehmens einbringen - Spezifikationen schreiben oder selbst machen?

Ich bin ausgebildeter Biologe und Mathematiker. Meine Aufgabe ist es, algorithmische und konzeptionelle (manchmal UX) Lösungen für Probleme in einer Laborumgebung (typischerweise Optimierungskram, manchmal Datenanalyse) zu entwickeln, um unserem Projekt zum Erfolg zu verhelfen. Ich bin seit ungefähr 2 Jahren im Unternehmen, ich mag meinen Job, weil ich viele verschiedene Dinge tun kann.

Die Problematik:

a) Da ich diejenige mit dem größten Fachwissen über das Geschäft der Kunden bin, ist dies nicht das einzige, was ich tue, ich mache auch viel Projektmanagementarbeit (Anforderungsanalyse, Schreiben anderer Spezifikationen, Kommunikation mit dem Kunden, ... ) ==> Ich kann selten mehr als ein paar Stunden mit einer Sache verbringen.

b) Ich kenne R, Matlab und sehr wenig C (2 Universitätskurse). Meine Firma arbeitet mit C#. Ich kann Code also weder einfach testen noch selbst schreiben – er muss durch einen Entwickler gehen. ==> Das führt zu Missverständnissen, die Zeit kosten.

c) Es ist weder eine Option, nur Projektmanagement zu werden, noch 100% Entwickler zu werden, da meine anderen Fähigkeiten und Kenntnisse anderswo sehr nützlich sind. Außerdem bin ich derzeit der einzige „echte“ Mathe-Typ im Unternehmen.

Aktuelle Situation: Ich löse das Problem und schreibe einen Prototyp in R. Jemand anderes macht die Implementierung in C#.

  • Gut: Ich komme schnell mit einer testbaren Lösung.

  • Schlecht: Entwickler dokumentieren oder arbeiten nicht gerne mit zu detaillierten Spezifikationen und haben Schwierigkeiten zu beurteilen, ob es wie erwartet funktioniert, ich kann Code nicht verstehen, Code wird auf eine Weise geschrieben, die es schwierig macht, sich an neue Probleme anzupassen. ==> Viel Zeit verloren und ich und die Entwickler unzufrieden.

Wie kann ich die Situation für alle verbessern? Meine Ideen:

  • Finden Sie einen Weg, um Entwickler davon zu überzeugen, dass gut dokumentierter Code und Testzugriff für mich nicht darauf zurückzuführen sind, dass ich jeden kleinen Schritt kontrollieren möchte, sondern dass dies eine Art der Zusammenarbeit ist.

  • C# lernen, damit ich bestimmte Teile der Software selbst schreiben kann (dauert laaange Zeit, schätze ich)

  • C# gerade gut genug lernen, damit ich Code verstehen und Missverständnisse frühzeitig erkennen kann (möglicherweise nicht effizient)

  • Lernen Sie etwas wie Python, das näher an dem ist, was ich weiß (schneller), verbinden Sie es mit der restlichen Software und stellen Sie es zusammen mit C#-Teilen bereit. Wenn es leistungskritisch ist (sehr selten), übergeben Sie diese Teile an echte Entwickler.

  • beten Sie, dass wir bald Cloud-Lösungen verkaufen und weiterhin alles in R machen

  • [Ihre Idee hier]

Meine Frage an Sie: Was ist Ihrer Meinung nach das Beste, um die Situation zu entschärfen? Ich möchte unbedingt im Unternehmen bleiben und möchte, dass wir erfolgreich sind. Ich kann auf etwas Unterstützung vom Chef zählen.

Kommentare sind nicht für längere Diskussionen gedacht; Diese Konversation wurde in den Chat verschoben .

Antworten (2)

Ich würde vorschlagen, dass Sie mit dem Entwicklermanager zusammenarbeiten, um Ihre Bedürfnisse mit den Fähigkeiten der Entwickler in Einklang zu bringen, über die sie derzeit verfügen.

Höchstwahrscheinlich werden die Entwickler wahrscheinlich nicht von C#, zu R oder Python oder zu BDD wechseln wollen und ehrlich gesagt auch nicht müssen. Entwickler, die mit einem bestimmten Stack vertraut und vertraut sind, möchten normalerweise nicht zu einem anderen wechseln.

Ich denke, Ihre Bedürfnisse können von den Leuten erfüllt werden, die Sie haben, aber Sie müssen eine Beziehung zu den Entwicklern und ihrem Manager aufbauen , um dies zu erreichen.

Zusammenfassend denke ich, dass dies überhaupt kein technisches Problem ist, sondern eher ein Mangel an Teamwork und/oder Kommunikation.

ablehnen. Sie haben keine Ahnung, was die Entwickler überhaupt tun wollen. Beziehungen brauchen eine Struktur - die Dinge müssen in einem Prozess funktionieren, man kann nicht einfach sagen "eine Beziehung haben", es muss eine Kommunikationsstruktur geben.
@bharal - es ist schwierig, die Kommunikation zu strukturieren, wenn Sie keine oder nur sehr wenig haben. Am liebsten wäre es mir, wenn zunächst jemand mit einem Angebot für ein offenes Gespräch auf mich zukommt.

Dies ist ein perfekter - ehrlich gesagt einfach perfekter - Zeitpunkt, um BDD zu verwenden.

Sie wissen, was der Code tun soll. Sie können Code schreiben - verwenden Sie Cucumber. Das ist jetzt der Link

Schauen Sie es sich an – im Grunde können Sie damit die Schritte für einen erfolgreichen Test definieren, und dann geht der Entwickler los und schreibt Code, der sich in diese Definition einklinkt.

Sie können dann sicher sein, dass alles, was die Entwickler sich ausgedacht haben, funktioniert. Es ist auch genau das, was Cucumber zu tun vorgibt (nur tut es das nie, weil Geschäftsleute weder Code schreiben noch Dinge mit einer hässlichen Benutzeroberfläche verwenden - und wer kann ihnen die Schuld geben?)

Ich weiß nicht, ob ein Gurkenport für "R" existiert, das wäre nett, Sie könnten die eine Gurkenspezifikationsdatei haben und dann beide Codebasen dagegen testen - aber ich bin sicher, Sie könnten Ihre Leute dazu bringen, einfach "anzurufen " Ihren R-Code aus C# und verwenden Sie diesen als Eingabe für den Cucumber-Code.

sieht auf jeden Fall interessant aus, ich werde das sicherlich als eine Option vorschlagen ... die Entwickler könnten es sogar mögen :)
Das, was ich an Cucumber mag, ist, dass selbst wenn das Team keinen BDD-Ansatz verwendet, die von ihm erstellten Spezifikationen eine große Hilfe bei der Entwicklung eines Systems sind, das der Kunde benötigt und das tatsächlich so funktioniert, wie der Kunde es erwartet. Die Kehrseite ist, dass die Kunden schlecht über Randfälle und Ausnahmen nachdenken ... Der CUC-Code kann also auch Zeit verschwenden. Ich stimme zu, dass das OP mit dem Entwicklerteam darüber sprechen und vielleicht versuchen sollte, gemeinsam an einer Lösung zu arbeiten.
ja, aber über Grenzfälle nachzudenken, gehört zu meinem Job. Ich schätze, wir müssen uns zusammensetzen und darüber sprechen, "was kann ich tun, um Ihre Entwicklung effektiver zu unterstützen". Ich bin noch relativ neu und vielleicht (wie einer der Kommentare oben angedeutet hat) sind meine Spezifikationen zu "mathy", aber niemand möchte etwas sagen ...
@BootstrapBill - Sie könnten wahrscheinlich gut in BDD sein, und diese Spezifikationen sollten dem Entwicklerteam helfen, die Tools zu erstellen, nach denen Sie fragen.