Gdyby było to fizycznie możliwe, chętnie przeprowadziłbym następujący eksperyment. Z odległej przeszłości – na przykład z połowy lat 90. poprzedniego stulecia – sprowadziłbym w obecne czasy dowolnego ponadprzeciętnie uzdolnionego programistę. Jak szybko odnalazłby się we współczesnym koderskim środowisku pracy?… W celu redukcji złożoności problemu poczyńmy daleko idące uproszczenia i pomińmy wszelkiego typu zmiany związane z postępem technologicznym (jak choćby nieporównywalnie większe znaczenie Internetu wtedy i teraz), a także modyfikacje, które zachodzą w samych językach programowania. Interesuje mnie raczej to, czy ów przybysz z przeszłości doceniłby i uznał za przydatne różnego rodzaju czynności i narzędzia pomocnicze, niebędące edytorem tekstu (lub IDE) ani kompilatorem, i pozostające w luźniejszym związku z samym pisaniem kodu jako takiego.
Jakby bowiem przyjrzeć się dokładnie wachlarzowi tych narzędzi, okazuje się, że jest on już całkiem szeroki. Programowanie, zwłaszcza zespołowe (jeżeli w ogóle istnieje jeszcze jakieś inne) już od dawna przestało ograniczać do tworzenia kodu i czasami wydaje się nawet, że czynność ta stała się poboczną. Coraz więcej czasu zajmuje praca z takimi narzędziami jak systemy kontroli wersji, systemy śledzenia błędów (issue tracking systems), narzędzia automatyzujące proces kompilacji, programy do statycznej analizy kodu, systemy zdalnej kompilacji i pewnie mnóstwo jeszcze innych wynalazków, z którymi nie miałem dotąd okazji się zetknąć.
Między innymi dlatego nie potrafię jednoznacznie określić, czy uważam je wszystkie raczej za przydatne czy raczej za zbędne. Wiążące opinie mogę jak dotąd wyrazić tylko o niektórych.
Tym niemniej ciekawi mnie również, czy w dziedzinie wspomagania kodowania (czy ogólnie pracy nad projektami) od strony zautomatyzowanych narzędzi da się wymyślić coś jeszcze…
Czy wiesz, że… przeciętny hacker, który w latach 90 używał vima, w 2011 dalej używa vima? :)
Lub EMACSa ;).
Ostatnio dowiedziałem się, że Emacs ma już wersję 23 o.0
Zapewne sporo jeszcze da się dołożyć/stworzyć/zautomatyzować. Z mojego punktu widzenia cała automatyzacja – po jej opanowaniu – jest dobra: pozwala programiście w ciągu godziny osiągnąć znacznie większy efekt niż kiedyś. Wystarczy porównać UI designer z Qt a tworzenie tych samych okienek, kontrolek itd. w WinAPI – coś, co w Qt osiągalne jest w 6-10 godzin, w WINAPI zajęłoby minimum 40 ;)
Szkoda tylko, ze w ilosci zuzytej pamieci i mocy CPU jest na odwrot. Ja chce z powrotem Skype’a z 2004 :)
Wymyślmy narzędzie do automatyzowania procesu automatyzacji projektu, by programiści z całego świata zaoszczędzali na setup time. :)