Temat: Cała prawda o programistach
Ależ przyjemność nadal jest! I to w różnych sytuacjach. Tak dla przykładu pokażę, jakie to dla mnie są "źródła radości z tworzenia". Przecież właśnie dlatego zostałem programistą - aby mieć z tego nie tylko pieniądze, ale ponieważ to
lubię :)
- skomplikowana kontrolka, która po tygodniach mozolnej pracy wyświetla i pozwala edytować złożone dane nie tylko schludnie i czytelnie, ale jest w pełni obsługiwana z klawiatury, realnie przyspiesza wprowadzanie danych. W moim przypadku to wprowadzanie wszelkiego rodzaju wyników badań klinicznych i laboratoryjnych (jedna kontrolka, wiele typów wyników i zachowań edytora). Piękny przykład wykorzystania wzorca model-widok-kontroler.
- system analityczny, który przez COM rozmawia z silnikiem obliczeniowym i udostępnia jego funkcjonalność lekarzowi, który za pomocą webowego GUI zadaje kryteria analizy, pozwala tworzyć ich scenariusze. Może mało odkrywcze i algorytmiczne, ale cieszy oko :) Znów MVC, do tego wdzięczny przykład do nauki modelowania obiektowego - hierarchia testów i procedur, renderery ich wyjścia, providery i selektory danych. Gdy straciłem większą część tego kodu wskutek błędu, kilka dni nie umiałem dojść do siebie. Wziąłem nawet na tę okoliczność urlop w pracy (na szczęście był to projekt "na boku" i już sprzedany).
- wspomniana przeze mnie wcześniej
procedura (jedna z wielu różnych), wyliczająca dłuuugi szereg statystyk opisowych w podgrupach w SQLu. Można się tutaj wyżyć, że hoho! Trzeba np. liczyć momenty zwykłe i centralne i wykorzystywać je później, by nie liczyć iks razy tego samego. Trzeba zaimplementować test normalności rozkładu + tablice wartości krytycznych do niego, a także wartości statystyk dla przedziałów ufności, można nawet wyliczać pradopodobieństwa... Niby tak banalnie brzmi, ale gdy pierwszy raz odpaliłem tę procedurę na danych, mogłem natychmiast zdefiniować selectem-z-groupbajem próby i czysty (bez żadnych DLLek) "dynamic SQL" wyrzucał mi listę pokaźnych statystyk z badaniem normalności rozkładu, przedziałami ufności, średnimi (windsorską, uciętą), błędami, odchyleniami (dla średniej i mediany), kurtozą, etc. plus kontrola poprawności wprowadzonego selecta, miałem łzy w oczach :) Mam w profilu zrzut ekranu z jej działania, jestem z niej prawdziwie dumny - a o to przecież chodzi :)
- bogaty w funkcje klient Centrum Kształcena Dystansowego przy "moim" zakładzie na uczelni, pisany w... uwaga! Macromedia Authorware (graficzny "język programowania" dla celów prezentacyjnych i symulacyjnych) oraz MFC. Własny parser własnej gramatyki (scenariusze kursu i powtórek), komunikacja międzyprocesowe (Boże, ileż nocy nad książką Petzolda i innymi cegłami... tłumaczenie z rosyjskiego tutoriali o DDE, nauka TCP/IP i COM). 3 bite lata pisania w skrajnie różnych środowiskach. Opis do tego (instrukcja obsługi + draft licencjatu) mam także w profilu. Myślę, że jak na studenta, nie była to mała robota.
- frontend do konsolowego frameworka do komunikacji z telefonami Nokia. Ktoś by rzekł - a cóż to za problem napisać GUI? Parę kontrolek... tak, ale trzeba było aplikację konsolową napisaną w C++ przerobić tak, by pracowała z GUI w .NET ("marszaling", alokacja zasobów i zarządzanie nimi), drążenie w kodach źródłowych... wcześniej przed tym czytałem wyjście konsoli i parsowałem je, bo nie mogłem sobie poradzić z DLLką :)Screeny do tego - także w profilu. Sporo kadry z zakładu się tym bawiło :) Działa do dzisiaj - jak ktoś ma stara Nokię, kabel FBUS (łatwo zmajstrować), to można sobie zrobić alarm z powiadomieniem na SMS albo sterowanie urządzeniami za pomocą SMSa. Pewnie, że są gotowe moduły i to nie wymagające komputera (z Windows) do pracy, ale w 2004r. było to ciekawe rozwiązanie :)
- napisany podczas stażu system ewidencji pojazdami i kierowcami... Już kilka lat minęło, nabyłem wielu umiejętności, a nadal mi się podoba :) Spora aplikacja, wydruki na formularzach klienta, złożone parametryzowanie, pełny instalator, który wyszukiwał po sieci serwery SQL, pełna administracja, nowoczesne GUI (jak na tamte czasy). Wszystko to w 2 miesiące per jedna osoba... do tego dokumentacja użytkownika. Miałem gdzieś, ile za to dostanę - dopieszczałem ten system nie śpiąc po nocach, bo to było "moje dzieło" :) Pasja.
- obecna aplikacja, flagowy produkt firmy, w której pracuję, system generowania dokumentacji elektronicznej, jej synchronizacji między jednostkami ZOZu oraz backupu. Chociaż nie ja to programuję, tylko duże centrum produkcyjne ze świetnym specjalistą na czele, to jednak jestem jednym z jej "głównych ojców" pod względem analitycznym - przynajmniej w zakresie EHRa i wydruków. Zanim przekażę centrum produkcji analizę z jakąś nową kontrolką - sam ją najpierw piszę, aby oni nie musieli przeczesywać netu i tracić czasu na "kombinowanie". Długo walczyłem o to, aby wolno mi było to robić (programować analitykowi), szef z bólem serca poszedł mi na rękę i nadal mam swój świat :) I tak to potem biorą na tapetę specjaliście lepsi ode mnie, ale mają chociaż punkt wyjścia - i nie narzekają :) A jakie cuda można robić za pomocą microsoftowej kontrolki raportów (RDLC) - takie wydruki, że ha! Siadam do tego nie poczuciem wykonania "jakiejś pracy", tylko, kurde, z radością :)
Właśnie to wszystko, co mam w profilu, to chęć podzielenia się własną radością z tego, czemu poświęciłem tyle czasu, ile jeszcze żadnemu projektowi zawodowemu (szefie, nie czytaj tego!). To są czasy nauki wielu technologii: z jednej strony Turbo Pascal (i moja biblioteka procedur, którą wykorzystywano jeszcze kilka lat na uczelni - oczywiście bez mojej zgody i wiedzy :]), assembler, MFC, z drugiej początki .NET (1.0, kto pamięta?)...
... to tylko kilka przykładów z niemałej ich liczby. Nie ma tu co prawda wyższej matematyki i algorytmiki, ale nie ma też bezmyślnego wstukiwania kodu: utwórz dataset, wyklikaj kolumny, nazwij je, zbinduj z listą, zrób refresza, liście ustaw dokowanie na fill, nacisnij F5, ciesz się...
Aby jednak nie poruszać się tylko w zakresie nowości - pisałem na studiach w assemblerze na zaliczenie programik - nic wielkiego - przesyłanie pliku przez RS232. Postawiłem sobie wyzwanie (opłaciło się potem!), że nadajnik i odbiornik będą TSRami, że będą odporne na błędy transmisji, że będą sumy kontrolne, wyświetlanie czasu do zakończenia operacji... że będą definiowalne skróty klawiszowe... urosła z tego spora aplikacja, a mnie cieszyła każda dołożona funkcjonalność. No i był to początek kariery na zakładzie, z którym związałem się na 3 kolejne lata :) W każdym razie zaliczenie już miałem w kieszeni, stukałem kod - jak w każdym przypadku -
just for fun.
A przecież o to chodzi :)
Dziś jestem bardziej analitykiem danych, analitykiem funkcjonalnym i inżynierem systemowym, niż programistą (pod względem % wykorzystania czasu), ale nadal czasem siadam do kompilatora w pracy, chociaż mnie od tego szef odciąga(ł) prośbą i groźbą - ale to jest moja pasja. Jak przestanę programować, to za pół roku wypadnę totalnie z obiegu. Już widzę, że wypadłem, gdy czytam o nowych technologiach na tej grupie, o programowaniu aspektowym... już jestem daleko w tyle... Ale ciągle w maratonie!
Chociaż nie czytałem Dijkstry :)
Adrian Olszewski edytował(a) ten post dnia 12.01.10 o godzinie 10:39