Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Nieco przemyśleń o dzisiejszym oprogramowaniu

Do czego dziś służy oprogramowanie
Pierwsza odpowiedź, która nasuwa się na myśl, to: "do wszystkiego". Ciężko temu zaprzeczyć, gdyż jest to sama prawda. Naszymi komputerami steruje oprogramowanie. Dekoder telewizji satelitarnej posiada swój system napisany w np. Javie. Nawet w samochodach, i to tych wcale nie takich nowych, mamy komputery pokładowe z programami pracy rozrządu. Oprogramowanie jest wszędzie. Ale czy naprawdę służy ono nam?

Dobro

Bynajmniej nie chodzi tu o odwieczną walkę dobra ze złem. Czym jest więc dobro? To jakiś obiekt albo jakaś wiedza, dające nam jakąś korzyść. Ot, na przykład, system operacyjny pozwala nam sterować komputerem. Jest dobrem, zakupionym np. wraz z komputerem.

Oprogramowanie, jak każde dobro, ma pewną cechę charakterystyczną. Autora. I tu jest sedno sprawy. Teraz ponownie pytam: do czego dziś służy oprogramowanie? Okazuje się, że odpowiedź jest tym razem odrobinę odmienna...

Money, money, money...

Abba, śpiewając tę piosenkę, trafili w sedno. Kasa. Oprogramowanie to czysty niepohamowany zysk. Można tworzyć setną implementację rozwiązania tego samego problemu, działającą identycznie jak pozostałe, a i tak można mieć pewność, że znajdzie się rzesza zapalonych zwolenników. Jak to wykorzystać? Bardzo prosto, kilka sztuczek marketingowych i jesteśmy na szczycie listy najbogatszych ludzi świata...

Po pierwsze - mnóż i nie przegrywaj
Parafraza powiedzenia "dziel i zwyciężaj" jest tu chyba najlepszym określeniem. Najlepiej bowiem utworzyć tak ze 4 aplikacje narzędziowe, które wszystkie wzajemnie będą zachęcały użytkowników do zainteresowania się pozostałymi. Przykładowo, takie oprogramowanie antywirusowe. Jak kupujesz antywirusa, to zainteresuj się firewallem. Jak zainteresujesz się firewallem, to zapewne chciałbyś chronić swoją pociechę przed "niebezpieczeństwami" typu "zbyt długie siedzenie przy komputerze" i "strony o treści dla dorosłych". Oto i filtr rodzicielski. A to wszystko razem można zdobyć nieco taniej, kupując w zestawie...

Po drugie - nie wysilaj się
Stwórz podstawowy interfejs, który jednak będzie zapewniał całkiem znośną wygodę. Ponieważ to pierwsza wersja, usuń kilka zaimplementowanych już, banalnych udogodnień - dodasz je kiedy indziej, mogąc wydłużyć "listę zmian" między kolejnymi wersjami. Ano właśnie - wersjonuj. Co roku wydawaj nową, "dużą" wersję swojej aplikacji opatrzonej magicznymi cyferkami odpowiadającymi roku wydania. "Śmietniczek 2k9", "Przenośnik 2010", "GKUploader '11", to przykładowe nazwy Twoich aplikacji.

Po trzecie - ponownie się nie wysilaj
Pisząc program nie zwracaj uwagi na poprawność kodu. Pisz wszystko na odwal, korzystaj ze starych kompilatorów, nie zwracaj uwagi na optymalizację. Byleby szybko, tanio i bez wysiłku. W ten sposób błyskawicznie dorobisz się pakietu aplikacji, a więc szerokiego rynku zbytu.

Po czwarte - narób ludziom smaku
Załóżmy, że planujesz utworzyć alternatywny dla Windowsa system operacyjny. Wcale nie musi być niesamowity, ba, nawet darmowy być nie musi. Najpierw wykonaj kontrolowany wyciek, że "chodzą pogłoski o nowym Systemie Operacyjnym w chmurze". Później "Google na baczności - nowy system operacyjny zagrożeniem nie tylko dla Windowsa". I tak dalej. Kolejnym krokiem będzie wpuszczenie "wersji alpha" do sieci torrent i zrobienie z tego afery. Wersja ta powinna mieć jak najwięcej guziczków, bajerków, dodatków, rzeczy, które wyglądają fajnie a nie działają, a także tragicznie słabą stabilność. W końcu wydaj publiczną betę ważną przez 90 dni i udostępnij wszystkim z niej korzystającym 10% rabatu na nowy system.

Po piąte - zapewnij wsparcie
Jak już wydasz swoje aplikacje, w zgodzie z "po trzecie", będziesz miał zapewnioną pracę na następne parę lat. I zysk z tej pracy. Regularnie poprawiaj optymalizację i czystość kodu, w sposób w miarę niemęczący, ale dający wymierne efekty. Dodawaj frykasy. Do każdego changeloga dopisuj "poprawienie stabilności aplikacji". Przyjmuj wszelkie zgłoszenia o błędach - "poprawisz" je w pierwszej kolejności, ponieważ są widoczne i dadzą złudzenie, że bardzo dużo zmieniasz. Pozwalaj na roczną subskrypcję aktualizacji, a za rok możesz się spodziewać nowego przypływu gotówki...

Po szóste - wydaj darmową wersję równoległą lub ostateczną
Jaki zysk w darmowości? Po pierwsze, jeśli wydasz wersję "free", możesz się spodziewać rzeszy użytkowników, która będzie chciała "więcej". Oni kupią wersję "pro". Najlepiej, jako wersję darmową wydać jedną z kompilacji sprzed paru lat - w ten sposób zapewnisz sobie, że nikt nie będzie próbował jej "odblokować". Do darmówki dodaj koniecznie przycisk upgrade'u.
Po drugie, jeśli wydasz wersję ostatecznie darmową, rozgłoś to jako "taka i taka aplikacja nareszcie za darmo!". Nadal masz zapewnioną robotę i zyski. Skąd zyski w darmówce? Po pierwsze - "donation", znaczy się "co łaska". Po drugie, jeśli Twoja aplikacja jest modułowa, możesz dorobić do niej "sklep wtyczek" i udostępniać tam jej rozszerzenia. Jeśli odpowiednio pokombinujesz, będziesz w stanie przekroczyć zyski z wersji 100% płatnej. Zresztą, spójrz na sukces rynku gier MMO...

Po siódme - otwórz się w stronę ludzi
Wystarczy tylko założyć "społeczność użytkowników", dać im forum do pomocy technicznej (i masz ten kłopot z głowy) oraz zaproić do programu pomocy w tłumaczeniu na języki obce, początkowo od siebie zapewniając wsparcie tylko dla swojego ojczystego i angielskiego.

Po ósme - bierz dużo nie dając za wiele
Przez cały czas wydawaj nowe wersje tej samej aplikacji, robiącej dokładnie to samo, różniącej się naprawdę minimalnymi działaniami z Twojej strony. Bez wysiłku napędzaj rynek zbytu różnymi "tanimi" sztuczkami.

Zwycięstwo (nie)gwarantowane

Nie, nie próbowałem powyższej metody. Nie jest to przecież poradnik, tylko delikatna hiperbola (odrobinę przecież wyolbrzymiam) odnosząca się do dzisiejszego rynku. Przemyślenia wysnute na podstawie działań współczesnych producentów oprogramowania. Dają nam oni chłam, bo ciężko to inaczej nazwać. Robią aplikacje na kolanie, ponieważ wiedzą, że mogą stosować procesy "aktualizacji". Zamiast napisać wszystko zgodnie z dobrą szkołą programowania, poświęcić aplikacji o tych 10-1000 osób więcej, zależnie od wielkości przedsięwzięcia, lepiej rozplanować zadania i zrobić to raz a dobrze, dla dobra ogółu, wolą oni zrobić to szybko, po łebkach, zapewniając niskie nakłady finansowe, szybki zysk z szerokiego rynku i utworzenie rynku zbytu dla kolejnych wersji "odrobinę poprawionych". Zamiast patrzeć na wygodę ludzi, na ich bezpieczeństwo, producenci patrzą na własną kieszeń i wygodę.

Od oprogramowania do moralności

I w związku z tym doszedłem do następujących wniosków: ludzie zatracili całkowicie już swój zmysł społeczny. Mieszkamy w wielkich miastach oddzieleni cienkimi ściankami działowymi w blokach, ale jeździmy samotnie wielkimi samochodami, słuchamy głośnej muzyki nie zważając na innych, wyprowadzamy psy na spacery zostawiając za sobą ślady na chodniku, w które ktoś rychło "wdepnie". Zamiast zapewnić sobie wzajemną swobodę i bezpieczeństwo, wykorzystujemy fakt, że sami zapewniamy dziury w zabezpieczeniach. Tworzymy dodatkową aplikację zapewniającą bezpieczeństwo, która te dziury łata, zarabiając w ten sposób podwójną sumę. Co z tego, że użytkownik końcowy był narażony na niebezpieczeństwo? Jak jest taki mądry, niech sam sobie to zaprogramuje, a co!

Nie na tym rzecz polega

Apeluję do wszystkich projektantów i producentów oprogramowania i nie tylko: zacznijcie myśleć o innych. Wiem, że tak się nie zarabia pieniędzy. Ale czy naprawdę to jest ważniejsze? Chcielibyście, żeby defibrylator mający zapewnić Wam życie przy zawale był obsługiwany przez dziurawą aplikację? Czy chcecie, aby Wasz telefon komórkowy zawiesił się w momencie, gdy dzwonicie na 112 będąc ofiarą napaści i uciekając przed uzbrojonym napastnikiem? Czy chcecie, aby dorobek Waszego życia, znajdujący się w systemie bankowym, stał się jedynie wspomnieniem w postaci porozrzucanych po dysku bitów, w wyniku błędu jakiejś nieznanej Wam aplikacji?

Podsumowanie przemyśleń o dzisiejszym oprogramowaniu

Sprzedawany jest nam chłam. Rzekomo finalne wersje aplikacji, które nigdy tak naprawdę nie wychodzą z fazy beta, i gdzie my jesteśmy betatesterami. I jeszcze za to płacimy... W ten sposób napędzany jest rynek, który zapewnia producentowi stały zysk, a nam - stałe aktualizacje. Oczywiście za opłatą... No... to teraz nie siedźcie tu już, tylko biegiem betatestować Waszego Windowsa lub Linuxa. I pamiętajcie: w dzisiejszej erze słowa "finalny" i "darmowy" pozostają tylko słowami, bez żadnego pokrycia. Dokładnie tak jak dolar pozostaje dziś bez pokrycia w złocie... 

Komentarze

0 nowych
TheUsh   7 #1 23.02.2011 10:50

Mistrzu! Ty MP i OpK zdałeś? :D Czy to kolejny element omijania uczenia się na te przedmioty? :D

Razi   5 #2 23.02.2011 11:51

To ja może zrobię "niekontrolowany" wyciek co do JavaBlock: trwają prace nad tworzeniem obiektowości :D

fenixproductions   6 #3 23.02.2011 16:03

@NRN
Proponuje dopisac conieco o outsourcingu:
Zlec najwazniejsza robote innym. Przyciskaj terminami. Zbierz smietanke, a bledy zwalaj na nich (vide Fallout: newVegas).

niewyżytyzwierz   3 #4 23.02.2011 16:25

Obecnie tworzy się zbyt mało kodu na własny użytek w efekcie czego, jak zauważyłeś powstają programy do wszystkiego, bo coraz więcej osób chce wykonywać zadania na komputerze, a coraz mniej wie jak wykorzystać potencjał i zmusić komputer do pracy dla nas. Tak swoją drogą zapomniałeś o najważniejszej rzeczy - założyć fanklub na Facebooku i dodać przycisk "Lubię to !"

Karach   3 #5 23.02.2011 17:39

Bardzo ciekawy tekst. :) Jak dla mnie wart poświęcenia czasu zamiast nauki OpK i MP. :P
Z akapitem "Od oprogramowania do moralności" zgadzam się w 128%.

TheUsh   7 #6 23.02.2011 18:13

@Karach:
No nie wiem czy fajny tekst jest wart 600zł jakie NRN będzie musiał zapłacić jak nie zda :D

djDziadek   16 #7 23.02.2011 20:47

NRN, dzięki Twoim tekstom, zaczyna mi wracać wiara w edukację - nie wiem co studiujesz i czy na pewno tam posiadłeś taką wiedzę, ale myślę, że Twoja uczelnia powinna zaprząc Cie do poważnej roboty - Dla mnie tekst na murowane 6 !!!!

Gratuluję pomysłu i przede wszystkim trzeźwego spojrzenia na tą bądź co bądź pokręconą dziedzinę :)

NRN   9 #8 23.02.2011 22:14

Dziadek, kope lat! Wiesz, że dzięki powołaniu się na Twój przykład w końcu udało mi się na Netii "wymóc" to ograniczenie do 15MBit? I Internecik działa jak złoto, nawet jak zamoknie słupek narożnikowy :D Wielkie dzięki za pomoc w tej sprawie w swoim czasie ;)

Szczerze, to niech Ci wiara w edukację nie wraca. To co się dzieje w szkołach i na uczelniach ciężko nazwać uczeniem. Raczej wmuszaniem starej, zjełczałej wiedzy... Choć czasem można się i czegoś nauczyć :P Tak czy siak, to raczej obserwacje i totalnie subiektywna opinia. Cieszę się, że moje "subiektywnie" trafiło w sedno ;)

Nie 600 zł, tylko 500, OpK jest za 200 zł :P MP i tak zawalę, co mogę...

PcSA   4 #9 23.02.2011 22:30

W tekście zawarte jest sporo prawdy, ale trzeba na niego spojrzeć i krytycznym okiem.

1: Nawet lata planowania programu/systemu oraz tysiące ludzi nie będą w stanie napisać idealnej aplikacji - ponieważ sami ludzie ze swojej natury są omylni. Zwiększanie czasu jak i ilości głów pracujących nad problemem na pewno zwiększy bezawaryjność, ale i tak będą błędy - zawsze!

2: Nie da się napisać aplikacji raz, a porządnie. Dlaczego? Część pomysłów powstaje w trakcie - często są to pomysły podrzucane przez ludzi, o których sam programista by nie pomyślał (bo nie jest alfą i omegą - nikt nie jest). Poza tym same zmiany technologiczne wymagają nowych rozwiązań - np. nie wyobrażam sobie pisania systemu operacyjnego dla 64-bitowych procesorów w czasie kiedy dostępne są 16 bitówki.

3: Jeżeli wykonujemy aplikację dla innej firmy: często jest tak, że klient sam dokładnie nie wie czego chce, albo sam ma pomysły na coś dopiero później, po fakcie już napisania aplikacji. Jest nawet na to pewna metodyka programowania - http://pl.wikipedia.org/wiki/Model_przyrostowy

4: Jeżeli każdy z twórców oprogramowania myślał w sposób, że ma wydać produkt idealny, który zadowoli wszystkich i będzie miał wszystkie możliwe funkcje to wiem, że taki program nigdy by się nie ukazał - wiem po sobie. A dlaczego? patrz pkt 1, 2.

Zgadzam się, że oprogramowanie powinno być testowane, testowane i jeszcze raz testowane, ale nawet po wielo- miesięcznych/letnich testach i tak będą błędy - pkt 1.

PcSA   4 #10 23.02.2011 22:32

błąd w punkcie 2gim - powinno być :"nie wyobrażam sobie pisania systemu operacyjnego dla 64-bitowych procesorów w czasach kiedy dostępne są tylko 16 bitówki."

djDziadek   16 #11 23.02.2011 23:46

@NRN
co do Netii, cieszę się że pomogłem :),
co do edukacji - to jednakowoż coś z myślenia z niej wyniosłeś,
@PcSA
oczywiście że tekst jest wyolbrzymiony i przepełniony sarkazmem,
jednak jest w nim naprawdę sporo prawdy - w/g mnie to taki instruktaż "załóż firmę informatyczną" w "krzywym zwierciadle"

NRN   9 #12 24.02.2011 02:12

@PcSA, tak jak napisał Dziadek, sam zresztą zaznaczyłem w tekście, że jest to hiperbola :P Wyolbrzymienie, mówiąc po ludzku. Zgadzam się, nikt nie jest nieomylny, doskonale wiem, że aplikacja idealna nie może powstać, gdyż to, na podstawie czego powstaje, już nie jest wolne od błędów. Taka przeglądarka internetowa - standardy swoje, przeglądarka swoje, a webmasterzy oscylują między zgodnością z przeglądarką a zgodnością ze standardem :P

Tak czy siak - "pomysły dodawane w trakcie tworzenia aplikacji" można rzeczywiście wdrażać w kolejnych wersjach. Ważne, żeby podstawowa funkcjonalność była jak najbardziej pozbawiona błędów. Żeby nie było, że robimy defragmentator, który to zadanie wykonuje marnie, za to ma wbudowanego IM do kontaktu z innymi userami...

Model przyrostowy - cacy. Ale nie "all-in-one" i "bugs-included". Sprytnym był twórca LaTeX'u, który określił, że w momencie jego śmierci, jego twór zostanie nazwany wersją "pi" (aktualnie jest to coraz konkretniejsze rozwinięcie pi, tj. od wersji 3, przez 3.14159 (2007 rok) do aktualnej jeszcze dokładniejszej), a wszelkie błędy w działaniu i kodzie zostaną udokumentowane jako cechy :P W ten sposób powstaje aplikacja pozbawiona błędów, bo jak błędem może być cecha? Tylko mam nadzieję, że inni twórcy nie będą dążyć do tego typu debugowania...

@djDziadek, szczerze to tutaj większy udziała miała chyba rodzina, niż szkoła. Koniec końców, kształtuje nas całe otoczenie :)

NRN   9 #13 24.02.2011 02:17

Aj aj, się kropnąłem. Chodziło oczywiście o TeX'a, a nie LaTeX'a :P

michal_93   6 #14 25.02.2011 18:04

Zgadzam się z powyższymi opiniami co do omylności ludzkiego umysłu itp. ale chciałbym dodać od siebie dwie kwestie:

Problemy opisane w wpisie raczej opisują sytuacje programów z zamkniętym kodem. Jeżeli mówimy o opensource to takie chlamowate programy są mniej spotykane głównie dlatego, że zmiany są do podglądnięcia przez każdego. Problem natomiast zwykle leży po stronie jakości, wykończenia i za małej ilości osób tworzących, które nie wyrabiają.

Wprawny user komputera jest w stanie na pierwszy rzut oka rozpoznać chłam np. Jedno spojrzenie na programy do zarządzania komunikacją PC - telefon i od razu biegiem do menu Dodaj/Usuń Programy. Sytuacja więc moim zdaniem zależy też od poziomu wiedzy użytkowników, a Ci nie zawsze są odporni na taki soft.

NRN   9 #15 26.02.2011 19:56

michale, zgadzam się z Tobą w pełni co do chłamu. Jak pierwszy raz odpaliłem, wówczas nowe, oprogramowanie Nokii, to na widok pierwszego ekranu mało mnie krew nie zalała. Na sam widok :P Chwilę później 7 próba instalacji aplikacji do wspieranego telefonu zakończona migracją na starszy soft. A ostatecznie i tak skończyło się na kopiowaniu przez Bluetooth i instalację z poziomu telefonu... Tragedia...

NRN   9 #16 26.02.2011 19:57

No i znowuż zapomniałem dodać puenty. Otóż jest ona taka: ale co zrobić, jeśli zamiennika (w szczególności "darmowego" a przynajmniej "taniego") dla takiego chłamu nie ma?