Temat: Czy Administrator musi być też trochę programistą ?
To ja dorzucę swoje 3 grosze:
Dla mnie sztuczne jest tworzenie podziału na to, gdzie kończy się tworzenie skryptów, a zaczyna programowanie. Tworzenie skryptów to również programowanie, tyle skrypty pisane są zazwyczaj sekwencyjnie (mowa oczywiście o skryptach wywołujących polecenia OS, takich jak shell/bat).
Sekwencyjne skrypty zdają egzamin jedynie w przypadku prostej sekwencji poleceń (do kilkudziesięciu linijek). Powyżej sensowny staje się podział skryptu na funkcje wykonujące logiczne bloki zadań. Skrypty również mogą posiadać parametry wywołania oraz funkcje, analogicznie jak programy w innych językach. Więc różnice pomiędzy "programowaniem" a "pisaniem skryptów" już się tutaj zacierają.
Pisanie w języku powłoki danego systemu to absolutne minimum. Koniecznie trzeba opanować wyrażenia regularne - przydają się nie tylko w językach skryptowych, ale również w skryptach powłoki. Ale według mnie to za mało. Warto znać jeszcze język skryptowy (perl, python, php, ruby, PowerShell), osobiście preferuję python. Języki te działają również na platformie Windows.
Dla osób administrujących produktami Microsoft znajomość PowerShell jest wręcz niezbędna. Od jakiegoś czasu wszystkie konsolki MMC de facto wykonują polecenia PowerShell - z PowerShell można zrobić wszystko, co da się wyklikać, a nawet więcej, bo niektóre opcje są niedostępne w GUI.
Znajomość tych języków przydaje się, gdy trzeba zrobić coś więcej, niż wykonanie kilku poleceń z powłoki, np. wyciągnąć informacje z logu. Zawsze można użyć poleceń takich jak cat/type, grep/findstr, awk, itp., ale od pewnego momentu nie dość, że nieefektywne, to jeszcze mało czytelne się to staje.
Co do samej automatyzacji, to pozwolę się odnieść do wpisu jednego z twórców dystrybucji CentOS:
http://www.karan.org/blog/index.php/2010/12/01/automat....
Przypadek z "mojego" podwórka: Od ok. roku kolega codziennie!!! loguje się na 2 serwery, wpisuje kilka magicznych poleceń, i wynik zapisuje do Excell'a. Rok temu powiedziałem mu, że to spokojnie da się zautomatyzować. Ale że nie potrafi on programować, to już od roku codziennie robi to samo (ok. 10 min. dziennie).
Pisałeś o tworzeniu czytelnego kodu: czytelny kod tworzysz przede wszystkim dla siebie. Dlatego, aby nie zastanawiać się, jak działa i co robi skrypt, jeżeli coś nagle przestanie działać w skrypcie / zmieni się środowisko, w którym działa skrypt.
Znajomość innych języków programowania (C/C++, Java, C#, itp) nie jest konieczna, ale może być przydatna i pracuje tylko na plus takiego Administratora. Wiedza o tym, jak działa dana technologia, a szczególnie serwery aplikacyjne może być przydatna, jeżeli wystąpi problem i trzeba go zdiagnozować. Nawet, jeżeli na konkretną aplikację mamy support, to nikt tak dobrze nie zna środowiska, jak jego administrator. Czasami okazuje się, że problem leży zupełnie gdzieś indziej. Najgorsze są sytuacje, kiedy support aplikacji przepycha się z innym vendorem (OS/DB/APPserver, etc.), że wina nie leży po jego stronie.
Tak naprawdę wszystko zależy od specyfiki konkretnego środowiska, w którym się pracuje oraz charakteru pracy/zakresu obowiązków. Developer odpowiada za stworzenie kodu, testerzy i QA za przygotowanie release na produkcję, integrator za instalację i konfigurację w konkretnym środowisku, administrator odpowiada za utrzymanie i monitoring.
Ostatnio pojawia się również termin devops, czyli osoba pracująca na styku DEV/QA/Administracja. Tacy ludzie najbardziej są poszukiwani.
Odpowiadając na postawione w temacie pytanie:
Tak, Administrator powinien być też trochę programistą. Przede wszystkim dla siebie.