piątek, 11 października 2013

Programista - zawód niewdzięczny...

Bycie programistą nie jest proste, a im lepszym się stajesz, im więcej widzisz i wiesz, tym cięższe staje się Twoje życie. I wcale nie mam na myśli tej ciągłej konieczności bycia "na bieżąco", uczenia się nieustannie nowych języków, paradygmatów, technik, bibliotek i wszystkiego tego, co dobry programista wiedzieć powinien, aby być "wartościowym towarem" na rynku pracy.
Nie, to naprawdę nie jest problematyczne, a im trafniejszy był wybór Twojego zawodu, tym bardziej te wszystkie rzeczy Cię cieszą. Rozwój może być wycięczający i męczący, ale w gruncie rzeczy każdy z nas chce to robić i w dodatku chce to robić bez przerwy, zarówno w pracy jak i po godzinach.

Co więc jest takiego uciążliwego w naszej egzystencji? Co tak bardzo nam (mi?) doskwiera?
Zazwyczaj (zawsze?) przeszkadza nam brak czasu. Brak czasu na to, żeby stworzyć taki kod, który w każdym calu spełniać będzie nasze oczekiwania. Brak czasu na przetestowanie aplikacji w taki sposób, aby każdy (istotny) przypadek, który pojawił się w głowie został pokryty. Brak czasu na research i na naukę tego, co z pewnością pozytywnie wpłynęłoby na jakość naszej pracy. Brak czasu na refaktoryzację w takim stopniu, w jakim należałoby to zrobić, a nie w stopniu co najwyżej wystarczającym. Brak czasu na wyrzucenie tego starego kodu, który co chwile się psuje, brak czasu na jego implementację od podstaw, oczywiście dużo lepiej :)
Ale czy to rzeczywiście brak czasu jest problemem? Przecież nikt nie ma go w nadmiarze?

Tak naprawdę czas (jego brak) jest czynnikiem, który pokazuje nam prawdziwy problem, a jest nim perfekcjonizm.
Każdy z nas ma wielu znajomych, zakładam, że tak jak ja nie ograniczacie swoich kontaktów jedynie do ludzi z branży :) Nie wiem, czy również to zaobserwowaliście, ale w naprawdę niewielu zawodach ludzie tak wielką wagę przykładają do jakości produktów; chodzi mi oczywiście o sytuację, kiedy ta jakość nie jest wymuszona żadnymi odgórnymi zaleceniami, standardami czy prawami. W przypadku programistów wynika przede wszystkim z chęci gonienia za tą doskonałością. Od nas wymaga się, żeby aplikacja działała i się nie psuła, a to czy będą testy, czy kod będzie czytelny, czysty, czy też jakikolwiek inny przymiotnik określający estetykę będzie mógł do jego opisania zostać wykorzystany? Czy to kogoś, poza programistą obchodzi?

Możliwe, że teraz się nie zgadzacie, bo przecież zarówno testy jak i jakość kodu wpływają na tempo naprawy bugów (ich mniejszą ilość), na tempo rozwoju aplikacji itp., itd. Nauka nowych rzeczy przecież przyspiesza naszą pracę i sprawia, że jej jakość, przy takich samych zasobach, jest większa, a to też bezpośrednio przekłada się na zyski dla klienta.
Cóż mogę napisać, zgadzam się z tym w pełni. Jednak czy mimo wszystko (nawet jeżeli dbacie o kod i rozwijacie się) nie doświadczacie co jakiś czas tego uczucia, że jednak można by więcej i z pewnością lepiej? Czy czasami nie zatrzymujecie się, bierzecie głęboki oddech, rzucacie jeszcze raz okiem na to, co robicie, z żalem stwierdzacie, że jeszcze tyle do zrobienia, ale... ale już dość, wystarczy. I pozostawiacie wykonywane zadanie ze świadomością, że "gdyby było więcej czasu..."?

Tak, bycie programistą to ciągła nauka kompromisu, umiejętność powiedzenia sobie dość w odpowiednim (?) momencie i konieczność częstego akceptowania rozwiązań wystarczających i zadowalających, a nie tych idealnych, które rodzą się w zakamarkach naszych głów, a na zaimplementowanie których... cóż... nie mamy czasu ;)


PS Obiecuję, że następnym razem już będzie jakiś kod ;)