Kim jest programista?

Spis treści Poprzednia strona: Co i jak? Następna strona: Ludzie

Dla nas programistów nie powinny stanowić tajemnicy technologie takie jak telefonia, telefonia komórkowa, radio, telewizja, sieć komputerowa, Internet. Zapytani o to jak znaleźć daną informację powinniśmy umieć użyć wszystkiego, co mamy pod ręką: telefonu, komputera, pilota telewizora z telegazetą, a także książki. Programista jest pełnoprawnym członkiem społeczeństwa informacyjnego i nie cierpi na tzw. wykluczenie informacyjne. Jeśli dziś zostaniesz programistą, to zapewnisz sobie po prostu spokojną starość.

Kim jest programista? Programista to zawód o kodzie 2132. Jest to specjalista informatyk, obok projektanta i analityka. Programista to w rzeczywistości szeroki termin, obejmujący ludzi o wielu różnych zdolnościach z dziedziny inżynierii oprogramowania. Ze względu na to czym najczęściej się zajmują, dzielimy programistów na:

Koder
Koder [coder] to osoba pisząca kod źródłowy programów, implementująca gotowe, dostarczone mu w postaci dokładnych specyfikacji funkcjonalnych rozwiązania.

Designer
Jeśli osoba sama te rozwiązania wymyśla, jest także projektantem [designer]. Istnieją projektanci systemów informacyjnych, projektanci baz danych, projektanci interfejsów użytkownika i grafiki komputerowej.

Tester
Jeśli sprawdzasz poprawność swojego lub cudzego kodu, jesteś testerem [tester]. Każdy programista jest w pewnym stopniu testerem, ale prawdziwy tester potrafi znacznie więcej, np. dokumentować testy, planować testy, automatyzować testy i zna specjalistyczne narzędzia wspomagające testowanie. Dzisiaj tester nie musi znać się na kodowaniu w ogóle, ale jeszcze parę lat temu nie było to możliwe. Cenniejszy jest tester znający od strony praktycznej lub biznesowej dziedzinę wiedzy, której dotyczy testowane oprogramowanie. Tester często spogląda na produkt gotowy nie z technicznego punktu widzenia, ale z punktu widzenia użytkownika.

Developer
Jeśli programista potrafi brać udział we wszystkich fazach tworzenia kodu, jest deweloperem [software developer].

Analyst
Jeśli zajmuje się ogólnie analizą systemów, tzn. zbieraniem wymagań, ich opisem formalnym i nieformalnym, to jest analitykiem [analyst].

Software engineer
Jeśli zna wszystko powyżej, jest po prostu inżynierem informatykiem. Zajmuje się praktyką, w przeciwieństwie do naukowca, który zajmuje się teorią. Oczywiście nie ma teorii bez odrobiny praktyki, ani też praktyki bez odrobiny teorii.

Scientist
Może być także naukowcem informatykiem [computer scientist], a wtedy zwykle specjalizuje się w dziedzinach takich jak: algorytmika, cybernetyka, teoria złożoności obliczeniowej, interakcja człowiek-komputer, sztuczna inteligencja, analiza numeryczna, teoria systemów operacyjnych, teoria języków programowania, algorytmy grafiki komputerowej, kompresja danych, szyfrowanie danych, multimedia, sieci komputerowe, robotyka i automatyka przemysłowa i inne.

W celu uproszczenia będę dalej używał tylko terminu programista zamiennie, najczęściej w roli software dewelopera. Programistów dzielimy także – ze względu na rodzaj kodu, który piszą – na aplikacyjnych, systemowych i webowych.

Programista aplikacyjny tworzy kod do rozwiązywania problemów dla konkretnych zastosowań. Tworzy aplikacje, które mają służyć jakimś celom: gry (cele rozrywkowe), programy finansowo-księgowe (cele rachunkowe, oszczędność czasu), programy analityczne (cele biznesowe), edytory tekstu (celem jest ładnie wyglądający wydruk), itp.

Programowanie systemowe jest na ogół uważane za trudniejsze, ale to tylko kwestia upodobań. Programista systemowy tworzy kod blisko związany ze sprzętem komputerowym, pozwalający wykorzystywać ten sprzęt w wielu – często różnych – zastosowaniach (czyli w pewnym stopniu niezależnie od zastosowania). Programistów systemowych potrzeba na rynku mniej i ich świat rządzi się po prostu trochę innymi regułami. To oni piszą fragmenty systemów operacyjnych, albo kod ściśle współpracujący z systemami operacyjnymi (np.: sterowniki urządzeń, antywirusy, itp.).

Programowanie sieciowe, czyli na potrzeby sieci [web], internetu, intranetu, a także innych sieci komputerowych (np. telekomunikacyjnych). Problemy, na które napotykają Ci programiści są trochę innej natury i wynikają ze sposobu komunikacji z ich programem oraz pomiędzy programami. Wyniki takiego programu zależą nie tylko od jego własnej struktury i mocy obliczeniowych komputera, ale także od czynników zewnętrznych, jak: aktualny stan sieci, liczba innych komputerów w sieci, liczba użytkowników, awaryjność serwerów, różnica czasu w innej strefie czasowej, itp.

Ten kurs jest raczej dla programistów aplikacyjnych, bo systemowi i webowi potrzebują znacznie więcej, znacznie dokładniej i trochę inaczej. Pewne elementy programowania stron internetowych (tzw. stron WWW) pojawią się, jednak nie jest to głównym celem tego kursu. Głównym celem jest nauka programowania. Programowanie webowe jest tylko jednym z zastosowań programowania.

Spis treści Poprzednia strona: Co i jak? Następna strona: Ludzie

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *