Opowiedz mi o ambitności..

6

Cześć wam!

Chce wykonać projekt, który da mi podstawy ubiegania się o pracę na stanowisko juniora jako programista JS i Pythona. Nie mam papieru po studiach zatem jasne jest, że do zwrócenia uwagi potrzebuje programów większego kalibru. Jak większego.. tego własnie nie wiem.

Na moje oko praca powinna sobą wyrazić to co chce o sobie powiedzieć, że znam naturę stosowanych języków, że znam wzorce, techniki (w tym paradygmat funkcyjny), że podnieca mnie metakod, że umiem upraszczać rozwiązania w oparciu o sprawdzone biblioteki, że umiem tworzyć kod z myślą o rozwoju, o testowaniu, o innych programistach.

Praca powinna też mówić, że mam pojęcie o strukturach algorytmicznych, ze znam się na bezpieczeństwie,na bazach danych, na ajaksie, że znam protokół http, że umiem odnaleźć się w najpopularniejszych frameworkach, a przede wszystkim, że jestem typem z wizją w kodzie.

Wiem, co mam pracodawcy do zaoferowania, ale nie wiem jak to sprzedać. No wiem, wiem.. mając kod opisuje co używam, opisuje powód dokonanych decycji, ich konsekwencje, rzucam wnioskami, a przede wszystkim robię dobre show popisując się rozwiązaniami.

Tylko, że ja nie jestem człowiekiem renesansu i brak mi talentu do robienia pięknego interfejsu, a tym bardziej robienia do rozkręcania komercyjnych usług..

Sam nie wiem co takiego mógłbym zrobić, by zostać zauważonym. Osobiście wolałbym rzucić z 20 małych programów, gdzie każda ukazuje różne sztuczki, dryfowanie na fali i przede wszystkim styl do jakiego dążę.

Toteż nie jestem jakimś genialnym koderem.. Daleko mi do wybitności. Na przykład najbardziej narzekam na to, że nie umiem projektować dużych rzeczy, bo ciągle wraz z pojawianiem się kodu widzę, że wszystko trzeba ciągle łatać i poprawiać. Czasowo strasznie na tym wychodzę.

Obecnie wolałbym implementować moduł po module i szlifować testowanie niż zajmować się projektowaniem wszystkiego. Pracę w fimie bardzo bym chciał i tu nie chodzi o pieniądze, bo zadowoliłby mnie 1-1.5k w łapę. Po prostu chcę się skupić bardziej na samym kodzie i móc uczyć się od lepszych. Chciałbym by mój kod był oceniany, by ktoś rzucał własne sugestie, bo tak samemu to raczej ciężko o nowe odkrycia.

Dlatego chciałbym dowiedzieć się z jakimi projektami wypada startować na stanowisko juniora (przykłady mile widziane)? O jakiej ambitności mówią wątki na tym forum?

Dzięki za uwagę.

0

Poczytaj o UML bo z tego co piszesz można wywnioskować, że nigdy tego nie używałeś.
UML uchroni Cię przed ciągłymi zmianami w klasach i przebudowaniem projektu. Bez taki ani rusz z naprawdę dużymi programami.

1

Napisz interpreter jakiegoś prostego języka. Wbrew pozorom nie takie trudne a robi wrażenie na ludziach.

0

@UMLITyle, niebawem odpowiem na twój post, szykuje większa odpowiedź.

Napisz interpreter jakiegoś prostego języka. Wbrew pozorom nie takie trudne a robi wrażenie na ludziach.

Interpreter lepiej byłoby robić w haskellu, bo tam ciekawiej przebiega parsowanie gramatyki. Toteż funkcyjny skill lepiej rośnie. Ale wtedy odbiegłbym od codzienności. Jakby to miało kogoś przekonać, że ja z django sobie radzę? Albo, że nie straszny mi JS? To co najwyżej podkreśli, że nie jestem klepaczem i że lubię się kodem bawić. Wg mnie to za mało.

0

Dobry temat. Sam się zastanawiałem nad tym "portfolio". Z jednej strony każdy mówi (i jest w tym racja), żeby takie portfolio koniecznie (s)tworzyć. Niezależnie czy jesteś (chcesz być) programistą, webmasterem czy fotografem. Zrozumiałe jest, że umieszczamy tam swoją twórczość, którą subiektywnie uznajemy za dobrą, wartą pochwalenia się nią. Możemy też dać komuś (np. znajomemu "po fachu", czy na forum) do oceny, co może być dodatkowym "filtrem treści".

No i tu zaczynają się schody. Bo to co dla nas, czy dla kogoś znajomego będzie ok, dla ludzi zajmujących się rekrutacją wcale takie być nie musi. Też myślałem nad tym. Nie wiem czy uda mi się rozwinąć na tyle w dziedzinie IT, by móc dobrze zarabiać np. na programowaniu embedded. Załóżmy, że tak. Co zatem sensownego za te kilka lat umieścić w portfolio, by zrobić wrażenie na potencjalnym pracodawcy ? Warto chyba też po jakimś czasie zacząć prowadzić bloga "technicznego" i coś interesującego starać się tam, w miarę regularnie, publikować.

0

To i ja dorzucę coś od siebie.
Rok temu kupiłem serwer + domene. Kosztuje mnie wszystko 90zł rocznie domena to po prostu moje imię i nazwisko.
Zastanawiam się teraz co tam zrobić bo na chwilę obecną stoi puste. Mam dwie opcje: Portfolio czyli taką stronkę o sobie też albo bloga technicznego. Lecz tutaj pojawia się standardowe pytanie: Kto to będzie czytał?
Jestem początkującym programistą i nie mam pojęcia czy mogę na to portfolio wstawiać już programy, które napiszę i będą one faktycznie w pewnym sensie przydatne. Co o tym myślicie?
Albo może lepiej zrobić bloga, na którym będę opisywał przeróżne ciekawostki dotyczące programowania? Np. jeden wpis poświęcę klasycznemu dziedziczeniu, w drugim wspomne o klasach abstrakcyjnych, o interfejsie polimorficznym.... cięzka decyzja - naprawdę.

3

Jeszcze alternatywnie zamiast klepać kolejny projekt, który będzie gorszą kopią 10 innych projektów, lepiej wybrać sobie istniejący opensourcowy projekt i dopisać nową funkcjonalność, poprawić bugi itd. W ten sposób można pokazać pracodawcy, że potrafisz pracować z istniejącym kodem (a z taką sytuacją człowiek spotyka się w 99% przypadków).

1

Tylko, że większość projektów OpenSource jest prowadzonych masakrycznie.

2

Poczytaj o UML bo z tego co piszesz można wywnioskować, że nigdy tego nie używałeś.
UML uchroni Cię przed ciągłymi zmianami w klasach i przebudowaniem projektu. Bez taki ani rusz z naprawdę dużymi programami.

UML złe nie jest, ale na to narzędzie przerasta moje potrzeby. Zwyczaj wykorzystuje proste diagramy, czy też rysuje przepływ sterowania. Generalnie podczas projektowania nie wnikam mocno w detale, bo to przerażająco trudne. Staram się to robić w oderwaniu od stosowanego języka i używanych bibliotek.

Choć to wygląda obiecująco. To w praktyce trudno mi to zmienić w zajebisty kod. Wiem, że to wina umiejętności, że to wymaga doświadczenia i czasu.

Zwykle podstawowe klasy tworzę tak, by oferowały to co rzeczywiście z ich strony jest mi niezbędne. Lecz po jakimś czasie okazuje się to niewystarczające, a to jakaś biblioteka wywiera wpływ, a to komunikacja z innymi klasami oddziaływuje na daną klasę, a to sam język narzuca swe ograniczenia, a to z powodu testów wymagane są dodatkowe funkcje.. Po kilku dniach to wszystko wydaje się tak jakby upchane butem.. Nie ma tu lekkości, jest taki przejaw formy nad treścią.

Kod mi puchnie i wtedy ponownie myślę co schrzaniłem. Dopiero mając kod przed oczami widzę jak jest źle, co trzeba naprawić i wtedy wiele pracy ląduje w koszu. Dlatego projektowania wolałbym uczyć się w zespole, biorąc pod uwagę uwagę lepszych ludzi.

Mnie żaden UML nie pomoże, tylko ogarnianie coraz większych schematów w kodzie.

0
socjopata napisał(a):

Zwykle podstawowe klasy tworzę tak, by oferowały to co rzeczywiście z ich strony jest mi niezbędne. Lecz po jakimś czasie okazuje się to niewystarczające, a to jakaś biblioteka wywiera wpływ, a to komunikacja z innymi klasami oddziaływuje na daną klasę, a to sam język narzuca swe ograniczenia, a to z powodu testów wymagane są dodatkowe funkcje.. Po kilku dniach to wszystko wydaje się tak jakby upchane butem.. Nie ma tu lekkości, jest taki przejaw formy nad treścią.

To co piszesz jest trochę abstrakcyjne i dlatego trochę trudno Ci pomóc.
Podaj jakiś konkretny przykład klasy, która Ci spuchła?
Nie chodzi mi o to żebyś tu wklejał kody źródłowe. Chodzi o to żebyś opisał logikę danej klasy. Co ona robiła, jakie problemy z nią miałeś i co w niej zmieniłeś, że tak Ci spuchła?
Prawdopodobnie źle dzielisz dany problem na podproblemy z których tworzysz klasy i to jest przyczyną Twoich problemów.
Ciężko to omawiać bez konkretnego przykładu.

0
UMLITyle napisał(a):

UML uchroni Cię przed ciągłymi zmianami w klasach i przebudowaniem projektu. Bez taki ani rusz z naprawdę dużymi programami.

Bzdura.

Żeby napisać dobrą aplikację trzeba:

  1. Doskonale rozumieć wszelkie procesy i czynności, które ma realizować aplikacja.
  2. Dokładnie wiedzieć, na jakich danych ma ona operować.
  3. Umieć świat rzeczywisty zamodelować w postaci obiektowej, czyli znać OOA&D i wzorce projektowe.
  4. Wiedzieć jak dzielić aplikację na warstwy.
    Dwa ostatnie punkty, wbrew pozorom nie są niczym uniwersalnym, bo często zależą od wybranego języka, technologii czy frameworka.

A UML to tylko styl w malarstwie, który przed niczym nie chroni, co najwyżej może być przydatny w niektórych zespołach, w których projektanci rysują UMLe, a klepacze implementują ich pomysły.

@socjopata, jeśli klasa Ci puchnie, to najprawdopodobniej znaczy, że ma zbyt wiele odpowiedzialności, więc musisz ją podzielić na mniejsze. Pomyśl o tym.

0

somekind ok masz rację, ale jednak UML pozwoli w miarę senownie rozłożyć wszystko tak by projekt nie musiał przechodzić gruntownych zmian o jakich autor pisał.
Jeśli mimo tego ktoś musiał przebudować projekt znaczy to tylko tyle, że nie potrafi modelować aplikacji.
Małe zmiany czy to w typach danych czy w dzieleniu klas są naturalne, ale nie rozbudowana generalna.

To tak jakby podczas procesu budowania domu, nagle trzeba było wszystko wyburzyć i poskładać od nowa. Tak się nie robi ani w budownictwie ani w programowaniu.

1

No ok, ale UML nie sprawia, że ktoś potrafi modelować, a jedynie pozwala zrobić to w sposób zgodny z pewnym standardem.

0

Dokładnie.
UML służy jako ułatwienie. Dzięki temu możemy zobaczyć "z góry" na pewien szkic naszego projektu. Jeśli szkic wydaje się ok, to możemy pisać.
Podczas pisania szkic nieco się zmieni, ale ogólny zarys powinien być ok.
UML to tylko pewne ułatwienie, ale nie środek na zbawienie :)

0

Kiedyś próbowałem w UMLu zaprojektować aplikację i później w oparciu o to napisać aplikację. Okazało się, że podczas pisania kodu wyszło tyle nowych problemów, których podczas projektowania nie byłem w stanie przewidzieć, że moje diagramy okazały się całkowicie nieprzydatne.
UML jest dobry w trzech przypadkach:

  1. jak masz gotową aplikację i chcesz przekazać innym jak poszczególne elementy funkcjonują to możesz to opisać UMLem
  2. do zaprojektowania jakiegoś bardzo małego elementu, ale można to łatwiej zaprojektować bez UMLa
  3. jak chcesz komuś obrazowo przedstawić (np. klientowi lub innemu programiście) jak wyobrażasz sobie działanie funkcjonalności, którą omawiacie. Wielu ludzi jest wzrokowcami i lepiej rozumieją obrazki niż czysty tekst
0

Bzdura

Brak Twoich sukcesów w tej dziedzinie oznacza tylko tyle, że nie potrafisz tego robić. Projektowanie aplikacji to nie jest 30 minutowa praca. To nawet nie jest praca kilkudniowa. To praca, która często zabiera nawet tydzień.
Przy projektowaniu musisz dobrze poznać architekturę i sposób wykonywania danych problemów.

UML nie służy do bezmyślnego "widzi mi się", albo "myślę, że tak będzie ok". UML ma służyć do bardzo szczegółowej analizy projektu. SZCZEGÓŁOWEJ. A taka szczegółowość oznacza długi proces analizy, ale dzięki temu uniknie się błędów w późniejszych etapach.

Cóż... znam Twój ból bo też mój pierwszy projekt mi kompletnie w UML nie wyszedł. Ale 3 już był na tyle dobry, że wystarczyło użyć generatora kodu i była architektura zrobiona :)

2

Ale 3 już był na tyle dobry, że wystarczyło użyć generatora kodu i była architektura zrobiona

A co to była za aplikacja? Kółko i krzyżyk 3x3? ;)

0

Ja szkice swoich projektów robię długopisem na kartce i to nie jest UML. ;)

0

Aplikacja działająca na pliku XML. Zbierała dane przetwarzała je i inne duperele.
Nie było to nic wielkiego, tak aby pracowała nad tym horda programistów, ale też nie była to banalna aplikacyjka do wykodzenia w parę dni.

W procesie modelowania nie jesteśmy w stanie 100% ocenić co i jak, ale dokładność jest jednak dość wysoka. Wystarczy na to poświęcić wystarczająco dużo czasu.

1
UMLityle napisał(a):

Bzdura

Brak Twoich sukcesów w tej dziedzinie oznacza tylko tyle, że nie potrafisz tego robić. Projektowanie aplikacji to nie jest 30 minutowa praca. To nawet nie jest praca kilkudniowa. To praca, która często zabiera nawet tydzień.

Potrafię zaprojektować i napisać aplikację bez używania UMLa, więc po co marnować dodatkowy tydzień?
W praktyce zawsze pojawiają się nieprzewidziane rzeczy i potrzebne są jakieś zmiany, więc po co tracić czas na zabawę z UMLem?

0

Bo w rzeczywistości Twoje modyfikacje zabierają Ci więcej czasu niż ten tydzień poświęcony na modeling.
A te drobne zmiany zawsze wprowadzane to jest kwestia np zmiany typu danych, lub zmiana ilości argumentu danej funkcji.
W skrajnym przypadku rozbicie czegoś na strukturę etc.

Po prostu ten tydzień w rzeczywistości jest w późniejszych etapach nadrabiany. Im większy projekt tym lepiej jest modelować aplikację nim zacznie się ją pisać.

To tak jak z testami. Ich pisanie zabiera czas, ale... bez ich pisania nie da rady.

2
UMLITyle napisał(a):

Bo w rzeczywistości Twoje modyfikacje zabierają Ci więcej czasu niż ten tydzień poświęcony na modeling.
A te drobne zmiany zawsze wprowadzane to jest kwestia np zmiany typu danych, lub zmiana ilości argumentu danej funkcji.

W praktyce to zawsze klient przyjdzie i Ci powie, że zmieniły się założenia biznesowe i teraz dany element ma funkcjonować inaczej i chciałby żeby był gotowy na jutro.
A wtedy możesz sobie UMLa wsadzić gdzieś.
Nie ma sensu projektować całego systemu. W praktyce to się nie sprawdza. W praktyce sprawdza się podzielenie systemu na małe części, implementowanie poszczególnych elementów i jak dany element jest już gotowy, to dawanie go do sprawdzenia klientowi. Naniesienie poprawek po uwagach klienta i implementowanie kolejnego elementu, i tak dalej.

0

Tylko jak wynika z tego topicu to Ty masz problemy z budowaniem projektu, bo Ci się coś sypie, a nie mi. Wniosek? Mój sposób wydaje się być stabilny.
Cóż ja się jeszcze nie zawiodłem na UMLu. Radzę po prostu spróbować, bo pytałeś o rady, a zmienić nic w swoich działaniach nie chcesz, więc czego oczekujesz? Magicznego sposobu?

0

Drętwa gadanie się z tego robi.. Chce wiedzieć jakie projekty pod CV podłożyć, by się nie na robić, a wypaść lepiej niż dobrze. Czym przeważnie można zainteresować oko rekrutera?

0

Mylisz mnie z kimś. Mi się nic nie sypie, nie pytałem o rady i nie jestem autorem tego tematu.

@socjopata
A co chcesz programować w przyszłości? Jaka konkretnie praca Cię interesuje?

2

Mylisz mnie z kimś. Mi się nic nie sypie, nie pytałem o rady i nie jestem autorem tego tematu.
No jasne, teraz to sobie zwalcie wszystko na mnie. Super, pytam o jedno, a dostaje dygresje o czym innym. 4pro.. nic dodać nic ująć : /

1

A co chcesz programować w przyszłości? Jaka konkretnie praca Cię interesuje?
Plucie danymi z bazy na przeglądarkę.

0
socjopata napisał(a):

A co chcesz programować w przyszłości? Jaka konkretnie praca Cię interesuje?
Plucie danymi z bazy na przeglądarkę.

Jeżeli interesuje Cię asp.net to dołącz do jednego z tych projektów:
http://wiki.asp.net/page.aspx/388/aspnet-open-source-projects/
Będziesz mógł wpisać w cv, że brałeś udział w jakimś projekcie. To duży plus.
Jeśli nie interesuje Cię asp.net, to poszukaj innych projektów.
Myślę, że każdy rekruter by docenił to, że brałeś udział w jakimś projekcie.

0

No to powiedział 0x200x20, a mnie nosi Python i JS.

1
0x200x20 napisał(a):

Napisz interpreter jakiegoś prostego języka. Wbrew pozorom nie takie trudne a robi wrażenie na ludziach.

Ja proponuję napisać w Prologu interpreter Haskella, a potem interpretować nim napisany przez siebie w Haskelu kompilator C++, i skompilować w nim źródła Dev-Pascala. Gdybym był pracodawcą przyjąłbym kogoś takiego od ręki - bo to znaczy, że gość potrafi stracić dowolną ilość czasu, jaką dysponuje, na zrobienie czegoś, co jest absurdalnie zbędne i bezużyteczne. A takich właśnie ludzi wśród praktyków brakuje!

@socjopata - napisz coś przydatnego, jakiś sensowny komponent, który można by praktycznie stosować w rożnych aplikacjach. W branży webowej może to być jakiś fajny grid, jakieś menu dynamicznie budowane na podstawie uprawnień użytkowników, albo współpracujący z dropdownem popup umożliwiający dodanie nowej encji do bazy (a zarazem powiązanego dropdowna). Ale zrób to maksymalnie generycznie i reużywalnie, niech Twój komponent będzie zamkniętą częścią, którą wystarczy jedynie prosto skonfigurować (np. ostylować i podać nazwę tabeli), aby zadziałała w dowolnej aplikacji.

PS - "ambitność"? A nie "ambicja" czasem?

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