W większości zgadzam się z odpowiedzią Heleny i zakładam, że większość przyzwoitych firm oczekuje pewnego poziomu znajomości algorytmów od osób, które chcą pełnić wiodącą rolę w inżynierii oprogramowania. Jednak może być kilka wyjątków, w których projekt wymaga głównie zajmowania się drobiazgowymi szczegółami zarządzania komponentami i zależnościami, rolą opartą na kierunku menedżerskim, kierowaniem działalności na bardzo lekkie aplikacje bez jakiejkolwiek złożoności algorytmicznej lub firmy nie być „przyzwoitym” w tym sensie, że ich terminologia jest tak błędna, jak obecna ^^. Przynajmniej z twojego opisu wydajesz się bardziej jak kierownik zespołu, który również rozwija się, koncentrując się na projektowaniu interfejsów API i algorytmicznie prostego oprogramowania (nic w tym złego, wybór odpowiedniej technologii jest również interesującą częścią pracy, ale nie wszystko czego oczekiwałbym od głównego inżyniera oprogramowania). Więc wydaje mi się, że jesteś programistą zarządzającym zespołem. Być może jesteś również szczególnie dobry w wybieraniu frameworków lub projektowaniu interfejsów API, wtedy możesz się na tym skupić.
Kilka rzeczy, na które zwróciłbym uwagę w opisach stanowisk, aby znaleźć odpowiednią pracę i zwiększyć szansę na to, że w obliczu (zbyt wielu) pytań algorytmicznych byłoby to:
- skupienie się na bibliotekach, frameworkach i frazesach technologicznych
- wzmianka o obowiązkach kierowania zespołem (zarządzanie osobiste)
- nacisk na projektowanie API
- nacisk na lekkie aplikacje internetowe
- nacisk na architekturę technologii / infrastruktury
- początkujący, samouk kultura *
Zasadniczo więc w przypadku zadań, które opierają się „w górę” w kierunku projektowania zewnętrznej powłoki aplikacji i sposobu ich współpracy bez patrzenia na złożoność algorytmiczną lub w przypadku zadań, które pochylają się „w bok”, np. do domeny biznesowej lub do zarządzania zespołem lub infrastrukturą. Czasami mogą istnieć role głównie związane z projektowaniem interfejsów API lub „faworytami”, którzy dyskutują z osobami znającymi domenę biznesową, jak oprogramowanie powinno działać na poziomie biznesowym i API, a następnie szczegóły zostaną zaprojektowane przez inżynierów oprogramowania.
* Dlaczego kultura startupów / samouków? Ponieważ - frazesy, tak, ale często to widziałem - ci często nie wiedzą właściwie, co robią (technicznie), często zatrudniają kogo mogą dostać i którzy mogą szybko wdrażać rzeczy bez większego zainteresowania algorytmiczną wydajnością. Czasami po jakimś czasie zawodzą, czasami im się to udaje, a potem może być konieczne posprzątanie bałaganu, gdy gwałtownie rosną, a ich naiwne algorytmicznie rozwiązania na małą skalę już się nie skalują, ale nadal mogą zapewniać dobrą pracę przez lata. Czasami nie stanowi to żadnego problemu, ponieważ ich rynek docelowy nie potrzebuje wydajności algorytmicznej, tylko ktoś, kto pisze program z ładnym interfejsem użytkownika dla tej niszy, o którą nikt jeszcze się nie troszczył.