Latest / Coding Buddies | Tech & Dev-Mindset / Mach doch erstmal?! Warum Anforderungen so wichtig sind!
Transcript
- 0:00Ja, habt ihr. Irgendwie gibt es irgendwelche
- 0:01Anforderungen daran, was ich berücksichtigen soll?
- 0:04Na ja, das was es können soll, aber so richtige Anforderungen
- 0:08haben wir noch nicht und dann kommt das, was immer sehr
- 0:10gefährlich ist. Die werden aber noch kommen, ja.
- 0:14Coating Bodys dein Podcast rund um Softwareentwicklung und
- 0:17aktueller Technews herzlich willkommen.
- 0:31Halli Hallo und herzlich Willkommen zur neuen Folge vom
- 0:34Coding Buddies Podcast. Schön, dass du wieder
- 0:36eingeschaltet hast und schön, dass wir alle wieder hier
- 0:39zusammen sind. Ich natürlich der Fabi und auch
- 0:43der fantastische Tino Tino sei gegrüßt.
- 0:48Hallo. Na na, wie geht's?
- 0:51Wie steht's? Geht ab.
- 0:54Ich habe schon auf was geht ab gewartet, aber hallöchen.
- 1:00Ja, ich hab gute. Laune heute ist ein schöner Tag,
- 1:03das ist gut, das freut mich. So ist es richtig gute Laune
- 1:06beim Podcast. Das erhält die Stimmung für alle
- 1:09hier. Mal gucken, wie lange die Laune
- 1:13anhält. Genau direkt im Keller.
- 1:17Tschüss war's gut ne Pass auf, lass uns mal das Thema starten
- 1:21und zwar möchte ich das Thema noch nicht ganz verraten, ich
- 1:23möchte am Anfang erstmal ein kleines Gedankenexperiment
- 1:25machen. Was heißt Gedankenexperiment?
- 1:29Ich weiß nicht, ob man das so nennen, aber.
- 1:31Ich möchte jetzt auch, dass du, liebe Zuhörer, lieber Zuhörer,
- 1:35auch mitmachst und du natürlich auch Dino.
- 1:39Und zwar geht es einfach nur mal ganz kurz darum, um sich
- 1:42vorzustellen, wenn ich einfach nur sage.
- 1:46Stellt euch bitte vor. Oder was würdet ihr sagen?
- 1:50Was ist ein großes Haus? Jetzt kann man einmal ganz kurz
- 1:54drüber nachdenken und jetzt sag du doch mal, Tino, was ist für
- 1:59dich ein großes Haus? Ein großes Haus, ja.
- 2:05Mhm. Tja, das ist eine gute Frage.
- 2:09Also großes Haus hat auf jeden Fall mehrere Etagen, OK.
- 2:19Wohnfläche würde ich sagen. Die Frage ist halt was für n,
- 2:22was für n Haushalt ne, also entweder viel Wohnfläche oder
- 2:27viele Wohneinheiten, also irgendwas ja was halt groß
- 2:31treffen würde. Also ich würd jetzt einfach
- 2:33sagen mehrere Etagen wäre jetzt so das erste.
- 2:36Und jetzt kann, ja kannst du Liebe zuhören, lieber Zürcher,
- 2:38ja mal abgleichen, wie es zum Beispiel was Tino gesagt hat, ob
- 2:41das sozusagen deine Gedanken trifft oder nicht.
- 2:44Ich hätte zum Beispiel auch gesagt, so was wie es muss, weiß
- 2:48ich nicht, keine. Ahnung.
- 2:49Für mich ist ein großes Haus vielleicht sowas wie es hat 7
- 2:52Zimmer, 2 Etagen und muss mindestens weiß ich nicht 200
- 2:57bis 250 Quadratmeter mal als Beispiel so also.
- 3:01Wenn du es jetzt so zum Beispiel auf Wohnhäuser beziehst, also so
- 3:03ein Einfamilienhaus wäre, es wäre ein sehr großes
- 3:07Einfamilienhaus zum Beispiel, dann wäre es auch nach meiner
- 3:10Definition groß. Genau so.
- 3:12Und jetzt kommen wir zu dem spannenden Teil, weil du hast
- 3:15gerade gesagt, kommt es jetzt darauf an, es ist ein
- 3:17Einfamilienhaus, es ist ein Mehrfamilienhaus und.
- 3:20Vielleicht stellen sich manche Leute auch darunter vor, dass n
- 3:23großes Haus ein Haus ist, was quasi wirklich von der Höhe her
- 3:26groß ist und nicht von der Fläche her.
- 3:28Beispielsweise ne, das heißt n großes Haus könnte wär für
- 3:32manche vielleicht nicht, wenn es weiß nicht 500 Quadratmeter
- 3:35hätte aber nur eine Etage, aber vielleicht wenn es mehrere
- 3:39Etagen hätte, was auch immer, also von der Höhe her, es gibt
- 3:43viele Interpretationen davon und wenn ich jetzt zum Beispiel
- 3:45sagen würde, Tino Pass Aufbau mir doch mal bitte ein Haus, ein
- 3:50Großes. Dann wird es schwierig.
- 3:55Weil du ja offensichtlich nicht wissen kannst, was ich zum
- 4:00Beispiel von dir möchte. Was ist groß, verstehst du genau
- 4:06und einfach nur mal, um? Mit diesem Aufhänger würde ich
- 4:11gerne in die Folge starten und in das Thema der Folge und zwar
- 4:16geht es um Anforderungen und warum Anforderungen in der
- 4:20Software Entwicklung und vielleicht auch nicht nur in der
- 4:22Softwareentwicklung wie wir gerade gesehen haben, also
- 4:24unglaublich essentiell sind. So genau, und da können wir ja
- 4:29vielleicht einfach mal n bisschen gucken.
- 4:31So, warum ist das so? N bisschen haben wir es jetzt
- 4:33schon mal in einem Beispiel demonstriert.
- 4:36Und was sind vielleicht auch unsere Erfahrungen dabei?
- 4:39Und was passiert, wenn es halt ja nicht ordentlich, also wenn
- 4:44man nicht ordentlich die Anforderungen an die Software
- 4:47stellt? Was hältst du davon?
- 4:49Ja, ist ein ganz cooles Thema ist glaube ich auch ein Thema,
- 4:52was viel diskutiert wird, wo auch viele wahrscheinlich von
- 4:56der Theorie her wissen, wie es sein müsste.
- 5:02Aber in der Praxis ist doch ein unglaublich schwieriges Thema
- 5:05ist. Sowohl also von beiden Seiten
- 5:10aus würde ich sagen, es ist halt n schwieriges Thema, sowohl für
- 5:15den, der die Anforderung stellt, also beispielsweise irgendein
- 5:18Kunde oder Stakeholder der Software und natürlich für den
- 5:22Implementierenden diese Anforderungen, also zum Beispiel
- 5:25wenn es ein Feature request ist, denn auch wirklich umzusetzen,
- 5:29was sich gewünscht wird, wie du es ja gerade ganz cool an dem
- 5:33Beispiel klar gemacht hast. Wenn jetzt der Wunsch wäre.
- 5:39Bau mir ein großes Haus und ich würde sagen okay, das reicht
- 5:42mir, ich brauche nicht mehr Anforderungen oder genauere
- 5:45Anforderungen. Würde jetzt anfangen ein großes
- 5:47Haus zu bauen ist die Wahrscheinlichkeit ja ziemlich
- 5:50groß, dass Unmut am Ende aufkommt, weil es einfach nicht
- 5:54deinen Erwartungen entspricht, richtig, und das ist eigentlich
- 5:57eine ganz coole Analogie, die gefällt mir sehr gut shoppen.
- 6:02Dankeschön, Dankeschön. Ja, also ich ja.
- 6:06Also ich möchte einfach mal n bisschen über dieses Thema
- 6:08reden, weil ich weiß ja, dass du und auch ich in der
- 6:12Vergangenheit auch einfach. Auch damit zu kämpfen haben.
- 6:16Einfach weißt du das man. Anforderungen bekommt und diese
- 6:21Anforderung halt nicht. Leider nicht immer klar genug
- 6:24definiert sind. Ne.
- 6:26Und genau diese 2 Punkte, die du gerade auch schon angesprochen
- 6:29hast, sind ja unglaublich wichtig.
- 6:30Weil natürlich kannst du eine Anforderung definieren.
- 6:35Und vielleicht ist diese Anforderung per Definition für
- 6:38dich klar. Aber die Frage ist natürlich,
- 6:40was kommt bei der anderen Seite. Also wenn man jetzt sagt, der
- 6:44Stakeholder stellt die Anforderungen und der
- 6:46Stakeholder sagt, für mich ist die Anforderung klipp und klar,
- 6:49manchmal sieht man ja den Wald vor lauter Bäumen nicht, du
- 6:52kannst ja zum Beispiel, wenn wir beim Beispiel bleiben, wenn für
- 6:55mich definitiv klar ist, was ein großes Haus ist, manchmal
- 6:58hinterfragt man seine eigenen Gedanken nicht mehr.
- 7:02Das ist so klar und wie ich meine, man sieht den Wald vor
- 7:04lauter Bäumen nicht mehr. Dann ist es eben schwierig oder
- 7:07kann schwierig sein, diese Anforderungen weiterzugeben,
- 7:10weil die andere Seite sagt dann also im optimalen Fall, an
- 7:15dieser Stelle würde ich mir denken, dass die entwickelnde
- 7:18Seite sagt, Moment, da sind noch einige Fragen offen, aber ich
- 7:22fand die Idee von dir auch gut zu sagen, ja okay, aber was ist
- 7:25denn, wenn die andere Seite einfach sagt?
- 7:27N großes Haus, klare Sache, mach ich dir, hab ich genaue
- 7:30Vorstellung von, also beide Seiten sehen den Wald vor lauter
- 7:34Bäumen nicht. Find ich auch nicht schlecht und
- 7:37das wär natürlich. Das ist natürlich worst case,
- 7:39ne. Ja genau, da fehlt dann halt
- 7:41einfach diese klare Kommunikation dazwischen.
- 7:43Und das meine ich halt immer mit Theorie und Praxis.
- 7:46In der Theorie weiß jeder, OK, es muss klar kommuniziert
- 7:49werden, was sich gewünscht wird, es muss detailliert
- 7:51aufgeschrieben sein, sodass quasi der Entwickler genau weiß,
- 7:56was zu tun ist und die Realität ist ja oft so.
- 8:01Der also der Anfordernde klingt komisch, also der Stakeholder
- 8:04sagt, Ich hab's klar definiert, ich denke, das ist absolut klar,
- 8:08was ich mir wünsche, der Entwickler denkt sich, liest
- 8:11einmal drüber ja okay alles klar, ich hab sofort eine
- 8:14Vorstellung was das beinhalten soll und im Worst case wie du
- 8:18schon meintest Match das aber nicht, dass beide eigentlich in
- 8:21dem Moment zufrieden sind und loslegen, also was heißt
- 8:25loslegen das Stakeholder kümmert sich vielleicht um andere
- 8:27Themen, weiß nicht blenden wir mal kurz aus gehen wir mal auf
- 8:30die Entwicklersicht und du denkst dir.
- 8:33Ja gut, dann entwickle ich das jetzt, weil ich weiß ja, was zu
- 8:36tun ist. So, und dann kann es entweder
- 8:39sein, während der Entwicklung denkst du dir so.
- 8:41Ja Moment mal, mach ich das jetzt so oder so?
- 8:44Also warte jetzt bin ich mir unsicher, wie soll das jetzt
- 8:47eigentlich sein und da fällt dann erst auf so vielleicht es
- 8:50doch nicht so genau spezifiziert, das ist im Prinzip
- 8:54ein Case, der aber noch OK ist, weil dann kann es ja nach
- 8:57spezifizieren der absolute Worst case ist ja wenn du auch diesen
- 9:01Moment nicht hast und am Ende sozusagen.
- 9:06Sagst hey, ich bin fertig hier, bitte schau es dir an und dann
- 9:09ist es komplett an den Anforderungen vorbeigegangen und
- 9:12das klingt zu utopisch oder unwahrscheinlich, aber das ist
- 9:15nicht unwahrscheinlich, dass man stark an Anforderungen vorbei
- 9:19implementiert, das geht halt schnell in solchen Fällen.
- 9:23Ja, richtig. Also ich meine, ich finde, ein
- 9:25gutes Beispiel ist tatsächlich. Wenn wir jetzt mit Git unterwegs
- 9:30sind und du sagst zum Beispiel okay, ich möchte gerne
- 9:33automatisiert einen Brunch in den, also einen lokalen Branch
- 9:39in den Remote Branch Mergen, da könnte man vielleicht am Anfang
- 9:43sagen, ja gut, das ist total logisch, macht sehr einfach, es
- 9:47geht schnell. Also du sagst einfach okay push.
- 9:50Ne Push dein dein Änderung von deinem Branch einfach Remote
- 9:54synchronisiere den und alles ist gut so, das könnte ja vielleicht
- 9:57sozusagen die Anforderung sein und und auch die
- 10:00Erwartungshaltung sein, dass man sagt, OK passt auf, es gibt
- 10:02Änderungen auf dem lokalen Branche, Du möchtest Änderungen
- 10:05auf nem Remote Branch pushen und das ist die Anforderung, es muss
- 10:08einfach nur hochgeballert werden, so nach dem Motto.
- 10:12Und dann kann es ja durchaus einfach nur mal um das
- 10:14vielleicht mal so versuchen, ein kleines Beispiel zu generieren.
- 10:17Du kannst ja durchaus sein, dass du verschiedene Edge Casts hast,
- 10:19die du dann entweder mitbekommst wie du meintest oder eben nicht.
- 10:23Also wenn du jetzt zum Beispiel sagst, du kriegst es mit und
- 10:25denkst dir warte mal. Aber was ist denn eigentlich,
- 10:27wenn ich meine Änderung pushen will und es gibt einen Merch
- 10:29Konflikt so und du denkst nicht daran so also solche Sachen
- 10:34können ja auftreten und dann ist eben die Frage
- 10:36anforderungstechnisch wie geht man damit um, sagt man einfach
- 10:40Push Force Haue ich einfach meine Änderungen ganz klar
- 10:44drüber und ich. Was soll passieren?
- 10:46Und das ist genau der Punkt, der zum Beispiel mich auch in in
- 10:50mich als Softwareentwickler sag ich mal in meiner Laufbahn öfter
- 10:54mal n bisschen begleitet hat, das Anforderungen gestellt
- 10:57werden, die erstmal sag ich jetzt mal.
- 11:01Den Happy Pass abbilden im Sinne von du möchtest irgendetwas
- 11:04machen und also die Software soll irgendetwas tun, ne aber
- 11:08was passiert wenn es zum Beispiel zu Konflikten kommt?
- 11:11Ne in diesem Happypass also wir von diesem Happypass abweichen,
- 11:15also es ist nicht alles gut, es funktioniert nicht alles so,
- 11:18sondern es kommt vielleicht mal zu einem Fehler, zu einem
- 11:20Problem. Und da habe ich zumindest
- 11:24persönlich die Erfahrung gemacht, dass oftmals an dieser
- 11:26Stelle solche Anforderungen vergessen werden, weil das
- 11:29gehört meiner Meinung nach mit zu den Anforderungen.
- 11:33Dieses, nennen wir es mal Feature mit dazu.
- 11:35Weißt du, weil das schwierige an der Stelle ist, finde ich, wenn
- 11:40du jetzt genau diesen Punkt hast und sagst, Na ja, gut, pass auf,
- 11:43wir sollen ja wirklich den Branch, den lokalen Branch zur
- 11:48Änderung des lokalen Branches auf Remote pushen, das ist die
- 11:52Anforderung. Und wenn es jetzt vielleicht so
- 11:55ist, dass man irgendwie merge Konflikte hätte.
- 11:58Die Anforderung ist ja offensichtlich, dass im
- 12:00Endeffekt das einfach. Ja, hochgeschoben werden soll.
- 12:04Also mach ich n. Push Force und Bügel alles über
- 12:11und am Ende sagt der Stakeholder Moment, hier sind Änderungen
- 12:16verloren gegangen und das ist halt das Problem, weil dann
- 12:20denkst du dir so. Na ich denke wir sollten das so
- 12:21machen. Ja.
- 12:25Und da kommt es halt zu. Problemen.
- 12:28Ja OK, also verstehe ich das Beispiel.
- 12:31Ich hoffe Liebe zur Geburt, du hast das mit dem Git auch
- 12:34verstanden, das Beispiel. Genau also was du meinst ist im
- 12:38Prinzip, dass der. Der Stakeholder quasi eine
- 12:44Vision im Kopf hat. Also so ein Wunschverhalten der
- 12:47Software diesen sogenannten Happypass, wie du das formuliert
- 12:50hast und. Dann im Prinzip nicht
- 12:56berücksichtigt, was alles auf diesem Weg passieren kann
- 12:59beziehungsweise denkt. Er hat alles berücksichtigt und
- 13:02dann kommt trotzdem Cases. Die quasi, wo er denn selbst
- 13:09noch nicht weiß, wie er das eigentlich haben möchte.
- 13:11Das ist ja auch so n so n Fall, der öfter mal auftritt wie du
- 13:14schon meintest, so na ja gut, er möchte ja scheinbar immer das
- 13:18was lokal liegt, ich greif das Beispiel noch mal kurz auf auf
- 13:23dem Server Remote zur Verfügung stellen und das ist immer der
- 13:26Stand der zählt, also bügeln wir quasi immer alles über das heißt
- 13:30wir überschreiben die Änderung und er denkt sich so Moment mal,
- 13:35jetzt ist ja ein Fall eingetreten, dass da Sachen
- 13:37waren. Die unterschiedlich waren.
- 13:40Und die werden jetzt quasi überschrieben, dass da den Fall
- 13:43habe ich gar nicht berücksichtigt, dass das
- 13:44zustande kommen kann. Ich dachte, es kommen immer nur
- 13:46neue Sachen drauf und nicht, dass Sachen quasi durcheinander
- 13:50kommen und dann überschrieben oder verworfen werden.
- 13:55Das ja, das ist ein ganz klassischer Fall.
- 14:00Quasi. Ja.
- 14:01Mir ist gerade ein Beispiel eingefallen, weil du meintest,
- 14:03hoffentlich konnte jetzt jeder folgen im Sinne von diesem
- 14:06Gipfel. Spiel, aber stell dir mal vor,
- 14:08ich sag jetzt zu dir Tino, kannst du mal n bisschen Milch
- 14:11holen fahren so ne weil wir keine Ahnung wir wollen heute
- 14:14Abend irgendwas kochen und wir brauchen Milch du kannst mein
- 14:17Fahrrad nehmen, fahr damit einfach zum Supermarkt du darfst
- 14:20sagst ja alles klar ich soll Milch holen.
- 14:22Fährst mit dem Fahrrad zum Supermarkt.
- 14:23Du hast n Platten, ne denkst dir OK, dann lass ich das Fahrrad
- 14:27halt hier stehen und lauf halt mit der Milch nach Hause, kommst
- 14:30an und sagst hier ist deine Milch und dann sag ich OK wo ist
- 14:33aber dein Fahrrad und dann sagst mein Fahrrad und dann sagst du
- 14:36ja das hatte n platt ich hab es einfach stehen lassen so ich hab
- 14:38nicht die Anforderungen gestellt zu sagen wenn das Fahrrad einen
- 14:42Platten hat dann bringt es bitte trotzdem wieder mit zurück also
- 14:45weißte oder es hätte ja auch sein können, dass du dir sagst
- 14:49ich bring das Fahrrad mit nach Hause weil der will ja bestimmt
- 14:51sein Fahrrad wieder haben und ich sag aber.
- 14:56Du solltest die Milch mitbringen, aber wenn du Platten
- 14:57hast, dann lass das Fahrrad doch da liegen.
- 14:59Das ist doch kaputt, will ich nicht mehr haben.
- 15:01Also die Frage ist halt, du kannst dir nur denken ja gut
- 15:04wahrscheinlich möchte. Er, dass ich das Fahrrad
- 15:08mitbringe und wahrscheinlich wird es auch die richtige
- 15:10Intuition sein, die du hast. An der Stelle, aber unter
- 15:13Umständen, wenn man jetzt auf das in der Softwareentwicklung
- 15:16ist, kann es halt sein, dass es nicht immer das ist, was man
- 15:19sich denkt, was es ist, wie es sich verhalten soll.
- 15:22So. OK.
- 15:25Jetzt wusste ich kurz mal selbst mitkommen.
- 15:28Ja, genau, also man man, man setzt halt quasi oder setzt
- 15:32Sachen voraus, die nicht beschrieben sind, weil man die
- 15:35quasi so von von sich ausgeht. Meinst du das damit, dass du
- 15:40gewisses Verhalten voraussetzt? Aber dann lass uns doch noch mal
- 15:47auf das Hausbeispiel gehen. Wie würdest du das denn besser
- 15:52finden? Also mal angenommen, das war
- 15:54jetzt, wir schreiben jetzt eine Anforderung an einen Entwickler
- 15:58oder bzw dann. An die Handwerkerbauarbeiter.
- 16:02Wie auch immer. Ich möchte ein großes Haus
- 16:07haben. So, das ist natürlich super
- 16:08unpräzise und kann einfach alles rauskommen.
- 16:10Das heißt, es muss ja mehr spezifiziert werden, dann könnte
- 16:13man ja jetzt beispielsweise im nächsten Schritt sagen.
- 16:18Das Ganze soll eine Wohnfläche von so und so viel Quadratmeter
- 16:24haben. Auf Xetagen und mit x meine ich
- 16:27jetzt, das kann jetzt jeder für sich einstellen, da sollte
- 16:29natürlich eine Zahl drin stehen. Sagen wir mal keine Ahnung. 200
- 16:33Quadratmeter auf 2 Wohnetagen ja.
- 16:36So. Mhm, wäre das denn jetzt präzise
- 16:39genug? Es.
- 16:42Also ich würd sagen, das ist noch nicht präzise genug, weil
- 16:45du natürlich vielleicht auch noch definieren müsstest an
- 16:48diesem Beispiel. Wie sollen die beispielsweise
- 16:52die Zimmer, wieviel Zimmer sollen pro Etage hinkommen, wie
- 16:54sollen die Zimmer gelegen sein? In welche Richtung sollen
- 16:58vielleicht sogar die Türen öffnen?
- 17:00Wo sollen die Türen sein von den Zimmern und wo kommt
- 17:03beispielsweise ein Badezimmer hin, wo kommt zum Beispiel die
- 17:06Küche hin? Solche Sachen ne.
- 17:08Also es ist natürlich schon wichtig.
- 17:11Möglichst präzise diese Anforderung auszuformulieren,
- 17:14ne. An der Stelle kann man ja
- 17:18zumindest vielleicht auch noch sagen, dass das Beispiel mit
- 17:20einem Haus als einzelne Anforderung natürlich recht groß
- 17:23gewählt ist, ne? Wenn wir jetzt in der
- 17:26Softwareentwicklung unterwegs sind, ist es natürlich schöner,
- 17:29wenn man vielleicht kleinere Pakete schnürt.
- 17:32Ne ist auf jeden Fall sehr empfehlenswert.
- 17:36Sodass halt die Anforderungen möglichst Kleinigkeiten
- 17:40umfassen. Ne, also sagen wir mal, man
- 17:42würde zum Beispiel diesen dieses dieses Zaun hauen bauen von dem
- 17:46Haus würde man jetzt zum Beispiel unterteilen in mehrere
- 17:50Aufgaben. Ne, dass man zum Beispiel sagt,
- 17:52OK, was ist denn die Anforderung an die Grundfläche?
- 17:56Ne, was ist denn die Anforderung an zum Beispiel?
- 18:00Die Etagenzahl ne, was ist die Anforderung an die?
- 18:05Zimmer, wie sie gelegen sind, also dass man das so sukzessiv
- 18:08aufbaut, weil du könntest ja anfangen und sagen, OK, ich leg
- 18:11erstmal den Grund. Grundriss, wie man das nennt, ne
- 18:14also den das Fundament bau dann sozusagen die am Fundament die.
- 18:20Das Haus drumherum, die wie nennt sich das?
- 18:23Das Grundgerüst auf. Und so weiter.
- 18:28Man merkt, wir sind ja auf jeden Fall die absoluten Handwerker.
- 18:32Die kommen nur auf Fachbegriffe hier um die Ecke.
- 18:39Das ist aber, um dann die Softwareentwicklung zu kommen,
- 18:42um vom Handwerk weg, weil das auf jeden Fall nicht unser
- 18:44Steckenpferd. Das ist nämlich ein wichtiger
- 18:48Punkt, was du gerade gesagt hast, wo halt auch schon sehr
- 18:51oft dran kränkelt, sage ich mal, dass diese Features oder diese
- 18:57Anforderungen einfach viel zu viel umfassen, weil das genau
- 19:01die Wahrscheinlichkeit enorm steigert, dass Sachen vergessen
- 19:04werden. Also wenn die Anforderung ist,
- 19:06bau mir bitte ein Haus, dann ist da so viel Spielraum drin, dass
- 19:11alles Mögliche passieren kann, was quasi an der eigentlichen
- 19:15Vorstellung dran vorbeigeht und selbst wenn man jetzt anfängt,
- 19:19deswegen habe ich das mal so ein bisschen eingeladen.
- 19:22Zu spezifizieren, wie dieses Haus aussieht, die
- 19:25Wahrscheinlichkeit immer noch sehr groß, dass Sachen vergessen
- 19:28werden, weil du die vielleicht im Kopf wieder voraussetzt, dass
- 19:32ja Unstimmigkeiten auftreten, also quasi wieder Abweichungen
- 19:35zwischen deiner Vorstellung und der realen Umsetzung am Ende.
- 19:39Ja, und da hast du ja schon einen guten Punkt gebracht, dass
- 19:42es immer von Vorteil ist. Diese Aufgabenpakete nenne ich
- 19:46es jetzt mal, also diese Anforderungen oder Feature
- 19:49wünsche. Klein hält, weil man sie einfach
- 19:54besser überblicken kann und besser analysieren und
- 19:56spezifizieren kann und dann quasi sukzessiv darauf basierend
- 20:01dann nach und nach zu dem Gesamtziel kommt und.
- 20:07Halt wirklich ein sehr entscheidender Punkt, den ich so
- 20:11erfahrungsgemäß festgestellt habe.
- 20:15Beispielsweise hatte ich mal. Ein Ticket beziehungsweise das
- 20:20hatten wir beide sogar, das war in der Zeit, seitdem wir wieder
- 20:23zusammenarbeiten. Das war relativ umfangreich, hat
- 20:29aber auf den ersten Blick nicht so gewirkt.
- 20:32Und. Da war nämlich genau der Fall,
- 20:35dass beide Seiten der Meinung waren, OK, hier ist alles
- 20:39spezifiziert, so wie es sein müsste und wir haben quasi
- 20:42angefangen es zu implementieren. Und dabei hat sich dann doch
- 20:47immer mehr herausgestellt, dass es wesentlich größer ist als
- 20:52anfänglich gedacht. Und das wär halt auch der Punkt,
- 20:57wo man sagen müsste, OK das das wird so wahrscheinlich nicht
- 21:00funktionieren. Man müsste das entweder noch mal
- 21:03runterbrechen oder ja halt splitten.
- 21:06Ne, diese ganze Anforderung. Und das ist jetzt wieder
- 21:10Realität und Theorie. Es ist aber anders gelaufen als
- 21:15gedacht, sondern es lief im Endeffekt so, dass man immer
- 21:17nachspezifiziert hat, weil man dachte, na ja, gut, das ist
- 21:20jetzt vielleicht noch so ein ein Ding, was fehlt, das schreibe
- 21:23ich jetzt mal bei uns, in dem Fall noch ins Ticket rein, ja
- 21:26gut, alles klar, dann wissen wir jetzt für den Fall, was zu tun
- 21:28ist. So, und das ist x mal passiert
- 21:32und das beinhaltet natürlich auch, und das ist eine große
- 21:36Gefahr, um mal so auf negative Aspekte einzugehen.
- 21:39Wir haben auch viele Sachen doppelt gecoded, weil wir
- 21:43dachten, okay, es müsste jetzt nach Schema A laufen haben das
- 21:48implementiert. Dann wurde festgestellt, Herr,
- 21:51nee, nee, nee, das ist eigentlich gar nicht, nee, das
- 21:55wird so nicht funktionieren, jetzt, wo ich noch mal drüber
- 21:56nachdenke und das Ausprobieren, das wird so nicht funktionieren,
- 21:59wir brauchen Schema B, alles klar, dann reverse du das bzw
- 22:05implementierst Schema b und sagst dann wiederum so jetzt
- 22:10aber jetzt haben wir es doch oder?
- 22:12Ja, aber jetzt ist irgendwie. Jetzt fehlt mir n bisschen was
- 22:15aus Schema a. Also wir müssen jetzt irgendwie
- 22:17gucken, dass wir das irgendwie noch zusammenfügen.
- 22:19Und wenn du in diesem Hamsterrad drin bist.
- 22:21Ja. Dann Gnade dir Gott.
- 22:24Also dann ist halt wirklich n Teufelskreis eröffnet, weil
- 22:29keiner mehr am Ende wirklich weiß, was will ich hier
- 22:31wirklich, was brauch ich, was muss ich tun und dann wird es
- 22:35halt richtig. Richtig tricky und vor allem
- 22:38frisst es Zeit. Also es ist dann kein effektives
- 22:41Arbeit mehr in meinen Augen. Na du bist ja dann, und das ist.
- 22:43Halt keine Seltenheit, dass sowas passiert.
- 22:45Und du bist ja dann irgendwann in so einem.
- 22:47Wünsch dir was. Zirkel gefangen, wo dann
- 22:51irgendwie am besten kommt noch noch jemand anders mit rein und
- 22:55sagt ja das wär aber auch noch gut.
- 22:56Eigentlich muss es so sein und dann?
- 23:00Dreht sich alles nur noch kreuz und quer durch die Gegend?
- 23:04Aber ja, du. Verlierst halt das Ganze aus den
- 23:06Augen so. Ne genau, und das fühlt genau
- 23:09das ist halt wirklich schwierig, weil im Endeffekt bringt es halt
- 23:13nichts, weil du verlierst. Halt Zeit und du verschwendest
- 23:18halt Geld. So und schwierig wird es dann
- 23:21und das ist halt meine Erfahrung, die ich öfter mal
- 23:24gemacht habe. Ich sag nicht, dass das immer so
- 23:26ist, aber ich habe durchaus die Erfahrung auch gemacht.
- 23:31Dass im Endeffekt du vielleicht Zeitdruck hast und wenn du
- 23:35Zeitdruck hast, habe ich die Erfahrung gemacht, dass.
- 23:38Die Anforderungen zusätzlich sogar schwammig formuliert
- 23:41werden, weil Leute es schnell haben wollen.
- 23:43Leute wollen schnell Feature X haben, machen sich aber aus
- 23:48Gründen der vielleicht zeitprobleme noch weniger
- 23:50Gedanken darüber, wie sich Feature X irgendwie verhalten
- 23:54soll. Genau das zum Beispiel hier mit
- 23:57diesem Milchhohe Fahrradbeispiel.
- 24:01Da wird dann nicht über Eventualitäten nachgedacht, über
- 24:05Sachen, die eventuell passieren könnten und wie man damit
- 24:08umgehen soll. Und dann kommt es genau zu dem
- 24:12Punkt, dass du schnell was implementierst, das dann halt
- 24:15eben nicht ganz vollständig ist. Du wieder eine Runde drehst,
- 24:21dann noch mal in die Gespräche kommen musst, überlegen muss,
- 24:23was passiert denn hier, es wird wieder schnell, schnell, schnell
- 24:25gemacht, du implementierst es wieder, schnell, schnell,
- 24:27schnell und am Ende drehst du halt, anstatt eine ordentliche
- 24:30Runde 3. Runden, die einfach nur Waste
- 24:34waren und hast am Ende aber doppelt so lang gebraucht und
- 24:37das sieht man aber am Anfang vielleicht nicht so ne.
- 24:39Also es wird am Anfang gerne mal übersehen.
- 24:41Meiner also meine Erfahrung nach ich sag nicht, dass es immer so
- 24:44ist und dass es bei jedem. Auf dieser Welt, so ist aber es
- 24:48ist halt die Erfahrung, die ich dabei gemacht hab und das ist
- 24:51halt schwierig. Ja.
- 24:56Bearbeiten möchte also mal als kleines Beispiel ne, wenn sagen
- 25:00wir mal du hast n irgendein System ne Anwendung wo du dich
- 25:06als User registrieren kannst. Ne dann ist es erstmal ja
- 25:10überhaupt gar kein Problem zu sagen du hast vielleicht
- 25:13Anforderungen an die Systemen die sich sukzessiv aufbauen, es
- 25:17ist ja kein Problem zu sagen, ey du kannst dir ein user Profil
- 25:20anlegen, das ist die erste Anforderung die wird gemacht in
- 25:23einer Iteration sage ich jetzt mal ne wenn wir jetzt.
- 25:26Einem agilen Umfeld sind aber du hast einen gewissen Zeitumfang,
- 25:29vielleicht wo du sagst oder eine gewisse Planung und sagst in
- 25:33diesem Planungszyklus sage ich mir jetzt, ich möchte gerne,
- 25:36dass man sind jetzt sehr kleine arbeitspakete oder sehr grobe,
- 25:41grob gefasste arbeitspakete User anlegen kann.
- 25:43So, dann möchtest du zum Beispiel okay du möchtest, dass
- 25:46du noch ein Bild anlegen kannst, also ein User Profilbild anlegen
- 25:50kannst. Dann als nächstes sagst du noch,
- 25:52ich möchte auch noch, dass der User sein Profilbild ändern
- 25:55kann, das sind ja. Klare Anforderungen, die nach
- 25:58im. Im Nachhinein sag ich jetzt mal
- 26:00sukzessiv formuliert werden und die kannst du auch super
- 26:03abarbeiten und deine Software im hoffentlich im Normalfall gut
- 26:07erweitern, ne? Alles kein Problem.
- 26:11Schwierig wird es eher, wenn man sagt, OK, wie soll die
- 26:15Anforderung für das Profilbild denn sein, ne, und du sagst zum
- 26:18Beispiel ja, das Profilbild darf nur die und die Größe haben und
- 26:22es wird auf jeden Fall nur ein Bild sein.
- 26:26Und das ist wirklich eine feste Anforderung an diese Software.
- 26:30Und dann kommt aber vielleicht sowas wie übrigens eine Sache
- 26:34wäre dann doch noch ganz wichtig, vielleicht auch ein
- 26:36bisschen später. Das Profilbild müsste jetzt doch
- 26:41ein Video sein können. So, und da könntest du halt
- 26:46unter Umständen Teufels Küche sein oder kommen, weil klar kann
- 26:50man jetzt sich hinstellen und sagen, naja gut okay, du hast
- 26:53aber jetzt es ist auch eine sukzessive Änderung, es kann
- 26:57aber durchaus auch sein, dass also das ist finde ich dieser
- 27:00kleine Unterschied zwischen es ist eine sukzessive Änderung
- 27:03oder du legst von vorne herein wirklich Grundpfeiler fest und
- 27:08das ist jetzt vielleicht nicht ein starkes Grundpfeiler, sowas
- 27:11kann man ändern dieses Beispiel. Aber je stärker sich quasi oder
- 27:15je stärker diese Grundpfeiler im Boden verankert sind, desto
- 27:18schwieriger wird es halt eben diese Änderungen zu machen.
- 27:22Und das ist halt schwierig. Ja.
- 27:25Und in unserem Halt mit mehr Aufwand wieder verbunden.
- 27:28Genau, genau und prinzipiell klingt das jetzt erstmal an sich
- 27:33jetzt nicht, nicht nicht schwer. Ne du sagst OK ne Speicher
- 27:37anstatt n Bild halt einfach n. N Video kann man natürlich auch
- 27:41machen. Es kommt vielleicht n bisschen
- 27:42drauf an, wie wie man sozusagen die Speicherung von dem
- 27:46Profilbild oder Video dann am Ende gewählt hat.
- 27:49Ne kommt dann n bisschen drauf an, aber im Endeffekt ist es ja
- 27:52jetzt auch ne Änderung, die durchaus möglich ist.
- 27:54Aber ich sag nur mal rein theoretisch könnte es ja
- 27:57vielleicht auch. Unter anderen Umständen dazu
- 28:01kommen, dass bestimmte Änderungen reinkommen, die
- 28:03vielleicht wirklich einschneidend sind, so dass du
- 28:05dann nicht mehr so einfach in der Lage bist, diese
- 28:08Anforderungen zu ändern, weil sie halt eben in dem
- 28:11Grundgedanken dieser Anforderungen vielleicht auch
- 28:14verankert sind. Ja, und das also was was du
- 28:19meinst. Damit ist quasi wenn im Vorfeld
- 28:21das schon weiter oder konkreter überlegt worden wäre, dass dann
- 28:26halt so Breaking Changes vermieden werden könnten, genau
- 28:30oder worauf möchtest du da mal hinaus?
- 28:32Ja also du kannst natürlich, du kannst dich natürlich hinstellen
- 28:35und sagen, gut ich also du ich find das ist ja.
- 28:39Da spielen ja 2 Sachen ineinander, finde ich, weil auf
- 28:43der einen Seite hast du die Anforderungen, die vielleicht
- 28:46nicht gut gestellt wurden, ne oder beziehungsweise vielleicht
- 28:49auch im Vorfeld nicht gut überlegt worden, weil ne man
- 28:51könnte sich auch hinstellen und sagen naja pass auf.
- 28:55Lass uns mal ein Bild und ein Video machen, weil wenn du
- 28:58gerade vielleicht dabei bist und das fertig.
- 28:59Gerade in dem Moment fertig hast und dich dafür entschieden hast
- 29:02und eine Rückfrage gestellt hast, soll es wirklich nur ein
- 29:04Bild sein? Ja, es soll nur ein Bild sein
- 29:05und du gehst davon aus, dann musst du ja vielleicht nicht
- 29:09deine Software dafür auslegen, dass du auch ein Video speichern
- 29:12kannst. Ist ja nicht notwendig und wenn
- 29:15du wirklich mit Sicherheit weißt vom Stakeholder, das muss nur
- 29:18ein Bild sein, alles gut, dann kannst du dich genau darauf auch
- 29:20einigermaßen anpassen, vielleicht auch
- 29:22speicheroptimierung, was auch immer, aber wenn du jetzt und
- 29:26wenn wenn du dann sagst, ist es wirklich so.
- 29:28Ja es ist wirklich nur ein Bild, dann machst du das.
- 29:32Das Feature ist fertig und dann kommt weißt du was eigentlich
- 29:35doch ein Video, das ist halt blöd, weil dann drehst du wieder
- 29:38diese Runde musste es noch mal umändern und.
- 29:40Längst halt Zeit, weil wenn du das im Vorfeld gewusst hättest,
- 29:44so, ich mein jetzt ist es n Unterschied, wenn jetzt nach n
- 29:46Jahr später jemand kommt und sagt Ey der Markt gibt es her,
- 29:50wir müssen das ändern, es ist unglaublich wichtig jetzt n
- 29:52Video als profilbild auch zu haben ist das find ich auch ne
- 29:55andere Geschichte ne? So ja ist n wichtiger Punkt.
- 30:01Ich würd mal noch mal an unserem Haus weiterbauen, damit man sich
- 30:04das besser vorstellen kann. Das ist ja genau so, als wenn du
- 30:09sagst, OK, ja gut, ich spezifizier jetzt weiter meine
- 30:11Anforderungen und übrigens ich würde gerne ich möchte gerne
- 30:16heizen in den Räumen. Und du sagst du ja okay kann die
- 30:21Heizkörper an die Wand machen können Fußbodenheizung machen
- 30:25was du möchtest. Ja du ich glaube so Heizkörper
- 30:29ist cool. Ich brauche keine
- 30:32Fußbodenheizung. Gut, dann wird das Haus gebaut,
- 30:36so bodenestrich wird alles gegossen, fertig, Bodenbelag
- 30:40drauf, was auch immer, ist nicht spezifiziert.
- 30:44Und dann sagt der Kunde auf einmal.
- 30:48Aber weißt du, so eine Fußbodenheizung ist doch
- 30:51ziemlich geil. Komm, das machen wir noch.
- 30:54Und dann fängst du an zu schwitzen und denkst dir so ja
- 30:58okay. Aber wir haben doch jetzt schon,
- 31:00der Boden ist fertig, ich muss das jetzt alles wieder
- 31:03rausreißen, um da diese Matten oder was auch immer zu verlegen.
- 31:08Why fällt dir das jetzt erst ein?
- 31:10Das ist n riesen Umbau, ich glaub der Mitarbeiter kommt da
- 31:13reinzuschwitzen. Der wirft sein Leis Werkzeug in
- 31:16die Ecke und das nie wieder gesehen.
- 31:19Ich bin raus, baust doch selbst. Nee, aber um das mal quasi so in
- 31:23den in alltägliches Beispiel zu kippen.
- 31:28Das für Schweiß und Arbeit bedeuten könnte.
- 31:30Dann und vor allem auch finanziell, das ist ja auch
- 31:33immer in so Projekten ein riesen Punkt, weil Zeit ist Geld und
- 31:37wenn du da lange brauchst, um das geben wir jetzt mal nicht
- 31:39von den Materialien aus, jetzt wie beim Handwerk, aber in der
- 31:43Softwareentwicklung was das an Geld kostet das denn alles
- 31:46wieder umzubauen, nur weil am Anfang sich die Anforderungen
- 31:49nicht genau überlegt wohnen und du siehst ich mag dein
- 31:53Hausbeispiel, da kann man gut dran erklären, das ist ja aber
- 31:56auch genauso. Auch noch mal das Hausbeispiel,
- 31:59das ist nämlich gar nicht so so so unrealistisch.
- 32:02Ich habe sehr oft überlegt, dass ein Projekt gestartet wurde, es
- 32:06gab ein Big Picture, das heißt, es gab eine Vision, was das Tool
- 32:11oder die Softwarelösung am Ende können soll.
- 32:15Das wurde sozusagen gepitcht. Ja.
- 32:18Und los. Und du denkst dir so.
- 32:22Und los. Dann werde ich jetzt anfangen,
- 32:25das zu implementieren. Ja, ja, fang an los, ja habt ihr
- 32:29irgendwie gibt es irgendwelche Anforderungen daran, was ich
- 32:32berücksichtigen soll? Na ja, das was es können soll.
- 32:35Aber so richtige Anforderungen haben wir noch nicht.
- 32:38Und dann kommt das, was immer sehr gefährlich ist.
- 32:41Die werden aber noch kommen, ja, wir haben sie jetzt noch nicht
- 32:44aus Zeitgründen, aber wir werden die Anforderungen nachreichen
- 32:46und mach erstmal ohne Anforderung implementier doch
- 32:49erstmal ohne Antwort, du weißt ja wo es hingeht soll und ich
- 32:52schwöre dir in vielen Projekten in denen ich gearbeitet habe,
- 32:56war das der Fall und auf Twitch hatten wir da auch mal eine
- 32:59Diskussion und ich fand es so krass, dass es anderen
- 33:01Entwicklern genauso geht, dass sie sagen, welche Anforderungen
- 33:05kann es froh sein, wenn du überhaupt Anforderungen hast.
- 33:07Ich meine, dann braucht man sich doch auch nicht wundern.
- 33:11Dass es so oft an den potenziellen späteren
- 33:14Anforderungen daran vorbei geht, ja, das ist doch, das ist ja
- 33:17eigentlich, das ist doch so logisch, und da haben wir wieder
- 33:20Theorie und Praxis, es ist so logisch in der Theorie, dass das
- 33:23nicht gut gehen kann. In der Praxis wird es doch oft
- 33:26so gelebt, ja genau, also dass das Ding ist, man will sich ja
- 33:31nicht hinstellen und sagen, also mein Klemmer an der ganzen
- 33:34Geschichte. Ist das oftmals von
- 33:36Anforderungen. Seite jetzt aus meiner
- 33:38Entwicklersicht eine Anforderung kommt und gesagt wird, mach das
- 33:43mal so, dann hast du vielleicht zu wenig Informationen.
- 33:47Du fragst vielleicht noch nach, es dauert, es ist alles nicht
- 33:51klar, du entwickelst vielleicht, dann war es das doch nicht so,
- 33:53wie wie es gedacht worden ist, weil die Anforderungen falsch
- 33:57gestellt worden sind. Mal als Beispiel kann ja auch
- 33:59passieren, jemand sagt Anforderungen so und so und
- 34:02merkt dann. Mal.
- 34:05So wollte ich das ja gar nicht. Ist ja irgendwie blöd gelaufen
- 34:07so, aber wenn du dann an diesem Punkt kommst, wo du dann sagst
- 34:10okay, jetzt habe ich es aber irgendwann fertig, dann kommt
- 34:12von sag ich mal vom von Stakeholder sich kommt dann um,
- 34:16dort ist alles so lange so und dann denke ich mir so es ist
- 34:18halt ich lehne mich jetzt mal aus dem Fenster, das ist eine
- 34:22Frechheit weil man schiebt die Schuld von sich weg und sagt
- 34:26Pass mal auf Leute ja was dauert bei euch so lange aber ich
- 34:30möchte gerne ein großes Haus aber was dauert das so lange so
- 34:34und das ist halt das das sowas nervt mich persönlich halt
- 34:38einfach. Weil es ist ja wichtig, dass man
- 34:40halt einfach also ne, wenn die eine Seite das Beste geben soll,
- 34:44dann sollte die andere Seite genauso das Beste geben und dann
- 34:46kann da was draus werden. Es ist ja auch nicht so als
- 34:48würde man ne. Es kann natürlich auch durchaus
- 34:50sein, dass die Anforderungen perfekt gestellt werden.
- 34:53Das softwareentwickelnde Team aber sich denkt, wir bauen jetzt
- 34:57unsere Software so blöd, dass sie überhaupt nicht gut
- 34:59erweiterbar ist, nicht gut wartbar ist.
- 35:01Man kann mit dieser Software eigentlich überhaupt nichts mehr
- 35:03machen. So, wenn also changes
- 35:05reinkommen, ne. Und das ist natürlich auch blöd,
- 35:08ne, weil es ist, es ist ja, es ist ja wichtig, dass man sagt,
- 35:12OK, es ist n Unterschied zwischen fehlende Anforderungen
- 35:15oder Du hast Anforderungen die sich im Verlaufe des Projektes
- 35:19ändern. Ne das ist das ist das ist n.
- 35:22Feiner, aber feiner Unterschied, der unglaublich wichtig ist,
- 35:24weil wenn wir in einem agilen Softwareentwicklungsumfeld
- 35:27unterwegs sind, können sich die Anforderungen ändern.
- 35:30Das ist gar kein Problem, sag ich jetzt mal.
- 35:32Ne, also es kann durchaus sein, dass dass sich, dass sich Sachen
- 35:35verändern, aber nicht während einer Feature Entwicklung, also
- 35:40oder nicht um 180 Grad, das ist halt ein kleiner Unterschied und
- 35:44das ist halt ein absoluter Struggle, weil du kannst dich
- 35:46natürlich auf der anderen Seite hinstellen und sagen Wir sind
- 35:49hier im agilen Softwareumfeld alles cool, ich kann machen was
- 35:51ich will, ich kann meine Anforderungen ändern.
- 35:53Wir reagieren doch ganz agil und schnell darauf.
- 35:59Ja, das ist. Weißt du was?
- 36:00Ich weiß halt auch schwierig, also ich, ich weiß absolut was
- 36:03meins ist. Das Thema dabei ist, wir sehen
- 36:07das natürlich viel aus Entwicklersicht, weil wir ja
- 36:09auch Entwickler sind. Ich möchte da nur anmerken, es
- 36:14ist aber auch nicht einfach. Ich denke, das hat man auch
- 36:17jetzt hier in der Folge schon herausgehört, vernünftige
- 36:20Anforderungen zu definieren oder ein Feature Wunsch so klar zu
- 36:24definieren, wie man es gerne hätte, weil man halt vieles
- 36:27berücksichtigt. Man muss auf fairerweise sagen,
- 36:31und das ist auch dann nicht mehr die Aufgabe des Stakeholder, sag
- 36:35ich mal. Dass man ja auch nicht weiß, was
- 36:38das für die Software alles bedeutet.
- 36:40Also ich, ich definiere ja auf oberster Ebene quasi ein eine
- 36:45Funktionalität beispielsweise, die ich gerne noch on top hätte
- 36:48in der Software. Ja.
- 36:49So bin aber ja nicht derjenige, der unter der Haube weiß, wie
- 36:54das alles entwickelt wurde und was daraus resultieren könnte.
- 36:59Also es ist ja schwierig, quasi den Einblick zu haben, geht das
- 37:03überhaupt so richtig, so einfach wie ich das hätte, wie ich das
- 37:06mir wünsche oder oder was bedeutet das, das ist ja auch
- 37:09nicht mal die Anforderung, weil du entwickelst das ja auch
- 37:12nicht, das Tool. Spezifisch zu sagen, welches
- 37:16Verhalten soll denn wann wie eintreten oder wie soll sich das
- 37:20Feature verhalten, das liegt ja schon in deiner Verantwortung
- 37:24und da muss ich sagen, wenn ich zum Beispiel so eine Anforderung
- 37:27definiere, fällt mir das auch schwer, das immer sehr präzise
- 37:30zu machen, weil du halt vielleicht Sachen voraussetzt,
- 37:33die gar nicht gegeben sind, oder oder.
- 37:36Einfach, dass man einfach Cases vergisst, wie du ja meintest.
- 37:39Zu einer bekannten Edge Cases, die einfach sehr selten
- 37:41auftreten, aber auftreten können und dann nicht klar ist oder
- 37:45undefiniert ist, wie das Verhalten sein soll.
- 37:47Und da muss ich sagen, es ist halt für beide Seiten schwer.
- 37:51Und das spricht wiederum dafür, dass es eine sehr gute
- 37:54Kommunikationsschnittstelle da geben muss in meinen Augen.
- 37:57Definitiv. Also stimm ich dir total zu.
- 38:01Ich kann auch noch mal. Mir fällt gerade ein kleines
- 38:03Beispiel ein, also ich hab auch mal an einem Projekt gearbeitet.
- 38:08Wo? Es gab eine Phase, wo
- 38:10Anforderungen, also sagen wir mal User Stories gestellt worden
- 38:13von den Stakeholdern an unser Entwicklerteam.
- 38:17Und wir haben dann diese Stories besprochen, also überlegt ok,
- 38:22bevor man sie richtig bearbeiten kann, werden diese Stories
- 38:24einmal besprochen. Team und das wurde dann quasi
- 38:29von unserem PM gepitcht. Er hat uns dann das vorgestellt,
- 38:32weil er in meinem Austausch mit den Stakeholdern war und hat uns
- 38:36dann gesagt Okay Pass auf das und das wird gewünscht so und
- 38:38dann haben wir im Team diese Aufgaben besprochen und dann
- 38:41hatten wir eine Phase, wo es sehr oft dazu kam, dass wir uns
- 38:44dann überlegt haben, ja, aber was ist denn im Fall XY, das ist
- 38:48ja hier überhaupt nicht definiert, ist aber unglaublich
- 38:50essenziell für die Software. Weil wir sonst unter Umständen
- 38:54für irgendwelche Einheiten, die wir sozusagen gehalten haben in
- 38:58unserer Software undefinierte Zustände hätten.
- 39:01Und das durfte halt einfach nicht passieren.
- 39:04Demzufolge waren das sozusagen waren die Anforderungen nicht
- 39:08klargestellt, was an dieser Stelle überhaupt nicht schlimm
- 39:10ist. Wie du auch meintest, weil wir
- 39:11haben das geklärt in diesem Termin, sozusagen im Team, haben
- 39:15die Fragen noch mal definiert, und dann ist es noch mal
- 39:17sozusagen zurückgegangen so, und in dem Fall hast du ja nicht das
- 39:21Problem, dass du schon anfängst zu implementieren und dann aber
- 39:25irgendwann merkst, oh mein Gott, hier ist gerade eine totale
- 39:27Sackgasse, das geht gar nicht, das heißt, wenn die
- 39:29Kommunikation stimmt, ist alles in Ordnung.
- 39:31Nur wenn wir an den Punkt kommen, dass wir dann wirklich
- 39:33schon anfangen, eventuell merken, warte mal, hier stimmt
- 39:36irgendwas nicht und das hatte ich auch schon in dem gleichen
- 39:38Projekt. Du fängst an, du implementierst
- 39:41etwas, kommst selber erst an diesem Punkt, dass du dir
- 39:44denkst, Moment, was passiert in diesem Fall durchaus möglich und
- 39:49dann ging das noch mal zurück und dann wurde.
- 39:53Aber ganz andere. Also dann haben sich die
- 39:54Anforderungen wirklich sehr, sehr gedreht, weil die sich
- 39:56selber dann gedacht haben, oh hey Mist, was ist das denn, das
- 40:00können wir so wirklich nicht machen und dann hast du halt.
- 40:03Wirklich. Und dann kommt halt die Unruhe
- 40:04rein. Ne, dann bist du wieder in den
- 40:06Teufelskreis. Und dann hast du aber wirklich
- 40:07ne Menge Zeit auch versenkt. In dem Fall war es dann wirklich
- 40:10so, dass die Anforderungen noch mal durchgegangen sind, nochmal
- 40:13wirklich überlegt wurden und dann nochmal in unser Team kam.
- 40:17Wir haben das dann im Endeffekt bearbeitet, aber der Punkt an
- 40:20dieser Stelle ist, dass diese Entwicklungszeit, die wir vorher
- 40:23genutzt haben, halt wirklich waste war.
- 40:26Und wir hatten in dem Moment nicht großartigen Zeitdruck.
- 40:29Es war soweit okay, aber wenn du jetzt dir noch vorstellst, dass
- 40:32Zeitdruck hinzukommt und ich vermute mal, dass einige, die
- 40:35auch zuhören, Liebe zuhören, lieber zuhören.
- 40:39Sicherlich auch mal in Projekten arbeiten oder gearbeitet haben,
- 40:42wo Zeitdruck da ist, weil dann wird es nämlich, dann wird es
- 40:45nämlich wild. So einer Stelle.
- 40:51Ja, das n ganz guter Punkt auch, weswegen in der agilen Welt ja
- 40:58es Termine dafür gibt, sogenannte Refinements, um
- 41:02einfach denn noch mal sich diese Requests oder Feature wünsche
- 41:06sich anzuschauen, drüber zu sprechen um wirklich ein
- 41:10gemeinsames Verständnis davon zu schaffen und sich dann darauf
- 41:14festlegen zu können wie es sein soll und wie ihr dann in dem
- 41:18Termin gemerkt habt oder beziehungsweise beide Seiten
- 41:21dann gemerkt haben, sowohl der Stakeholder mit seinem Wunsch.
- 41:25Der gemerkt hat, oh Moment, ich habe es mir nicht final überlegt
- 41:28und ihr euch schon mal Gedanken machen konntet und gemerkt habe
- 41:32ja, aber Moment für unsere Software, ich meine das kannst
- 41:35du nicht wissen von außen, aber es ist für uns wirklich wichtig
- 41:37zu wissen was in dem und dem Fall passieren soll und dafür
- 41:41ist so ein Termin ja super, dass das Ganze dann noch mal
- 41:43durchgesprochen werden kann um halt nicht diese Zeit zu
- 41:47verbrennen am Ende. Ja.
- 41:50Das ist halt ein sehr essentieller Punkt und wichtig
- 41:53und deswegen auch bei so agilen Frameworks berücksichtigt.
- 41:56Genau. Also.
- 42:02Hast du noch was, was dir gerade spontan einfällt?
- 42:04Ansonsten würde ich dich einfach mal fragen.
- 42:07Nein, also ich denke ich denke das Ding ist es.
- 42:11Ist ein Thema, da kannst du sehr lange drüber reden und wir haben
- 42:13ja auch wie gesagt so in Twitch Sessions schon mit unseren.
- 42:18Mit unserer Community drüber gesprochen und da uns
- 42:21ausgetauscht, weil es, was ich erstaunlich finde, aber auch
- 42:25nicht verwunderlich ist, dass es bei vielen zu Problemen dabei
- 42:28kommt. Es nie so quasi so eine heile
- 42:33Welt gibt von. Also ich kriege mal
- 42:35Anforderungen, die sind so super, ich kann das einfach
- 42:37direkt runter coden, alle sind glücklich, alle sind zufrieden,
- 42:41so läuft es halt in den wenigsten Fällen, weil es halt
- 42:43einfach auch ein schwieriges Thema ist, viel mit
- 42:45Kommunikation zu tun hat und ja man sich, ich glaube was da
- 42:50hilft ist sich immer ein bisschen in die Lage des anderen
- 42:52zu versetzen, das heißt beim Entwickeln sich nicht denken, Oh
- 42:56jetzt ist das schon wieder so Scheiße spezifiziert, ich weiß
- 42:58schon nicht was ich tun soll hier, sondern sich auch mal
- 43:01überlegen, ja gut, hätte ich denn daran gedacht?
- 43:03Von der anderen Seite ja, und genauso als Anforderer, also als
- 43:08Stakeholder zu sagen, ja warte mal, könnte ich jetzt ganz
- 43:12objektiv, wenn ich dieses Ticket zum Beispiel lese oder diese
- 43:15Anforderung, könnte ich das entwickeln, was ich da
- 43:18aufgeschrieben hab, und wenn da die Antwort nein ist, weiß man
- 43:21ja schon, ja gut, da muss ich da wohl auch noch mal ran.
- 43:25Genauso ist es und dabei würde ich es.
- 43:27Genau, warte ganz kurz. Genauso ist es auch wichtig,
- 43:30dass die Anforderungen, die gestellt werden, auch nicht in
- 43:33ewig langen Texten runtergeschrieben werden, zum
- 43:36Beispiel. Also das ist jetzt noch mal eine
- 43:38persönliche Erfahrung, die ich gehabt habe, die ich gemacht
- 43:41habe, das ist auch wichtig, du meintest ja, es muss
- 43:44verständlich sein und es muss irgendwie klar sein, was gewollt
- 43:47ist für jeden, auch objektiv im optimalen Fall, es ist aber auch
- 43:51wichtig, dass es auch nachvollziehbar ist.
- 43:54Und wenn es ein riesen Text ist, wo man erst mal Ewigkeiten
- 43:57durchlesen muss, was gemeint ist und es nicht sozusagen in
- 44:00ordentlichen Punkten aufgelistet ist, sage ich jetzt mal, blöd
- 44:03gesagt einfach, dass man sich vorstellen kann.
- 44:06Dann ist es halt eben schwierig. Und was ich auch sagen könnte
- 44:09ist, dass man zum Beispiel die entsprechenden Anforderungen,
- 44:12wenn sie denn auch klar aufgeschrieben worden, in
- 44:14welcher Art und Weise, dass sie auch, dass man aus externer
- 44:18Sicht die Möglichkeit hat, das zu prüfen.
- 44:21Mir diese Anforderungen, so wie sie gestellt ist, wirklich in
- 44:24meiner Software am Ende, das ist auch wichtig und den Punkt, den
- 44:28wir am ersten. Mal das ganze evaluieren.
- 44:30Kann genau also wenn ich jetzt zum Beispiel Softwareentwickler
- 44:32bin und ich kriege eine Anforderung, dass ich dann ich
- 44:34implementiere das und sage zum Beispiel keine Ahnung, wenn ich.
- 44:39Weiß ich nicht. Angenommen ich, ich leg mir n
- 44:41user Profil an, dann möcht ich danach, dass ich sozusagen ne
- 44:44grüne Bestätigung habe, mein Userprofil wirklich da ist.
- 44:47Ne, das heißt rein theoretisch könntest du jetzt als
- 44:49Softwareentwickler sagen, OK, wenn ich das jetzt mache in der
- 44:51Oberfläche die ich geschrieben hab.
- 44:53Dann sehe ich hinterher eine grüne success Nachricht und kann
- 44:57vielleicht auch in meiner also Datenbank, die lokal einfach für
- 45:01mich in der Entwicklung läuft, nachgucken ob wirklich der User
- 45:03entstanden ist oder nicht nur mal als als Beispiel ne das sind
- 45:07wichtige Sachen die wo man einfach selbst für sich
- 45:09überprüfen kann funktioniert das auch und was auf jeden Fall, das
- 45:14möchte ich noch mal sagen, weil das ist mir sehr wichtig.
- 45:18Anforderungen in kleinen Paketen stellen hilft ungemein.
- 45:25Ja, also da gibt es ja wie gesagt was du meintest so kurz
- 45:29fassend, so, da gibt es ja auch verschiedene Formate, wie man
- 45:33Anforderungen stellen kann oder aufschreiben kann, weil du ja
- 45:36vorhin schon das Wort userstory fallen lassen hast.
- 45:40Es gibt Akzeptanzkriterien werden oft verwendet, um zum
- 45:43Beispiel das auch Testbar zu machen, zu sagen, OK, was muss
- 45:46denn erfüllt sein, damit die Anforderungen im im Ganzen
- 45:50erfüllt ist. Da gibt es ja verschiedene
- 45:52Möglichkeiten und Tools, die dabei helfen, das ganze Halt zu
- 45:55optimieren und trotzdem gibt es immer noch Probleme dabei.
- 45:59Deswegen, liebe Zuhörer, lieber Zuhörer, falls sich das Thema
- 46:02interessiert, wie kann man denn Anforderungen gut aufschreiben?
- 46:05Was sind akzeptanzkriterien, was gibt es da noch so, dann melde
- 46:10dich gerne bei uns, dann können wir auch gerne da noch weitere
- 46:13Infos bereitstellen oder vielleicht noch eine weitere
- 46:15Podcast Folge zu dem Thema machen, ansonsten würde uns
- 46:18brennend interessieren, wie deine Erfahrungen, falls du da
- 46:21welche gesammelt hast sind. Was hattest du so für
- 46:24Erlebnisse, vielleicht auch witzige Fälle in Kombination mit
- 46:28Anforderungen und. Dass beispielsweise komplett
- 46:31dran vorbei implementiert wurde, wie wir das erwähnt hatten,
- 46:35schreibt uns gerne, zum Beispiel auf der Podcast Mail oder auf
- 46:38den anderen Plattformen. Die Links sind wie immer in den
- 46:40Shownotes. Dort findest du alle und
- 46:43ansonsten würde es uns natürlich auch freuen, wenn du unseren
- 46:46Podcast weiterempfehst. Falls er dir gefallen hat, so an
- 46:48mindestens 23 Freunde, das wäre super, um die Anforderungen mal
- 46:51konkret zu machen, wo jetzt war das Wort mindestens drin.
- 46:56Und ansonsten würde ich sagen, haben wir uns alle beim nächsten
- 46:59Mal wieder. N schönen Tag noch und bis dahin
- 47:04deine Coding Buddies gemeinsam. Besser.