Programista jest jak pisarz.

Myślałem już o tym, już wcześniej. Natomiast dopiero cytat przeczytany ostatnio w jednej z książek Stephena Kinga dotknął mnie tak mocno, że zrozumiałem jak bardzo jesteśmy do siebie podobni.

Tylko… nie wiem… no… siedzenie i klepanie w klawisze jakoś przestaje cię bawić. Tracisz ostrość widzenia. Nie kręci ci się w głowie z radości, kiedy opowiadasz tę historię sam sobie.
A potem przychodzi najgorsze: pojawia się nowy pomysł, czyściuteńki, świeżutki i lśniący, jak z jakiegoś salonu pomysłów. Żadnej rysy, żadnego, choćby najmniejszego zadrapania. I niespieprzony przez ciebie… przynajmniej na razie…

Co ciekawe wypowiada je sam Stephen King, jako bohater książki i jako jej twórca. Chcecie dowiedzieć się jak to możliwe? Zachęcam do lektury cyklu “Mroczna wieża”, zaczynając oczywiście od tomu “Roland”.

Wracając do tematu… Tacy ludzie jak programiści, pisarze, malarze (może już troszkę mniej) mają świetną pracę, którą mogą wykonywać zarówno w pracy jak i w domu, do jej wykonywania nie potrzebne są żadne drogie i skomplikowane (dla nich) narzędzia. Tak na prawdę zarabiają, wymyślając historie. Pisarz wymyśla opowiadanie i zapisuje je w swoim edytorze tekstowym, malarz wymyśla historie i uwiecznia ją na płótnie, programista wymyśla historie i za pomocą linijek kodu sprawia, że ta historia ożywa, tak właśnie jest zaczyna ona żyć własnym życiem. Mało tego historia może opowiedzieć się na kilka różnych sposobów w zależności od tego co zrobi użytkownik. Tutaj wchodzimy już w trochę inną ścieżkę, mianowicie tworzenie gier komputerowych, ale nawet pisząc prosty program robiący notatki, wymyślamy jakieś historie.

  1. Użytkownik kliknie w przycisk nowa notatka, wtedy pojawi się nowa strona umożliwiająca tworzenie notatek.
  2. Data wykonania zadania jest starsza niż data teraźniejsza, notatka zmieni kolor na czerwony.

Przedstawiłem tu szczegółowy zapis naszych pomysłów (tak zwane user stories), ale przypomnijcie sobie, kiedy ostatnio wpadliście na genialny pomysł zrobienia jakiegoś programu i opowiadaliście o tym komuś. U mnie przeważnie wygląda to tak, że siedzimy w pubie po drugim albo trzecim piwie i wtedy zaczynają się opowieści o tym jakie to wspaniałe pomysły wpadły nam do głowy przez ostatni miesiąc…

Stary i wtedy wpadłem na ten genialny pomysł… Pomyśl tylko, program będzie łączył OneNote, z zadaniami w Outlooku. Dodatkowo kiedy użytkownik stworzy nowe zadanie na całym ekranie pojawią się fajerwerki. Będzie mógł dostawać przypomnienia na telefon o zbliżającym się zadaniu, a po wykonaniu zadania w głośnikach będzie słyszeć “We Are The Champions”, to pomysł na grube miliony.

Zaczynamy opisywać główne wątki naszej aplikacji, to na czym będziemy bazować pisząc tak zwane zapychacze…

O genialnych pomysłach programistów pisał już Maciej Aniserowicz na swoim blogu. Jeśli potraktujemy program jak książkę to tak właśnie jest, to tak właśnie jest, że niektóre zaczynamy z wielkim zapałem, po czym porzucamy, bo projekt stał się nudny albo za dużo już nabroiliśmy i nie wiemy jak z tego wyjść. Ewentualnie wpadł nam nowy pomysł, stwierdziliśmy, że jest lepszy od ostatniego, a tak na prawdę po prostu przeraża nas ogrom ostatniego przedsięwzięcia…

Zarówno pisarz jak i programista zarabiają wymyślając bajki, obaj mogą pobawić się w boga tworząc coś z niczego i wydaje mi się, że to najwspanialsza część tej pracy. Wspaniałe uczucie, kiedy na ekranie monitora zaczyna się pojawiać coś co sam sobie wymyśliłeś i inne osoby mogą to zobaczyć. Przeważnie działa tak jak mu kazałeś, zdarzają się natomiast momenty kiedy się przeciw tobie buntuje i robi coś po swojemu… wiesz jednak, że to tylko dlatego, że ty coś źle zrobiłeś.

Singleton w trzech linijkach

Mówi się, że singleton to najprostszy i jeden z najprzydatniejszych wzorców projektowych. Coś w tym jest, przydaje się zwłaszcza w aplikacjach mobilnych, gdzie nie zawsze możemy przesyłać do innej strony cały jej content. Przydaje się wtedy obiekt, który współdzieli content stron. Możemy to również uzyskać poprzez statyczny obiekt w klasie, natomiast dzięki stworzeniu singletonu nie musimy robić wszystkich metod i pól statycznych, a używanie go później nie różni się niczym od używania zwykłego obiektu. Zastosowanie tego wzorca posiada również inne plusy, ale chciałbym się skupić bardziej na jego implementacji.

Pisząc go po raz n-ty, z małą pomocą ReSharpera udało mi się go streścić do 3 linijek, a wygląda on następująco:

class MySingleton
{
 private static MySingleton _instance;
 public static MySingleton Instance { get { return _instance ?? (_instance = new MySingleton()); } }
 private MySingleton() { }
}

Pobranie instancji singletona wygląda tak:

var mySingleton = MySingleton.Instance;

Jeśli chodzi o inne wzorce projektowe to polecam książkę “Wzorce projektowe”, Bandy Czworga. Podstawową literaturę dla każdego programisty.

Kindle – to się opłaca

Od kilku miesięcy jestem szczęśliwym posiadaczem jednego z urządzeń firmy Amazon, który podbił świat. Muszę się przyznać, że na początku byłem nieco sceptycznie nastawiony do tego urządzenia, bo co to za czytanie książki bez zapachu papieru i przewracania stron, bez fizycznej rzeczy, która leży w biblioteczce i co jakiś czas błaga o zebranie z niej kurzu, który się nagromadził.

Oczywiście czytałem wiele ebooków, przeważnie na komputerze, co było strasznie niewygodne… Czasami pozycja w jakiej czytałem te książki błagała o pomstę do nieba. Jeśli jednak chciało się przeczytać książkę, która jeszcze nie wyszła w wersji papierowej nie było innego wyjścia.

Po przeczytaniu już kilku książek na Kindle mogę się co nieco wypowiedzieć. Tak na prawdę moje odczucia mogłyby się streścić w jednym zdaniu, a nawet słowie… Postanowiłem jednak trochę bardziej się rozpisać o zaletach tego urządzenia.

Bardzo wygodny

Samo czytanie książek, jest o wiele wygodniejsze niż to było w wypadku zwykłych książek, przede wszystkim dlatego, że można czytać leżąc w łóżku bez potrzeby opierania głowy o rękę na co drugiej stronie lub obracanie się z boku na bok. Można położyć sobie Kindle i czytać bez przejmowania się czy to parzysta czy nieparzysta strona.
Gdyby tylko jeszcze można było podłączyć zewnętrzny przełącznik stron, tak żeby można było je przełączać nie wyciągając ręki spod koca to bym było super! 🙂

Tańsze książki

Jeśli chodzi o cenę, to wiadomo, że tańsza będzie wersja, która od wydawnictwa wymaga wysłania odpowiedniej wersji na maila, niż ta, która wymaga ścięcia paru drzew, druku, oprawy, magazynu i wysłaniu książki kurierem do klienta. Niestety ceny ebooków nie są tak tanie na ile można się było tego spodziewać.


Przeważnie jest to różnica rzędu 10zł (10$ jeśli książka kupowana zagranicą). Natomiast o wiele łatwiej znaleźć jakiegoś dobrego ebooka do kwoty 40zł, niż książki drukowanej.

Oszczędność miejsca

Szczególnie jeśli ma się mały pokój z czasem nadmiar książek zaczyna trochę przeszkadzać. Oczywiście fajnie jest mieć całą ścianę zawaloną książkami, natomiast jeśli ktoś nie ma na to miejsca lub nie kręcą go takie ozdoby, posiadając Kindle jedyne miejsce jakie musi poświęcić to to na swoim dysku.

Miejsce w pokoju to nie jedyne miejsce jakie oszczędzamy. Dodatkowo dostajemy sporo miejsca w swoim plecaku lub torbie. Nie trzeba już dźwigać 1000 stronicowych tomów i taszczyć ich ze sobą cały dzień, mimo, że na czytanie ich poświęcimy może 20 do 40 minut.

Brak klimatu

Niestety minusem takiego rozwiązania jest to co mówiłem na początku, czyli brak klimatu jaki towarzyszył czytaniu książek. Najlepiej tych starych, których zapachami przesiąknięta jest każda biblioteka. Zawsze jednak możemy wziąć jakąś starą książkę i zrobić z niej etui na naszego Kindle zostawiając kilka stron, wydających ten charakterystyczny zapach 😉

Podsumowując

Muszę przyznać, że odkąd dostałem swojego Kindle, jestem od niego uzależniony. Kiedyś czytałem dużo książek, potem zaczęło mi brakować czasu, a teraz znów zaczynam wracać do tego co wcześniej. Dlatego polecam bardzo wszystkim inwestycję w to urządzenie, na pewno się zwróci, nawet jeśli nie w formie pieniędzy, to w ilości stron, które zdążycie przeczytać jadąc do szkoły lub pracy autobusem.