Git jest trudny
System kontroli wersji o nazwie Git powstał gdzieś w 2005 roku jako garść skryptów stworzona naprędce przez Linusa Torvaldsa do zarządzania kodem źródłowym Linuksa. Jak sam się przechwalał, pierwsza wersja nadająca się do użytku powstała w ciągu dwóch tygodni. Torvalds główny nacisk położył na wydajność. Nic dziwnego, że interfejs użytkownika, przyswajalność i spójność koncepcyjna nie mogły być najmocniejszą stroną Gita. Co prawda w ciągu tych kilku lat program się rozwinął, ale moim zdaniem wciąż nie pozbył się piętna tego grzechu pierworodnego. Git, choć prawidłowo spełnia swoje funkcji i jest zaawansowanym technicznie narzędziem, jest przy okazji trudny do opanowania. Przy tym trudność ta jest zupełnie niepotrzebna: rozproszony VCS nie jest czymś aż tak skomplikowanym; dowodzi tego chociażby Mercurial. Wystarczyło popracować trochę nad używalnością i przemyśleć, czego od narzędzia może oczekiwać grono użytkowników szersze niż Linus Torvalds.
Oczywiście, fani Gita zaraz zakrzykną, że to nieprawda, że Git jest łatwy i intuicyjny, że to właśnie Mercurial, Subversion, CVS czy SourceSafe są trudne. Myślę jednak, że ktoś, kto obiektywnie i bez emocji spróbuje poużywać sobie kilku tego typu narzędzi, bez trudu wyrobi sobie własne zdanie.
A tutaj zbieram wypowiedzi potwierdzające tę tezę, po to, by mieć kontrargument na popularną wśród zwolenników gita wymówkę, że trudność to kwestia gustu.
- Torvalds nie ukrywa, że zawsze najważniejszą sprawą była wydajność: And by primary, I really mean primary. As in "more important than just about anything else".[1] Nic dziwnego, że usability też musiało zejść na dalszy plan.
- Ben Lynn, autor podręcznika Git Magic, uważa, że git jest [...] tricky to learn, let alone master.[2]. Sam już tytuł daje do myślenia: Magia Gita? jaka znowu pieprzona magia? To ma być narzędzie, czy czarodziejski artefakt?
- Scott Chacon, autor książki Pro Git. Professional Version Control, określający się jako “git evangelist”, wyznaje na swoim blogu: One of the topics that I didn't cover in depth in the Pro Git book is the reset command. Most of the reason for this, honestly, is that I never strongly understood the command beyond the handful of specific use cases that I needed it for.[3]. Jeśli ktoś taki potrzebuje lat na zrozumienie niuansów jednej tylko z licznych komend, to co ma zrobić "zwykły użytkownik"?
- Analiza, którą przeprowadzono w 2008 r. w Google zauważa: Git has a steeper learning curve than Mercurial due to a number of factors. Git has more commands and options, the volume of which can be intimidating to new users. Mercurial's documentation tends to be more complete and easier for novices to read. Mercurial's terminology and commands are also a closer to Subversion and CVS, making it familiar to people migrating from those systems. [4]
Zastanawia mnie też występowanie zjawiska "ewangelistów". Skąd się biorą ci ludzie? Dlaczego uważają, że takie czy inne narzędzie, jest aż tak wartościowe, że warto poświęcać swój czas na jego popularyzację, nauczanie czy - jak nierzadko się zdarza - trolling i rozpętywanie flame wars. Moja hipoteza jest następująca. Taki młody zapewne człowiek poświęca wiele miesięcy na poznanie arkanów gita i w końcu zaczyna z nim odczuwać więź emocjonalną. Później pewnie natyka się na sceptyków, którzy mówią, że na przykład mercurial robi w zasadzie to samo, a przy tym można opanować go w stopniu zaawansowanym w ciągu paru tygodni. Pojawia się dysonans poznawczy: Jak to? Jeśli tyle czasu musiałem poświęcić, żeby nauczyć się gita, to przecież on musi być lepszy! No i gość zostaje "ewangelistą gita" i jeszcze jest z tego dumny!
Zobacz też: Git czy Mercurial