Drodzy współpracownicy programistów,
w jaki sposób „planuje się oprogramowanie”, gdy w grę wchodzą badania akademickie? I na marginesie, jak przekonać szefa, że pisanie oprogramowania nie jest jak budowanie domu, a bardziej jak pisanie powieści ?
Krwawe szczegóły są poniżej.
Kieruję małym zespołem programistów pracującym w laboratorium badawczym. Zaczęliśmy opracowywać oprogramowanie w celu upublicznienia jednego dnia (tj. Sprzedaży i zarabiania na tym). Takie oprogramowanie zależy, między innymi, od co najmniej dwóch niezależnych linii badawczych: to znaczy są co najmniej dwie doktoraty. kandydaci, którzy, miejmy nadzieję, pewnego dnia wyjdą z działającą realizacją tego, czego potrzebujemy.
Główne oprogramowanie zależy również od innych, bardziej konkretnych zasobów, którymi my jako programiści możemy się zająć: renderowania grafiki, deformacji miękkich ciał itp.
Mój szef poprosił mnie o napisanie specyfikacji, wymagań ORAZ cholernej tabeli GANTT całego projektu. W obliczu faktu, że nie mam pojęcia o części badawczej i że takie badania mają fundamentalne znaczenie dla oprogramowania, powiedział „poczynić założenia”. Dla jasności argumentu jest profesorem, którego doktorat studenci powinni wymyślić potrzebne nam badania. I wywodzi się ze ściśle inżynierskiego doświadczenia: najpierw wszystko zaplanuj, zapisz specyfikacje, a dopiero potem napisz kod, że „to ostatnia część”.
Co teraz robię:
- Zepsułem produkt pod względem funkcji; każda „cecha” jest de facto odrębnym produktem;
- Każda funkcja jest zbudowana na poprzedniej;
- Gdy funkcja (A) ma już działający prototyp, zespół może rozpocząć pracę nad kolejną funkcją (B), podczas gdy kontrola jakości dla A jest wykonywana (jeśli pozwalają na to pieniądze, można sprowadzić więcej osób itp.);
- Funkcje zależne od badań będą dostępne na koniec: do tego czasu, mam nadzieję, część badawcza zostanie zakończona ( kiedy wciąż jest duże pytanie);
Ustawiłem też zespół, aby używał SCRUM do opracowania „wersji 1.0 ”, która pojawi się za kilka miesięcy. Termin ten można ustalić na podstawie uzasadnionych założeń: wymieniliśmy wszystkie wymagane funkcje, policzyliśmy naszą dostępność i podaliśmy rozsądną ocenę.
Zatem moje pytania to:
- Jak sprawić, by mój szef był szczęśliwy, a jednocześnie wyciągnąć coś za drzwi?
- Jak napisać specyfikację czegoś, co my - programiści - nie mamy pojęcia, czy jest to możliwe, czy nie? (Nadal nie zdecydowaliśmy, których bibliotek użyć do niektórych zadań; zrobimy to, kiedy będziemy musieli)
- Jak uzyskać odpowiednie wymagania , biorąc pod uwagę, że nie ma jeszcze klientów ani inwestorów, a jedynie mnóstwo zainteresowań i obietnic?
- Jak uzyskać pokój na świecie?
Jestem pewien, że przynajmniej jedno z moich pytań zostanie udzielone :)
ps: Piszę to anonimowo, ponieważ potencjalny inwestor może się obrócić, jeśli zostanie to odkryte. Mam nadzieję, że zrozumiesz. Muszę jednak powiedzieć, że nie podoba mi się ta mentalność „ukrywania prawdy”: ten program prawdopodobnie przyniesie korzyści wielu osobom, a brak możliwości otwartego mówienia o tym (z moim imieniem i reputacją) jest cenzurą. Ale, niestety, bardziej zależy mi na twoich sugestiach.