Wizje Zespołów


Wizja Zespołu OSFV

Efektywne motto na długo zapada w pamięć. Złotym standardem są motta firm takich ja Disney („Uszczęśliwiamy ludzi”) lub Instagram („Uchwyć chwilę i podziel się nią”). Niestety, dla wielu przedsiębiorstw przesłanie zostaje zepchnięte do roli pustych haseł na plakatach w biurach, które często są zapominane zanim jeszcze wyschnie na nich farba. Wizja OSFV powinna nie tylko wpływać na zaangażowanie zespołu i wskazywać ogólny kierunek w którym dążymy, lecz również rzucać światło na jego specyfikę dla potencjalnych przyszłych członków. Niniejszy dokument opisuje cel utworzenia zespołu walidacji otwartego oprogramowania sprzętowego (Open Source Firmware Validation), wizję która temu towarzyszyła, strategię przyświecającą jego działaniom i możliwe ścieżki karier oraz rozwoju jego członków.

Rozumiemy, co oprogramowanie powinno robić i wiemy,
jak sprawdzić, że faktycznie robi to co powinno.

Wprowadzenie

Testy oprogramowania, które zawsze kończą się wynikiem pozytywnym, są z gruntu bezwartościowe. Tak samo jak te, które nigdy się nie udają. Walidacja, tak jak każda inna usługa, powinna się koncentrować na przynoszeniu wartości. Wartością, którą przynosi, jest weryfikacja w jakich okolicznościach (wersja oprogramowania, charakterystyka sprzętu itd.) dane założenia projektu zostaną spełnione. Jako że zautomatyzowana walidacja systemów wbudowanych i firmware’u patrząc z perspektywy globalnej jest jeszcze w powijakach mamy wyjątkową okazję aby wpłynąć na jej przyszły kształt. 3mdeb zamierza być liderem w dziedzinie walidacji systemów wbudowanych. Planujemy stworzyć specjalny dział szkoleniowy, promujący naszą wizję walidacji i podnoszenie jej poziomu. Ponadto naszym celem jest stworzenie framework’a Open Source Firmware Validation, który będzie pełną aplikacją obejmującą swoim zakresem technologie od chmury (wirtualizacja, AWS, itp.), aż po systemy wbudowane (Yocto / Linux, Go, Python). To rozwiązanie powinno być uniwersalne, skalowalne oraz zdolne do porównania szerokiego zakresu projektów IoT out of the box. Równoważny framework zostanie stworzony dla firmware’u (BIOS, UEFI). Oba będą spójne i zgodne z najnowszymi się standardami (np. Linux Foundation Automated Testing Summit) oraz porównywalne z innymi frameworkami.

Kogo potrzebujemy

Potrzebujemy ludzi, którzy rozumieją, dlaczego tak ważne jest, by nie lekceważyć żadnego, nawet najmniejszego defektu pojawiającego się w testach w trakcie rozwoju lub wsparcia oprogramowania. Coś, co wydaje się być drobnym i nieistotnym szczegółem dla pojedynczego urządzenia, może spowodować poważny problem gdy będą ich tysiące.

Co oferujemy

  • Poznanie najnowszych technologii i rozwiązań najwyższej klasy.
  • Dostęp do różnych projektów z możliwością nauki szerokiego spektrum nowoczesnych technik i poszerzania własnych horyzontów.
  • Okazję do promowania oraz uczestnictwa w społeczności open-source poprzez wprowadzanie nowych funkcjonalności w otwartym kodzie źródłowym.
  • Okazję do wzięcia udziału w wielu konferencjach i spotkania się z ludźmi z całego świata.
  • Możliwość nauki od najlepszych profesjonalistów w swoich specjalnościach, takich firmware, wbudowane systemy Linux, hipernadzorcy, wirtualizacja, oraz bezpieczeństwa sprzętu i oprogramowania.
  • Wspaniałą atmosferę w zespole.

Wymagania:

  • samodzielność
  • skrupulatność
  • doświadczenie ze sprzętem
  • elastyczność i zdolność do szybkiego uczenia
  • RobotFramework (Python), LAVA, Weles – byłby dodatkowym atutem
  • znajomość środowisk wirtualnych, ujednoliconych baz danych raportów takich jak kcidb, iPXE, Docker, integracji z różnymi API lub bibliotekami – byłaby idealna
  • technologie internetowe – w zależności od rozwoju infrastruktury (REST API) oraz projektów IoT lub Edge Computing, w których uczestniczyć będzie zespół OSFV, testy ukierunkowane na technologie internetowe mogą być rozwijane i zwiększać swój udział procentowy w pełnej infrastrukturze testów 3mdeb.

Codzienne wyzwania

  • opracowanie zautomatyzowanych testów dla najnowszych funkcji
  • walidacja nieprawidłowo działającego sprzętu
  • konfiguracja i wsparcie długoterminowe sprzętu stosowanego w walidacji (RTE, MuxPi)
  • utrzymanie testów regresji cyklicznej
  • uzupełnianie i ustawianie zestawów testowych
  • automatyzacja wielu aspektów codziennej pracy (bash scripts, Dockerfiles,
    etc.)
  • proces dokumentowania usterek (szczegółowy opis dla szybszego rozwoju)
  • przygotowanie przejrzystej dokumentacji końcowej dla klientów

Mile widziane:

  • samodzielne naprawianie mniejszych usterek (akceptowalne, pod warunkiem kiedy dana osoba wie co robi – takie podejście pozwala zaoszczędzić dodatkowy czas)
  • tematy związane z bezpieczeństwem

Osiągnięcie samodzielności

Dla młodszych (lub raczej niedoświadczonych) kandydatów powinno to zająć od 3 do
6 miesięcy, aby osiągnąć podstawową gotowość do pracy jako inżynier walidacji w 3mdeb. Natomiast dla inżynierów na poziomie „regular” szacujemy, że 1 miesiąc jest wystarczającym czasem, aby być w stanie pracować samodzielnie.


Wizja Zespołu Firmware

Jeżeli CPU możemy nazwać sercem systemu wbudowanego,
to analogicznie, firmware będzie jego kręgosłupem.
I tak jak każde uszkodzenie kręgosłupa paraliżuje organizm,
jego poważna usterka paraliżuje cały system.
Naszym zadaniem jest uczynienie go przy pomocy zabezpieczeń
tak trudnym do złamania, jak to tylko możliwe.


Wprowadzenie

Jesteśmy niezależnym producentem BIOS-ów (IBV) dostarczającym open-source’owe rozwiązania firmware’owe dla swoich klientów. Rynek BIOS-u jest już dojrzały i pełen zaawansowanych graczy, którzy obecnie dostarczają oprogramowanie sprzętowe do większości komputerów. Ich rozwiązania są głównie zamknięte. 3mdeb pracuje na własną markę na rynku, dlatego przyczyniamy się do realizacji takich projektów jak coreboot, fwupd i wielu innych. Należymy również do grupy UEFI Adopters i w przeciwieństwie do największych producentów, promujemy publiczne udostępnianie i upstream’owanie kodu źródłowego do implementacji referencyjnej edk2, która umożliwia wsparcie sprzętu naszych klientów w społeczności. Promujemy to podejście, wolimy takie podejście, ale przede wszystkim zawsze szanujemy wolę naszych klientów. Postanowiliśmy udowodnić, że otwarte rozwiązania mogą być również wartościowe, a co nawet ważniejsze – bezpieczne. Tworzenie bezpiecznych rozwiązań w zakresie oprogramowania sprzętowego o najlepszej jakości to jedno z głównych zadań Zespołu Firmware’owego. Podnoszenie poziomu zabezpieczeń sprzętowych i realizacja naszego wsparcia w tym zakresie (mimo że nie są jeszcze dostępne w pełni operacyjne, otwarte rozwiązania) jest naszą codzienną pracą.

Kogo potrzebujemy

Potrzebujemy ludzi, którzy są zaznajomieni z architekturą systemów komputerowych. Którzy rozumieją C i asembler. Interesują się elektroniką. Muszą znać ograniczenia sprzętu oraz jego zachowania w różnych sytuacjach.

Co oferujemy

  • Poznanie najnowszych technologii i rozwiązań najwyższej klasy.
  • Dostęp do różnych projektów z możliwością nauki szerokiego spektrum nowoczesnych technik i poszerzania własnych horyzontów.
  • Okazję do promowania oraz uczestnictwa w społeczności open-source poprzez wprowadzanie nowych funkcjonalności w otwartym kodzie źródłowym.
  • Okazję do wzięcia udziału w wielu konferencjach i spotkania się z ludźmi z całego świata.

Jaki powinien być dobry inżynier oprogramowania sprzętowego:

  • entuzjastycznie nastawiony do open-source’u – każdy inżynier w 3mdeb powinien promować open-source jako część tworzenia własnej marki i wizji firmy
  • skrupulatny – nawet pojedyncza zmiana bitu może spowodować znaczny błąd, dlatego nie powinien ignorować najmniejszych zmian w rejestrach
  • samowystarczalny – inżynierowie oprogramowania sprzętowego w 3mdeb muszą być w stanie znaleźć rozwiązanie samodzielnie, starszy inżynier może jedynie doradzać w celu osiągnięcia rozwiązania problemu
  • doświadczony w pracy ze sprzętem – u nas flashowanie firmware’u odbywa się codziennie, wymagamy wiedzy z zakresu inżynierii elektronicznej aby uniknąć uszkodzenia sprzętu podczas pracy
  • elastyczny i zdolny do szybkiej nauki – firmware przygotowuje środowisko do uruchomienia systemu operacyjnego, dlatego niezbędna jest wiedza na temat interakcji systemu operacyjnego z oprogramowaniem, jak wyodrębnić takie informacje i zweryfikować własną pracę; bez systemu operacyjnego i jego bootloadera, oprogramowanie sprzętowe jest bezużyteczne, więc często praca inżyniera oprogramowania sprzętowego przenosi się na bootloadery, systemy operacyjne i hipernadzorców (ang. hypervisor).
  • biegły w C i assemblerach – czasami problemy wymagają głębszego zanurzenia się w kod niskiego poziomu w celu zlokalizowania błędu
  • cierpliwy i dociekliwy – dużo pracy z firmware’em to debugowanie przy czym programowanie zajmuje około 20% czasu; inżynier oprogramowania sprzętowego powinien posiadać te cechy, ponieważ ze względu na złożoność firmware’u problem może występować hipotetycznie w wielu komponentach
  • chętny do nauki – elementy składające się na komputer zazwyczaj mają własną specyfikację; prawie każde urządzenie peryferyjne, interfejs, struktura systemu operacyjnego/firmware’u mają swoją dokumentację (często setki stron); inżynier nie może obawiać się ogromu wiedzy, która musi zostać przyswojona, aby mógł zostać ekspertem od oprogramowania sprzętowego
  • zainteresowany technologiami/projektami takimi jak coreboot, UEFI, ACPI, Secure Boot, LinuxBoot, BMC, FPGA, EC, heads, tianocore, jądro Linux, GRUB, Xen, itp.

Codzienne wyzwania

  • rozwój firmware’u i debugowanie
  • rozwiązywanie problemów sprzętowych
  • przenoszenie („portowanie”) komputerów do otwartego oprogramowania sprzętowego
  • wkład w projekty open-source
  • inżynieria odwrotna (reverse engeneering)
  • analiza zabezpieczeń
  • autoweryfikacja
  • tworzenie dokumentacji

Osiągnięcie samodzielności

Tematy związane z oprogramowaniem sprzętowym są zazwyczaj obszerne, a czas niezbędny do osiągnięcia pełnej gotowości może wynosić nawet kilka lat. Najważniejszym dla inżyniera oprogramowania sprzętowego jest samodoskonalenie. Czas poświęcony na czytanie dodatkowych specyfikacji i standardów, zapoznanie się z nowymi technologiami i sprzętem na pewno się opłaci.

Dla młodszych (lub raczej niedoświadczonych) kandydatów powinno to zająć od 3 do 6 miesięcy, aby osiągnąć podstawową gotowość do pracy jako inżynier oprogramowania sprzętowego w 3mdeb. Natomiast dla inżynierów na poziomie „regular” szacujemy ,że 1 miesiąc jest wystarczającym czasem, aby być w stanie pracować samodzielnie.


Wizja Zespołu Web Dev

Lekkie, niezawodne, responsywne i dobrze wyglądające interfejsy internetowe
– Pozwólmy, aby IoT i sprzętowa część świata IT była bardziej interaktywna
oraz lepiej przyswajalna przez użytkownika końcowego.

Wprowadzenie

W dzisiejszych czasach jest wiele osób i firm nastawionych na rozwój sieci. Dlaczego 3mdeb chce wziąć udział w tym rynku, próbując osiągnąć większy sukces? Jaki jest powód, który stoi za tym pomysłem?

Jako firma pełna specjalistów od firmware’u i rozwiązań wbudowanych, dążymy do znalezienia złotego środka pomiędzy przetwarzaniem danych a doświadczeniem użytkownika (UX). Chcemy z głębi serca dzielić się rezultatami naszej ciężkiej pracy zarówno ze społecznościami, które orbitują wokół podobnych technologii, jak i z użytkownikami, którzy nie są (jeszcze) biegli w posługiwaniu się często trudnymi i problematycznymi sprzętowo rzeczami. Naszym celem jest dostarczanie otwartych, stabilnych i przyjaznych dla użytkownika produktów internetowych.

Innym problemem, którego jesteśmy świadomi, jest problem bezpieczeństwa cybernetycznego aplikacji internetowych oraz rosnąca liczba naruszeń i złośliwego oprogramowania kryptograficznego, które atakuje podłączone do Internetu urządzenia i maszyny. Z pomocą specjalistów ds. bezpieczeństwa firmy 3mdeb, zespół Web Development zamierza podnieść świadomość i ogólne bezpieczeństwo produktu końcowego.

Kogo potrzebujemy

Potrzebujemy ludzi, którzy rozumieją, jak tworzyć skalowalne i łatwe do utrzymania rozwiązania: doświadczonych programistów lub juniorów gotowych do nauki i pokonywania, krok po kroku, głównych problemów UX i specyfiki UI. Skuteczny produkt IoT wymaga dobrej jakości prezentacji i to właśnie zamierzamy osiągnąć, uzupełniając zespół entuzjastów rozwoju sieci!

Co oferujemy

  • Praca w projektach wykorzystujących najnowsze technologie i wysokiej klasy rozwiązania z zakresu oprogramowania układowego, wbudowanego i rynku IoT, dając możliwość połączenia aplikacji internetowych z urządzeniami końcowymi, tworząc w ten sposób kompletne rozwiązania Internetu Rzeczy.
  • Dostęp do wielu projektów z możliwością nauki szerokiego spektrum nowoczesnych języków i frameworków programowania
  • Szansa na udział w wyborze stosu technologicznego dla nowego projektu.
  • Okazja do uczestnictwa w społeczności Open-Source i wprowadzenia własnych, nowych funkcji lub poprawek w kodzie źródłowym.
  • Szansa na poznanie ludzi z całego świata poprzez wzięcie udziału w wielu konferencjach technicznych, które mogą poszerzyć Twoją specjalistyczną wiedzę.
  • Świetna atmosfera w zespole.

Wymagania:

  • dobra znajomość CSS, HTML i JavaScript
  • React, Angular, Django, Golang (lub inne nowoczesne frameworki) – byłyby
    dodatkową zaletą
  • doświadczenie w pracy z konteneryzacją oraz środowiskami wirtualnymi
  • wiedza na temat integracji z różnymi API lub bibliotekami – byłaby świetna
  • kompetencja i samodzielność
  • elastyczność i zdolność do szybkiego uczenia się

Codzienne wyzwania

  • Projektowanie i rozwój aplikacji internetowych
  • Rozwój oraz wsparcie aplikacji typu Dashboard
  • Wdrażanie szablonów przy dashboardach IoT
  • Projektowanie, wdrażanie i utrzymanie infrastruktury chmury (np. AWS)
  • Poprawki oraz wsparcie techniczne firmowego bloga
  • Tworzenie raportów oraz dokumentacji projektowej

Mile widziane

  • Pomoc w DevOps oraz budowaniu infrastruktury CI/CD
  • Tworzenie i utrzymanie oprogramowania pośredniczącego (Middleware)
    • Zapewnienie wsparcia w obszarze języka Golang

Osiągnięcie samodzielności

Nauka wszystkich „za i przeciw”, procesów wewnętrznych oraz wybranego stosu
technologicznego nie powinna przekraczać 1-ego miesiąca. Pełna gotowość i częściowa samodzielność przy pomocy w najbardziej wymagających zadaniach będzie równoznaczna z doświadczeniem wynoszącym od 3 do 6 miesięcy ciężkiej pracy.


Wizja Zespołu Embedded 

Tworzymy wbudowane systemy operacyjne od zera tak,
żeby były bezpieczne, stabilne i ekstremalnie wydajne.

Wprowadzenie

Tworzymy wbudowane systemy operacyjne dla naszych partnerów, a następnie zapewniamy im wsparcie. Skupiamy się na systemach wbudowanych, które są ograniczone ilością zasobów, bardzo kompaktowe i z konieczności niezwykle efektywne. Bardzo rzadko dysponują środowiskiem graficznym i są stworzone z myślą o małych maszynach z niewielkim marginesem autonomii. To dotyczy urządzeń używanych w IoT, robotyce, zastosowaniach medycznych, wojskowych i na każdym polu, gdzie występują systemy o znaczeniu krytycznym. Często używamy Yocto aby tworzyć dla naszych klientów rozwiązania szyte na miarę ich potrzeb.

Kogo potrzebujemy

Potrzebujemy ludzi, którzy są zaznajomieni z architekturą systemów komputerowych. Takich, którzy posługują się biegle językiem C, oraz posiadają doskonała znajomość systemów Linux. Inne języki programowania (C++, Python, Golang) będą dodatkowym atutem.

Co oferujemy

  • Poznanie najnowszych technologii i rozwiązań najwyższej klasy.
  • Dostęp do różnych projektów z możliwością nauki szerokiego spektrum nowoczesnych technik i poszerzania własnych horyzontów.
  • Okazję do promowania oraz uczestnictwa w społeczności open-source poprzez wprowadzanie nowych funkcjonalności w otwartym kodzie źródłowym.
  • Okazję do wzięcia udziału w wielu konferencjach i spotkania się z ludźmi z całego świata.

Jaki powinien być dobry inżynier systemów wbudowanych:

  • entuzjastycznie nastawiony do open-source’u – każdy inżynier w 3mdeb powinien promować open-source jako część tworzenia własnej marki i wizji firmy; specjalizujemy się na kontrybucji do projektów takich jak Yocto Project, OpenEmbedded, Linux U-Boot, SWUpdate, ale publikujemy również w wielu innych.
  • skrupulatny – nawet pojedyncza zmiana bitu może spowodować znaczny błąd, dlatego nie powinien ignorować najmniejszych zmian w rejestrach
  • samowystarczalny – inżynierowie oprogramowania wbudowanego w 3mdeb muszą być w stanie znaleźć rozwiązanie samodzielnie, starszy inżynier może jedynie doradzać w celu osiągnięcia rozwiązania problemu
  • doświadczony w pracy z Linuxem – nie tylko używamy go do pracy, ale dosłownie tworzymy i kompilujemy własne dystrybucje
  • elastyczny i zdolny do szybkiej nauki – systemy embedded działają na niskim poziomie,, dlatego niezbędna jest wiedza na temat interakcji systemu operacyjnego z oprogramowaniem sprzętowym, jak wyodrębnić potrzebne informacje i zweryfikować własną pracę; często praca inżyniera systemów embedded dotyka również takich zagadnień jak bootloadery, oprogramowanie sprzętowe i hipernadzorcy (ang. hypervisor).
  • biegły w językach C, Golang, Python – czasami problemy wymagają głębszego zanurzenia się w kod niskiego poziomu w celu zlokalizowania błędu, a czasem ich rozwiązanie wymaga wiedzy na temat wysokopoziomowych aplikacji.
  • cierpliwy i dociekliwy – dużo pracy systemami wbudowanymi to debugowanie przy czym programowanie zajmuje około 40% czasu; inżynier systemów wbudowanych powinien posiadać te cechy, ponieważ ze względu na ich złożoność problem może występować hipotetycznie w wielu komponentach
  • chętny do nauki – elementy składające się na komputer zazwyczaj mają własną specyfikację; prawie każde urządzenie peryferyjne, interfejs, struktura systemu operacyjnego/firmware’u mają swoją dokumentację (często setki stron); inżynier nie może obawiać się ogromu wiedzy, która musi zostać przyswojona, aby mógł zostać ekspertem od oprogramowania sprzętowego
  • zainteresowany technologiami/projektami takimi jak Yocto project, Linux kernel, U-Boot, GRUB (i inne bootloadery), Android (AOSP), OpenBMC, Xen itp.
  • posiadający praktyczne doświadczenie w pracy z różnorodnymi komputerami jednopłytkowymi, zwłaszcza opartymi o x86 (Intel/AMD) i ARM (NXP, Broadcom, Allwinner, Amlogic, Qualcomm, Rockchip, TI, ST, …) SoC

Codzienne wyzwania

  • rozwój systemów embedded i ich debugowanie
  • rozwiązywanie problemów sprzętowych
  • przenoszenie (“portowanie”) komputerów do otwartego oprogramowania sprzętowego
  • wkład w projekty open-source
  • inżynieria odwrotna (reverse engeneering)
  • analiza zabezpieczeń
  • autoweryfikacja
  • tworzenie dokumentacji

Osiągniecie samodzielności

Tematy związane z embedded są zazwyczaj obszerne, a czas niezbędny do osiągnięcia pełnej gotowości może wynosić nawet kilka lat. Najważniejszym dla inżyniera systemów wbudowanych jest samodoskonalenie. Czas poświęcony na czytanie dodatkowych specyfikacji i standardów, zapoznanie się z nowymi technologiami i sprzętem na pewno się opłaci.
Dla młodszych (lub raczej niedoświadczonych) kandydatów powinno to zająć od 3 do 6 miesięcy, aby osiągnąć podstawową gotowość do pracy jako inżynier systemów wbudowanych w 3mdeb. Natomiast dla inżynierów na poziomie “regular” szacujemy ,że 1 miesiąc jest wystarczającym czasem, aby być w stanie pracować samodzielnie.

Kontakt z nami


Jeśli masz jakieś pytania skontaktuj się z nami.