+milion. Ostatnio wyjebałem po 3 miesiącach z zespołu nowego deva, który zamiast siedzieć i samemu kminić nad problemami to dopytywał każdego wokół i marnował ich czas. Samodzielność to jedna z podstawowych umiejętności w tej pracy.
Wersja do druku
Pracuję w zespole, który robi wewnętrzne rzeczy dla firmy (portal rekrutacyjny, automaty do wyliczania hajsu i generowania umów dla kadr, blogi, sprawy komunikacyjne itd) - pracujemy w SharePoincie. Fakt - te 3 miesiące to był jego "okres próbny", a dokładnie szkółka, na której miał się nauczyć pracy w tej technologii. Tak na prawdę aby pracować w ShP musisz ogarniać .neta, c#, javascripty, html+cssy, sqla, xmla i parę innych powiązanych technologii, które on podobno znał. Tutaj się zaczął problem, ponieważ od samego początku gdy dostawał taski typu "hello world" to dopytywał jak się za to zabrać, zamiast wygooglować (na prawdę wystarczyło wpisać w googla "sharepoint create list programmaticaly" i kliknąć pierwszy link). Rozumiem, że na początku można, a nawet trzeba zadawać sporo pytań, ale jest jakaś granica, którą on przekroczył (jeśli inny dev w projekcie poświęca 1-2h dziennie na pomoc drugiemu to już coś jest nie tak). Po 2 miesiącach pracy w tej technologii jeśli ogarniasz, jesteś w stanie zrobić na prawdę sporo rzeczy, a on błądził, nie dawał sobie rady, przekraczał czas wykonywania tasków 3-krotnie (gdzie w estymacjach braliśmy pod uwagę to, że się uczy) i dodatkowo zabierał czas innym członkom zespołu. Nie mogłem tego dalej ciągnąć i się rozstaliśmy. Teraz jak patrzę na to z perspektywy czasu i jak efektywność w moim teamie wzrasta widzę, że to była jedna z lepszych decyzji :)
Ja znam odwrotną sytuację. Mam koleżankę w pracy, która stara się być bardzo albo to bardzo samodzielna. Siedzi nad czymś dosłownie cały dzień zamiast podejść, zapytać się i rozwiązać taska w 10 minut.
Takie osoby też mają u mnie minusa :P. Cały problem polega na tym, żeby to wybalansować i nie pytać ani za często ani za rzadko. Ja przykładowo u siebie przyjąłem, że jeśli jakiś problem zajmuje ci już godzinę, przegooglowałeś internety na prawo i lewo i dalej nie widzisz światełka w tunelu to powinieneś zapytać bardziej doświadczoną osobę i to się zajebiście sprawdza. Oprócz tego są też sprawy takie, że wpisujesz kod błędu w googla i dostajesz 0 wyników - wtedy też nie ma sensu szukać dalej tylko po prostu kogoś spytać, kto już siedzi w tym 3 lata i będzie na 99% wiedział o co chodzi. Wszystko zależy od sytuacji, ale 2-3 miesiące to wystarczający czas żeby takie sytuacje wyczuć - jeśli ktoś po tym czasie dalej nie ogarnia to kończymy współpracę :)
This.
Ja też uczę właśnie pracownika, i mu mówię, że rób wszystko sam, jak umiesz tak zrobisz. Jak masz problem to sam go rozwiąż. Ale jak kombinujesz i po 30 minutach nadal 0 efektow, to odezwij sie, i ci powiem albo co zrobic konkretnie, albo pod jakim haslem szukac. Czasami sie pyta z miejsca, o pomysly projektowe, jak zaczac sie zastanawiac nad projektem, albo dopytuje czy jego tok myslenia jest poprawny, jeszcze zanim zacznie faktycznie nad tym pracowac. Mi to zajmuje max 10-15 minut, a jemu (i pozniej mi) oszczedza godziny pracy. Taki tryb mi odpowiada bardzo. Czasami tez jak ja mam cos ciekawszego do zrobienia, to sie pytam jego jakby to rozwiazal, i mowie czy ma racje czy nie. Podwojna nauka bo ja moze uslysze cos ciekawego od niego, a on jest przygotowany lekko na przyszlosc jeszcze zanim takie zadanie do niego dotarlo.
Trzeba rozgraniczyć też czy to pytania czysto techniczne czy projektowe. Jeżeli pyta np. jak zdeklarować beana w Springu to wiadomo -> google, bo na to są odpowiedzi i jest to po prostu sprawa dotycząca frameworka którą łatwo odszukać.
Z drugiej strony jest wiedza projektowa, np. nowy potrzebuje zrobić rzecz X, ale wie że część logiki jest już zrobiona bo gdzieś dzieją się podobne rzeczy. Wtedy ktoś nowy ma szukać po 10k klas czy lepiej zapytać i usłyszeć jedno zdanie i zaoszczędzić sobie 3 godzin szukania?
normalne, że można pytać, a nawet powinno się.
gdyby ten kolo wklepał java tutorial w googla, nie mógłby się zdecydować i chciałby zasięgnąć tutaj opinii czy ktoś może miał styczność z tymi kursami i który warto to spoko. ale no takiego czegoś to ja nie lubię. przecież googling to jakby 50% tej pracy. czy jesteś juniorem, regularem czy seniorem (wydaje mi się, że już troszkę mniej, ale nadal).
znacie jakieś stronki z fajnymi szablonami html? póki co jedyne sensowne szablony znalazłem na templated.co ale jednak wieje tam nudą
Po prostu są owrapowane, przekazujesz klasę jako parametr a pod maską to i tak idzie jako wskaźnik.
Zastosowanie raw ptr w C# jest właśnie do bitmap czy innych operacji na surowych danych, bardzo rzadko używane, z reguły do takich rzeczy tworzy się DLLkę w C i externuje metody.
jak jest z wykorzystywaniem czyjegos kodu w pracy?
Przykladowo musialem sprawdzic teraz majac tablice zawierajaca wspolrzedne polygonu czy ten polygon jest clockwise czy counterclockwise. To to do guugla szybciuto bo samodzielne myslenie boli, nastepnie copy paste z stackoverflow i podmianka argumetow funkcji tak zeby mi pasowaly do kodu i gotowe. Czy to nie jest jakas wlasnosc intelektualna kogos? I jezeli tak to gdzie sa granice. Bo rozumiem ze wzor na odleglosc miedzy punktami to sobie spokojnie moge skopiowac, a inne bardziej zlozone algorytmy?
Nie wydaje mi się, żeby ktoś udostępniając kod na neta ganiał Cię potem za skopiowanie tego kodu ;s
C++.Kod:#include <iostream>
#include <vector>
using namespace std;
class klasa{
public:
static unsigned int total;
int ilosc;
klasa(int n) : ilosc(n) { total += ilosc; cout << "total wynosi: " << total << endl; };
klasa(const klasa &drugi) { total += drugi.ilosc; this->ilosc = drugi.ilosc; };
~klasa() { total -= ilosc; cout << "total wynosi: " << total << endl; };
};
unsigned int klasa::total = 0;
int main(){
vector<klasa> vec;
int q, n;
while(q != 0)
{
cout << "1. Dodaj.\n";
cout << "2. Usun.\n";
cout << "3. Wyswietl.\n";
cout << "0. Wyjdz.\n";
cin >> q;
switch(q){
case 1:
{
cout << "Dodaj: " << endl;
cin >> n;
klasa proc(n);
vec.push_back(proc);
break;
}
case 2:
cout << "Usun: " << endl;
cin >> n;
vec.erase(vec.begin()+n);
break;
case 3:
for(int i = 0; i < vec.size(); i++) cout << vec[i].ilosc << endl;
break;
}
}
return 0;
}
Mam static int w klasie, który sobie zlicza zmienną 'ilosc' w klasie - zwiekszam i zmniejsza ja w konstruktorze i destruktorze. Ale kiedy utworze na przyklad 4 nastepujace obiekty kolejno: 100, 10, 10, 10, i wrzuce je do vectora, a następnie usune z niego pierwszy obiekt (ten z wartoscia 100) to total zmniejsza sie o 10, a nie o 100. Obiekt z wartoscia 100 owszem znika, ale total zmniejsza sie o ostatnio dodana wartosc, a nie o wartosc usuwanego obiektu. Why?
Strzelam że dzieje się tak bo metoda erase pierw kopiuje elementy wcześniej, a później usuwa te z końca xd i to dla tych elementów na końcu vectora wykonywany jest destruktor
edit
ps. zainicjalizuj sobie q jeżeli dajesz while(q != 0) bo nie wiesz co tam może się trafić w pamięci ;p
albo zrób do{}while(q != 0);
#down
a gdzie Ty tam widzisz zadeklarowanie
jako zmiennej statycznej ;p?Kod:int ilosc;
Nawet jeśli to kod by się nie kompilował bo nie mógłby jej inicjalizować w konstruktorze na liscie inicjalizacyjnej, od tego są funkcje statyczne.