//check if we dont have crap after parsing //there should be function for it or something
Author Archives: Greg
Zespół programistów jest jak maszyna
I nie chodzi mi o to, że można członków zespołu traktować jak trybiki i dowolnie wymieniać. Chyba, że wyobrazisz sobie ręcznie robiony, szwajcarski zegarek, w którym każdy trybik jest długo i dokładnie szlifowany, aby pasował do reszty (wymiana go jest możliwa, ale zdajesz sobie sprawę z kosztów).
Ale wróćmy do głównego wątku. Jeśli nie byłeś nigdy członkiem takiego zespołu, a chciałbyś takim zarządzać, to czytaj uważnie.
Z natury jestem leniwy. Ale jestem dość specyficznym leniem, który nie lubi nic nie robić. Dlatego w ogóle zostałem programistą – lubię automatyzować i ulepszać rzeczy, które są nudne i żmudne do ręcznego wykonywania.
Zatem zaczął mi doskwierać pewien proces. Przy pewnym projekcie dość często musimy aktualizować utrzymywane systemy, które mają kilka instancji(w tej chwili 3, a ma być więcej). Wygląda to mniej więcej tak:
- zaloguj się na serwer
- cd instancja#1
- git pull
- wpisz hasło
- odpal migrację
- cd ../instancja#2
- git pull
- wpisz hasło
- odpal migrację
- cd ../instancja#3
- git pull
- wpisz hasło
- odpal migrację
- TADA!
Serio. Pierwszym krokiem było napisanie skryptu, które te kroki odpala samodzielnie. Zaczęło to wyglądać tak:
- zaloguj się na serwer
- ./update-me.sh
- wpisz hasło
- wpisz hasło
- wpisz hasło
Drugim krokiem było skonfigurowanie GITa tak, aby nie wymagał hasła na niektórych maszynach (przy pomocy kluczy rsa) Proces uprościł się do
- zaloguj się na serwer
- ./update-me.sh
Jaki jest efekt? Pierwszy, który się narzuca to oszczędność czasu. Zakładając, że taki update odbywał się 3 razy dziennie to zaoszczędziliśmy jakąś minutę. Nie wydaje się to rozsądne, gdyż oba zadania zajęły mi kilka godzin. Z księgowego punktu widzenia mamy stratę.
Jednak uważny obserwator mógł stwierdzić, że mamy w tym projekcie instancję główną i “towarzyszące”. W pierwotnym, ręcznym, procesie pozostałe dwie często zostawały w tyle. Rodziło to problemy przy testowaniu i mergowaniu zmian.
Dodatkowo prosty update to częsty update, zatem i testerzy nie muszą się dopraszać, żeby zaktualizować wersje, bo zwyczajnie są w najnowszej wersji.
Wracając do mojej tezy: Zespół to maszyna, programiści to (nie tak łatwo wymienialne) trybiki, procesy to miejsca, gdzie trybiki i inne części się ścierają. Niedoświadczonemu operatorowi może się wydawać, że przestoje spowodowane oliwieniem maszynerii to stracone pieniądze. W końcu przez te X godzin mogła wyprodukować Y $$$.
Refaktoring, automatyzacja i inne usprawnienia oliwią procesy w zespole programistów. Gdy nie ma niepotrzebnych tarć można rozwinąć optymalną prędkość, a awarie są mniej prawdopodobne.
Różne różności…
W prawdzie nie zdarza mi się pisać o marketingu internetowym etc., ale zebrało mi się kilka linków, którymi chciałbym się z Wami podzielić.
Ciekawa analiza czterech gigantów: Apple, Google, Microsoft i Google.
I dlaczego Amazon jest na dobrej drodze, aby osiągnąć dominację na rynku?
Pozwolę sobie zacytować charakterystykę wielkiej czwórki z tego artykułu
Why Amazon will lead the big four:
- Apple sells content and writes software to sell hardware. It is a hardware company.
- Microsoft sells content and makes hardware to sell software. It is a software company.
- Google sells or gives away content and software to sell advertisements. It is an ad sales company.
- Amazon sells or gives away hardware and software to sell content. It is an online retailer — a content
company.
Interesujące przemyślenia dotyczące technologii flash i jej przyszłości
Czy flash ma przyszłość?. Co myśli o tym Steve Jobs i Dean Hachamovitch (jeden z leaderów zespołu w Microsofcie)?
Bardzo ciekawy fragment, który oddaje filozofię Apple, jako całości:
If developers grow dependent on third party development libraries and tools, they can only take advantage of platform enhancements if and when the third party chooses to adopt the new features. We cannot be at the mercy of a third party deciding if and when they will make our enhancements available to our developers.
Przyznam się, że też za flashem nie będę płakał. Nigdy nie miał sensownego wsparcia na platformy linuxowe. Do niedawna domyślnie każdy element flash miałem zablokowany (flashblock)…
Dla tych, którzy lubią społeczne aspekty sieci i marketingu…
Poradnik jak przygotować skuteczną infografikę. Jeśli przygotujesz jakąś przy pomocy tych wskazówek – pochwal się proszę w komentarzu.
Dla estetów i całej reszty
Ci pierwsi dostaną argumenty za, ci drudzy mają okazję przekonać się dlaczego jest istotna i skąd czerpać odpowiednią wiedzę o typografii.
I na koniec, żeby było coś o projektach stricte informatycznych.
Kto rozwija plany testów dla oprogramowania open-source? Kto aktualizuje zrzuty ekranów w instrukcji użytkownika i pomocy online? Oraz kto tłumaczy dokumentację na polski i turecki? Kto weryfikuje, czy dana funkcjonalność nie łamie Amerykańskiej Ustawy o Niepełnosprawnych, bądź Niemieckich Praw odnośnie Prywatności? Wtedy, gdy pracowałem nad Linuxem, odpowiedzią było “Nikt. Nie ma czegoś takiego jak plan testów, drukowana instrukcja użytkownika, jedyną dokumentacją, jaka istnieje, to ta po angielsku, oraz nikt nie przejmuje się zgodnością z jakimikolwiek prawami.” Może coś się pozmieniało od tamtego czasu.
Dowiedz się dlaczego open source’owi lżej na sercu?
Przy okazji (jeśli dotarłeś aż tutaj, to znaczy, że artykuł jest wystarczająco ciekawy)
Noszę się z zamiarem kupna kindle’a (nie tabletu), żeby między innymi mieć szybki dostęp do dobrej literatury branżowej (czyli anglojęzycznej) i artykułów takie jak te powyżej. Zatem jeśli mój blog wydał Ci się pomocny, jeśli wydaje Ci się, że jest coś wart – możesz rozważyć zafundowanie mi bonu podarunkowego amazona. 1$ jest super kwotą – możesz zapłacić na przykład z paypall’a. Możesz mi go wysłać na adres podaruj.mi.kindle@gmail.com :)
Jeśli masz blog, to w wiadomości umieść swój adres – umieszczę go na swojej stronie, jeśli zechcesz.
Będę też zachwycony, jeśli dołączysz też jakąś osobistą wiadomość od siebie.