Firma, w której dba się o kod

0

Cześć.
Ostatnio zwolniłem się z jednej pracy, gdyż kod tam był pisany totalnie fatalny. Absolutnie można było się pociąć jak trzeba było pracować z tym kodem.

Szukam teraz pracy i ostatnio zapytano mnie czemu zwolniłem się z tamtej pracy, a ja na to, że dbam o kod, szanuje zasady czystego kodu i ich przestrzegam, na co usłyszałem, że takiej pracy nie znajdę nigdzie :P

Ja rozumiem, że nie zawsze można chuchać i dmuchać na kod oraz pieczołowicie pisać każdą jedną linijkę, ale jednak jakieś standardy dobrego kodowania powinno się trzymać, bo potem słyszę od tego samego gościa, że "no, ale ten projekt musimy przepisać na nowo". No kurde, wiadomo, że na nowo skoro pisano niedbale, byle było na szybko. To im nie dało do myślenia, że mają bezmyślne podejście do programowania?

I teraz pytanie do Was drodzy forumowicze, czy są firmy z mądrym podejściem do programowania? Czy są firmy, które dbają o kod i jakość wytwarzanego oprogramowania? Czy to może ja jestem księżniczką w spódnicy i kręcę noskiem :)?

Jestem osobą, która szanuje siebie i wie co potrafi, z tego też powodu szukam pracy prawie idealnej. Pochwalę się, iż na wysłane kilkanaście CV, odpowiedziało po 3 godzinach 5 firm. Myślę, więc, że mogę śmiało trochę kręcić noskiem, aczkolwiek czy przypadkiem nie jest tak, że rzeczywiście każda firma leci tylko na czas i "byle działało"?

0

F**k, czy jest tu ktoś na tym forum, kto jest w stanie przyznać, że jego firma produkuje dobry kod? :P

Moim zdaniem, pytaj o nastawienie firmy do testów, najlepiej, żeby na samej rekrutacji pytali cię o testowanie. Jeśli kod jest otestowany testami jednostkowymi i wydajnościowymi, to nie ma problemu z refaktoryzacją, wobec czego można poprawiać jakość kodu stopniowo, bez dochodzenia do ściany i przepisywania od nowa.

0

Ooo super rada. Będę pytać, bo ja zazwyczaj też ładuję dużo pytań pracodawcy przyszłemu.
Dodam, że w mojej ostatniej firmie testów nie pisano bo (ulubiona wymówka) "zajmuję czas" :D

ech... obym znalazł normalną (normalniejsza chociaż( firmę bo inaczej założę własną :D

0

Wydaje mi się że w takim celu trzeba celować w firmy produkujące jakieś biblioteki a nie aplikacje ;]

Poza tym ponoć fog creek pisze dobry kod :P

0

No cóż, ideały kompletnego nie szukam, ale żeby chociaż firma była na tyle inteligentna, aby pisać testy oraz czytelny zwięzły kod. To chyba nie tak dużo, w końcu firma programistyczna zatrudnia programistów, najlepiej fachowców :P

No bo praca ze złym kodem mija się w sumie z celem, zarówno dla firmy jak i dla programisty, który się przy tym męczy.

0

No to, jak już napisałem, szukaj firmy, która dba o testy automatyczne. Mam wrażenie, że mało polskich firm przejmuje się w ogóle testowaniem, np u mnie są skomplikowane metody biznesowe totalnie bez testów automatycznych, przez co przerabianie ich to katorga. Zamiast refaktoryzować i ciągle poprawiać kod stawia się na to, by zmieniać jak najmniej produkcyjnego kodu, najlepiej nie zmieniać wcale, tylko tworzyć obejścia w nowym kodzie. Potem obejścia na obejścia, obejścia^3 itd

Ja idę do firmy (już za tydzień :) ), która stawia na testy, a przynajmniej na rozmowie rekrutacyjnej pytali mnie mocno o testy automatyczne. Tak, że przynajmniej ja niedlugo się przekonam jak się pracuje z dobrze otestowanym kodem ;)

2

Czy ktoś wam broni pisania tego "dobrego kodu" albo testów? Jak w firmie się tak nie pisze, to możecie wyjść z inicjatywą i zacząć to zmieniać. Jeżeli ma to ekonomiczne uzasadnienie to nie widzę powodu dlaczego ktoś miałby protestować.

0

Jakiś czas temu aplikowałem do firmy 7N. Na rozmowie kwalifikacyjnej pytali mnie między innymi o jakość kodu w moim obecnym projekcie, jak oceniam jakość swojego kodu w porównaniu z kodem kolegów, co bym poprawił w obecnym kodzie i czy robimy przegląd kodu. Nie dostałem się do 7N i nie wiem jak wygląda kod w ich projektach, ale to pierwsza firma, która na rozmowie kwalifikacyjnej zadawała mi takie pytania, więc przypuszczam, że w tej firmie poważnie podchodzą do czystości kodu.

0
Mr Obvious napisał(a):

Czy ktoś wam broni pisania tego "dobrego kodu" albo testów? Jak w firmie się tak nie pisze, to możecie wyjść z inicjatywą i zacząć to zmieniać. Jeżeli ma to ekonomiczne uzasadnienie to nie widzę powodu dlaczego ktoś miałby protestować.

U mnie nikt nie broni wprost pisać testów, ale bardzo ciężko jest pisać testy do kodu, który wybitnie nie został zrobiony pod testy. Jeśli w kodzie jest mnóstwo metod statycznych i masa wywołań operatora new w środku logiki (zamiast wstrzykiwania zależności) to nie zrobisz do tego normalnego testu jednostkowego. Można by się pobawić w mockowanie metod statycznych za pomocą PowerMock, ale wtedy kod i tak dalece nie będzie tak elastyczny i podatny na refaktoryzację, jak gdyby był pisany od początku z myślą o testach i refaktoryzacji. Poza tym jest z góry prikaz, żeby nie mieszać w kodzie produkcyjnym (jak już pisałem), bo przede wszystkim może to rozpieprzyć logikę, do której nie ma testów automatycznych i dobrej dokumentacji. No i jeśli ktoś zrobi taska, który implementuje jakąś funkcjonalność, to daje mu się kolejną funkcjonalność do zrobienia, nikt nie ma za zadanie testować i refaktoryzować kod.

0
Wibowit napisał(a):

No i jeśli ktoś zrobi taska, który implementuje jakąś funkcjonalność, to daje mu się kolejną funkcjonalność do zrobienia, nikt nie ma za zadanie testować

Hmm, "zrobienie taska" może też obejmować napisanie testów do tej nowej funkcjonalności.

Oczywiście każda firma jest inna i ma swoje specyficzne problemy, ale zazwyczaj dużo można osiągnąć poprzez ewangelizacje dobrych rozwiązań wśród kolegów i "góry".

1

Jestem na początku kariery i zamiast tracić czas na walenie głową w ścianę, aż ją zburzę (tzn na naleganie, na porządne otestowanie firmowego systemu), wolę się uczyć od innych. Wolę iść do firmy, gdzie nauczę się testowania od osób, które mają w tym duże doświadczenie, bo jak na razie mam słabą intuicję jeśli chodzi o testowanie.

Gdyby mi nie zależało na rozwoju, to równie dobrze mógłbym i ja zupełnie olać testowanie, skoro tego ode mnie nie wymagają. Ale zależy mi i przez to wolę się już dłużej nie załamywać nad sobą w obecnej robocie.

Poza tym:

Hmm, "zrobienie taska" może też obejmować napisanie testów do tej nowej funkcjonalności.
Jeśli task ogranicza się do dopisania kilku szczebelków w drabinkach ifów w statycznych metodach, to tak samo nie ma jak do tego prosto zrobić automatycznych testów. Niestety przerabianie drabinek ifów na porządne obiektowe metody programowania to nie jest hop-siup, bo najpierw trzeba znać system na wylot, żeby nie rozpieprzyć zależności.

0
Wibowit napisał(a):

F**k, czy jest tu ktoś na tym forum, kto jest w stanie przyznać, że jego firma produkuje dobry kod?

tak. co i rusz jestem pozytywnie zaskakiwany dbałością o kod. code review, testy jednostkowe, każdy commit wyzwala w Team City kompilację na serwerze testowym, po kompilacji automatycznie startują testy, jeśli kompilacja albo testy nie poszły to w Jira wystawia się ticket z treścią błędu. testów w moim projekcie jest ponad półtora tysiąca.
a nawet jeśli jakość samego kodu nie powala na kolana (w dużej mierze jakieś zaszłości ze starych czasów), to refactoring jest względnie prosty dzięki testom, a dzięki code review nowy kod jest ładny.
prawie utopia ;-)

0

Sprawa pierwsza, bo autor napisał tak pierwotnie w temacie, a potem wiele osób powtórzyło, nie "firmy gdzie", tylko "firmy, w której".

Wibowit napisał(a):

Ja idę do firmy (już za tydzień :) ), która stawia na testy, a przynajmniej na rozmowie rekrutacyjnej pytali mnie mocno o testy automatyczne. Tak, że przynajmniej ja niedlugo się przekonam jak się pracuje z dobrze otestowanym kodem ;)

Testy to jedno, a sensowne testy to drugie. Obyś nie trafił w miejsce, w którym jest ilościowe przykazanie "jeden test na metodę", więc wszyscy piszą jeden pozytywny test. A z drugiej strony, mogli pytać, bo teraz modne jest pytanie o to. ;P

A co do problemów, o których wspominasz - nie ma jakichś narzędzi dla Javy, które potrafią prześledzić działanie metody i na tej podstawie wygenerować testy jednostkowe?

@ŁF, a do tego trzeba jeszcze dołożyć check-in policy zakazujące wrzucania metod dłuższych niż 40 linijek i o złożoności większej niż 30, i jest całkiem nieźle.

0

A co do problemów, o których wspominasz - nie ma jakichś narzędzi dla Javy, które potrafią prześledzić działanie metody i na tej podstawie wygenerować testy jednostkowe?

A jest takie cudo do jakiegokolwiek języka i czy daje sensowne rezultaty? Załóżmy, że mamy nietestowalny kod, który już wcześniej opisałem - co z nim zrobi?

3

Czy ktoś wam broni pisania tego "dobrego kodu" albo testów? Jak w firmie się tak nie pisze, to możecie wyjść z inicjatywą i zacząć to zmieniać. Jeżeli ma to ekonomiczne uzasadnienie to nie widzę powodu dlaczego ktoś miałby protestować.

Taaa... dobrze się mówi gorzej się robi.
Otóż ja wyszedłem z inicjatywą. To wyglądało nawet śmiesznie - ja najmłodszy ze wszystkich uświadamiam programistę z 10-letnim doświadczeniem, że należy pisać testy, po czym on mówi, że "testy zajmują czas, więc ich nie piszemy". I co takiemu odpowiedzieć? Żeś idiota i nie rozumie, że za chwilę będą tracić czas właśnie dlatego, że nie prowadzą testów? Zamiast użerać się z niby bardziej doświadczonymi programistami, zmieniam pracę na normalną. Tym bardziej że tamten zespół był praktycznie pod dyktaturą tej jednej jednostki. Wszystko co nie było tak jak on mówi, było według niego złe i już. Według niego trzeba było pisać: metody statyczne, długie metody, brak testów, mnóstwo komentarzy z czego połowa potem nieaktualna.

Taka firma prędzej czy szybciej padnie.

1

Taka firma prędzej czy szybciej padnie.

Niekoniecznie. Większość firm produkuje gnioty, więc nie są poniżej przeciętnej. No chyba, że programiści u nas zdrożeją do poziomu tzw światowego.

0

a ja zapytam trochę obok - macie jakieś metody na testowanie kodu działającego na bazie danych? Bo tutaj to co zwróci metoda jest w dużej mierze uzależnione od tego co zwróci baza

0
PoszukiwaczZlota napisał(a):

Otóż ja wyszedłem z inicjatywą. To wyglądało nawet śmiesznie - ja najmłodszy ze wszystkich uświadamiam programistę z 10-letnim doświadczeniem, że należy pisać testy, po czym on mówi, że "testy zajmują czas, więc ich nie piszemy" (...) Tym bardziej że tamten zespół był praktycznie pod dyktaturą tej jednej jednostki. Wszystko co nie było tak jak on mówi, było według niego złe i już.
Wow, ten gościu to dosłownie Hitler ;)

PoszukiwaczZlota napisał(a):

I co takiemu odpowiedzieć? Żeś idiota i nie rozumie, że za chwilę będą tracić czas właśnie dlatego, że nie prowadzą testów?
Podejście w stylu "jesteś idiotą bo nie piszesz testów" by newbie, zwykle nie skutkuje. Ciężko udzielać porad, kiedy nic się nie wie o firmie i panującej tam strukturze, o tym jak wygląda tam zarządzanie projektem. Jak ocenia się wydajność zespołu i programistów? Ogólnie jak wygląda cały proces wytwarzania softu. Prawdopodobnie brak testów to nie jest główny problem tej firmy.

PoszukiwaczZlota napisał(a):

Taka firma prędzej czy szybciej padnie.
Albo padnie ta, która piszę testy do stronek wizytówek. Jeśli firma zarabia na tworzeniu prostego kodu, czy kodu do wyrzucenia, to wtedy testy nie mają za dużego sensu.

Wibowit napisał(a):

Jestem na początku kariery i zamiast tracić czas na walenie głową w ścianę, aż ją zburzę, wolę się uczyć od innych. Wolę iść do firmy, gdzie nauczę się testowania od osób, które mają w tym duże doświadczenie.

Jak masz możliwość iść do lepszej firmy, to jest chyba oczywiste, że tam idziesz. Ale nie ma firm idealnych, zawsze można coś poprawić i nie musi to wyglądać jak walenie głową w mur.

0
PoszukiwaczZłota napisał(a):

czy są firmy z mądrym podejściem do programowania? Czy są firmy, które dbają o kod i jakość wytwarzanego oprogramowania?

Tak. W ciagu 10+ lat mojej kariery trafilem na dwie takie. W tym jedna z nich w Polsce.

0
ŁF napisał(a):
Wibowit napisał(a):

F**k, czy jest tu ktoś na tym forum, kto jest w stanie przyznać, że jego firma produkuje dobry kod?

tak. co i rusz jestem pozytywnie zaskakiwany dbałością o kod. code review, testy jednostkowe, każdy commit wyzwala w Team City kompilację na serwerze testowym, po kompilacji automatycznie startują testy, jeśli kompilacja albo testy nie poszły to w Jira wystawia się ticket z treścią błędu. testów w moim projekcie jest ponad półtora tysiąca.
a nawet jeśli jakość samego kodu nie powala na kolana (w dużej mierze jakieś zaszłości ze starych czasów), to refactoring jest względnie prosty dzięki testom, a dzięki code review nowy kod jest ładny.
prawie utopia ;-)

Brzmi jak Sabre

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