Planowanie rozwoju w przypadku badań akademickich

11

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ę:

  1. Zepsułem produkt pod względem funkcji; każda „cecha” jest de facto odrębnym produktem;
  2. Każda funkcja jest zbudowana na poprzedniej;
  3. 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.);
  4. 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.

Kolejny anonimowy użytkownik
źródło
Mówiąc jako były doktorant, który przez lata pracował nad czymś, co przypominało czarną otchłań stagnacji i zapomnienia, byłbym bardzo podekscytowany (i przerażony), wiedząc, że specjaliści stoją, czekając, aby zrobić coś przydatnego w mojej pracy. Byłoby to niezwykle motywujące. Widzę, że to pytanie zostało zadane prawie rok temu, ale jeśli sytuacja pozostanie taka sama, byłbym zainteresowany, aby dowiedzieć się, ile masz kontaktów ze studentami. Pomocne może być poinformowanie ich, że ich rootujesz!
octern

Odpowiedzi:

6

Byłem w tej pozycji kilka razy i mając doświadczenie, nie możesz liczyć na doktoranta, aby dostarczył badania, które są istotne, a na pewno nie możesz polegać na tym, że dzieje się to w przydatnej skali czasowej. Doktoranci mają pozwolenie pójść tam, gdzie zabierają ich zainteresowania badawcze, i może być bardzo trudne być na dole, gdy nagle odskakują na bocznej ścieżce, która jest odpowiednia dla nich, ale nie dla ciebie. Jest to główne źródło ryzyka dla twojego projektu, dlatego musisz zastosować odpowiednie strategie ograniczania ryzyka w swoim planie projektu.

Biorąc to pod uwagę, ustal, kiedy musisz zrealizować (patrz dotacja na badania; zależy to od twojego finansowania, a nie czegokolwiek innego) i ile czasu zajmie dostarczenie, zakładając, że badanie zostało dostarczone . Będzie to wymagało wszechmocnych domysłów, ale nic na to nie można poradzić; by te domysły jednoznaczne w ocenie czasu . Później, zarządzaj ryzykiem, pozostając w dość bliskim kontakcie z doktorantami (np. Siedząc na sesjach instruktażowych raz w miesiącu), aby jeśli wygląda na to, że nie dostaną tego, czego potrzebujesz na czas, możesz pomyśl szczegółowo o strategiach łagodzenia. Jeśli masz szczęście, hazard się opłaci, a z badań otrzymasz coś pożytecznego. Dziwniejsze rzeczy się wydarzyły.

Wszystko inne będzie wynikało z wiedzy o tym, kim będą Twoi klienci i zastanowienia się, w jaki sposób chcesz, aby korzystali z ostatecznego produktu (i w jaki sposób będą z niego korzystać). Jeśli tego nie wiesz, nikomu nie sprzedasz. Ale powinieneś to wiedzieć, a przynajmniej dowiedzieć się wkrótce. (Jeśli zależy to od części badawczej, masz poważne kłopoty! Projekty badawcze z pewnością mogą przynieść negatywne - lub częściowo negatywne - wyniki; dzieje się tak cały czas, nawet jeśli nie zawsze są tak szeroko zgłaszane).

Na koniec uważam, że strasznie szkoda, że ​​robisz to anonimowo, ponieważ wszystko, co robisz, to szukanie porady na temat konkretnego rodzaju zarządzania projektem. Nie wspominasz o tym, jaki jest przedmiot badania, kto go podejmuje lub kim jest którykolwiek z twoich współpracowników, ani nie miałoby to znaczenia dla tego pytania. Jedynym sposobem, w jaki może to być problem, jest szukanie finansowania spoza sektora B + R przed dostarczeniem badań, ale wymagałoby to ujawnienia poziomu ryzyka (prawdopodobnie zmniejszającego inwestycję!) Lub jest wysoce nieuczciwe; skoro planujesz być szczery, nie powinno się to pojawiać, ponieważ projekt powinien szukać takiego finansowania tylko wtedy, gdy ryzyko jest bardziej pewne. (Jeśli - jako grupa - jesteś nieuczciwy wobec potencjalnych inwestorów, jest to problem w tym momencie i zakończy się łzami. Lub procesami sądowymi.)

Donal Fellows
źródło
Donal, dzięki za odpowiedź. Podnosisz kilka dobrych punktów; zwłaszcza w zakresie zarządzania ryzykiem. Tak, w przypadku badań mają znaleźć negatywne wyniki: w ten sposób przeprowadzane są badania! Jeśli już wiesz, co dostaniesz, to nie są badania, to reklama. O potrzebie zachowania anonimowości: to dlatego, że z mojego konta stackexchange możesz zobaczyć na moim profilu kariery, kim jestem i gdzie pracuję. Może to zagrozić przyszłej pensji mojego zespołu (tak, staramy się uzyskać finansowanie inne niż na badania i rozwój). Gdybym to był tylko ja, byłbym szczery. Ale to nie moje pieniądze, że teraz je płaci, więc muszę być ostrożny.
Kolejny anonimowy użytkownik
1
Doskonała odpowiedź. Nawet w programach komercyjnych, które zrobiłem, nie ma niewiadomych, w których trzeba zgadywać w specyfikacjach i harmonogramach. Dopóki wszyscy wiedzą, że są to domysły i mogą ulec zmianie, jest w porządku. Jedną rzeczą, którą możesz zrobić z przedmiotami badań jest to, że dla każdej liczby, którą musisz podać (daty, pieniądze itp.), Zgadnij i podaj dobry przypadek (10% szansy, że pójdzie tak dobrze), oczekiwany (50%) oraz wartości „case case” (90%). Ponadto, w celu złagodzenia niewiadomych, spróbuj mieć „Plan B” (a najlepiej plan C i D) w swojej wirtualnej tylnej kieszeni.
Bob Murphy
Problem polega na tym, że w zależności od badań istnieje duża szansa, że ​​skończysz z „zdecydowanie negatywną” odpowiedzią: że to, czego chcesz dla produktu, nie wymaga tylko czegoś nieznanego, ale czegoś, czego nie można stworzyć. Albo że badanie nigdy nie dostarcza niczego istotnego (realne ryzyko z doktoratami). Chodzi o to, aby uzyskać dużą inwestycję, po tym, jak masz mały dowód koncepcji, abyś wiedział, że przynajmniej można to zrobić, a wszystko, co musisz zrobić, to dowiedzieć się, jak sprawić, by była użyteczna i dostępna na rynku.
Donal Fellows
2

Jak sprawić, by mój szef był szczęśliwy, a jednocześnie wyciągnąć coś za drzwi?

Bądź mądry i załatw sprawę.

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)

Jeśli nie wiesz, z czym będziesz się komunikować, to jest problem. Jakie dane dajesz magicznemu pudełku? Jakie wyniki otrzymujesz z magicznego pudełka? Pomoże to również naukowcom zdefiniować, czym jest magia.

Jeśli twój naukowiec został sfinansowany z grantu, prawdopodobnie napisał propozycję badań. Zdobądź to. Jeśli jest to jakakolwiek propozycja grantu badawczego, którą widziałem (i napisałem), będzie miała oś czasu i „specyfikację” tego, co próbują zrobić.

Jak uzyskać odpowiednie wymagania, biorąc pod uwagę, że nie ma jeszcze klientów ani inwestorów, a jedynie mnóstwo zainteresowań i obietnic?

Wymagania są tym, co użytkownicy końcowi algorytmu / rzecz-a-ma-jig. Sprawdź, czy możesz przeprowadzić z nimi wywiad (lub potencjalni klienci / klienci).

W przeciwnym razie jedz własną karmę dla psów.

Jak uzyskać pokój na świecie?

Poza tematem :-)

Peter K.
źródło
2

Myślę, że w planowaniu rozwoju badań rzeczy za jednym zamachem, a rozwój tgen naprawdę nie działa dobrze. Pracuję w instytucie badawczym i pracujemy więcej przy użyciu szybkiego prototypowania. Często opracowanie prototypu daje wgląd w to, co jest dokładnie potrzebne. Dzięki szybkiemu tworzeniu prototypu możesz uzyskać informacje zwrotne od swojego szefa i badaczy i ustalić, czy tego właśnie oczekują, a także sprawdzić, czy twoje podejście działa. Następnie możesz zmienić kod i ulepszyć kod. To właśnie widzę w praktyce w instytutach badawczych, w których pracowałem.

Paul Hiemstra
źródło