Obejmuje to decyzje dotyczące architektury, wybory platformy lub wszelkie sytuacje, w których tak zły wybór miał negatywne konsekwencje.
Obejmuje to decyzje dotyczące architektury, wybory platformy lub wszelkie sytuacje, w których tak zły wybór miał negatywne konsekwencje.
Odpowiedzi:
Wiele lat temu byłem głównym programistą aplikacji zorientowanej na bazę danych, która zaczęła zgłaszać błędy. Wyśledziłem to, ponieważ w polu bazy danych były zduplikowane wartości, które nie powinny były na to pozwolić.
Rozmyślałam nad tym, że zapomniałam nałożyć wyjątkowe ograniczenie na bazę danych, kiedy wprowadziłam ją do produkcji, ponieważ było tak oczywiste, że to pole jej potrzebuje. Współpracowałem z jednym z moich programistów, który mnie poprawił ...
Inny programista : „Och, nie zapomniałeś, istniało wyjątkowe ograniczenie w tym polu. Właśnie go usunąłem”.
Ja : „Dlaczego to usunąłeś?”
Inny programista : „Zrobiłem to kilka tygodni temu. Otrzymywałem pliki danych od klienta i nie były one importowane, ponieważ unikalne ograniczenie blokowało nowe dane. Więc usunąłem ograniczenie, aby móc dokończyć importowanie”.
Ja: „Czy przestałeś myśleć, że może występował problem, jeśli otrzymywaliśmy nowe dane pokrywające się z istniejącymi danymi i zastanawiałeś się nad tym, by o nich wspomnieć przed zaimportowaniem?”
Inny programista : (puste spojrzenie)
Ja : Facepalm.
Nie jestem pewien, czy liczy się to jako decyzja technologiczna , ale byłem odpowiedzialny za stronę zarządzania dokumentami podobną do CMS napisaną w PHP przez cztery lata. Przez te wszystkie lata, próbowałem kilka razy, aby dostać osób (menedżerów, użytkowników funkcje żądającym) być może, być może, na przykład, może rozważyć możliwość siedzą razem i myślenia o wymaganiach i kierunku przyszłego na rzeczy. To się nigdy nie zdarzyło. To było zawsze „dodać tę funkcję”, „dodać tej funkcji”, a wszyscy byli w błogiej nieświadomości wszystkich różnych sposobów, w jaki każdy inny stosowanych na stronie internetowej. Zanim odszedłem, stało się ogromnym bałaganem połączonych ze sobą, ale niepowiązanych ze sobą funkcji, i byłem jedynym w całej firmie, który znał każdą funkcję. Teraz nikt tego nie robi. Mwahaha.
Przepisywanie systemu poczty głosowej klasy Telco.
Poprzedni system działał na Uniksie, a pod koniec lat 90-tych pojawiła się technologia COM Microsoftu. Wielu programistów pracowało nad tym nowym systemem opartym na NT. Po wielu wysiłkach jego wydajność wciąż była bliska wydajności systemu Unix, a duży klient, który kupił ten nowy system, był wkurzony. Firma musiała zostać sprzedana, a niektórzy ludzie musieli opuścić firmę.
To było brzydkie. Wszystko to wydarzyło się około dwa lata przed napisaniem przez Joela artykułu: Rzeczy, których nigdy nie powinieneś robić, część I
Przyjęcie zewnętrznej biblioteki (w tym przypadku Spring RCP ) przed jej pierwszą wersją wydania, na podstawie migawki SVN. Jest prawie pewne, że projekt skończy mniej lub bardziej martwy, a ty zostaniesz przywiązany do zwłok. W naszym przypadku mogło być gorzej. Wciąż duże ryzyko.
Jeden z przykładów, o którym przypominam, dotyczył wcześniejszego zaangażowania się w konkretny serwer aplikacji Java, mimo że nie posiadał on jeszcze funkcji wymaganych w projekcie, a jedynie mapę drogową na czas jego wdrożenia. Oczywiście sprzedawca nie dostarczył tak szybko, jak pierwotnie wskazano, co powinno być dużym problemem, ale w rzeczywistości był tylko jednym z wielu drobiazgów na powolnej drodze do awarii.
Większość przypadków tego rodzaju problemów, z którymi się zetknąłem, dotyczyły niepotwierdzonej / niedojrzałej technologii, często dlatego, że ktoś mający wpływ na stronę techniczną jest zwolennikiem rozwoju opartego na życiorysie.
Trzy lata temu nasz dział BusDev powiedział, że musi zbudować swój system mgmt zawartości na Documentum, ponieważ firmy farmaceutyczne, do których próbowali dotrzeć, znają nazwę i czują się dobrze z technologią. Wydaliśmy więc dużo pieniędzy na jego budowę, a następnie odłożyliśmy na półkę 12 miesięcy później.
W lutym tego roku ogłosili, że nowy system będzie oparty na Sharepoint 2010. Chcesz zgadnąć, dlaczego? Ponieważ nagle ta nazwa była znana przez Pharmas i była dla nich wygodna!\\ uSlackr
Pisanie nowoczesnych systemów operacyjnych w C / C ++. Od czasu Morrisa Worma (koniec lat 80.) wiemy, że jest to całkowicie nieodpowiedni język do budowania oprogramowania sieciowego, ale to nie powstrzymało nikogo przed zrobieniem tego, co w zasadzie sprowadza się do zaniedbania ze strony IMO.
std::string
, ale działa, a wraz z szablonami klas kontenerów może wyeliminować dużą klasę potencjalnych błędów.
Co ja zobaczyłem....
W latach 80. istniała firma Prime, która produkowała komputery z wersją bazy danych Pick i BASIC. Dział użytkowników w miejscu, w którym pracowałem w momencie, w którym go kupiłem, był absolutnie przekonany, że pozwoli im to zaoszczędzić mnóstwo pieniędzy, że otrzymają przetwarzanie i pożądane wyniki z jednym analitykiem biznesowym na kwartał. Nie trwało długo, zanim było czterech pełnoetatowych analityków programistycznych i zaległości w pracy.
Duży błąd w oszacowaniu, co technologia by dla nich zrobiła.