Postępy projektowe #2

Postępy projektowe #2

Rejestracja użytkowników

Django oferuje bardzo dobrą, gotową paczkę do zarządzania użytkownikami. Dołożenie do własnego projektu strony logowania, również nie stanowi wielkiego problemu. Są do tego gotowe formularze i jedyne co trzeba dopisać, to szablon HTML i URLe. Dosyć szybko znalazłam o tym informację. Z rejestracją użytkownika było już trudniej - wydawało mi się, że tej równie powszechnej funkcji wcale nie da się łatwo skomponować z gotowych kawałków. Znalazłam wiele rozwiązań i jestem pod wrażeniem jak dużo kodu zostało napisane, żeby tą funkcję przywrócić. A jak się okazuje rejestracja też jest dostępna.

No i tu ciekawostka. Poziom skomplikowania logowania i rejestracji niewiele się różni. A jednak kilka dobrych wpisów na blogach bardzo łatwo rozszerzyło się do wiedzy powszechnej. Bardzo łatwo było znaleźć o tym informację - zarówno na blogach, jak i na Stackoverflow. Niestety za dużo materiałów nie było na temat rejestracji, a przynajmniej nie było żadnego tutoriala, który pokazywałby jak dołożyć taką funkcję krok po kroku. Przez co bardzo mało osób wiedziało, że rozwiązanie jest bardzo proste. Oczywiście znalazłam dostępną bibliotekę, ale jeśli jest mi ona nie potrzebna, to wolałabym zminimalizować listę dodatków w projekcie.

I tu tkwi siła konkursu "Daj się poznać". W te kilka miesięcy powstaje mnóstwo wydawałoby się banalnych wpisów znad projektów. A jednak! Bardzo prawdopodobne, że to z czym Ty masz problem, jest również problemem dla innych. Opisanie rozwiązania na blogu oszczędza kolejnym osobom mnóstwo czasu, a Tobie pozwala lepiej zapamiętać treść.

Nauka Django

Czuję, że miałam bardzo mylne wrażenie o swojej znajomości Django. Wpadłam w klasyczny Efekt Krugera-Dunninga. Czym więcej się uczę, tym więcej widzę nauki przed sobą. Ale codzienny przyrost wiedzy jest bardzo pozytywny.

ModelForm

ModelForm jest bardzo użytecznym narzędziem, które pozwala stworzyć formularz na podstawie definicji istniejącej klasy. Czyli w skrócie mówiąc: mając klasę 'książka' to łatwo możemy stworzyć formularz do dodawania nowej, bez konieczności ręcznego tworzenia całego formularza z definiowaniem poszczególnych pól i typów w nimi związanych.

Przykład na podstawie dokumentacji:

class Book(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=100)

class BookForm(ModelForm):
class Meta:
model = Book
fields = ['name', 'author']

Zbyt zajęta, żeby skończyć projekt

Zaczęłam się w ostatnich dniach mocno zastanawiać czego jeszcze potrzebuje mój projekt, żeby rozpocząć fazę beta i oddać do testów pierwszym użytkownikom. Obiektywnie rzecz biorąc - niewiele. Gdy jednak próbowałam się zastanowić nad konkretną datą i listą rzeczy do zrobienia, od razu do głowy przyszło mi milion poprawek i uczucie - o nie! To jeszcze nie gotowe!

Czy to nie jest bardzo powszechna choroba IT? Tak bardzo chcemy dopieszczać projekty i nigdy nie czujemy, żeby były wystarczająco dobre. Czasem przegapiamy moment kiedy można projekt wysłać w świat i zbierać pierwsze opinie. Czy nie o tym właśnie pisze Eric Ries w książce "Lean Startup"? Dużo lepiej jest wypróbować na rynku prawdziwy produkt, nawet w wersji zupełnie minimalistycznej, niż czekać aż będzie według nas wystarczający. Możliwe, że rynek do tego czasu zmieni się zupełnie. Poza tym, czy nie jest przypadkiem tak, że cały kod mojej aplikacji jest już dostępny na Githubie, a ja sama piszę o projekcie na tym blogu? :)

Tutoriale, czyli krótka droga w rozpacz

Tutoriale są świetne. Są jak mapa wskazująca drogę z punktu A do punktu B. I wszystko jest pięknie pod warunkiem, że nie zechcesz się rozejrzeć na boki. Albo Twoim miejscem docelowym jest coś obok B. I tu zaczyna się problem, bo rzadko który tutorial tłumaczy z jakich mechanizmów korzysta i co wynika z czego. Nie jest to też funkcja tutorialu.

Poza tym podążając wiernie za tutorialem, możemy mieć szybko działający fragment aplikacji. Przy wprowadzaniu następnych zmian zaczynają się jednak problemy. Bo wszystko działa, mamy wrażenie, że doskonale wiemy jak i co z czego wynika. A jednak po prostej zmianie całość zaczyna się sypać, a naprawa błędu może się znacznie wydłużyć.

Sama też wpakowałam się przez przypadek w ten scenariusz. We właściwym momencie wróciłam jednak do dokumentacji, zagłębiłam się w problem i zrozumiałam szczegóły z nim związane. Końcowe rozwiązanie przyszło samo, a prawdopodobnie poświęciłam na to mniej czasu niż na próbę naprawiania na oślep. Kojarzy mi się to z sytuacją wbijania gwoździa młotkiem, bez dokładnego patrzenia gdzie młotek uderza.

Podsumowując - Nikt nie wie wszystkiego, a uczenie informatyki i programowanie nie kończy się nigdy. I to jest cała zabawa!

2 Komentarze

  1. Zgadzam się z tobą odnośnie tutoriali. Robisz coś krok po kroku, a chcesz coś ciut zmienić i wszystko się wali :) . Również wtedy staram się zgłębić podstawy, i zrozumieć czemu takie coś się dzieje.
    Tutoriale jednak pozwalają mi wyciągnąć optymalne rzeczy, które wystarczy ciut dostosować :) . Nie muszę wszystkie od zera robić. Taka nauka od tyłu :) . Czasem więcej się nauczysz niż lecąc po kolei :) (ale po drodze musi się coś popsuć standardowo)

    1. Justyna Kubisztal

      @Marcin, nie mówię, żeby z tutoriali nie korzystać :) To bardzo motywujące zobaczyć kawałek działającej aplikacji, w momencie jak jeszcze nie wszystko ogarniasz. Ale nie jest to dobry sposób nauki, bo czasem obraz się zaciemnia zamiast rozjaśniać. A popsuć się musi dla zasady ;)

Skomentuj


O mnie

justyna kubisztal

Cześć, jestem Justyna. Programistka Pythona z trzyletnim doświadczeniem w zawodzie i kilkuletnim doświadczeniem w IT. Mentor i współorganizatorka Django Girls Kraków, tłumaczka Coursery, pasjonatka języków obcych i zwolenniczka uczenia się przez całe życie.

Bądźmy w kontakcie

Ostatnie wpisy

Wspieram

Szkoła 3.0

Kategorie

Tags

Mapa strony

Sitemap