logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak wygląda praca programisty Embedded? Mam kilka pytań.

klopi90 28 Mar 2022 11:30 1143 3
  • #1 19951679
    klopi90
    Poziom 10  
    Posty: 5
    Ocena: 1
    Witam,
    Mam pytanie ogólne o to jak wygląda zawodowa praca programisty embedded. Obecnie pracuję jako inżynier elektronik, ale mikrokontrolery to moje hobby i uważam, że nadszedł czas wejścia na wyższy poziom. Na rozmowie którą niedawno miałem mój poziom został oceniony na Junior+, ale jeszcze nie Mid. Moje pytania:

    1. Czy programuje się bezpośrednio na rejestrach, czy może wykorzystuje się gotowe frameworki? Obecnie pracując na STM32 używamy Hala i Cube, o czym zadecydował Senior. Z jednej strony pracując na gotowych bibliotekach nie wiemy, co się naprawdę w procku dzieje, z drugiej strony pisanie wszystkiego od zera zajmuje dużo czasu, obie strony mają więc swoje racje. Czy większe firmy mają może swoje własne sprawdzone biblioteki na często powtarzające się zagadnienia jak np. inicjalizacja startowa zegara?

    2. Czy RTOS'y są chętnie wykorzystywane, czy tylko przy tych większych, lub krytycznych projektach?

    3. Pytanie o narzędzia wykorzystywane w pracy. Rozumiem, że pracuje się pod Linuxem i wybranym przez firmę środowisku i kompilatorze. Git jako kontrolę wersji kojarzę. Przeglądając oferty natknąłem się jednak na narzędzia o których pierwszy raz słyszę jak np. "Yocto", "Jira". Ktoś mógłby wytłumaczyć czym dokładnie są?

    4. Jak odbywa się testowanie kodu? Jest debugowany ręcznie jak to robię w Eclipse, czy wykonywane jest za pomocą skryptów jak np. SPOJ? Jeśli to drugie toczy powinienem znać narzędzie do ich wykonywania/tworzenia, czy to już trochę inna ścieżka rozwoju? W czym się takie testy tworzy?

    5. Czy znajomość, choćby podstawowa, narzędzia do tworzenia aplikacji okienkowej jak np. delphi jest mile widziana/obowiązkowa? Spotkałem się podczas krótkiej współpracy z takim stwierdzeniem.

    6. Pytanie dodatkowe: Praktyczne i proste do wytłumaczenia zastosowanie dynamicznego alokowania pamięci (Malloc) w mikrokontrolerach. Nie korzystałem z tego, a w rozmowie o pracę pytanie się jednak pojawiło.
  • Pomocny post
    #2 19951900
    wspanialec21
    Poziom 2  
    Posty: 4
    Pomógł: 1
    Ocena: 1
    1. Jako że praca programisty jest bardzo droga, to wszystko co może zmniejszyć nakład pracy jest wykorzystywane. HAL jest używany. Oczywiście czasem trzeba pogrzebać w rejestrach. Własne biblioteko to raczej funkcjonalności na nieco wyższym poziomie umożliwiające zmniejszenie nakładu pracy w nowych projektach.

    2. Tak, RTOS-y są powszechnie wykorzystywane. Bez dobrej znajomości ciężko będzie pracować w tym zawodzie.

    3.
    klopi90 napisał:
    "Yocto", "Jira". Ktoś mógłby wytłumaczyć czym dokładnie są?
    No, jeżeli nie potrafisz sobie tego wygooglować to ciężka sprawa. Dodaj do tego jeszcze Agile i Scrum. Dowiedz się co to jest CI/CD.
    klopi90 napisał:
    Git jako kontrolę wersji kojarzę
    W tym zawodzie Git musi być Twój najlepszym kumplem a nie problemem. Naucz się dobrze.
    klopi90 napisał:
    Rozumiem, że pracuje się pod Linuxem i wybranym przez firmę środowisku i kompilatorze. Git jako kontrolę wersji kojarzę
    Niekoniecznie pod Linuxem ale zespół musi wykorzystywać te same narzędzia. Jak będziesz miał bardziej "senior" pozycję to będziesz miał trochę więcej swobody :)

    4.
    klopi90 napisał:
    Jak odbywa się testowanie kodu? Jest debugowany ręcznie jak to robię w Eclipse
    Debugera używasz do debugowania, testy do testów. Jak testy nie przechodzą to wracasz do debugowania - ale już wiesz nieco więcej o tym czego szukać.

    5. Niekoniecznie. W małej firmie to może mieć jakieś znaczenie, w większej są wyspecjalizowani ludzie robiący soft na "duże" maszyny

    6.
    klopi90 napisał:
    Praktyczne i proste do wytłumaczenia zastosowanie dynamicznego alokowania pamięci (Malloc) w mikrokontrolerach
    Zagadnienie zarządzania pamięcią jest złożone. Generalnie w systemach o małych zasobach nie używa się dynamicznej allokacji w stylu standardowego "malloc". Są inne techniki nadające się do takich zastosowań np. memory pools czy podobne, gdzie nie grozi fragmentacja pamięci. I tak zaczniesz pracować jako "junior" i będziesz miał narzucone jak zarządzać pamięcią.
  • #3 19951950
    klopi90
    Poziom 10  
    Posty: 5
    Ocena: 1
    Dzieki za odpowiedź.

    wspanialec21 napisał:
    No, jeżeli nie potrafisz sobie tego wygooglować to ciężka sprawa. Dodaj do tego jeszcze Agile i Scrum. Dowiedz się co to jest CI/CD.


    Wygooglować definicję to jedno, a zrozumieć to inne. Na podstawie informacji rozumiem, że to jest system organizacji pracy IT, analogicznie jak np. Kanban jest wykorzystywany na produkcji. Ale czym się charakteryzuje, jakie ma główne założenia, jak się na nim pracuje? Wychodzę z założenia, że skoro potrafię wytłumaczyć w 3 zdaniach czemu warto używać Kanban to bardziej doświadczeni jeszcze krócej potrafią mi wytłumaczyć systemy IT.
  • #4 19951971
    wspanialec21
    Poziom 2  
    Posty: 4
    Pomógł: 1
    Ocena: 1
    klopi90 napisał:
    Wygooglować definicję to jedno, a zrozumieć to inne.
    Niestety, nie potrafię wytłumaczyć w 3 zdaniach. Zresztą i tak nie dostaniesz projektu na własność i w pracy zrozumiesz o co w tym chodzi. Te idee nie zostały wymyślone teoretycznie, tylko wzięły się z praktyczniej potrzeby. W pracy wiele zagadnień Ci się rozjaśni.

    Ja osobiście nie wymagam głębokiej znajomości od kandydatów na "juniorów" w czasie rozmów kwalifikacyjnych, bo nie mieli oni po prostu jeszcze możliwości zrozumienia tematu, jako że nie pracowali nad projektami w zespołach.

    klopi90 napisał:
    mój poziom został oceniony na Junior+
    Podtawową różnicą między "juniorem" a "seniorem" jest taka, że ten ostatni może pracować nad tematem samodzielnie. Junior potrzebuje pomocy, nadzoru i ukierunkowania. Często "junior" jest lepszy od "seniora" w wielu zagadnieniach, ale potrzebuje jeszcze "przetarcia".
REKLAMA