Jak wygląda praca programisty?

0

Wiem, że był już wątek o tym tytule jednak tam skonczyło się na tym, że programisci się opieprzaja w pracy a mi chodzi o coś innego. Otóż chodzi mi o takie coś, firma dostaje projekt do zrealizowania i teraz tak, cz jako programista musicie sami:

  • zaprojektowac wszystkie klasy
  • ustalić jakies jednolite nazewnictwo klas , zmiennych, funkcji itp..
  • okreslic jakies powiazania miedzy klasami
  • <ort>w ogóle </ort>ustalić zasady działania programu

czy tymi rzeczami(moze cos pominąłem) zajmuje sie inna osoba, a programista dostaje tylko nazwe klasy jaka ma napisac, nazwy metod i co maja one robić

czy wrecz przeciwnie, programista otrzymuje tylko informacje co ma robic dana klasa i sam sobie wszystko w niej organizuje?

Przepraszam ze niezbyt to skladnie napisane ale nie jestem programista ani nawet nie studiuje informatyki tylko cos innego a bardzo mnie to ciekawi jak to od wewnątrz wyglada w firmie, bo kiedyś chcaiłbym tez tego spróbować.

Najbardziej interesowała by mnie opinia osob progrmujacych w C#, ASP.NET, ale to nie jest konieczne:)

0

u mnie (mala firma 13os) najpierw PM gada z klientem i tworzy user stories w stylu "admin moze dodac uzytkownika", "uzyszkodnik moze dodac produkt do koszyka" itp itd pozniej zespol koderow siada i estymuje ile kazdy z takich user stories zajmie godzin/punktow - przewaznie mija sie to z <ort>zeczywistoscia </ort>ale coz ;), jak juz jest sprint gotowy wiemy co mamy robic zaczynamy to robic, a wiec jakis projekt bazy, tworzenie modeli pozniej kazdy bierze dany task i go robi, miedzy soba ustalamy kto sie czym zajmie aby ograniczyc konflikty

0

Wiesz, sa rozne metodyki programowania, np. http://pl.wikipedia.org/wiki/Scrum

Tak jak cepa napisal: ocenianie jak dlugo zajmie wykonanie danego zadania nalezy do PM oraz do zespolu. Uzywaja do tego specjalnych kart (w przypadku scrum). Pozniej dane zaadnie zapisywane jest do bazy. Ktos sie moze "chwycic" i wykonac dane zadanie. Osobiscie nie lubie scrum :/

0

Zależy jakie wymaganie jest do zaimplementowania.
Jak duże to najpierw pisze się architecture proposala, który musi zaakceptować arhitekt projektu.
Jak mniejsze to nie trzeba oficjalnie czegoś takiego pisać (ale i tak wypada).
Nigdy nie było tak, że dostałem gotowy schemat klas, który trzeba było tylko zakodować.

0

No tak, dzieki za odpowiedzi. Mam jeszcze takie pytanie, piszecie klasy które później używa inny programista z teamu, więc chyba nazewnictwo nie moze byc dowolne bo pozniej kolejna osoba sie nie połapie, pewnie tworzy sie jakas dokumentacje do kazdej klasy.

i drugie pytanie, jak juz te Wasze klasy sa gotowe, to kto składa główny program?

0

Cały kod musi siedzieć na jednym serwerze, np. SVN.
Masz dostęp do kodu stworzonego przez innych. Co pewien czas powinieneś pobierać najnowszą wersję. Jeżeli edytujecie różne pliki, to serwer SVN potrafi automatycznie łączyć zmiany. Jeżeli nie, to czasem trzeba ręcznie rozstrzygać konflikty. Serwer taki potrafi też zarządzać wersjami i tworzyć gałęzie (branch) .

Budowaniem kodu zajmują się narzędzia odpowiednie dla każdego języka, np. Ant i Maven dla Javy, Make dla C/C++. Używają one kompilatorów (np. GCC dla C), przenoszą pliki do odpowiednich katalogów, tworzą paczki, itp.

0
__krzysiek85 napisał(a)

Cały kod musi siedzieć na jednym serwerze, np. SVN

ostatnio wzrasta popularnosc git'a :)

__krzysiek85 napisał(a)

Budowaniem kodu zajmują się narzędzia odpowiednie dla każdego języka, np. Ant i Maven dla Javy, Make dla C/C++

dodam tylko ze do php mozna uzyc phing (cos ala ant z javy), chociaz ja osobiscie wole prostsze rozwiazanie :P

0

No to nie do konca to rozumiem. Przeciez połączyć wszystkie klasy w całość musi człowiek a nie jakies oprogramowani, np mamy programik w C# WindowsForms. Załóżmy że pracuje nad nim 6 osob, korzystaja z SVN'a. Teraz tak 5 osob pisze klasy które beda uzyte w programie a szósta osoba otwiera sobie VisualStudio, wczytuje sobie do projektu klasy zrobione przez pozostałych i np wrzuca sobie pod buttona kodzic zeby po jego przycisnieciu został utworzony obiekt danej klasy i cos tam zrobił. Tak to mniej wiecej wyglada?

0
goodfather napisał(a)

No to nie do konca to rozumiem. Przeciez połączyć wszystkie klasy w całość musi człowiek a nie jakies oprogramowani.
Nie, człowiek tego "łączyć" w całość nie musi... W tym swoim C# na 110% sam nie tworzysz .exe, robi to za Ciebie jakiś soft.

goodfather napisał(a)

Tak to mniej wiecej wyglada?
Zatem ta szósta osoba dopisze trochę kodu i commitnie go do repozytorium. Reszta pobierze go, robiąc co jakiś czas update z rep...

0
goodfather napisał(a)

No to nie do konca to rozumiem. Przeciez połączyć wszystkie klasy w całość musi człowiek a nie jakies oprogramowani.

nie musi czlowiek, poza tym jak program jest gigantyczny to nie bedziesz chyba za kazdym razem kompilowal calosci, od tego jest build farm ktore przy okazji moze wykonywac testy np: jednostkowe :P

0

praca programisty polega głównie na brodzeniu w nieznanym i ciągłym douczaniu się w domu żeby szybciej to brodzenie szło... jak już opanujesz coś dosyc dobrze to przychodzi zmiana projektu i douczasz się znowu : ) Jeśli Cię nie rajcuje ciągłe grzebanie w dokumentacji to nie polecam.. ; )

0

*up - no nie wiem, ja tam w domu o pracy w ogóle nie myślę, dokumentacji też nie ma ;P

Ponieważ zajmujemy się własnym firmowym CRMem, to nie ma deadline'ów, scrumów i szacowania pracochłonności projektu. Po prostu robi się i odhacza następne zlecenie z listy (dość długiej i rośnie raczej wykładniczo, więc chyba nigdy nie zostanie wykonana ;P). Jak czegoś nie wiem (a często nie wiem, bo system nie posiada żadnej architektury), to jadę do PM (jakieś 3 metry krzesłem) i pytam jak coś zrobić. Większość odpowiedzi brzmi: "nie wiem", "mnie nie pytaj", "nie wiem dlaczego tak to jest zrobione, nie ja to pisałem", "tak, masz rację, to jest beznadziejne, ale co zrobić?", "oczywiście, że możesz zrefaktoryzować cały projekt, o ile nie zajmie to dłużej niż 10 minut". A gdy zaczyna mówić, że coś zostało zrobione ze względu na wydajność, to najczęściej wybucham śmiechem, bo tam w zasadzie nie ma żadnej wydajności :D
Ale nieraz bywa pomocny :)

0

To juz niczego nie rozumiem, jakim cudem jakies zewnetrzne oprogramowanie wie jak połączyć wszystkie klasy w program głowny, skąd wie że akurat pod danym buttonem ma byc akurat taka akcja a nie inna?

0

@up - przeczytaj ten wątek jeszcze raz bo nikt nie bedzie tlumaczyl tego po raz nty.

@somekind - różnie to bywa w pracy ; ) czasem samemu szuka się roboty żeby się nie nudzic, czasem spędza się cały weekend przy dokumentacji żeby stwierdzic czy firma ma wybulac pare ladnych tysiecy na konkretne oprogramowanie do testow automatycznych ( oczywiscie mialem na to dany jeden dzien... )

0
goodfather napisał(a)

To juz niczego nie rozumiem, jakim cudem jakies zewnetrzne oprogramowanie wie jak połączyć wszystkie klasy w program głowny, skąd wie że akurat pod danym buttonem ma byc akurat taka akcja a nie inna?

kazdy programista ma ten sam kod programu, wprowadza w nim zmiany, wysyla zmiany na serwer np: svn, reszta programistow aktualizuje i znow wsyzscy maja to samo

zewnetrzne oprogramowanie wcale nie ma wiedziec jaka klasa podpieta jest pod button, nad tym siedza programisci kazdy programista moze zmodyfikowac dowolna czesc kodu programu, zewnetrzny soft jest uruchomiony na maszynie ktora na biezaco pobiera najnowsze zrodla programu, kompiluje program i wykonuje testy.

0

Pracuje (już dość długo) w firmie, która tworzy dość ogromny projekt dla zagranicznych klientów (telewizja cyfrowa)
Całość zawiera się w około 300 MB (kod + zasoby - głównie grafika), około 40 000 plików.
Technologia C# .NET (ASP.NET, WCF, WPF, Javascript, Ajax).

Pracuje nad tym około 30 programistów z Polski i za granicą. Wszystko śmiga na SVNie oraz CruiseControl.NET.

Najgorsze jest to, że każdy programista robi swój task i nie ma podziału na warstwy (ten robi to, ten robi to). Zanim w ogóle coś ruszyłem - 2 miesiące dochodziłem co jak działa- ogrom tego mnie dosłownie rozwalił. Praca polega właściwie tylko na modyfikacji lub rozszerzaniu istniejącej aplikacji (to jest głównie potężny zestaw Web Services oraz JS Framework w postaci kilkudziesięciu megabajtów Javascriptu!). Więc nie jest tak, że ten robi JS, ten bazę, a ten C#. Jeśli jest task, to może pokrywać on duży zakres - od zaprojektowania nowej tabeli w bazie z procedurami, poprzez Web Service, a na dostosowaniu HTMLa skończywszy.

.. I tu niestety rzeczywiście nie można zrobić niczego na "odwal się". Performance jest istotny - aplikacja musi dźwigać setki tysięcy użytkowników na kilku serwerach. Do tego dochodzą liczne zmiany w specyfikacji .. - kod więc musi być pisany "prawidłowo". Do tego dochodzą unit testy (automatycznie wykonywane po każdym SVN commit).

Po czasie, patrząc już na to trochę z góry mogę stwierdzić, że najważniejsze jest nie zepsuć niczego. Bardzo łatwo można rozwalić istniejącą logikę poprzez swoje modyfikację - dlatego kod musi być dobrze napisane od samego początku - poczynając od projektu bazy danych. Unit testy sprawdzają się tu wyjątkowo skutecznie.

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