Skąd wiesz, kiedy przestać dodawać funkcje?

16

Jakiś czas temu napisałem bardzo mały skrypt Pythona, który okresowo sprawdzał kanał XML pod kątem nowych wpisów i ostrzegał użytkownika o nowych wpisach, gdy są obecne. Napisałem to dla siebie, więc był to w zasadzie program konsolowy, z którego mógł korzystać każdy, kto dobrze zna interfejs konsoli.

Po chwili zdecydowałem, że może być bardziej użyteczny dla innych ludzi i zacząłem go porządkować, dezynfekować dane wejściowe, usuwać błędy. Przyszło mi do głowy, że ponieważ napisałem skrypt, wiedziałem, jak go używać skutecznie, dokładnie itp. Inni mogą nie, więc zacząłem dodawać GUI. Początkowo było to proste menu, a następnie rozszerzone do pełniejszego GUI z zarówno menu interfejsu, jak i menu opcji. Następnie dodałem zapisane preferencje użytkownika oraz pamięć dla wcześniej przeszukiwanych kanałów XML, aby przyspieszyć powtarzanie wyszukiwania.

Dodałem rejestrowanie, aby pomóc w debugowaniu aplikacji na wypadek, gdyby coś poszło nie tak, zaktualizowałem aplikację do najnowszej dostępnej stabilnej bazy kodu Pythona dla mojej wybranej platformy i poprawiłem funkcje dialogu.

Naprawiłem błąd i wyraźnie skomentowałem mój kod, a jednak wciąż mam rzeczy, które moim zdaniem można zrobić, aby ulepszyć aplikację, zanim udostępnię ją testerom alfa. Jest to dalekie od mojego oryginalnego skryptu 20-30 linii. To, czego się spodziewałem, zajęłoby mi godzinę lub dwie, aby przejść od weryfikacji koncepcji do programu akceptowalnego użytkowania, zajęło to 10–20 razy. (Nadal jestem noobem, a rzeczy zajmują mi dużo czasu, ale nadal ....)

Skąd wiesz, kiedy przestać dodawać / poprawiać / naprawiać rzeczy i pozwolić dziecku czołgać się na otwartej przestrzeni?

strach
źródło

Odpowiedzi:

8

Kiedy dotrzesz do terminu.

Jeśli nie masz terminu, to jest twój problem ...

Oto jak pracuję:

  1. Dodam nowe funkcje / błędy w moim rejestrze produktów.
  2. Priorytet całego portfela produktów traktuję priorytetowo i oszacowuję (ostatni jest opcjonalny w przypadku osobistego projektu).
  3. Przydzielam sobie czas pracy. Data premiery to koniec tego czasu.
  4. Zaczynam od pierwszego na liście. Czasami pracuję nad funkcją. Aby zakończyć, funkcja musi być naprawdę kompletna, w tym dokumentacja (na końcu funkcji mogę potencjalnie wysłać produkt).
  5. Zajmuję następny, dopóki mój przydzielony czas nie zostanie wykorzystany.
  6. Jeśli czas jest zużywany podczas tworzenia funkcji, odrzucam ją tymczasowo.
  7. Kiedy przydzielony czas zostanie wykorzystany, biorę najnowszą wersję i robię z nią wydanie.
  8. Powtarzam proces od punktu 1.

źródło
Hmm, bardzo podoba mi się tutaj przepływ pracy. To projekt hobbystyczny, nie jestem pewien, czy spróbuję go zarabiać, jest bardziej prawdopodobne, że będzie oferowany za darmo lub zostanie otwarty.
fearoffours
4
Wartość nie oznacza pieniędzy w powyższym sugerowanym przepływie pracy. Ty decydujesz, jaka jest wartość.
OK, to jest niesamowite. Stosuję to, odkąd widziałem ten wpis wcześniej. Mój termin to środa 15.00 i wszystko idzie dobrze! Czuję się bardziej pewny, dokąd idą rzeczy i nad czym pracuję. Priorytetowo (w komentarzach na górze skryptu) rzeczy do zrobienia przed wydaniem oraz rzeczy, które można pozostawić na później. I zapisuję funkcję, nad którą obecnie pracuję, aby upewnić się, że skupiam się na zadaniu naraz. Dzięki!
terroroffours 18.10.10
3. I allocate work time to myself. The release date is the end of that time.@Pierre 303, Kiedy powiedziałeś, timeże masz na myśli godziny, np. Nocne wersje? czy czas jak pełny sprint?
Kenan D
@ LordCover: Na przykład przeznaczam 3 tygodnie (5 dni w tygodniu po 8 godzin dziennie) na pracę nad produktem. Wysyłam pod koniec 3 tygodni.
3

Utwórz SRS, a następnie koduj zgodnie z wymaganiami. Po osiągnięciu wszystkich celów wymienionych w SRS nadszedł czas, aby zatrzymać i przetestować swój produkt.

Chankey Pathak
źródło
Hm dobry punkt. W tej chwili nie mam nic spisanego na temat jego celu.
terroroffours 18.10.10
SRS są dobre, ale dla pojedynczego zespołu przy osobistym projekcie jest trochę przesada. Dokumentacja jest dobra, ale w przypadku tego typu projektów nie sądzę, aby cała SRS była jeszcze potrzebna.
Chris
@Chris - SRS jest zawsze dobrą rzeczą. To, co jest osobistym projektem, które dziś jest wydawane za darmo, to wciąż darmowy kawałek oprogramowania napisany przez dziesiątki osób. Świetny przykład tego, dlaczego dokumentacja jest ważna na Facebooku, łatwiej było napisać dokumentację na wczesnych etapach i zaktualizować tę dokumentację, to byłoby napisać ją dzisiaj. Jeśli nie możesz zapisać swojego projektu, wyjaśnij projekt i dokumentację, jak działa ta funkcja, to jak możesz ją kodować?
Ramhound
2

W krótkim okresie, gdy masz coś, co działa niezawodnie i nie ulega awarii. Nawet jeśli nie zrobi wszystkiego, co mógł zrobić, jeśli pracowałbyś nad nim w nieskończoność. Wysyłka jak to się mówi to funkcja . Niezawodność i ograniczony zestaw funkcji daje możliwość przetestowania podstawowej funkcjonalności przez prawdziwych ludzi w prawdziwym świecie, którzy znajdą rzeczy, o których nigdy nie pomyślałeś, które łamią Twój kod w sposób, który nigdy nie przyszedłby ci do głowy. Im mniej funkcji masz w tym momencie, tym łatwiej będzie naprawić te wczesne problemy. Ponieważ podstawowa funkcjonalność działa bardziej niezawodnie, możesz rozpocząć wdrażanie innych rzeczy „miło mieć” ze świadomością, że Twój najważniejszy i centralny kod nadal działa dobrze.

W dłuższej perspektywie: po zakończeniu i udokumentowaniu systemu wtyczek, który pozwoli użytkownikom (i oczywiście tobie) szybko i łatwo wdrożyć nowe funkcje, jeśli ich potrzebujesz. To powinna być ostatnia funkcja, którą musisz dodać - po tym wszystkie wtyczki.

glenatron
źródło
1

Gdy masz pewność co do stabilności oprogramowania, wybierz wersję, ale mogą być dostępne funkcje. Stabilność jest ważniejsza niż funkcje. Uzyskaj informacje zwrotne, uwzględnij istniejące funkcje i zdecyduj, co i kiedy ma zostać dostarczone!

Gopi
źródło
1

Zawsze możesz pielęgnować projekt na zawsze.

Bardzo dobrą zasadą jest to, że nigdy nie należy dodawać rzeczy, które nie są w zatwierdzonym przypadku użycia. To gwarantuje, że nie skończysz z wieloma rzeczami, które byłyby fajne, ale których nikt nie używa. Zatwierdzenie zapewnia, że ​​inni niż Ty zgadzają się, że jest to potrzebne w Twoim projekcie.


źródło
1

To zależy od tego, dlaczego dodajesz funkcje. Czy właściciele projektów o to proszą? użytkownicy? QA? Programiści?

  • Dodaj funkcje, które musisz.
  • Przeszukuj ważne funkcje.
  • Zignoruj ​​funkcje, które są miłe.

Skoncentruj się na celu programu i skoncentruj jego cel. Żądania nowych funkcji, które rozszerzają jego cel, powinny zostać dokładnie przesłuchane, zanim stanie się szwajcarskim scyzorykiem.

Huperniketes
źródło
Podoba mi się pomysł skoncentrowania produktu. Próbuję to zrobić i wciąż znajduję sposoby na zajęcie siebie!
terroroffours 18.10.10
2
@fearoffours, zawsze możesz znaleźć sposoby na ulepszenie własnej pracy. Chodzi o to, aby dowiedzieć się od użytkowników, jak sprawić, by działał dla nich lepiej. Rozwiązuj prawdziwe przeszkody. Gładkie, naprawdę szorstkie miejsca.
Huperniketes 18.10.10
fajna rada w tym komentarzu, (+1) dzięki!
terroroffours
0

Nie przestaję już dodawać funkcji. Po prostu próbuję pobrać aplikację jak najszybciej i w razie potrzeby zapisywać pliki TXT. Wtedy mogę zdecydować, kiedy przestać, a kiedy popracować nad czymś innym

Pomaga to również, że lubię robić co najmniej możliwe, aby coś zrobić (bez uciekania się do hakowania).


źródło
0

Sugeruję, żebyś to timeboxował. Daj sobie tydzień do powiedzenia. Utwórz listę prac do wykonania w ciągu tego tygodnia i upewnij się, że jeśli masz funkcję, której nie możesz wykonać, możesz ją wycofać.

Pod koniec tygodnia wypuść go. Zwolnij wcześniej, zwolnij często.

mlk
źródło
ale co zrobić, gdy niektóre funkcje są od siebie zależne?
Kenan D
0

Kiedy masz coś niezawodnego i przydatnego, zwolnij. Nie musisz przestać dodawać funkcji, ale jeśli ktoś korzysta z tego, co masz, uzyskasz o wiele lepszy pomysł na to, jakie funkcje są potrzebne. Obecnie zgadujesz.

David Thornley
źródło