Dobry projekt podstawą dobrej strony IGUraport#3

W swojej etatowej pracy już nie raz zdążyłem przekonać się że dobra dokumentacja techniczna i projekt to podstawa efektywnej pracy. I akurat w tym przypadku zawód programisty wiele nie odbiega od zawodu elektryka. Szkoda że jak zwykle zdałem sobie z tego sprawę sporo za późno.

Podsumowanie

Po raz kolejny 15 godzin przy pisaniu kodu to wszystko co udało mi się wycisnąć w ciągu tygodnia. Lecz tym razem nie mam rozsądnego wytłumaczenia dlaczego tylko tyle.

Przebimbałem całą niedzielę. Co prawda był dzień babci więc odwiedziliśmy dziadków a także rodziców bo to w końcu dziadkowie naszych dzieci ale nie jest to wytłumaczeniem.

Gdybym przysiadł na 2-3 godziny rano, i drugie tyle wieczorem to wynik był by dużo bardziej satysfakcjonujący. Tym bardziej że w ten piątek zamierzam jechać na weekend w góry więc też pewnie będą plecy w tym tygodniu.

Ale może jednak trzeba dać sobie chociaż ten jeden dzień wytchnienia w tygodniu? W końcu tydzień ma tylko 168 godzin z czego ponad 115 idzie na pracę i sen, odejmując od tego 20 na programowanie i jakieś 4 na tego bloga, to wcale tak wiele tego czasu nie zostaje.

Niby blisko ale jakoś coraz dalej…

Ostatnio spisałem sobie listę podpunktów co jeszcze muszę zrobić aby zacząć myśleć o przesyłaniu strony na serwer. Na początku był tylko kilka punktów, z czasem zrobiło się kilkanaście, a pewnie to i tak nie koniec.

  1. Sprawdzić we wszelkich możliwych rejestrach dostępność nazwy IGU
  2. Wybrać nową domenę i inną nazwę(w zależności od pkt.1)
  3. Wykonać sortowanie ogłoszeń
  4. Dodać usuwanie konta z serwisu(w trakcie)
  5. Dodać wybór avatara.(zrobione)
  6. Napisać regulamin serwisu(w trakcie)
  7. Ogarnąć logo
  8. Wykonać wstępny plan marketingowy
  9. Poprawić SEO
  10. Rozeznać się jaki serwer będzie potrzebny
  11. Dodać przykładowe ogłoszenia
  12. Podlinkować nagłówki w stopce
  13. Stworzyć social media
  14. Dodać możliwość logowania przez Facebooka i Google
  15. Poprawić wyłapane błędy

Jak widać trochę pracy jeszcze przede mną i jeżeli faktycznie chce się wyrobić do końca lutego to muszę ostro przyśpieszyć.

Mały moduł dużo pracy

W tym tygodniu zabrałem się za usuwanie konta z serwisu. Na pierwszy rzut oka wydawało by się że to proste zadanie. I tak by było gdyby wystarczyło tylko dodać do rekordu usera 0/1 kolumnę informującą czy user jeszcze istnieje czy nie.

Jednak okazało się to bardziej skomplikowane. User może pozostawić po sobie wiele śladów w serwisie. Ogłoszenia wiadomości, nawiązane kontakty. I z tym wszystkim trzeba coś zrobić.

O tym że ogłoszenia nie będą po prostu usuwane z bazy a archiwizowane przez 90 dni wiedziałem od dawna. Jednak pisząc wcześniejsze moduły wcale nie brałem tego pod uwagę.

Więc sporządziłem kolejną listę. Co trzeba przerobić aby skrypt wiedział które ogłoszenie wyświetlić użytkownikom przeglądającym serwis, a które wyświetlać tylko w archiwum i prywatnych zakładkach właściciela ogłoszenia i osób które nawiązały z nim kontakt.

Kolejna lista zadań
Kolejna lista zadań

Najpierw projekt później kod

W tym właśnie momencie zdałem sobie sprawę jak bardzo pomogło by mi dobre rozplanowanie i zaprojektowanie architektury witryny na samym początku jej budowy.

Pewnie większości z tych przeróbek udało by się uniknąć gdybym pisząc wcześniejsze moduły od początku miał na uwadze to że w przyszłości część ogłoszeń będzie aktywna, część zarchiwizowana, a pozostałe nie będą w ogóle nigdzie wyświetlane, choć ich rekordy dalej będą w bazie danych.

A tak musiałem zacząć grzebać w kodzie który pisałem jakiś czas temu. I o ile ze świeższymi modułami nie było większych problemów, ponieważ kod jest już lepszej jakości i lepiej okomentowany, tak z tymi starszymi wcale nie było tak wesoło.

Teraz zaczynam rozumieć co mają na myśli doświadczeni koledzy mówiąc iż praca programisty bardzo rzadko polega na tworzeniu czegoś od podstaw, pisania świeżutkiego kodu.

Najczęściej to grzebanie w czyimś kodzie, często chaotycznym i paskudnym, szukanie błędów, dokładanie małej cegiełki do wielkiej całości. Mimo że grzebałem we własnym wcale nie takim dużym kodzie to myślę że to coś bardzo podobnego.

Co mam zamiar zrobić z tym fantem?

Niestety sprawy zaszły już za daleko abym teraz zaczął po raz chyba już 3 przepisywać cały serwis od nowa. Jednak tak tego zostawić nie mogę bo mam zamiar cały czas rozwijać mój projekt, a im będzie on większy tym ciężej będzie się nawet takie drobne zmiany wprowadzać.

Dlatego postanowiłem że jeden dzień w tygodniu będę poświęcał na porządkowanie już napisanego kodu, komentowanie, i dokumentację.

Teoretycznie będzie to kolejne zadanie które będzie pochłaniać mój czas, a nie popchnie sprawy do przodu. Jednak wiem że w dłuższej perspektywie przyniesie to wymierne korzyści.

Więc jeżeli też bierzesz się za pisanie nieco bardziej rozbudowanych aplikacji nie popełnij mojego błędu i zacznij od dobrego rozplanowania architektury i zależności.

Pozdrawiam!

972 komentarze