Co powiesz o kimś kto pracuje przy poważnych systemach np. finansowych?
akurat tak się składa, że pracuję w międzynarodowym banku nad systemem do automatycznej akceptacji i raportowania kontraktów walutowych.[...] z góry uprzedzam, że jakość wielu elementów systemu woła o pomstę do nieba, a w wielu zespołach zatrudnia się juniorów.
Zdaję sobie sprawę z tego, że tak jest a jednym z powodów jest właśnie zatrudnianie juniorów, którzy albo nie mają nad sobą dobrych seniorów, albo wystarczającego ich wsparcia/pomocy.
Czy utrzymanie takiego systemu jest tanie ze względu na to, że jakość wielu elementów jest jaka jest?
jakość wielu systemów jest kiepska z różnych względów, a mamtowdupizm seniorów to tylko jeden z powodów. powodami dla których systemy są kiepskie są np:
- regulacje, które spowalniają pracę i dlatego kombinuje się tak, żeby jak najkrócej wozić się z tymi regulacjami (tzn. dopchać coś kolanem zamiast spełniać porządnie regulacje)
- biurokracja przy (wydawałoby się) prostych rzeczach, np. dodaniu nowych zależności do projektu, wykorzystania kolejnego narzędzia programistycznego czy postawieniu nowej maszyny wirtualnej (robiącej cokolwiek co nam potrzeba, a więc np. uruchamiająca testy, testowe wersji aplikacji, wewnętrzne narzędzia, itp itd), więc nieraz stosuje się kulawe zamienniki, które nie wymagają wożenia się z biurokratycznymi procedurami
- słabe maszyny deweloperskie, słaba infrastruktura (powolne środowiska uruchomieniowe, duże lagi przy połączeniach do serwerowni, itd), co powoduje, że rzeczy, które najbardziej przez to spowalniane są najbardziej zaniedbywane
- przestarzała i przez to niezrozumiała i myląca dokumentacja, przestarzałe i przez to niezrozumiałe i mylące nazewnictwo w starych elementach systemu, rozbieżności w terminologii stosowanej przez biznes, programistów oraz zewnętrzne systemy czy formaty danych, które obrabiamy
- i tak dalej - jest mnóstwo problemów niezwiązanych z jakością programistów
jeśli chodzi o koszty i opłacalność to nie mam pojęcia, ale wiem, że budżetowanie w wielkim korpo jest nieraz absurdalne. ponadto biznes ogólnie nie rozumie pojęcia jakości i niezawodności oprogramowania (w tym testów) i infrastruktury i dlatego biznes ciśnie na dowożenie nowych ficzerów, nawet kosztem słabej implementacji. w telegraficznym skrócie: biznes chce tego co "wystarczająco dobrze" działa na chwilę obecną, a o tym co będzie później pomyśli się później.
w jaki sposób jakieś tam wymagania miałyby coś poprawić? na egzaminie mogę zrobić pokrycie testami 100%, a potem, w pracy zawodowej, mieć pokrycie 0%. co wtedy? karać programistów za zbyt małe pokrycie kodu testami?
Jakoś trzeba by było ludzi sprawdzać, jakiś sposób na pewno się znajdzie.
to wymyśl to "jakoś". dyskusja jest bez sensu jeśli nie zdefiniuje się tego "jakoś".
Ja mam na to taki pomysł:
- Poziom pierwszy - ukończone wyższe studia informatyczne (5 lat)
- Poziom drugi (po ukończeniu studiów) - znalezienie sobie mentora (doświadczonego programisty), pod którego okiem by się pracowało przez np. 2 lata. Taki senior musiałby przynależeć do cechu programistów (tak jak jest np. cech piekarzy). Ilość tego typu seniorów była by ograniczona i żeby do nich się dostać startowało by się w konkursie sprawdzającym wiedzę po studiach.
Taki konkurs zawierałby zadania z algorytmów i struktur danych, sieci komputerowych, systemów operacyjnych, projektowania systemów informatycznych itp.
- Poziom trzeci - praca jako junior - nie możesz zostać programistą bez spełnienia punktu 1 i 2.
Kolejne poziomy są już opcjonalne
4. Poziom czwarty - możliwość awansu na mida po 2-3 latach pracy jako junior - wymagany egzamin
5. Poziom piąty - senior minimum 10 lat doświadczenia - wymagany egzamin
6. Na końcu ekspert - minimum 20 lat doświadczenia - wymagany egzamin
Do pracy przy określonych typach projektów wymagane były by odpowiednie rangi.
Im bardziej krytyczny projekt tym wymagana wyższa ranga.
te wymagania wyglądają jak trolling albo naiwne wyobrażenia. podstawowym problemem, który widać jest to, że egzamin nie daje żadnej gwarancji, że programista będzie produkował dobrej jakości kod.
wysiadywanie 20 lat w gównoprojekcie także nie daje żadnej gwarancji, że ktoś się w tym czasie rozwijał. jeden człowiek może w 5 lat przeskoczyć w górę o kilka poziomów profesjonalizmu, a inny przez 20 lat będzie klepał to samo w systemie legacy, np. jakimś mega przestarzałym systemie bankowym w cobolu.
jakie kryteria są stosowane przy planowaniu i odbiorze np. krytycznych systemów informatycznych do zarządzania państwem? czy świadczą one o jakości programistów?
Nie wiem.
jakość systemu jako całości jest ważna, a nie jakość programistów. oczywiście jedno jest z drugim powiązane, ale jeśli np. ktoś robi audyt (bezpieczeństwa, jakości, zgodności, etc) to nie robi audytu programistów, a audyt wyprodukowanego systemu.
co do wartości certyfikatów to ten pan ma (miał?) dość krytyczne zdanie o nich:
O jakich certyfikatach mowa w tym filmie?
pewnie typowe, czyli niby potwierdzające znajomość jakiejś technologii informatycznej (np: java platform czy oracle db) albo metodyki wytwarzania oprogramowania (typu scrum).
Kto to jest ten pan?
https://pl.linkedin.com/in/wseliga
podałem ten występ, bo z jednej strony jest dość memiczny, ale z drugiej strony zawiera i tak sporo prawdy. typowe certyfikaty są niewiele warte w komercyjnej pracy. jeżeli jestem w roli rekrutera to nie interesuje mnie ile kto ma certyfikatów, a jak sobie radził z faktycznymi nietrywialnymi problemami, które napotkał w swojej komercyjnej pracy jako programista.
systemy informatyczne różnią się od operacji na otwartym sercu tym, że jeden zły ruch podczas operacji może zabić człowieka, ale wrzucenie kiepskiej zmiany w systemie informatycznym w prawie wszystkich przypadkach można jakoś odkręcić. systemy informatyczne mają wiele poziomów zabezpieczeń i audytu i dzięki temu zasięg awarii jest ograniczany. to jest gigantyczna różnica i dzięki temu nawet w miarę poważne systemy informatyczne mogą tworzyć dość przypadkowi ludzie, tzn. tacy, którzy przeszli zwykłą rekrutację.
Nie każdy lekarz robi operacje na otwartym sercu. Nie widzę przeszkód w powstaniu bootcampów np. dla pediatrów.
Zatrudnij juniora do pisania programu dla NASA służącego do sterowania rakietą lecącą na Marsa :)
nie wiem jak jest w nasa, ale cern ma oferty dla juniorów: https://careers.cern/alljobs?title=&tid=96&tid_1=103
np junior python developer
https://www.smartrecruiters.com/CERN/743999951668666-junior-python-developer-sy-bi-sw-2023-38-grae-
As a Junior Python Developer, you will join the Accelerator Systems Department (SY). Within this department, the Beam Instrumentation (BI) group provides many instruments used across the CERN accelerator complex.
Whilst most of these instruments have a dedicated GUI, developed and used by Operations, many instruments also have a low-level Expert GUI used by other experts within the group. In the past, these Expert GUIs have been built using various technologies. Recently, efforts have been made to converge our GUI development on 2 sector-supported technologies - PyQt and a zero-code based solution named WRAP. You will contribute to these efforts.
skoro w cernie jest masa roboty dla juniorów to czemu w banku (czy dowolnym innym korpo) nie miałoby być? kwestia rozsądnego zarządzania.
co do tych krytycznych systemów instytucji finansowych, o których się często wspomina to sprawa jest taka, że rzadko kiedy faktycznie jest jakiś pojedynczy krytyczny system, który mógłby położyć (zrujować) jakąś korporację. w bankach systemy tworzą system naczyń połączonych, które się wzajemnie ograniczają, kontrolują, uzupełniaja, pokrywają (w sensie jeśli któryś system padnie to można go zastąpić tymczasowo innymi z pewną stratą efektywności pracy, ale z zachowaniem ciągłości zapewniania usług). bazy danych i inne rzeczy mają backupy, więc nawet jak ktoś zrobi 'drop database' na produkcji to i tak to się da odkręcić.
chyba jedynym systemem finansowym, który mi przychodzi do głowy i który mógłby zrujnować jakieś korpo mógłby być nieograniczony niczym bot giełdowy do hft (high frequency trading). tam w ciągu sekund można przewalić setki miliardów dolarów. ale i tak wydaje mi się, że tutaj też można wprowadzić wiele poziomów zabezpieczeń, by zapobiec takim sytuacjom.