Jak NIE należy pisać kodu

27 października 2009

Właśnie pracuję nad jednym małym zleceniem. Problem w tym, że jestem podwykonawcą, odpowiedzialnym tylko za jeden element, całą resztę zrobił już inny programista. Muszę teraz edytować jego kod i dostosowywać do nowych potrzeb.

No to zaczynamy. Otwieram pliki. No super... Zamykam pliki i przełączam edytor na ISO :) Mogliby się ludzie już przestawić na UTF.

Otwieram pliki :) Plik konfiguracyjny z kilkudziesięcioma definicjami stałych, dla każdej tabeli w bazie jedna definicja. Nie podoba mi się to ale niech już tak będzie.

Szukam plików odpowiedzialnych za element którym mam się zająć. Na ftp trochę bajzel, można było to chyba trochę lepiej pogrupować ale nie jest tragicznie.

Jest coś dotyczącego zlecenia, otwieram. Ech, wszystko wpakowane w funkcje. Przykład:

PHP:
  1. function BodyLogowanie_START()
  2. {
  3.   print'
  4.  <TABLE width="100%" height="100%" border="0" cellspacing="0" cellpadding="0" style="margin-bottom:15px;">
  5.    <TR>
  6.    <TD align="center" valign="middle">';
  7. }
  8. function BodyLogowanie_END()
  9. {
  10.    </TD>
  11.  </TR>
  12.  </TABLE>';
  13. }

Funkcje fajna rzecz ale ich używanie obwarowane jest pewnymi zasadami. Każdy lepszy kurs i każda książka o tym mówi. Założę się, że są tutaj funkcje, które używane są tylko w jednym miejscu przez co funkcjami nie powinny być. Olać, idę dalej.

Przeglądam pliki, cały HTML oparty na tabelkach. Oj dostałoby się koledze za to na publicznych forach :) Olać, HTML w tym zleceniu to już zupełnie nie moja bajka.

O, jest jakiś kawałek o logowaniu. Od razu w oczy rzuca się ten kod (fragment zapytania do MySQL):

PHP:
  1. login='".$_POST['email']."'

To już nie jest takie śmieszne, ktoś się włamie a potem powiedzą, że moja wina. Trzeba będzie poprawić...

Identyfikator połączenia z bazą danych trzymany w sesji? Przyznam, że się nie spotkałem :)

Przyzwyczaiłem się już do angielskiego nazewnictwa plików, zmiennych itd. dlatego rażą mnie w oczy polskie słowa. Ale tu już się czepiać nie będę, wielu programistów tak robi, sam kiedyś tak pisałem. Musiałem się potem przestawić jak zacząłem pisać kod w wielonarodowych zespołach.

Pisałem już, że kod PHP jest całkowicie wymieszany z HTML'em? :) Dodajmy do tego, że wszystko jest pozamykane w dziesiątkach funkcji i mamy niezły mętlik. Nie lubię programować gdy nad kodem muszę się zastanawiać jak nad wierszem: "Co autor miał na myśli?".

Jak już jesteśmy przy domyślaniu się to wspomnę, że jest zero komentarzy w kodzie.

Dobra, czas zacząć pracować. Znalazłem to co mnie interesuje. I od razu szok:

PHP:
  1. $zapytanie="SELECT login,email FROM `"._CONF_table_users."`;";
  2. $wykonaj=$Connect->MysqlQueryRet($zapytanie);
  3. if($Connect->GetValue('error_mysql')==False){
  4.   $i=0;
  5.   while($wiersz=@mysql_fetch_array($wykonaj)){
  6.     if($wiersz['email']==$_POST['email']||$wiersz['login']==$_POST['login'])$i++;
  7.   }
  8.   if($i>0)$ret=$RETURN_KONTO[1][0];else $ret=$RETURN_KONTO[0][0];
  9. }

Jak z PHP mam do czynienia już 6 czy 7 rok tak jeszcze takiego cuda nie widziałem. Czy ten programista nigdy nie słyszał o warunkach WHERE w zapytaniach SQL? Wyciągać całą zawartość tabeli tylko po to żeby sprawdzić czy czasem nam się konto nie zdubluje? :/ Paranoja... Nie chce myśleć co się będzie działo z serwerem gdy na stronie zarejestruje się więcej niż kilka tysięcy ludzi.

Po powyższym wiedziałem już, że łatwo z tym zleceniem nie będzie ;) Na tym zakończę tą "recenzję" bo chociaż są jeszcze inne błędy, niektóre naprawdę poważne, to recenzowanie nie jest celem tego wpisu. Teraz kilka pytań bez odpowiedzi.

  • Czy powinienem zwrócić programiście uwagę na jego błędy?
  • Czy powinienem powiadomić właściciela projektu o kwiatkach jakie zgotował im ich programista?
  • Czy powinienem poprawić chociaż te błędy, które jako tako dotyczą mojego zlecenia czy pojechać szablonem, który wyznaczył główny programista i mieć zlecenie z głowy?
  • Czy powinienem o tym pisać na blogu? :D

Odpowiedzi na pytania wcale nie są proste. Albo zacznę interweniować i wszyscy mnie znienawidzą a sam będę miał tylko więcej nerwów i pracy albo nie odezwę się ani słowem i będę miał spokój ale strona będzie przez następne trzy lata łatana, pewnie przez tego samego programistę.

Z powyższego wpisu można wyciągnąć kilka wniosków.

  • Po pierwsze, trzeba naprawdę dużo praktyki żeby zacząć dobrze programować.
  • Po drugie, nie należy oszczędzać na programistach :P Nie wiem ile temu chłopakowi płacą ale kod jest słaby a projekt ciągnie się już pół roku i pewnie jeszcze trochę potrwa nim strona pojawi się w sieci. Lepszy programista zainkasowałby odpowiednio dużo kasy ale zrobiłby to porządnie a oni już by zarabiali.
  • Po trzecie, na rynku chyba nie ma wielu dobrych programistów... Dostaję na to coraz więcej dowodów.

Zachęcam do dyskusji w komentarzach. Co o tym wszystkim myślicie? Co doradzacie?


Media Regionalne rosną w siłę

18 listopada 2008

Serwisy Grupy Media Regionalne ciągle zyskują na popularności i dzisiaj dostałem przyjemną informację, że MR wskoczyło na piąte miejsce w statystykach Gemiusa w kategorii "Informacje, publicystyka, media" osiągając zajętość rynku na poziomie prawie 9,5% :) Grupę wyprzedzają już tylko duże portale.

Miło słyszeć, że firma w której się pracuje to poważny gracz na rynku.

Informacja oraz tabelka pochodzi z www.internetstandard.pl.


Nowa praca

21 kwietnia 2008

Dzisiaj dostałem oficjalną informację, że zostanę zatrudniony w Media Regionalne Sp. z o.o. Trochę to wszystko trwało...

Kiedyś zamieszczę na blogu coś więcej na temat goldenline.pl. Teraz napiszę tylko tyle, że raz na jakiś czas ktoś podsyła mi tam jakąś ofertę pracy. Czasami z ciekawości odpowiadam.

Tak było i tym razem. Trochę porozmawiałem z miłą Panią i przyszła pora na spotkanie. Tak się złożyło, że wezwano mnie do Warszawy w tej sprawie więc najpierw załatwiłem wszystko z Telestar a potem poszedłem na rozmowę ;) Następnego dnia kolejne spotkanie. A potem... cisza :)

Już myślałem, że nic z tego nie będzie, nie odzywali się z miesiąc czasu. A tu dzwoni telefon i niespodzianka: chcą się spotkać. Następnego dnia byłem na miejscu. Nie było już za bardzo o czym gadać (na dwóch wcześniejszych spotkaniach nieźle mnie przemaglowali... :) ). Dostałem informację, że raczej już jest wszystko pewne ale moją kandydaturę musi jeszcze zatwierdzić ktoś z góry po przeczytaniu rekomendacji jaką wystawią mi osoby, które ze mną rozmawiały. I znowu trwało to chyba ze dwa tygodnie :)

Dzisiaj dostałem już oficjalną wiadomość, że będę zatrudniony. Na razie na trzy miesiące na umowę zlecenie. Wiadomo, muszą mnie sprawdzić, przetestować. Jak wszystko będzie dobrze to dostanę normalną umowę o pracę. Warunki takie same jak w Telestar. Praca zdalna i ta sama pensja.

Jeszcze nie wiem co będzie należało do moich obowiązków ;) Tzn. oczywiście będę tworzył i rozwijał jakieś serwisy ale więcej szczegółów nie znam. Wyjdzie w praniu. Mogę jednak się spodziewać, że najczęściej będę pracował z CMS'em Drupal. Wcześniej się tym bawiłem ale teraz chętnie poznam dokładniej ten system.

Media Regionalne rozwijają sieć serwisów miejskich. Coś w stylu mojego nasztomaszow.pl tylko oczywiście z większym rozmachem ;) Cytując webinside.pl:

Grupa Media Regionalne uruchamia dziewięć serwisów miejskich MM Moje Miasto. Portale ruszają w Warszawie, Łodzi, Poznaniu, Krakowie, Bydgoszczy, Lublinie, Trójmieście, Wrocławiu oraz na Śląsku. Wydawcy tłumaczą wdrożenie kolejnych witryn rozwojem społeczności w portalu Szczecińskim – pierwowzorze serwisów MM.

Zapowiada się ciekawie. Może będę miał okazję pracować przy tych serwisach.

Jeszcze nie wiem kiedy zaczynam pracę :P Nadal jestem zatrudniony w Telestar ale mija mi właśnie okres wypowiedzenia. Od dwóch tygodni jestem na urlopie i będę jeszcze do końca miesiąca (czyli do końca wypowiedzenia) więc mógłbym zaczynać chociażby od jutra. Ale zobaczymy :) Możliwe, że dopiero od maja. Mam pewne obawy, wydaje mi się, że wymagania przede mną stawiane będą dość duże. Ale zamierzam im sprostać :) Mogę się sporo nauczyć bo chłopaki działają na dużą skalę, trzeba współpracować z wieloma osobami przez co musi być bardzo dobra organizacja pracy. Ja natomiast nigdy nie miałem okazji poznać tych wszystkich korporacyjnych systemów współdziałania. Będę musiał się tego wszystkiego nauczyć ale na pewno mi się to w przyszłości przyda.

A więc życzcie mi powodzenia. Mam nadzieję, że obie strony będą zadowolone ze współpracy :)


Pomyłka? Moja żona miała na drugie „Pomyłka” !!

26 marca 2008

Pamiętacie ten kultowy tekst z filmu Killer? :) Ostatnio miałem tak dziwną sytuację, że od razu przypomniał mi się powyższy cytat :) Miałem o tym napisać już wcześniej ale jak zwykle się odwlekło... Ale zacznijmy od początku... :)

Jakby ktoś jeszcze nie wiedział to pracuję zdalnie, przez Internet. Półtora roku temu Telestar kupił ode mnie osada.pl i zatrudnili mnie abym dalej prowadził tą stronę i pomagał w ich innych projektach.

Robota fajna, bardzo dobre warunki pracy (nie muszę zasuwać do żadnego biura, pracuję w domu) i dobrze płatna a jak na warunki mojego miasta to nawet bardzo dobrze płatna.

To była środa ;) Zadzwoniła Pani z kadr z pytaniem czy mógłbym przyjechać do nich następnego dnia bo muszę zdać jakiś test z BHP. Nie ucieszyłem się za bardzo, dopiero co byłem u nich na pewnym spotkaniu a tu nagle z dnia na dzień znowu mam jechać do Warszawy :/ Ale nie ma co odwlekać, zgodziłem się. Dziwne wydało mi się jedynie to, że tak im zależało na tym abym przyjechał jak najszybciej. Jak nigdy...

Zjawiłem się w czwartek kilka minut po godzinie 11. Przyszedł gościu z kadr i okazało się, że gdzieś ktoś nawalił i nie ma testu :/ Ale... Wyjmuje jakiś papierek z teczki i wręcza mi go ze słowami "Tak naprawdę to jest prawdziwy powód Pana wezwania". W nagłówku dokumentu napis "Wypowiedzenie" :)
Czytaj dalej »