Każdy, kto wie na czym polega #programowanie wie że projekty pod tytułem "przepisywanie od 0" są bardzo często skazane na klęskę. Wynika to z kilku podstawowych faktów. I #wykop nie jest tu wyjątkiem. Przyczyny niepowodzeń po kolei:
  1. Użytkownicy są przyzwyczajeni do starego systemu, który działa dłużej niż nowy. Chodzi głównie o wygląd ale również zachowanie systemu jako takiego. Tak zwana "pamięć mięśniowa" robi swoje.
  2. Przepisywanie zajmuje sporo czasu, przez który zazwyczaj stary system wciąż ewoluuje, stąd też jest to niekończący się wyścig z czasem. To ile rzeczy "stary" zrobi zanim "nowy" się dorobi zazwyczaj jest zagadką.
  3. Pisanie od nowa funkcjonalności, które mają zdefiniowane zachowania w starym systemie jest receptą na kłopoty, ponieważ zazwyczaj będą pojawiać się nowe błędy. Nie ma oprogramowania, które jest wolne od błędów a pisanie testów zabiera czas (dodajmy że często w starym systemie testów nie ma).
  4. Zmiana logiki działania systemu, która nie jest uzgodniona z użytkownikami będzie zawsze budzić kontrowersje. Choćby nie wiem jak dobre było uzasadnienie techniczne dla zmian, brak komunikacji zawsze będzie receptą na przegraną pisanego od nowa projektu.
Co czeka zatem projekt pt. wykop 3.0 (o wersji 2.0 pisałem tutaj)? Na pewno będzie rozwijany dalej. Z tego prostego prozaicznego powodu, że w momencie przepięcia z wersji A do B i pojawieniu się danych w wersji B zazwyczaj nie ma już odwrotu. Wszystko przez zmiany w strukturze bazy danych, które uniemożliwiają powrót do starej wersji.
Niezależnie od tego czy jesteśmy zadowoleni czy nie - "kody zostały rzucone na produkcję".
Petrorogal

@splatch nie można było zachować starej bazy danych? Przecież chyba aż tak bardzo baza się nie zmieniła bo to tylko nowy layout

Voltage

@splatch wystarczy mieć więcej niż 2 lata doświadczenia na wyższej pozycji w IT i jakiekolwiek kompetencje architektoniczne żeby takich prostych wtop uniknąć, ja sam przepisałem z 2-3 aplikacje dobierając do nich odpowiednie podejście i oczywiście mając failsafe (którego nie musiałem nigdy użyć) i jakoś aplikacje działają do dziś, ba, zyskały na funkcjonalności oraz popularności od tego czasu DRASTYCZNIE.


Oczywiście że w wieku dziecięcym były bugi, ale się je na bieżąco poprawia. W pewnym momencie apka dochodzi do momentu kiedy nie nadaje się do rozwoju i tyle, tutaj nie ma wyboru między przepisujemy a nie przepisujemy, lecz przepisujemy albo zamykamy.

gips

"stary system wciąż ewoluuje" xd to akurat nie w tym przypadku

Miedzyzdroje2005

@splatch z tego samego powodu Grono, które w 2009 roku zamieniło się w wizualną kopię Facebooka już nigdy nie odzyskało popularności

Hunchbacked

No oni to naprawią bo teraz błędy widać. Zwykłe konta stały się firmowymi, zbanowani na amnestii a dlaczego nie wszystkie? Ci co skasowali konta nagle je mają aktywne, czyżby z backup?

kamsz

Moim zdaniem tu nie chodzi o to, że wygląd się jakoś drastycznie zmienił. To jest do przełknięcia - zawsze znajdą się tacy co marudzą. Problem raczej krąży wokół innych fundamentalnych czynników:


  • nie zachowali kompatybilności API przez co wszystko co z API korzystało poszło z dymem.

  • odbanowanie użytkowników, znikające komentarze, wiadomości prywatne, obserwowane... wygląda jak problem z migracją danych pod nową strukturę

  • wydajność - co trochę się łączy z punktem pierwszym - prawdopodobnie nikt nawet nie zrobił traffic shadowingu, bo po tak drastycznych zmianach API nie było to możliwe.

  • mobile - wypuszczanie nowej wersji serwisu, która rozpieprza wszystkie mobilne aplikacje i nie wypuszczenie w tym samym czasie aktualizacji do oficjalnej appki? Choroszcz.


A wystarczyło wypuścić beta.wykop.pl na miesiąc, dwa, nawet z kopią bazy danych niekoniecznie zsynchronizowaną z głównym serwisem ze względu na zmiany struktury (przy okazji by był test migracji danych ;)) żeby dostać feedback od użytkowników i poprawić przed oficjalnym wydaniem.

czarna_mamba

@Voltage skoro przepisales je "sam", to musialy byc wyjatkowo duze te aplikacje xD

splatch

@Petrorogal Zachować starą bazę można, ale zazwyczaj już nie jest ona zdatna do użycia. Tradycyjne bazy danych są podzielone na tabele a tabele na kolumny i wiersze, podobnie jak excel. Pół biedy jeśli nowa struktura bazy danych rozszerza schemat o dodatkowe kolumny (np. nazwa_autora, żeby jej nie doczytywać z drugiej tabeli), gorzej jeśli kolumny ze starego schematu są usunięte lub rozbite, ponieważ nowe wpisy będą wymagały dodatkowego narzędzia żeby zmigrować je do starego schematu.

splatch

@Voltage "wystarczy mieć więcej niż 2 lata doświadczenia na wyższej pozycji w IT i jakiekolwiek kompetencje architektoniczne żeby takich prostych wtop uniknąć"


Albo mieć dominującą pozycję na rynku żeby mieć wszystko w pompie. ¯\_( ͡° ͜ʖ ͡°)_/¯

Zgadzam się, że wtop można uniknąć, tylko że najpierw trzeba się przygotować do tego, żeby system dało radę pchać do przodu.

splatch

@kamsz to o czym piszesz przypomina mi podejście z basecamp, gdzie stara wersja serwisu działała jeszcze 5 lat po wprowadzeniu nowej. Nie pamiętam już czy robili tam migrację danych czy nie, po prostu zostawili starą wersję dla tych, którzy nie chcieli korzystać z nowej.

Czokobons

@splatch gdyby były tylko te problemy co wymienileś to nie byłoby problemu. Ludzie by troszkę ponarzekali, ale po paru dniach przyzwyczaili do nowej aplikacji. Ten nowy wykop po prostu nie działa pod obciążeniem. Strony ładują się po kilkadziesiąt sekund, albo wcale, a przyciski czasem nie działają i trzeba ładować stronę od początku

splatch

@Czokobons to są te nowe błędy o których pisałem.

kamsz

@splatch Reddit ma taką wersję do dzisiaj (http://old.reddit.com) i jakoś daje radę

splatch

@kamsz Zgadza się, tylko w praktyce to może wymagać utrzymania dwóch systemów równocześnie. Pół biedy jeśli serwisy są oparte o stabilne API, które łączy wysiłek w jednym miejscu. Jest o wiele gorzej, jeśli każdy z systemów odczytuje dane bezpośrednio z właściwej sobie bazy danych.

Można było to rozegrać lepiej a wyszło jak zwykle.

Voltage

@czarna_mamba a kto mówi że w pojedynkę, użyłem po prostu skrótu myślowego. (no dobra użyłem tam słowa "sam", ale chodziło mi raczej o mój udział w przepisywaniu i to na pozycji TLa/architekta).

Zaloguj się aby komentować