Dokumentacja

27 VIII 2005, 23:05:20

Dokumentacja jest dobra. Dokumentację trzeba pisać. A ja doszedłem do takiego dziwnego stanu, że wolałbym spędzać czas obmyślając rozwiązania i pisząc do nich dokumentację, niż dotykając się jakiegoś kodu. Spooky.

Przy okazji nauczyłem się jednej rzeczy -- oczywiście dobrze jest, jeśli tekst można wziąć, przeczytać i nie jest nudny (znaczy -- jeśli dokumentacja techniczna nie jest nudna, to jest bardzo dobrze, ale ja nie o tym) i rzeczywiście, powinien on w jakimś sensie stanowić spójną całość, żeby po przeczytaniu dawał dobre zrozumienie tego, czego dotyczy (czyli nie tylko suche tabelki sqlowe, ale też wytłumaczenie dlaczego one są tak zrobione i jakie są potencjalne drogi dalszego rozszerzania systemu), ale jednak znacznie ważniejsze jest takie podzielenie całości, żeby każdy zainteresowany mógł jak najszybciej znaleźć tę część, która go interesuje. Nawet jeśli to oznacza, że kilka razy trzeba zduplikować jakąś informację. Dokumentacja jest po to, żeby jej używać i jeśli szef projektu chce cię sprawdzić, to rzeczywiście przydaje się mieć taki tekst, dzięki któremu może prześledzić twój tok rozumowania, ale osoby implementujące rozwiązania przeważnie chcą to robić przy jak najmniejszych nakładach czasowych.

Zaczynam dochodzić do wniosku, że dzieląc tekst na kawałki, najlepiej je jak najbardziej łopatologicznie ponazywać, czyli np. do każdego zagadnienia mieć sekcję pod tytułem "Implementacja", gdzie implementator (zna ktoś jakieś lepsze słowo?) dostaje wszystko to, co mu potrzeba i nic więcej (i to z użyciem jak najmniejszej ilości liter). I jak nie masz czasu, to piszesz tylko te kawałki dla implementatorów, bez żadnych "rationale", czy czego tam.

Organizacja projektu i praca na laptoku

22 VIII 2005, 02:02:34

Zasadniczo można pracować przy projekcie, gdzie informacje trzeba zdobywać na bieżąco. Wiele projektów zapewne tak działa. Ale w przypadku projektu prowadzonego przez internet, gdzie komunikacja jest znacznie utrudniona (zwłaszcza biorąc pod uwagę te cholerne strefy czasowe), który na dodatek wymaga zintegrowania pracy kilku niezależnych zespołów, szef powinien był zacząć od zatrudnienia osoby, która by wszystko dokładnie przemyślała i pospisywała. Oczywiście fajnie jest uświadomić człowiekowi na trzy dni przed deadlinem, że nie jest w stanie zaimplementować funkcjonalności, którą zaimplementować miał, po czym przejść do omawiania z szefem sposobu na jak najbardziej eleganckie zdropowanie owej funkcjonalności, ale nie tędy droga. Przy takich okazjach wręcz kapitalnie wychodzi to, że na początku nikt nie usiadł i nie spędził paru dni (czy wręcz tygodni) na zdobyciu odpowiedniej ilości danych i przemyśleniu całości od początku do końca. No i oczywiście spisaniu swoich przemyśleń, żeby programiści mogli z tego korzystać.

Ja przez tydzień pracy nie napisałem pół linijki kodu, tylko gadałem z ludźmi, zbierałem informacje i starałem się zaprojektować kilka rzeczy. I dopiero po tym tygodniu jestem w stanie stwierdzić, że rozumiem jak to wszystko ma działać i mogę szukać 'dziur w całym'. I mam nieodparte wrażenie, że gdyby pierwszą zatrudnioną osobą był jakiś projektant, to prace mogłyby się posuwać dwa razy szybciej i nikt by nie musiał przepisywać, dropować, ani poprawiać żadnego kodu.

Zaczynam dochodzić do wniosku, że jednak warto skończyć remonowaną uczelnię i dzięki temu dostać pracę w jakiejś dużej korporacji. Już nie tyle dla pieniędzy, ile dla tego, żeby praca była przyjemna. Microsofcie, przybywam!

Co do laptopa, to przez ostatnie pół dnia właśnie na nim pracuję. Jedyne co mi zostało nie rozwiązane, to to, że konsole (kdeowy xterm) mi się odpala z czcionką iso-8859-1 i nie wiem jak go przekonać, żeby tego nie robił. Nie reaguje na zmiany ustawień, a właściwie reaguje, tylko nie zachowuje tych informacji pomiędzy sesjami (known bug, jest w kdeowej bugzilli), a nie wiem co należy zrobić, żeby by default uważał, że kodowaniem jest isolatka2. Mój desktopowy tak uważa i nie ma problemu. Co ciekawe locale w środowisku z tego konsole jest ustawione na C, więc to pewnie z tym związane. Dziwne, bo całą resztę kde mam po polskiemu.

Gdyby jeszcze nie ta wkurzająca klawiatura, to by było super.

Zmiana lokacji

21 VIII 2005, 19:10:14

Obecnie jestem poza domem. Akurat mi się przydał laptop, acz jeszcze nie wykombinowałem jakiegoś sensownego sposobu na zduplikowanie całego mojego kombajnu pocztowego, więc nie mam dostępu do swojej poczty i jak ktoś będzie coś chciał, to pisać na mmazur małpa discordia.pl. Na jabberze i ircu jestem normalnie. I jak wreszcie wykombinuję czemu nie mogę się na siódmego ciecia zalogować, to i tam też będę sprawdzał co jest nie tak.

Zapomniałem ostatnio napisać, że jak wsadzałem kartę wifi do desktopa, to się okazało, że mi od karty (riva tnt2) odpadł radiator. Skończyło się na tym, że przykręciłem na śrubki. I działa :)

Aredridel (ten deweloper pld z usa, który się okazał tą deweloperką) mailnęła linka do Distro Dev. Wygląda bardzo fajnie. Od dłuższego czasu się zastanawiałem jak to jest w innych distrach, ale nigdy bym nie wpadł na pomysł, że można o tym po prostu serwis założyć na jakimś community cmsie :).

Haj ho! Haj ho!

20 VIII 2005, 05:23:14

Przez całą noc by się dokumentację pisało!

Jak człowiek głupi i w ciągu dnia się bawi laptopem, zamiast robić co do niego należy, to tak później ma. Dobranoc. A właściwie, to dzień dobry.

hp nx6110

19 VIII 2005, 18:38:01

Kupiłem sobie wczoraj to, żeby mi się wygodniej pracowało i żebym mógł sobie gdzieś wyjechać i i tak być w stanie pracować. Do tego dwie karty wifi Dlinka (jedna pci do kompa i druga pcimcia do laptoka). Ładny w sumie ten lapek, tylko mam lekki zgryz z zainstalowaniem na nim czegokolwiek. Jak już wreszcie dokopałem się do płytki z pld livecd, to się okazało, że nie chce się z niej bootować. Po jakimś czasie się pokapowałem, że on po prostu odmawia bootowania się z cedeka, jeśli akurat chodzi na baterii. No dobra, zapuściłem w końcu instalkę i po przecięciu 500mb (z docelowych dwóch giga) przegrzał się i wyłączył. Hmmm. W sumie nie jest to aż takie strasznie dziwne, w trakcie normalnej pracy raczej nie będę go aż tak intensywnie wykorzystywał, żeby się przegrzewał, acz problem z instalacją na nim czegokolwiek pozostaje. Chyba skończy się na tym, że odpalę livekę, podłączę internet przez kabel i wpoldkuję minimalny system bezpośrednio na dysk. Ponieważ zasysanie z internetu paczek będzie jednak stosunkowo wolne, to raczej powinien przeżyć.

Współpraca

16 VIII 2005, 01:51:59

Jeśli pracując zauważysz, że coś nie jest tak, jak według ciebie powinno być, to spróbuj to zmienić. Nie chce się dać? Nie możesz przez to pracować? Poczekaj dwa dni i sprawdź, czy nadal jest nie tak (nawet jeśli wkurwia cię fakt, że tracisz dwa dni). Nie przesadzaj z reakcją przy pierwszej napotkanej przeszkodzie. Nie pozwalaj sobie na żadne ostrzejsze reakcje, o ile nie chodzi o chroniczny brak poprawy. Dwa dni (znaczy, ja tak na chybił trafił te dwa dni, żadnych empirycznych testów statystycznych nie robiłem) cię nie zbawi, a lepiej stracić na wstępie dwa dni na 'dostosowywanie' środowiska pracy do siebie, niż na dzień dobry niepotrzebnie narobić hałasu.

W tym miejscu był akapit zawierający dwa przykłady na to, jak niezorganizowana jest praca w mojej firmie, ale tenże akapit odszedł do krainy wiecznych łowów (najprawodpodobniej razem ze swoimi następcami). Natomiast następny akapit jest już żywcem wyjęty z oryginalnej notki i ma chyba służyć za zaproszenie do dyskusji "co wolno".

Hmm. Inna sprawa, że ja chyba nie powinienem takich rzeczy pisać. Zasadniczo jestem maczo, bo moi szefowie i tak tego nie przeczytają, acz coś mi z tyłu glowy mówi, że wewnętrzne sprawy firmy, to wewnętrzne sprawy firmy.

Jak to jest z tym zarabianiem

13 VIII 2005, 03:43:30

Mam przed sobą wydrukowany kontrakt. Dwa miesiące roboty. Płacone w walucie angielskiej, także w naszych jednostkach płatniczych kwota nie do pogardzenia.

Ale mi się tak potwornie nie chce tracić reszty wakacji na to. Generalnie dobrze by było mieć zapasy na koncie, ale na chwilę obecną pieniądze nie są mi potrzebne. Zwłaszcza, że 'dwa miesiące', to jest zapewne wishfull thinking zarządu, bo ile to w rzeczywistości może zająć, to cholera wie. Póki co niczego nie podpisałem i mam nadzieję, że uda mi się wyciągnąć wszystkie potrzebne mi informacje techniczne, zanim będę musiał cokolwiek podpisać (a jak mi się nie uda, albo owe informacje będą... niepomyślne, to zapewne nie podpiszę).

Ja mam taki problem, że opensourcowe projekty mnie rozpieściły. CVSik, czy tam svnik, deweloperzy robiący nie za duże commity z ładnymi komentarzami, do tego standardowa maillista na którą idą wszystkie commity. Pracujesz kiedy chcesz, jak zrobisz, to będzie. Tiaaaaa. Żyć nie umierać. A na dodatek jeszcze naczytałem się różnych Joelów Spolskich i teraz mam wykrzywione spojrzenie na kwestie komercyjnego tworzenia oprogramowania, bo wiem jak te rzeczy powinny wyglądać, a nie jak wyglądają.

A gumno! Takie rzeczy w komercyjnym świecie, to można spotkać zapewne w dużych firmach (znaczy modulo ten kawałek o 'pracujesz kiedy chcesz i będzie jak zrobisz' :), które płacą pracownikom tyle, że chcą z tych pracowników wycisnąc jak najwięcej i zapewniają im odpowiedni warsztat i wymuszają określoną metodologię pracy. Natomiast z moich dotychczasowych (marnych bo marnych, ale zawsze) doświadczeń wynika, że typowy pracodawca, który chce mieć jakiśtam kawałek oprogramowania, po prostu zatrudnia grupę studentów i mówi im co mają zrobić. I oni to robią. Jak to robią, to nie ma specjalnie znaczenia, byleby zrobili.

I teraz ja dostaję zlecenie, by w ciągu miesiąca zrobić dwie rzeczy z których jedna polega na zintegrowaniu ze sobą trzech różnych modułów robionych przez trzy różne zespoły. Czego pierwszy zespół (chyba jedno-, albo dwuosobowy; pracujący na pół etatu) używa do zarządzania kodem? Niczego. A czego drugi (bodajże trzyosobowy) używa? Darcsa. A czemu nie CVSa albo SVNa? Bo CVS się nie nadaje do niczego, a SVN mimo, że kilka rzeczy robi lepiej, niż CVS, to i tak się do niczego nie nadaje, bo nie jest distributed. Podsumowując -- trzyosobowy zespół potrzebuje narzędzi distributed, CVS i SVN się do niczego nie nadają, a te wszystkie malutkie projekty, jak kde, *bsd, połowa dystrybucji linuksa, gnome i chuj wi co jeszcze po prostu nie wiedzą co czynią. A ich deweloperzy (oczywiście ze mną włącznie) nie są w stanie dostrzec wyższości moralnej narzędzi distributed tylko dlatego, że się tak przyzwyczaili do tych swoich cvsów, że świata poza nimi nie widzą. Ahaaa.

No to teraz mam dwa problemy. Pierwszy -- ile warte jest utrzymywanie 'dobrych stosunków' ze współpracownikami? Czyli na przykład nie pisanie, że zasadniczo rzecz biorąc są głupi i na niczym się nie znają, a poprawny kod to wychodzi im tylko przez przypadek (a oto inna wersja tego samego procederu w moim wykonaniu). Albo natychmiastowe wycofywanie się z dyskusji takich, jak opisana w powyższym akapicie, jak tylko człowiek się pokapuje, że idą one trochę nie tak jak trzeba. A nawet jak już po takiej dyskusji współpracownicy mają cię za głupka, to nie wkurzanie ich bardziej takimi wpisami jak powyższy, do których zapewne prędzej czy później dotrą. No ale mniejsza o to.

Drugi, właściwie znacznie ważniejszy problem, sprowadza się do tego, czy ja może po prostu za bardzo nie marudzę? Projekt bałagan, bez nadzoru, yadda, yadda, yadda, ale wiecie co? Przy tych wszystkich krytycznych, nie dających szans na przeżycie wadach, najprawdopodobniej za kilka miesięcy system będzie skończony, działający i nawet całkiem znośny w utrzymaniu (to samo zresztą tyczy się owego PHPowego projektu o którym rozpisywałem się dwa miesiące temu). I to, że ja, jak tylko widze coś, co imho nie jest tak, jak być powinno, to od razu dostaję wysypki, absolutnie o niczym nie świadczy. No, może poza tym, że średnio się nadaję do roboty.

Bla. Chyba trzeba będzie po prostu zatrudnić się gdzieś jako szeregowy admin, gwizdać na wszystko, a fajnymi rzeczami zajmować się w czasie wolnym.

Chociaż. Przecież równie dobrze mogą mi kazać administrować slackiem. Ratuuuuunkuuuuuuuuuuuuuu!

Bankowość internetowa

08 VIII 2005, 20:49:04

Mbank to jest bardzo fajny bank. Póki się nie chce jakiś dodatkowych usług, bo wtedy wymiana korespondencji może trwać wiekami...

Za co się brać?

01 VIII 2005, 02:58:05

Do końca wakacji mam do zrobienia kilka rzeczy. Jedne większe, drugie mniejsze, acz wszystkie (komuś/mi) potrzebne. Przy czym ostatnio latają mi po głowie rzeczy zdecydowanie mniej przydatne. Na przykład kilka zmian w rpmie, które byłyby miłe dla deweloperów pld, ale nie są na tyle ważne, by ktoś inny miał ruszyć tyłek, a już na pewno nie zostałyby zauważone przez użytkowników. Dla mnie rzecz interesująca właściwie tylko dlatego, że byłoby fajnie, gdyby ta technologia była bardziej doskonała, gdyby udało się z niej wyelimiować kilka upierdliwości. Nawet pomimo tego, że te upierdliwości nie przeszkadzają w niczym, jak już się człowiek nauczy je obchodzić.

Albo dodatki do rpma, dzięki którym udałoby się zlikwidować jedną z głównych bolączek linuksa, czyli fakt, że programy jest sens brać tylko z dystrybucji, bo autor nawet jak przygotuje binarną paczkę, to u nas i tak pewnie nie będzie działała.

A już kompletnie walniętym pomysłem jest zrobienie desktopowej dystrybucji dla polskich użytkowników. Na początek to, co można znaleźć w Linspire, czyli distro dla nietechnicznych w którym wszystko po prostu działa (włączającw to rzeczy speficyczne dla nas, czyli jakaś neozdrada, czy co tam jeszcze). Później zdobycie informacji czego od takiego distro oczekuje użytkownik chcący więcej kontroli, żeby nie odstraszać ludzi, którzy nie lubią, jak nie da się niczego popsuć. A na koniec rozwiązania dla konkretnych zastosowań, czyli np. polski sektor edukacyjny i dokładnie doszlifowane wszystkie możliwe konfiguracje.

I najgorsze w tym wszystkim jest to, że z wszystkich możliwych rzeczy, którymi mogę się zająć, najbardziej ciekawe li tylko pod względem technicznym wydają mi się właśnie te, które obiektywnie są mi najmniej potrzebne i zajęcie się którymi byłoby najprawdopodobniej zwykłą stratą czasu.

Czyli każdy projekt ma plusy dodatnie i ujemne, więc załóżmy, że ogólny bilans każdego wychodzi na zero. No to jak wybrać?

Technologia nie istnieje sama dla siebie, ale została stworzona po to, by rozwiązywać konkretne problemy. Więc obiektywnie rzecz biorąc, najlepiej się zająć tymi projektami, które miałyby szansę coś zmienić.

Czyli co, własne distro? A może technologia, dzięki której binarne paczki na linuksie wreszcie będą dla ludzi?

Tiaaa. Właśnie doszedłem do wniosku, że powinienem się wziąć za projekty najgłupsze, zasadniczo równoważne porywaniu się z motyką na słońce. Idę spać.

« | »