Własny język jako projekt aby znaleźć pierwszą pracę

0

Cześć,

piszę z pytaniem o to co warto zrobić jako projekt który wrzucę do CV. Kończę studia ścisłe (nie infe) i dostaje odmowy na rozmowach rekrutacyjnych, że brakuje mi praktyki aby mnie zatrudnić. Rozumiem sytuację drugiej strony, dlatego pomyślałem sobie że projekt którym nie będzie się wstyd pochwalić to jest próg przez który muszę szybko przejść.

Celuję w stanowiska Data science/machine learning engineer. Znam się na matematyce więc problem jej znajomości mam odhaczony. Też piszę pracę magisterską z sieci neuronowych więc wydaje mi się że jakieś entry podstawy mam aby się w to bawić. Niemniej, dostaje odmowy - a w feedbackach dostaję odpowiedź że brak dużego projektu/praktyki. I wydaje mi się, że nie jest to takie gadanie bo podczas rozmów były pytania czym dużym się mogę pochwalić i niestety niczym. Ostatnie pół roku byłem zaczytany w publikacjach an NeurIPS zamiast kodować coś dużego co teraz się trochę na mnie mści bowiem myślałem, że już będę pracował heh.

Pomysł mam taki: Chcę stworzyć własny interpretowany język programowania. Znam się troche na algorytmach i strukturach danych (ale żadnym topcoderem nie jestem - po prostu wiem po co są i rozumiem czemu są takie mądre te pojęcia, umiem je zakodować i tyle). I tak przykładowo, jakbym chciał zrobić interpretowany język programowania to wiem, że działanie takiego kodu bardzo opiera się na drzewach i ich odpowiedniej analizy/przeszukiwania ich. Sam lexer i parser umiałbym zakodować, natomiast na pewno taki język oparty na przeszukiwaniu drzewa nie byłby szybki. A dalej bym musiał doczytać co nie jest problemem.

Potem, drugi projekt jaki chciałem zrobić to napisać własną bibliotekę do deep learningu w języku który bym zakodował. Wydaje mi się, że wiem jak zakodować autoróżniczkowanie na grafach - na pewno bym się wzorował na tym jak jest napisany PyTorch bowiem tą bibliotekę znam lepiej.

Czy myślicie, że takie dwa projekty to jest coś co by mogło się spodobać podczas rekrutacji?

Szkoda, że dopiero teraz pytam - w miejscu do którego chciałem się dostać dostałem właśnie odmowę od ludzi technicznych z powodu braku własnych projektów, gdybym wiedział to na pewno bym pytał wcześniej. :/

ps. Bardzo mnie zainteresowało to jak działają języki programowania od samych podstaw, dlatego taki projekt wymyśliłem. Bardzo dużo frajdy daje mi coraz większe rozumienie jak to działa. Dodatkowo, jak ktoś nie chce się uczyć algorytmiki i struktur danych po to aby klepać zadanka na spoju, to jest to świetna alternatywa, bo w kreowaniu własnych języków jest dużo takiej teorii.

Ale obawiam się jednego - czy studenci infy, np. kończąc informatykę, nie klepią takich rzeczy jak własny język jako standardowy projekcik na studiach ? I na rozmowach powinno się pochwalić czymś innym?

Pozdrawiam serdecznie.

3

A nie lepiej jakiś duzy projekt zbliżony do tego co wykonywałbyś na stanowisku w pracy?
Np. dla Python Django developera to byłaby jakaś duża aplikacja internetowa z wieloma funkcjami itd.
A dla Twojego stanowiska to byłoby?

Obawiam się, że stworzenie języka nie jest powiązane z tym co byś robił na takim stanowisku

2

A na penis komuś, kto celuje w

Data science/machine learning engineer.

własny język programowania? Weź jakiś otwarty zbiór danych: np dane pogodowe dla wschodniego wybrzeża USA i udowodnij jak opady mają wpływ na przyrost naturalny w tym rejonie.

Szkoda, że dopiero teraz pytam - w miejscu do którego chciałem się dostać dostałem właśnie odmowę od ludzi technicznych z powodu braku własnych projektów, gdybym wiedział to na pewno bym pytał wcześniej. :/

Moim zdaniem ściema.

1
  1. Ale na co ty aplikujesz? Na Kodera czy na Data Scientista? Różnica dość spora. Znajomośc budowy kompilatorów do Data Science średnio się przyda.
  2. Tak, studenci informatyki zwykle mają zajecia z Automatów i Języków Formalnych a potem z Kompilatorów (pewnie w sumie ze 2-3 semestry tego) i większość ma na projekt napisanie kompilatora.
  3. Jest to ciekawe jeśli kogoś interesuje ta tematyka, ale zupełnie nie widzę jak taki projekt ma ci pomóc w znalezieniu pracy jakiej szukasz.
  4. Weź może poklikaj jakieś Kaggle albo napisz jakąś ciekawą libkę w oparciu o istniejące rozwiązania z zakresu ds/ml
2
michal96s napisał(a):

Pomysł mam taki: Chcę stworzyć własny interpretowany język programowania. Znam się troche na algorytmach i strukturach danych (ale żadnym topcoderem nie jestem - po prostu wiem po co są i rozumiem czemu są takie mądre te pojęcia, umiem je zakodować i tyle). I tak przykładowo, jakbym chciał zrobić interpretowany język programowania to wiem, że działanie takiego kodu bardzo opiera się na drzewach i ich odpowiedniej analizy/przeszukiwania ich. Sam lexer i parser umiałbym zakodować, natomiast na pewno taki język oparty na przeszukiwaniu drzewa nie byłby szybki. A dalej bym musiał doczytać co nie jest problemem.

Potem, drugi projekt jaki chciałem zrobić to napisać własną bibliotekę do deep learningu w języku który bym zakodował. Wydaje mi się, że wiem jak zakodować autoróżniczkowanie na grafach - na pewno bym się wzorował na tym jak jest napisany PyTorch bowiem tą bibliotekę znam lepiej.

Totalnie bez sensu. Narobisz się jak głupi przy robieniu własnego języka. Ugrzęźniesz w projektowaniu skłądni a potem w niekończących się optymalizacjach bo twój język zawsze będzie gorszy od języka robionego przez profesjonalisów całymi zespołami

Shalom napisał(a):
  1. Tak, studenci informatyki zwykle mają zajecia z Automatów i Języków Formalnych a potem z Kompilatorów (pewnie w sumie ze 2-3 semestry tego) i większość ma na projekt napisanie kompilatora.

Zwykle jest to jakiś podzbiór istniejącego języka a nie pełnoprawny język który do czegoś by się nadawał

1

Na juniora często pytają się o jakieś większe projekty, ale to raczej studenckie czy takie które sam robiłeś które nie muszą być jakoś super złożone, nikt Ci nie każe robić następnego pytorcha/tensorflowa. Też dziwne, że wszędzie Cię odrzucają ze względu na brak projektów, ostatnio miałem rozmowę właśnie między innymi na junior machine learning engineera do bardzo dobrej firmy i nawet o projekty nie pytali na rozmowie.

1

Napisz jakąś porządną libkę open source do NN dla C# bo nie ma :) Bankowo później ktoś Cię zatrudni :)

0

Napisanie własnego języka to o tyle dobry pomysł, że trochę wymusi na Tobie naukę organizacji kodu. Dla przypomnienia C napisalem sobie kiedyś kompilator na podstawie tej książki: https://www3.nd.edu/~dthain/courses/cse40243/fall2019/ Patrząc po historii na gh zajęło mi to ok 3 miesięcy, bez stresu ale też przesadnej dbałości o kod. Przedtem i potem pisałem jeszcze inne proste kompilatory. Jeśli chcesz napisać prosty język interpretowany, to możesz sklecić go na dwóch stosach, ale nie wiem, czy to jest coś co jakiś pracodawca doceni. No, chyba, że założysz bloga i opiszesz w szczegółach co i po co robisz.

Ale jeśli chodzi Ci o znalezienie roboty, to chyba musisz przyjrzeć się do kogo aplikujesz. Jak dla mnie odpowiedzi od rekruterów wyglądają podejrzanie. Jeśli nie mogą zainwestować w obiecującego przyszłego absolwenta, to coś jest nie tak z firmą.

0

Jeśli zdecydujesz się na pisanie własnego języka/kompilatora/interpretera, ja z swojej strony mogę polecić ci dwie książki, które traktują o tym temacie, jednak minusem może być to, że mówią o Golangu

0

Dzięki wszystkim za rady. Teraz piszę interpreter w Pythonie - uznałem że na pewno będzie to rozwojowe. Domyślnie, chcę aby faktycznie język który zrobię był w zbliżony do języków obiektowych. Mniej więcej wyobrażam sobie jakie elementy OOP będą mi potrzebne do napisania biblioteki sprawnie obsługującej konstruowanie i trenowanie sieci neuronowych. Cel był taki aby potem tą bibliotekę rozszerzyć do łatwej obsługi niektórych elementów wizji komputerowej a dokładniej to do segmentacji i detekcji obrazów. Ale @bakunet podsunął pomysł, aby napisać jakąś libkę w C# co wydaje się fajnym pomysłem. Być może na pisaniu interpretera w pythonie skończę wojaże w własnym językiem(póki co) a następnie pomyślę o pisaniu projektu w C#(a czemu nie Javie?) który faktycznie nadawał się do zadań związanych z wizją komputerową.

W międzyczasie, dzielnie walczę w jednym z obecnych konkursów na Kaggle, optymistycznie patrzę, że ze swoimi rozwiązaniami mogę rywalizować o jakieś topowe miejsca - byłem ostatnio regularnie w top 10, teraz troche spadłem. Jak kolejne rozwiązania nadal będą wpadać w jakieś górne miejsca to też to wpiszę do cv - ty chyba powinno być jakimś plusem.

Pisałem pierwszy post trochę przygnieciony tym co tam opisałem na początku, niemniej trzeba się brać do roboty i tyle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1