Spory "percentaż" projektów informatycznych ma to do siebie, że ostatnie tygodnie ich trwania to wielka akcja gaszenia pożarów. Im większy projekt tym większa na to szansa. Termin się zbliża, liczba bugów rośnie, lista ficzerów do zaimplementowania nie chce się zmniejszać, a pracować więcej się po prostu nie da. Rozwiązanie wydaje się banalne: skoro aktualny zespół nie radzi sobie z nawałem zadań to dorzućmy do niego kilka osób! O ile w pewnej fazie projektu ma to sens (raczej bliżej ...
[More]
Jeżdżę sobie ostatnio po TFSie jak Heniek po łysej kobyle, ale żyć z tym trzeba. Poniżej kilka tipów, które uczyniły moje życie trochę lepszym. Z przeogromną wdzięcznością poczytam w komentarzach kolejne sugestie dotyczące dalszych uproszczeń. 1. git-tfs https://github.com/git-tfs/git-tfs Ten projekcik zdecydowanie na pierwszym miejscu. Ale ostatnio o nim się osobno rozpisałem. 2. Telerik TFS Work Item Manager http://www.telerik.com/agile-project-management-tools/tfs.aspx Narzędzie mające ...
[More]
Jak da się zauważyć - mam teraz na tapecie TFSa. I jeśli z całego tego zamieszania wyniknie choć jedna skonwertowana na gita osoba - z radości urządzę sobie kąpiel w kozim mleku i szampanie. Kilkukrotnie już wspominałem, że życie z TFS wcale nie musi oznaczać życia bez Gita. Wręcz przeciwnie - życie z TFS powinno "implicitly" kojarzyć się z wykorzystaniem Gita w celu obejścia największej porażki TFSa, czyli komponentu zajmującego się kontrolą wersji. Można to zrobić bardzo prosto. A ...
[More]
[ uwaga: w tym poście piszę o aspekcie kontroli wersji w TFS, a nie o TFS jako całym kombajnie do zarządzania projektem; powinno to być oczywiste, ale mimo wszystko zaznaczam żeby nie było zażaleń ] Programiści znający oba rozwiązania, zobaczywszy tytuł posta, mogą się tylko uśmiechnąć i mruknąć: "a o czym tu w ogóle pisać? we wszystkim!". Jednak osoby znające TYLKO TFSa nie chcą, złośliwcy, wierzyć na słowo dopóki nie zobaczą. No cóż, nie będą błogosławieni, ich strata. Postaram się...
[More]
Tak jak wspominałem w swoim rocznym podsumowaniu - wraz ze zmianą cyferek w kalendarzu znacznej zmianie uległa moja sytuacja zawodowa. Co za tym idzie - musiałem przeprosić się ze znienawidzonym TFSem. Właśnie minął mój pierwszy tydzień z tym narzędziem i postanowiłem zebrać swoje dotychczasowe wrażenia. Kontekst Nie jest to moje pierwsze TFSowe randewu. Wcześniej korzystałem z niego dwukrotnie - zawsze babrając się jako programista tylko w kontroli wersji, bez łorkajtemów, uzerstoris etc. Efe...
[More]
Rozpoczyna się właśnie piąty rok życia niniejszego bloga i mojego online'owego, porządnego, kulturalnego i podobno bardzo sztucznego;) wcielenia. Przy tej okazji, jak zwykle (2009, 2010, 2011) - pora na rzut jednym okiem w przeszłość, a drugim w przyszłość. Efekty takiego makabrycznego zeza co rok sobie czytam i jest to lektura zwykle dość miła, więc i tym razem nie będzie inaczej. GO! 2011 Prywatnie: zdecydowanie najważniejszym faktem minionego roku było żonywzięcie, które to wydarzeni...
[More]
[ten post jest częścią mojego minicyklu o testach, pełna lista postów: tutaj] Przeglądając kod wielu projektów, zarówno komercyjnych jak i open source, można spotkać całą masę konwencji nazewniczych stosowanych do klas i metod testujących. Dzisiaj przedstawię kilka moich zasad w tej materii wraz z uzasadnieniem. Wychodzę z założenia, że bardziej niż konwencja, standard czy "przyjęta dobra praktyka" liczy się czytelność pisanego kodu i łatwość powrotu do niego nawet po kilku miesiącach...
[More]
Na dzień dzisiejszy wybierając "mocking framework" stawiam właśnie na fakeiteasy. Ma ona jeden ciemny zakamar, w którym można nieźle pobłądzić... a jest to testowanie wywołania settera. Załóżmy, że mamy jakiś interfejs wymuszający na implementacjach posiadanie właściwości Age: 1: public interface IHaveAge
2: {
3: int Age { get; set; }
4: }
I test "jakiejś klasy" przetwarzającej implementacje tego interfejsu, mającej ustawić wartość wspomnianej wł...
[More]
Niedawno po raz pierwszy w życiu musiałem mockować implementację interfejsu IEnumerable<T>. Chodziło o jakieś dziwne struktury używane wewnętrznie przez FIM. Problem polegał na tym, że obiekt mockowanego przeze mnie typu zwracał kolekcję innych obiektów. Ta kolekcja była właśnie IEnumerable<X>... ale nie mogłem stworzyć jej instancji, ponieważ wspomniana klasa XCollection była abstrakcyjna, a jej implementacja siedziała zaszyta gdzieś wewnątrz jakichś dllek. Jednocześnie chciałem prz...
[More]
[ten post jest częścią mojego minicyklu o testach, pełna lista postów: tutaj] Odpowiedź na pytanie postawione w tytule to temat nie na posta, ale na całą (może nawet niejedną) książkę. Poniżej postaram się nakreślić najważniejsze według mnie aspekty tworzenia testów... chociaż na pewno lista ta nie jest kompletna. Aha, no i nie jestem w stanie podać niezawodnej recepty na "dobry test". Zgłębiam temat od dobrych kilku lat i sam ciągle się uczę, więc cudów nie ma - praktyka i identyfik...
[More]
[ten post jest częścią mojego minicyklu o testach, pełna lista postów: tutaj] Moment pisania testów jest nierzadko kluczowy dla zmaksymalizowania efektywności całej procedury. Po kilku chwilach zastanowienia da się wyróżnić kilka najważniejszych etapów tworzenia oprogramowania, które z reguły są odpowiednią chwilą do implementacji testu. TDD Oczywisty pierwszy punkt w temacie "kiedy pisać testy?" brzmi: "przed napisaniem właściwego kodu". W praktyce, na co dzień, sto...
[More]
[ten post jest częścią mojego minicyklu o testach, pełna lista postów: tutaj] W komentarzach do ostatniego posta wywiązała się dyskusja na temat "a co z metodami prywatnymi?". Odpowiedź najkrótsza z możliwych brzmi: NIC. Zainteresowanych odsyłam do tamtejszych wypowiedzi, a w niniejszej notce postaram się zawarte tam myśli rozwinąć. Zaczynając przygodę z testami jednostkowymi często stawałem przed dylematem "jak mam przetestować funkcjonalność z metod prywatnych?". Sporo si...
[More]
Dzisiejsze krótkie kazanie dalej w temacie testów. Krótkie, bo... nie mam nic do dodania do przytoczonego cytatu. Częstym argumentem przeciwko inwestowaniu w pisanie testów jest "ale to zajmuje dużo czasu!". Nie ma co się rozwodzić i wymyślać mądrych mądrości, poniższe pytanie mówi wszystko: Would you rather Test-First or Debug-Later? Źródło: Robert C. Martin (z Twittera @CodeWIsdom)
[ten post jest częścią mojego minicyklu o testach, pełna lista postów: tutaj] Na tak postawione pytanie aż chciałoby się odpowiedzieć: "testować wszystko, you fool!". Życie uczy jednak, że takie podejście jest bardzo niepraktyczne i na dłuższą metę nie ma sensu. Dążenie do pokrycia 100% kodu mija się z celem i jest po prostu stratą czasu. O powodach pisania testów pisałem na początku tego cyklu. Są jednak miejsca, w których koszt napisania testu jest bardzo duży, a jego wartość - zni...
[More]
[ten post jest częścią mojego minicyklu o testach, pełna lista postów: tutaj] Po dość długiej przerwie wracam do tematu testów jednostkowych. Kombek zainicjuję krótkim zahaczeniem o mocki, które opisałem w poprzednim poście cyklu. Poruszyć chcę dzisiaj dwie kwestie. Kwestia 1: terminologia Niedawno na blogu Piotra Zielińskiego pojawił się post opisujący różnice pomiędzy terminami określającymi to co ja rozumiem przez "mock". Przypomniało mi to czasy, gdy starałem się zgłębiać defini...
[More]
Każdego to czasami dopada. Marazm, lenistwo, niechęć do robienia czegokolwiek ponad wymagane minimum. Jeśli jest to wybór świadomy i zasłużony - to jest dobrze, wtedy mamy po prostu "relaks". Gorzej, gdy wpadnie się w niekontrolowaną pętlę nicnierobienia. Gdy wydaje się, że nie ma z niej wyjścia i mimo narastających wyrzutów sumienia tapla się człowiek w nieróbstwie, bardziej gryząc się aktualnym stanem rzeczy niż ciesząc z możliwości trwania w nim. Ja w coś takiego po raz kolejny wsi...
[More]
Mój ostatni post na temat krzesła Grospol Ioo spotkał się z wielkim odzewem i zainteresowaniem. Nie wiem czy przypadkiem nie jest to post z największą jak do tej pory liczbą komentarzy uzbieraną w tak krótkim czasie. Dzisiaj zatem kontynuacja tematu, tyle że z innym bohaterem w roli głównej. I tak jak zwrócił uwagę Tomek-komentator :) - postaram się w miarę rzetelnie przedstawić swoje trzytygodniowe już wrażenia z używania nowego krzesła, żeby nikogo w pole nie wywieść ani mętnego obrazu nie nam...
[More]
O tym, że krzesło jest bardzo ważnym elementem wyposażenia stanowiska pracy programisty, przekonywać nikogo nie trzeba. Ja od lat eksperymentuję z różnymi siedziskami, i jest... tfu, coraz gorzej. Z utrzymaniem pozycji, z bólem pleców, z trzeszczeniem stawów, ze strzykaniem w stopach i kolanach - starość nie radość. I coraz ciężej wysiedzieć na stanowisku te 9-15 godzin dziennie, w zależności od potrzeb i chęci. [Wtrącenie uprzedzające rehabilitanckie porady pojawiające się zawsze gdy poruszam ...
[More]
Tak jak rok temu, tak jak dwa lata temu, wreszcie tak jak trzy lata temu (ale ten czas leci, co?) - uczestniczyłem w konferencji MTS Microsoft Technology Summit 2011. I wrażenia swe w poście niniejszym pozwolę sobie zamieścić. Ogólnie Sam początek przygody z tegorocznym MTSem był raczej dość średnio imponujący. Po zobaczeniu pierwotnego kształtu planowanych sesji - szczena mi opadła. I niestety... bynajmniej nie z zachwytu. Zwykle w latach ubiegłych było tak, że patrząc na wiele sesyjnych sl...
[More]
W niedawnym poście dość wylewnie przedstawiłem swoją freelancerską sytuację sprzed kilku tygodni/miesięcy. A co stało się potem? Pytało mnie już o to (także na MTS) sporo osób, więc napiszę publicznie, chociaż pewnie większość Czytelników ma to głęboko...:). Potem, podczas mojego 5-tygodniowego bezrobocia i bezskutecznych poszukiwań interesującego projektu "od zaraz", odezwał się do mnie Gutek (thx!) z informacją, że ktoś szuka programisty i czy nadal jestem "do wzięcia". B...
[More]