Archive

Posts Tagged ‘usability’

advWhy prnI vDon’t vLike daThe adjHungarian nNotation

October 21st, 2011 Dariusz Suchojad 4 comments

vNote cThat pThis vIs prpTo vDo prpWith nProgramming adjOnly advNot daThe nCountry pm! sml:-)

nTwo naThings vPrompted prnMe prpInto nWriting pThis pm.

prnI’ve adjRecently vSeen iaA adjPromising nJavaScript nLibrary cnjAnd prnI vWas intrjOh advSo advClose prpTo vStart vUsing cnjExcept prnThat cnjWhen prnI vHad iaA vLook prpAt adjIts nAPI adjMy nJaw vFell prpTo daThe nFloor pm- daThe nThing vWas vUsing daThe adjHungarian nNotation, vIncluding vPrefixing naFunctions prpWith iaAn nFn pm- advSo prnI vConsulted iaA nCalendar cnjAnd advYes pm, prnIt vWas advStill daThe nNear n2011 pm. 

prnI vAm vWriting prnThis nPost advSo prnThat adjPotential adjHungarian nNotation naUsers vCan vUnderstand advHow adjSuch iaAn nAPI vLooks prpLike prpIn daThe nEye prpOf daThe nBeholder pm, prnI vAm advPerfectly adjSure penThey advJust vDo advNot vRealise adjWhat nSort prpOf nCommotion prnThey vCause pm. prnThere vIs adjNo nBeauty prpIn prnIt pm, vDon’t prnYou vAgree pm? intrjSo vPlease pm, vCan pwnWe vStop prnIt advNow pm?

prnI vRemember vSeeing adjSuch naThings prpLike n15 naYears advAgo cnjAnd advReally pm, adThe nWorld vHas advSince vChanged pm, prnWe vDon’t advLonger vUse nVi cnjOr nEd pm- intrjWell, advNot prpTo daThe advSame nExtent prpAt advLeast pm- prnWe vHave nAuto-completion pm, nSyntax vHighlighting pm, nCode vRefactoring pm, nUnit vTesting pm, adjContinuous nIntegration cnjAnd nWhatnot pm.

vLet’s vLeave daThe adjMundane nJob prpOf nType nInference prpTo naCompilers cnjAnd prpUnless daThe adjParticular nLanguage vDoesn’t vEnforce daThe nUsage prpOf prnThese naPrefixes pm, intrjWell pm, vLet’s advNot vDo prnIt advThen pm, advAright pm? naThanks pm!

prnAnother nThing vWas iaAn nSQLite nDatabase prnI vHad iaA nMisfortune prpOf vHaving vHad iaA vLook prpAt prnWhich vHad adjEach nTable conjAnd nColumn vPrefixed prpWith nTbl cnjAnd nCol advRespectively pm. prnI vMean pm, prnI’ve vSeen prpAt advLeast naDozens prpOf naDatabases pm, prpFrom nFirebird prpOn nWindows prpTo nDB2 prpOn nMainframe cnjAnd prnI’m advYet prpTo vConfuse iaA nTable prpWith iaA nColumn pm- prnIt vIs advOK prpTo vUse nUq or nIdx prpIn daThe naNames cnjBut prpBy nApollo’s adjHoly naTrousers, vLet’s advNot vDo daThe prnSame prpWith naTables cnjAnd naAolumns prnThemselves pm!

Share
Categories: Software Tags: ,

If version control systems were vehicles…

October 2nd, 2011 Dariusz Suchojad No comments

Here’s a short visualisation of how I perceive various revision control systems, given in the order of my being exposed to each of them throughout all those years.

BitKeeper


Many winters ago, it was the first RCS I used and I remember it was pretty powerful yet somewhat clumsy to steer and handle not to mention the thick armour that wouldn’t let me peek inside and have a look at its source code. I hear it’s still being sold to customers around the world who don’t mind to trade a little bit of the manoeuvrability in exchange for its main gun’s fire-power.

CVS


A funny-looking though not really forgiving system that would bring a lot of projects home. The crucial point was its low price (opensource) yet the lack of features (like no real ‘reverse gear’, one couldn’t easily delete empty directories) meant I was looking for something else pretty soon.

Subversion (svn)


Now, I spent a couple of years working with svn for various corporate clients and it’s clear that’s what the prevailing majority of them can easily understand. It’s a centrally-managed system with no push and pull steps like in those fancy modern distributed ones and usually does its job sufficiently well. The feature most important for all the selfish ‘enterprise’ clients is that it has a built-in lock command with the power to break the locks if need be.

Bazaar (bzr)


A very versatile modern system whose only issue was the maker’s marketing department who in the system’s early days wasn’t able to stop warning people that features were first and the speed advancements would come later so in the end pretty much everyone still thinks the system’s slow. Well, it isn’t. It’s called being ‘fast enough’ my friend. Oh, and the maker’s move to hire a couple of experienced user interface designers means the system’s a pure pleasure to use with no surprising commands required for everyday usage.

Mercurial (hg)


Another system that’s good all-around, fast, fuel efficient and very comfortable to drive. Doesn’t have as many fans as it deserves to because it’s not called Volkswagen Golf even though 99% of the features are precisely the same.

Git


So now it’s git. A prime example of why space rocket engineers shouldn’t really design end user-facing technologies. It’s fast and that’s all one can say. There’s no hood so all of the gory details are left exposed and you’re supposed to deal with it (like it’s natural that one needs to check out two consecutive dashes when there’s a need to revert something). Just notice the number of times the words ‘unusual’, ’surprising’, ‘unexpected’ get mentioned in books on git. Really, the only thing that makes git usable is GitHub, which indeed is a very good service, like git done correctly only in the browser.

I guess you can easily tell where my heart is, eh? ;-)

Share
Categories: Software Tags: , , , , , ,

Warto korzystać ze slugów w URL-ach

April 18th, 2009 Dariusz Suchojad No comments

Jestem jedną z tych osób, które dość często wpisują URL-e w address barze przeglądarki, żeby przejść do określonej strony. Korzystam też z bookmarków do zapamiętywania stron, które mogą być dla mnie ciekawe i warte przeczytania.

Inaczej korzystam z bookmarków, a inaczej z address bara. W bookmarkach są te sprawy, do których zaglądam w miarę często, lub które odkładam do przejrzenia na później (rewelacji tu żadnej nie ma :-) ) .

Z address bara korzystam dlatego, że po otworzeniu nowego okienka lub taba przeglądarki, domyślnie ustawiany jest focus na address barze – wygodnie jest mi więc zacząć pisać “ri” i mieć podpowiedziany adres http://www.risks.org/.

Inną jeszcze sprawą związaną z address barem jest to, że chodząc po sieci nie dodaję oczywiście do bookmarków każdej z potencjalnie interesujących stron. Jest pewien zakres stron, które znajdują się pomiędzy tymi, które odwiedzam często i pamiętam ich adresy (te wpisuję w address barze), tymi, które dodałem do bookmarków, bo wiem, że kiedyś mi się przydadzą, a tymi, które odwiedziłem – powiedzmy – 5 godzin temu, a przez te 5 godzin zdążyłem odwiedzić już 40 innych stron, i teraz chcę do jednej z nich wrócić. Ten “pewien zakres” nie jest znowu taki mały, obejmuje zapewne z 99.9% stron, które przeglądam..

Takie są mniej więcej wzorce użycia, które u mnie występują, a przechodząc do właściwego tematu – warto tworzyć strony, które w URL-ach mają slugi wskazujące na treść strony.

Jeśli ktoś często dyskutuje na forum jakiegoś portalu na temat polityki międynarodowej to ma adres http://forum.example.com/0,0,1,603,katalog.html dodany do bookmarków. Jeśli jednak (załóżmy) przeglądam sobie fora portalu i chcę do któregoś wrócić, więc otwieram nowego taba przeglądarki, wpisuję “fo”, i podpowiadają mi się adresy http://forum.example.com/0,0,1,603,katalog.html, http://forum.example.com/0,0,1,105,katalog.html i inne, to w sumie nie mam wyboru tylko muszę odwiedzić po kolei te adresy. Nie mogę skorzystać z historii odwiedzanych dziś stron, ponieważ portal ten stosuje praktykę taką, że wszystkie fora mają ten sam tytuł strony. Mogę wejść w katalog danego portalu, znaleźć te fora od początku. Mogę też skorzystać z wyszukiwarki internetowej. Ale równie dobrze mógłbym nie tracić czasu i zobaczyć od razu w address barze, że ten URL dotyczy polityki międzynarodowej. Tak, to brzmi banalnie, ale jest to jedna z tych spraw, które są proste do realizacji gdy pomyśli się o nich odpowiednio wcześnie, a które potem ułatwiają życie innym ludziom. Wystarczyłoby, żeby adres wyglądał np. tak:
http://forum.example.com/0,0,1,105,katalog,polityka-miedzynarodowa.html. Współczesne frameworki bez problemu wspierają takie rozwiązania, a mam nadzieję, że już nikt nie pisze w servletach czy CGI i nie może dyskutować, że jest to trudne do implementacji. Jeśli w Twoim frameworku nie można tego zrobić to najprawdopodobniej i tak masz więcej zmartwień niż tylko slugi, więc tak czy inaczej, nadszedł czas na migrację do innych narzędzi.

Tak to wygląda w Internecie, ale ważne jest to też w aplikacjach zamkniętych, intranetowych. Jeśli – powiedzmy – użytkownicy oceniający umowy z klientami będą mieli napisane w URL-u “akceptacja-umowy”, w tytule strony wyświetlanym na pasku przeglądarki też będzie napisane “Akceptacja umowy”, to samo jeszcze raz będzie napisane wyraźnie na stronie, to po prostu zwiększa szanse na to, że wpadnie to w oko i nikt tego nie potraktuje jako “Anulowanie umowy”.

Przeglądarki internetowe i tak składają się z elementów GUI, które są całkowicie niezrozumiałe dla użytkowników – nie chodzi więc o to, żeby używać slugów bo może ktoś będzie chciał wpisać ręcznie adres – raz, że instrukcja nie będzie przewidywała takiego kroku, dwa, że tak w ogóle z moich spostrzeżeń wynika, że mało osób wie do czego służy address bar. Nigdy tego nie mierzyłem, nie wiem, może ktoś to systematycznie badał? W każdym razie, chodzi o to, żeby zwiększyć szanse na to, że ktoś odnajdzie na ekranie znajomy tekst w gąszczu elementów graficznych, które są obce i po których wzrok prześlizguje się.

Pomaga to też w supporcie – jeśli dostajesz zgłoszenie, że “system nie działa”, a w URL-u widzisz, że ktoś chce wejść pod adres “https://system/content/sales/309/1/715/15/wyniki-sprzedazy” to dla Ciebie, jako autora/autorki systemu może być oczywiste, w którym miejscu tkwi przyczyna, ale dla supportu przyjmującego zgłoszenie nie byłoby to już takie oczywiste, gdyby nie “Wyniki sprzedaży” w URL-u. Może to być zawsze jakimś hintem, może zawsze skrócić czas rozwiązania, może support przekaże to od razu do właściwych osób, może support będzie mógł od razu odpowiedzieć “Tak, wiemy, są aktualnie problemy z przeglądaniem wyników sprzedaży”, na pewno support ma i tak sporo pracy, więc warto pomagać także w taki drobny sposób.

Pozostaje jeszcze kwestia wyszukiwania. Tak samo w wyszukiwarkach internetowych jak i w rozwiązaniach wewnętrznych, można brać URL-e pod uwagę. Jeśli wdrażamy indekser maili, portali, zasobów na FTP-ach czy dyskach sieciowych itd. to zapewne będziemy chcieli wziąć pod uwagę URL indeksowanej strony. Jeśli ktoś szuka “delegacje” a mamy w indeksie strony zaweriające “delegacje” w URL-u to możemy o kilka procent podnieść trafność takiego hita.

Używajmy więc slugów i nie piszmy http://example.com/foo/7/9/31/825 tylko http://example.com/7/9/31/825/warto-korzystac-ze-slugow-w-url-ach :-)

Share
Categories: Software Tags:

Kobiety jednak używają komputerów

March 5th, 2009 Dariusz Suchojad No comments

W razie gdyby ktoś nadal nie chciał uwierzyć – przypominam, że kobiety korzystają jednak z komputerów oraz Internetu i należy brać pod uwagę to, kto będzie odbiorcą oprogramowania, które tworzysz.

Z innych nowości – grają także w piłkę nożną, chodzą na wojny i fruwają w kosmos.

Dość smutne są obrazki, które widać na małych jak i dużych serwisach, ciągle powtarza się pytanie “Zapomniałeś hasło?” – czy tylko mężczyźni mogą zapomnieć swoje hasło? Czy kobiety nigdy nie zapominają, albo, gdy już zapomną, to nie mogą go zmienić?

Serwisy publiczne to jednak nic wielkiego w porównaniu z tym, co dzieje się w aplikacjach zamkniętych, w oprogramowaniu tworzonym dla wewnętrznego użytku przedsiębiorstw. Wydaje się, że bardzo mało osób bada to, kto właściwie będzie korzystał z tworzonego software’u. Warto sprawdzić czy kolejny pakiet oprogramowania finansowego, kadrowego, CRM czy wspierający inne procesy biznesowe będzie używany głównie przez mężczyzn, kobiety, czy może jednak pół na pół? Przecież zdarzają się środowiska tak zdominowane przez kobiety, że wyświetlanie na ekranie “Zalogowałeś się do systemu FOOBAR” zamiast “Witamy w systemie FOOBAR” wygląda po prostu na całkowity brak zainteresowania wrażeniami z używania systemu. Proponuję traktować takie teksty jako błąd w oprogramowaniu, powinny być to normalne błędy, zgłaszane do poprawek przed oddaniem systemu do użytku. Po oddaniu do użytku trzeba je traktować jako zwykłe błędy znalezione na produkcji, do poprawy w następnym releasie.

Nawet jeśli w wymaganiach biznesowych nikt na temat nic nie powiedział, to nie znaczy, że nie można samemu o tym pomyśleć, zadać stronie biznesowej pytanie, kto dokładnie docelowo będzie korzystał z systemu, a jeśli nawet strona biznesowa nie będzie wiedziała, albo nie zrozumie sprawy, to możecie sami napisać zamiast “Zapomniałeś hasło?” – “Nie pamiętasz hasła?”, zamiast “Czy jesteś pewny, że chcesz usunąć XYZ” – “Czy na pewno chcesz usunąć XYZ?” zamiast “Zostałeś wylogowany z systemu ABC” – “Życzymy Ci miłego dnia, kliknij tutaj, aby zalogować się ponownie”, a kobiety będą chętniej korzystały z Waszych
systemów :-)

Na marginesie, A list apart ma ciekawy artykuł i dyskusję o tym, żeby w ogóle nie pytać nikogo o to, czy chce na pewno usuwać cokolwiek, postulują, aby mieć zawsze undo. Ciężka sprawa zaimplementować undo w każdej sytuacji (po kilku tygodniach negocjacji z klientem ktoś klika “decyzja kredytowa negatywna” .. “niee, undo!, jednak p o z y t y w n a” ;-) ), ale na pewno warto o tym pomyśleć.

Share
Categories: Software Tags: , ,