niedziela, 10 lipca 2011

Wykorzystanie metodyki Team Focus w projektach Badawczo Rozwojocyh

UWAGA!!. Przedstawione w artykule informacje mają charakter fikcji biznesowo technologicznej i w żaden sposób nie są związane z pracami jakie wykonuje dla mojego obecnego pracodawcy.
Wraz ze wzrostem świadomości informatycznej firm wzrasta w Polsce znaczenie prac badawczo rozwojowych. Stopień wydatków na prace RnD i procentowy udział pracowników w tego typu projektach jest nadal niewielki lecz szczególnie w firmach związanych z nowymi technologiami można zobaczyć duży wzrost inwestycji w tym kierunku. (Firmy te w większości łagodnie przeszły przez kryzys a poczynione oszczędności pozwalają na szukanie przewagi konkurencyjnej poprzez własne badania i prace rozwojowe. Nie bez znaczenia są też możliwości dotacji unijnych , szczególnie dla małych i średnich firm , którym pozwalają nie raz na skokowy wzrost wartości dzięki projektom RnD). Projekty badawczo rozwojowe różnią się znacząco od projektów produkcyjnych , wdrożeniowych. Środek ciężkości tego typu przedsięwzięć zazwyczaj leży poza obszarem protokołu odbioru, budżetu i terminarza. Jak w każdym projekcie są to istotne cechy lecz nie stanowią podstawowego wyznacznika sukcesu i porażki. Projekty RnD mają zazwyczaj charakter problemowy , odpowiedzi na pytanie a produkty pośrednie (takimi jest np. powstałe oprogramowanie czy prototyp) są tylko środkiem do celu. Wyobrażamy sobie sytuację kiedy kierownictwo stawia przed nami pytania np. "Czy opłaca się przenosić nasz system magazynowy do chmury?" , "Jak możemy zwiększyć atrakcyjność i usability naszego interfejsu użytkownika?" , "Czy można wykorzystać technologie 3D w celu zwiększenia atrakcyjności systemu B2B?", "Jakie są możliwości stworzenia w ramach naszej firmy własnej platformy BI" . Są to znakomici kandydaci na prace badawczo rozwojowe. Oczywiście kierownik takich projektów czy R&D Manager muszą poświęcić dużo czasu na doprecyzowanie projektu, określenia jego ram itd. lecz jego sukces to rozwiązanie problemu i odpowiedź na postawione pytanie. Porażką jest jeśli stan naszej wiedzy przed i po projekcie jest taki sam. Przed tworzącym zespół mający zmierzyć się z tego typu zadaniami stają następujące pytania. Jak zorganizować projekt? Jak przygotować zespół? Jak zmobilizować pracowników (analityków , programistów) przyzwyczajonych do określonego sposobu pracy ? Jak pobudzić kreatywność i niekonwencjonalny sposób myślenia? Wydaje się ,że wykorzystanie tylko "tradycyjnych" metod prowadzenia projektów (np. AGILE) IT to zbyt mało. Są one zbyt "systemocentryczne" skupiają się na produkcie a nie na problemie. Szukając odpowiedzi na powyższe pytania trafiłem na książkę "PROJEKT McKinsey - Skuteczne techniki zespołowego rozwiązywania problemów". Dzięki tej lekturze uświadomiłem sobie, że projekty RnD są bardzo bliskie zagadnieniom konsultingu z tym ,że zazwyczaj mamy do czynienia z klientem wewnętrznym jakim jest np. zarząd firmy. Zmieniło się też moje podejście do członków zespołu nie byli oni już tylko programistami, analitykami ale stali się również konsultantami którzy powinni brać aktywny udział w pracach merytorycznych (w dużych korporacjach , organizacja działów R&D może wyglądać zupełnie inaczej ,lecz również i tam od każdego członka zespołu oczekiwana jest większa kreatywność i inicjatywa niż w przypadku typowych zespołów produkcyjnych). Paul N. Friga w "Projekcie McKinsey" przedstawił metodykę TEAM FOCUS , którą z małymi modyfikacjami można znakomicie zaadoptować do projektów badawczo rozwojowych w branży IT. T (talk) czyli jak ustanowić kanały komunikacji w zespole , zarządzać dialogiem interpersonalnym. E (evaluate) jak zespół powinien być oceniany, jak mierzyć postępy prac. A (assist) - wzajemna pomoc w zespole, jak wykorzystać unikatowe cechy i umiejętności członków zespołu. M (motivate) -w jaki sposób motywować zespoł. F(frame) - jak określić problem. O (organize) - jak zorganizować pracę. C (collect) w jaki sposób zbierać informacje. U (understand) - jak zrozumieć zebrane informacje. S (synthesize) w jaki sposób dokonać syntezy wiedzy i ją przedstawić. W następnej częśći artykułu przedstawię szczegółowo poszczególne elementy metodyki na przykładach z branży IT. Postaram się też doradzić na które elementy zwrócić szczególną uwagę a które są specyficzne dla stylu pracy firm konsultinowych jaką jest McKinsey i nie koniecznie muszą znaleźć zastosowanie w projektach IT (chociaż zawsze mogą naprowadzić nas na ciekawy trop i warto im się przyjrzeć).

niedziela, 6 lutego 2011

Targi kariera it

Chciałbym się z wami podzielić wrażeniami z pierwszej edycji targów Kariera it. Odbyły się one w sobotę 05.02.2011 w Warszawie.Zacznę od tego, że każdy zainteresowany rozwojem kariery w nowych technologiach powinien na tego typu wydarzenie się wybrać. Nawet jeśli nie jesteśmy zainteresowani w chwili obecnej zmianą pracy to warto wiedzieć jak wygląda rynek pracy dla informatyków, kto jest poszukiwany na rynku, czego oczekują pracodawcy i jakie miejsce w tym świecie zajmujemy my sami. Wstęp na targi był bezpłatny (wymagał rejestracji na stronie) . Dla uczestników dostępny był parking w bardzo przystępnej cenie, materiały promocyjne i różne gadżety. Niewątpliwym atutem targów były ogólnodostępne wykłady dotyczące: prawnych aspektów świadczenia pracy, procesu rekrutacji, negocjacji płacowych, zakładania własnej firmy i dotacji unijnych. Swoje profile przedstawili też niektórzy wystawcy. Moim zdaniem minusem była dość skromna ilość wystawców (zaledwie kilka firma). Na stronę plusów należy zapisać, że byli to pracodawcy z najwyższej półki: Accenture , IBM etc. Ogólnie odniosłem bardzo pozytywne wrażenia. Była to okazja do zapoznania się z ofertami pracodawców, ich procesami rekrutacyjnymi, wysłuchania ciekawych wykładów i spotkania starych znajomych z branży. Organizatorzy zapowiedzieli kolejne edycje targów w innych miastach. Szczegółowe informacje można znaleźć na stronie: www.TargiKarieraIt.pl

poniedziałek, 10 stycznia 2011

Innowacyjny Silverlight

Podczas pracy w zespole badawczo rozwojowym wielokrotnie spotykałem z koniecznością opracowania "innowacyjnego" rozwiązania, które domyślnie da firmie przewagę konkurencyjną. W tym poście pominę wszystkie kwestie funkcjonalne lecz umieszczę problem w konkretnych realiach biznesowych: Wyobraźmy sobie firmę wytwarzającą oprogramowanie w technologii .NET posiadającą zespół w miarę sprawnych programistów. Część jej oferty stanowią aplikacje desktopowe , część witryny internetowe w ASP .NET. Firma chce rozszerzyć ofertę i dotrzeć do większej liczby klientów. Koszty instalacji, utrzymania , skomplikowanie licencjonowanie ogranicza liczbę klientów aplikacji desktopowych, z kolei ASP .NET daje ograniczoną atrakcyjność i reaktywność interfejsu. Zastosowanie Silverlighta łączy świat desktopowy i internetowy w niespotykanie łatwy sposób. Silverlight nie wymaga wprowadzenia do firmy nowej technologii (wszystko pozostaje w rodzinie .NET), proces developmentu jest bardzo prosty i daje nam pełne możliwości RIA. Podczas prowadzenia prac RnD należy pamiętać, że nawet najbardziej innowacyjny projekt nie zostanie zaakceptowany przez zarząd jeśli nie określimy satysfakcjonującej stopu zwrotu a z wprowadzeniem do produkcji nie zdążymy przed konkurencją. Silverlight daje nam możliwość spełnienia tych wymagań. Potencjalną innowacyjność Silverlighta pokażę na krzywej wartości ( metoda stosowana przez oficerów innowacji i RnD menagerów w celu poszukiwania nowych rozwiązań. Oś pionowa to subiektywna ocena rozwiązania w danym kryterium).


Pokazana krzywa ma charakter bardzo ogólny i sama w sobie nie tworzy żadnej innowacji, ale rozszerzenie jej o cechy specyficzne dla naszego biznesu może wskazać nam bardzo ciekawą drogę rozwoju. Dla każdego biznesu określone Cechy Silverlighta mają inne znaczenie i inaczej wpasowują się w dany projekt. Niestety krzywa ta będzie na bardzo niskim poziomie jeśli zaczniemy oceniać pracę na różnych systemach operacyjnych , urządzeniach mobilnych (tylko Windows Phone), czy coraz popularniejszych wsród "nowoczesnych" menagerów tabletach. (Tabletów na Windows 7 nie widać a wsparcie dla procesorów ARM pojawi się dopiero w Windowsie 8). Silverlight nie jest technologią możliwą do zastosowania wszędzie ale zachęcam do rozważenia jej użycia szczególnie w firmach bazujących na .NETcie, gdzie w sposób łatwy ,tani i przyjemny możemy znacznie zwiększyć atrakcyjność naszych rozwiązań.

niedziela, 9 stycznia 2011

Witam po przerwie.Silverlight ułatwia życie codzienne

Witam po długiej przerwie związanej z rozszerzeniem obowiązków zawodowych.W chwili obecnej oprócz prac projektowo-programistycznych zajmuje się kierowaniem zespołem badawczo rozwojowym. Niektórymi z wielu bardzo ciekawych doswiadczeń zdobytych na tym stanowisku będę chciał się z wami podzielić w następnych postach.
Wracając do Silverlighta....Ostatnio pojawiły się proste ale bardzo ciekawe aplikacje autorstwa Artura Chrusciela dostępne pod adresem http://ai24.eu/. Jest to internetowa galeria zdjęć, kalkulator walut oraz kreator przelewów. Mi szczególnie spodobala się ta ostatnia. Prosta rzecz a cieszy:) . Mimo epoki przelewów online czasami jestesmy zmuszeni wykonać tą nieprzyjemną czynnosć ręcznie. Dzięki aplikacji aiPoleceniePrzelewu24 zrobimy to w o wiele przyjemniejszy sposób.
Aplikacje ai24 możemy również znaleźć na oficjalnej stronie Silverlighta w dziale Showcase.

czwartek, 2 września 2010

SILVERLIGHT w świecie HTML 5

Dzisiaj ukazał się artykuł Brada Beckera (Director of Product Management, Developer Platforms) odnoszący się do przyszłości Silverlighta wobec pojawienia się standardu HTML 5. Autor zwraca uwaga na zależność pomiędzy standaryzacją a innowacyjnością, umieszczając Silverlighta jako produkt wyprzedzający niejako raczkujący standrad HTML 5. Brad zaznacza również ,iż Silverlight znacznie wykracza poza możliwości HTMLa 5 oferując znacznie większe możliwości w następującychj obszarach:
transmisja mediów: transmisja HD, Smooth Streaming ,Live BroadCasr Support,Multicast, Telekonferencje itd.
aplikacje komercyjne i gry:efekty 3d, responsywne oparte o wielowątkowość UI,zbiór kontrolek itd.
aplikacje biznesowe i korporacyjne: ponad 60 wbudowanych kontrolek, wspomagające wysoką produktywność środowiska programistyczne, rozbudowane możliwości wizualizacji danych (wykresy etc.), integracja z COM.
Poza wymienionymi obszarami auto wymienia przewagę Silverlighta w wydajności (wielowątkowość), spójności ( identyczny wygląd na różnych przeglądarkach),zaawansowanie technologii (Silverlight doczekał się już 4 wersji podczas gdy HTML 5 stawia pierwsze kroki), możliwości pracy poza przeglądarką.
Zachecam do zapoznania się z treścią .artykulu .
Moim zdaniem w różnorodnym świecie stron i aplikacji jest miejsce zarówno dla HTML 5 jaki i Silverlighta. Owszem HTML 5 oferuje niektóre cechy aplikacji pluginowych jak flash czy Silverlight i być może z uwagi na swój ustandaryzowany charakter będzie lepszym rozwiązaniem dla stron "popowych" , powszechnie dostępnych, przeglądanych z różnych przeglądarek, systemów operacyjnych itd. Lecz gdy spojrzymy w strone aplikacji biznesowych, czy transmisji wysokiej jakości video (np. wykorzystywancyh w VOD) to Silverlight nadal oferuje znacznie więcej zarówno dla użytkownika końcowego któy dostaje aplikację o bardzo bogatym interfejscie użytkownika jak i dla dostawców rozwiązań IT którym oferuje bardzo wysoką produktywność . Mam nadzieję ,że obydwie technologie nie będa rywalizowały lecz się uzupełniały dając użytkownikom komfort korzystania z nowoczesnych stron i aplikacji internetowych a programistom radość ich tworzenia. Nadzieje te nie wydają się być płonne gdyż gigant z Redmont wspiera zarówno rozwój Silverlighta jak i HTMLa 5

wtorek, 25 maja 2010

Zastosowanie DLR w aplikacjach biznesowych

Proces wytwarzania oprogramowania jest przedsięwzięciem ograniczonym w czasie oraz o ograniczonym budżecie. Jego przebieg zależy od przyjętej metodyki lecz w przypadku dużych projektów jego etapy mają charakter formalny i często są wykonywane przez różne zespoły (np. Podstawowy przebieg: analiza,projekt,implementacja,testy).To sprawia ,iż wszelkie zmiany w założeniach kosztują więcej im prace są bardziej zaawansowane. W przypadku oprogramowania „pod klucz” można takie sytuacje ograniczyć do minimum np. Poprzez odpowiednio przeprowadzoną analizę, prototypowanie etc. Inaczej się sprawy mają przy produktach „pudełkowych”, gdzie wszelka kustomizacja następuje na etapie wdrożenia. Niemożliwe jest stworzenie rozwiązania w pełni uniwersalnego, które spełni wymagania każdego klienta. Dlatego konsultanci potrzebują czegoś więcej niż rozbudowanych opcji konfiguracyjnych, narzędzia które pozwalałoby na etapie wdrożenia zaimplementować specyficzne wymagania klienta bez cofania produktu do działu produkcji i wytwarzania osobnej wersji dla konkretnego klienta co znacznie zwiększyłoby koszty (czasami jest to nieuniknione). Jako projektant oprogramowania musiałem rozwiązać ten problem w aplikacjach napisanych w Silverlight. Z pomocą przyszedł mi DLR (Dynamic Language Runtime) który pozwala używać języków skryptowych w środowisku .NET. Jest to „nakładka” na CLR działająca poprzez refleksję. Obsługuje ona takie języki jak Python czy Ruby. Na prostym przykładzie postaram się pokazać korzyści jakie możemy odnieść udostępniając osobie wdrażającej system możliwość pisania skryptów. Python i Ruby dla platformy .NET mają swoje odpowiedniki IronPython i IronRuby, które są projektami prowadzonymi na codeplex.com. Istnieją dwa sposoby integracji DLR z aplikacją Silverlight. Pierwszy to odwołanie się do obiektów SL w kodzie HTML (poprzez JavaScript) strony hostującej xapa. Druga metoda polega na wykorzystaniu odpowiedniego API w kodzie zarządzalnym aplikacji SL. W moim przykładzie skorzystam z drugiej opcji. Załóżmy ,że implementujemy program do wysyłania faktur. Nasz dział produkcji stworzył bardzo dobrze działającą aplikację, której funkcjonalność zadawala większość klientów. Niestety jeden z potencjalnych nabywców oznajmił nam , że kupi aplikację jeśli data wystawienia będzie automatycznie ustawiania na dzisiejszą a kwota w momencie wysłania będzie przeliczała się według podanego kursu (ps. Przedstawiane wymagania są trywialne mało życiowe , mają na celu tylko pokazanie potencjalnego zastosowania DLR). W przypadku braku narzędzia dla konsultanta/wdrożeniowca musiałaby powstać osobna wersja w dziale produkcji, która musiałaby przejść testy etc. Można tego uniknąć implementując tą funkcjonalność w DLR na etapie w wdrożenia. W przykładzie wykorzystam język IronPython. By rozpocząć pracę należy pobrać odpowiednie biblioteki (Microsoft.Scripting i IronPython) ze : strony projektu . Nasza aplikacja wygląda następująco :

By korzystać z DLR musimy dodać odpowiednie referencje:

Następnie w konstruktorze głównej klasy tworzę obiekty typu ScriptEngine i ScriptScope oraz poprzez SetVariable ustawiam zmienną w DLR odnoszącą się do obiektu TextBoxa. Ostatnią czynnością jest utworzenie skryptu i jego wykonanie. W metodzie podpiętej pod przycisk wyślij ustawiam kolejną zmienną (textbox z kwotą). Oraz wywołuje uruchamiam skrypt mnożący wpisaną kwotę przez wartość kursu.

Po uruchomieniu wpisaniu kwoty 2 i naciśnięciu przycisku dostajemy następujący rezultat:

Jaki widać przy pomocy skryptu DLR udało nam się ustawić wartość domyślną oraz zrealizować prostą logikę przetwarzania danych. Oczywiście projektując system należy przemyśleć w których miejscach tego typu „hooki” będą dostępne dla wdrożeniowca oraz stworzyć warstwę pośrednią udostępniającą odpowiednie obiekty kodu zarządzalnego.

czwartek, 13 maja 2010

Wdrażanie Silverlight w organizacji

Dla wszystkich zainteresowanych Microsoft udostępnil dokument opisujący wdrożenie Silverlighta w organizacji autorstwa David Tesara. Artykul zawiera takie informacje jak: wymagania techniczne, polityka i sposoby instalacji, updaty, zarządzanie aplikacjami out-of-browser, troubleshooting etc. Wszystkich administratorów zarządzającymi sieciami w organizacjach zachęcam do lektury Silverlight 4 Deployment Guide