Czemu nie pisać komentarzy…

Nie będę pisał komentarzy!Czasami, kiedy mówimy o jakości kodu, to pojawia się stwierdzenie „nasz kod jest kiepski, bo nie ma w nim komentarzy”. Powstaje taka intuicyjna równoważność: „dużo komentarzy – dobry kod, brak komentarzy – zły kod”. Ba, idąc tą drogą można nawet wprowadzić metrykę, określającą stosunek liczby komentarzy do liczby linii kodu i zmuszać programistów do osiągnięcia jakiejś magicznej jej wartości. Tylko po co? Czy zawsze komentarze ułatwiają nam analizę kodu? Czy istnieją komentarze, które przeszkadzają zamiast pomagać?

Chciałbym pokazać kilka rodzajów komentarzy, które są według mnie złe – czy to ze względu na ich nieprzydatność, źródło pochodzenia czy po prostu „paskudność”.Czytaj więcej »Czemu nie pisać komentarzy…

Edukacja 2.0

Machine LearningNa Trzeciej Kawie od jakiegoś czasu cisza… aż tu nagle Nowy Rok nastał. Nie chcę tłumaczyć się za kolegów współautorów odnośnie ich milczenia w ostatnim czasie – napiszę więc o sobie, bo tak się składa, że powody mojej publicystycznej przerwy nadają się na materiał do kolejnego artykułu. O co chodzi? Przez ostatnie kilka miesięcy brałem udział w swoistym „eksperymencie” organizowanym przez Uniwersytet Stanforda. Pomysł był w miarę prosty – zorganizować dobre, darmowe i ogólnie dostępne kursy akademickie. Ja brałem udział w dwóch takich „przedmiotach” – było to „wprowadzenie do sztucznej inteligencji” (ai-class.com) oraz „uczenie maszynowe / machine learning” (ml-class.org). Poniżej pokrótce opiszę doświadczenia wyniesione z tych kursów. Nie będę jednak pisał zbyt dużo o samej treści konkretnych kursów. Skupię się raczej na formie i wpływie takich inicjatyw na przyszłość edukacji (szczególnie IT) w ogóle.
Czytaj więcej »Edukacja 2.0

Trzy pytania o Scruma

Coraz więcej firm i zespołów używa metodologii lekkich do wytwarzania oprogramowania. Wśród tych metodologii bardzo popularny jest Scrum. Nie jestem specjalistą od tej Scruma i dlatego chciałbym zadać trzy pytania, na które obecnie nie znam odpowiedzi. Może ktoś bardziej doświadczony w tej metodyce dopisze do nich odpowiedzi?Czytaj więcej »Trzy pytania o Scruma

Będzie Git

Będzie GitSystem kontroli wersji (w skrócie VCS) jest to oprogramowanie, które służy do współdzielenia i śledzenia zmian w plikach oraz pomocy w łączeniu zmian pochodzących z różnych źródeł. W każdym, nawet najmniejszym projekcie, gdzie kilka osób pracuje równolegle nad tymi samymi plikami, niezbędne jest miejsce gdzie wszystkie te zmiany się spotykają – tutaj właśnie do gry wchodzi repozytorium kodu. Nawet jeżeli pracujemy sami, to powinniśmy się zastanowić czy nie chcielibyśmy skorzystać z możliwości śledzenia zmian jakie daje nam VCS.  W tym tekście postaram się przedstawić pokrótce ewolucję systemów VCS i możliwości coraz bardziej popularnego w ostatnim czasie Git’a.Czytaj więcej »Będzie Git

O trudnej sztuce kierowania IT

Dzisiaj publikujemy test pt: „czy wiesz, jak kierować zespołem IT”. Przeczytaj poniższy opis i odpowiedz na pytania na końcu testu.

Ponieważ nasza poprzednia próba napisania programu „Hello, world!” zakończyła się niepowodzeniem, zostało powołanych kilka niezależnych zespołów, które miały wykonać to zadanie. A każdy z tych zespołów ma oczywiście swojego kierownika… Przyjrzyjmy się im dokładniej:Czytaj więcej »O trudnej sztuce kierowania IT

Testowanie Testów

O tym, że testy jednostkowe pisać trzeba i warto już chyba nikogo przekonywać nie trzeba (nieprzekonanych zachęcam do podzielenia się swoimi wątpliwościami). Jednak samo posiadanie testów to oczywiście nie wszystko. Oprócz wspomnianym już na trzeciejkawie zagadnieniu pielęgnacji testów jednostkowych istnieje jeszcze przynajmniej kilka ważnych aspektów tego zagadnienia. Dzisiaj chciałbym zająć się kontrolą jakości testów jednostkowych…

Czytaj więcej »Testowanie Testów

Zapach świeżej kawy: Aparapi – Java na GPU!

OpenCLW poprzednim odcinku mini-cyklu „Zapach świeżej kawy” pisałem o ciekawym wynalazku jakim jest node.js – technologia pozwalająca na tworzenie aplikacji sieciowych (w tym web) za pomocą języka Javascript. Na końcu tego tekstu zapowiedziałem, że kolejny odcinek poświęcony będzie Play! framework. Postanowiłem jednak zmienić nieco plany – głównie ze względu na to, że w międzyczasie pojawiło się coś nowego, co bardzo mnie zainteresowało. Tym czymś jest: Aparapi. Cóż to takiego? W skrócie jest to translator bytecode’u JVM, który produkuje na wyjściu kod OpenCL, który może być wykonany na procesorze karty graficznej (GPU). Co to daje? Oczywiście chodzi o wydajność – odciążenie głównego procesora (CPU) i wykorzystanie faktu, że współczesne procesory graficzne wyposażone są w kilkadziesiąt lub kilkaset „rdzeni” obliczeniowych… które tylko czekają na nasz kod.

Czytaj więcej »Zapach świeżej kawy: Aparapi – Java na GPU!

Hello, world!

W wielu różnych kursach programowania, pierwszym przykładowym programem jest program „Hello world”. Celem tego programu jest po prostu wyświetlenie tekstu na ekranie. Na tej stronie można znaleźć „Hello world” napisane w ponad 400 różnych językach programowania, wliczając w to Brainfuck oraz Whitespace… Ale tak naprawdę to, jak napiszemy ten program, zależy nie tylko od języka programowania – zależy to również od osoby, która go pisze. W praktyce wiele osób podchodzi do pisania „Hello world” – a także do pisania wielu innych, bardziej poważnych programów… – na wiele, kompletnie od siebie różnych, sposobów.

Zobaczmy, jak to tej pracy zabiera się kilka różnych osób…Czytaj więcej »Hello, world!

Jak mierzyć efektywność IT?

EfektywnoscEfektywność – to takie ładne słowo… Wszyscy chcieliby, żeby praca – zarówno ich osobista praca, jak i działanie całej firmy czy organizacji – była efektywna. Wysoka efektywność z reguły związana jest z sprawnym działaniem, brakiem marnowania czasu na niepotrzebne aktywności, skupieniem się na tym co najważniejsze, dostarczaniem właściwych rezultatów czy produktów, wysoką motywacją do pracy, oraz – last but not least – dochodowością przedsiębiorstwa.

To wszystko brzmi pięknie – natomiast kiedy próbujemy odpowiedzieć na pytanie, czy praca naszych działów czy zespołów wytwarzających oprogramowanie jest efektywna, to z reguły pojawia się problem. A jeszcze większy problem pojawia się w momencie, kiedy chcemy tą efektywność jakoś zmierzyć…

Czytaj więcej »Jak mierzyć efektywność IT?