Co się stanie, jeśli nie będziesz w stanie rozwiązać problemu? [Zamknięte]


58

Jestem rok od ukończenia uniwersytetu i naprawdę nie mogę się doczekać rozwiązania praktycznych problemów. Zwłaszcza nietrywialne, wymagające trochę badań i dużo myślenia.

Ale jednocześnie jest to mój największy strach - napotkać problem, którego nie jestem w stanie rozwiązać, bez względu na to, jak bardzo się staram. Z naciskiem na dostarczanie kodu w sprawie zbliżających się terminów tuż za rogiem, wygląda to trochę przerażająco, gdy ogląda się go z bezpiecznych placów zabaw na uniwersytecie (najgorsze, co może się zdarzyć, to konieczność powtórzenia kursu lub egzaminu).

Więc dla tych, którzy pracują w branży od dłuższego czasu, co by się stało, gdyby ktoś kazał ci rozwiązać problem, którego nie możesz? Czy to się stało, a jeśli tak, co się stało? Czy po prostu zostawili to i powiedzieli „No cóż, zgadnij, że możemy zrobić coś innego”? Czy były jakieś konsekwencje? Czy zostałeś upomniany, czy nawet zwolniony?


24
dotyczy to każdego zawodu - szybko zawieść, poprosić o pomoc, poszukać możliwych rozwiązań przed zaangażowaniem
Steven A. Lowe

9
Nie martw się. 80% miejsc pracy utrzymuje stare stosy śmieci.
Job

Nie możesz rozwiązać problemu? To jest możliwe?
WernerCD,

3
Nie sądzę, żeby to kiedykolwiek był prawdziwy problem, chyba że jest to problem, którego Jon Skeet nie może rozwiązać, w którym to przypadku wszyscy jesteśmy skazani!
Skizz,

Odpowiedzi:


56

Po pierwsze, twój strach jest bardzo zdrowy i normalny. Oto moje rozmyślania po około 15 latach w branży oprogramowania.
Oto kilka pytań, które możesz sobie zadać:

  1. Czy rozumiesz problem?
  2. Czy wiesz, że problemu nie da się rozwiązać (w ramach ograniczeń czasowych / budżetowych)?
  3. Czy po prostu nie wiesz, jak rozwiązać problem?
  4. Czy twój klient / szef prosi o niemożliwe?
  5. Czy warto? (ROI)
  6. Czy to PRAWDZIWY problem?

1) Przede wszystkim upewnij się, że rozumiesz problem. Nie ma głupich pytań. Czy rozumiesz, o co pyta Twój klient / szef, a czego potrzebuje?

2) To się stanie. „Zbuduj mi most do jutra” . Upewnij się, że wiesz, że problem jest nierozwiązywalny w twoich ograniczeniach. Twój klient / szef może być elastyczny w zakresie czasu / budżetu i można je modyfikować, aby dać ci więcej czasu / budżetu.

3) Jeśli problem jest zrozumiały, a ograniczenia są w granicach rozsądku, i istnieje technologia, która może rozwiązać problem, ale po prostu nie wiesz wystarczająco ... po to StackOverflowi do tego służy Internet. Najpierw upewnij się, że wykonałeś swoje badania. Spróbuj zadawać wyraźne pytania, które mają wymierne odpowiedzi. Zapytaj swoich rówieśników. Udaj się na sesję projektową.

4) Jest to wariant odpowiedzi nr 2. Wygląda na to, że twój klient / szef pyta o niemożliwe. Zrobić rozeznanie. Nigdy nie mów, że problemu nie da się rozwiązać, chyba że wiesz dokładnie, dlaczego i możesz to wyjaśnić.

5) ROI oznacza zwrot z inwestycji. Odnosi się to do inwestycji w czasie. Twój czas!. Czy problem jest wystarczająco ważny do rozwiązania, aby zagwarantować, ile czasu zajmie ci badanie i rozwiązanie problemu. Porozmawiaj o tym ze swoim klientem / szefem

6) Czy to prawdziwy problem? Klienci często rozumieją, czego chcą, ale niekoniecznie rozumieją, czego potrzebują. Spróbuj zrozumieć, czego tak naprawdę potrzebuje Twój Klient / Szef i przedyskutuj to z nimi.

Mam nadzieję, że te wytyczne ci pomogą.


3
Jak dotąd najbardziej pouczająca odpowiedź. Mam nadzieję, że otrzyma więcej głosów.
gablin

6
Niezła odpowiedź. Chciałem tylko dodać, że najskuteczniejsi hakerzy utrzymują pewien poziom praktycznej arogancji: zakładają, że możesz pokonać każde wyzwanie. Przez większość czasu będziesz miał rację i rozwiążesz więcej problemów niż ktoś, kto nie działa, niż założenie. To powiedziawszy, rozwiązanie problemu nie jest końcem świata - po prostu nie pozostawiaj go na ostatnią chwilę. Zarządzanie oznacza upewnienie się, że szef ma rozsądne oczekiwania. Jeśli nie jesteś pewien, jak coś zrobić, poinformuj szefa, że ​​potrzebujesz czasu na badania i wróć z zaleceniami.
HedgeMage

Podoba mi się, że # 4 nie jest pytaniem
endolith

57

Dwie rzeczy do zapamiętania, jeśli utkniesz z pozornie nierozwiązywalnym problemem:

  • Poinformuj innych ludzi, że utkniesz tak szybko, jak to możliwe. Pomoże im to dostosować szacunek na czas, zanim będzie za późno.

  • Jeśli widzisz, że jeden ze sposobów rozwiązania problemu nie działa - upuść go, zanim zmarnujesz zbyt dużo czasu. Poproś o pomoc lub wypróbuj inne podejście. Nie chodzi o to, by udowodnić sobie, że jesteś twardy i bystry, ale o załatwienie sprawy.


11
+1 za „poproś o pomoc”. Kolejna para oczu na problem może być niezwykle przydatna.
Michael K,

5
+1 za drugi punkt ... strzeż się 95% rozwiązania. Oznacza to, że rozwiązanie zapewnia bardzo szybkie przejście w 95%, ale prawie niemożliwe jest wykonanie pracy w 100%. Uważam, że łatwo jest poświęcić dużo czasu, próbując zdobyć ostatnie 5%, ponieważ jesteś „prawie na miejscu”.
Scott Whitlock,

5
„Pan Corleone jest mężczyzną, który nalega na natychmiastowe usłyszenie złych wiadomości”.
JeffO,

3
Możliwość zwrócenia się o pomoc jest bardzo ważna. Tak wiele razy widziałem, jak nowi programiści wracają po 2 tygodniach, nie mając nic do pokazania, ponieważ utknęli pierwszego dnia. Oczywiście, twój mentor / szef powinien zapytać cię, jak się masz itp., Ale nie kłam i nie mów „wszystko w porządku”, kiedy wyraźnie nie jest!
Dean Harding,

4
Nawet prosty czyn wyjaśniający problem komuś innemu może pozwolić ci znaleźć rozwiązanie.
alexanderpas,

26

Idę do StackOverflow ;)

Ale wszyscy żartują na bok, nie bój się nieznanego. Cała Twoja kariera stanie w obliczu nieznanego, ponieważ jeśli już go rozwiązałeś, następnym razem nie będzie problemu.


12
To nie jest dla mnie żart, to zwykle mój pierwszy port. W rzeczywistości proces formułowania pytania często daje impuls do samodzielnego znalezienia rozwiązania.
NimChimpsky,

10
Ostatnim razem, gdy nie mogłem znaleźć problemu z jakimś oprogramowaniem, zapytanie SO spowodowało, że otrzymałem prawie natychmiastową poprawną odpowiedź.
David Thornley,

Świetna odpowiedź! +1 - najlepsza część tworzenia oprogramowania - „Cała Twoja kariera stanie w obliczu nieznanego”.
Karthik Sreenivasan

10

Będę musiał przejść z prostą odpowiedzią: proszę o pomoc. Tak jak inni czasami proszą mnie o pomoc, kiedy utkną w próbie znalezienia rozwiązania.

Edycja: Powinienem wspomnieć, że często znajduję rozwiązanie po prostu opisując problem współpracownikowi, a czasem nawet, gdy zaczynam publikować pytanie na stronach takich jak StackOverflow.


3
Czasami rozmowa ze współpracownikiem, który rozumie pracę, może pomóc, nawet jeśli nie zaoferuje żadnych sugestii, po prostu
wypowiedzenie

9

Spójrz na to z różnych punktów widzenia

Natknąłem się na to wiele razy, zwykle dzieje się tak:

  • Masz problem, początkowo masz w głowie pomysł, jak go rozwiązać.
  • Jeśli chodzi o faktyczne wdrożenie rozwiązania, okazuje się, że nie działa (prawdopodobnie z powodu słabego modelu rzeczywistego problemu).
  • Po staraniach o rozwiązanie problemu, czy to więcej badań lub pytając innych. Nic z tego nie działa, czysta frustracja!

Wreszcie decydujesz się na to, czego nie chcesz robić ->

„The Dirty Hack”

Działa, ale czujesz się brudny ...


3
+1 za brudny hack, czasami niedostępność odpowiedniego rozwiązania wygląda na brak żadnego rozwiązania ... jasne, nikt nie lubi zmiennych globalnych, ale jeśli jest to jedyny dostępny sposób na uzyskanie informacji od A do B ... lepiej niż wcale nie dostarczać.
user281377,

+1 - Jasny opis najczęstszych doświadczeń programisty.
Karthik Sreenivasan

5

Zwykle naprawiam to przez kogoś mądrzejszego ode mnie. Robi i jest moim szefem. Czuję się głupio. Idziemy dalej.


4
Zazdroszczę ci --- masz szefa, który rozumie, co robisz, nawet lepiej niż ty. Bądź wdzięczny!
JasonFruit,

W rzeczywistości jestem szczęśliwy, mój nie. ;-) Mój szef służy mi do usuwania przeszkód, organizowania pomocy, kiedy jej potrzebuję, utrzymywania motywacji i chodzenia itd. Jeśli był lepszy w mojej pracy, nie powinien być moim szefem, ale wykonywać swoją pracę.
johannes

Imo, twój szef powinien wiedzieć więcej niż ty.
Johnny

5

To zależy od przyczyny, dla której nie możesz ...

  • logicznie niemożliwe: przedyskutuj to z tym, który napisał wymagania, być może istnieje nieporozumienie. Przykład: w pewnym momencie specyfikacja mówi, że aplikacja musi wyglądać i działać natywnie na wszystkich platformach (Windows / Linux / Mac), aw innym miejscu mówi, że program musi wyglądać identycznie na wszystkich platformach

  • technicznie niemożliwe: dokonaj ponownej oceny narzędzi, z którymi pracujesz, być może nie są one odpowiednie. Omów problem z kolegami i kierownikiem projektu. Przykład: twarde wymagania w czasie rzeczywistym w środowisku, w którym zbieranie śmieci może zatrzymać wykonywanie na czas nieokreślony

  • niewystarczająca wydajność: być może używasz niewłaściwego algorytmu, a może problem jest zbyt trudny (np. trudny NP) i wymagania tego nie uwzględniają. Ponownie oceń używany algorytm, być może istnieje szybszy sposób. Omów problem z kolegami i kierownikiem projektu. Zastanów się nad przejściem na wystarczająco dobrą heurystykę zamiast idealnego wyniku. Przykład: optymalizacja ścieżki z dziesiątkami lub nawet setkami węzłów

  • po prostu nie wiesz, jak to zrobić: zapytaj znajomych, zapytaj o przepływ stosu, przeszukaj internet. Skontaktuj się z obsługą używanego narzędzia / biblioteki lib. Omów to z kierownikiem projektu.

  • powinien działać, ale nie działa i nie masz pojęcia, dlaczego: Przebuduj program, aby uczynić go bardziej testowalnym. Biorąc pod uwagę warunki wyścigowe, często są przyczyną trudnych do znalezienia błędów. Poproś rówieśników o pomoc, czworo oczu widzi więcej niż dwoje. Sprawdź w Internecie znane błędy w używanych narzędziach / bibliotekach.


4

Myślę, że inni ludzie ładnie wskazują, jak sobie z tym poradzić w profesjonalny sposób. Chciałbym powiedzieć, jak radzić sobie z osobistym uczuciem, takim jak frustracja, strach.

Podsumowując, będziesz DOKŁADNY, nawet jeśli nie rozwiążesz problemów w odpowiednim czasie. Życie toczy się dalej.

Czasami harmonogram był przesuwany. Projekt zakończy się sukcesem lub zakończy się niepowodzeniem. Możesz zostać zwolniony, a następnie mieć świetną robotę. Po prostu nigdy nie wiesz.

Nie zrozum mnie źle. Nie oznacza to, że problem jest w porządku. Wszystko, co możemy zrobić, to dać z siebie wszystko i pozwolić temu odejść.

Czasami myślę, że frustracja, lęk przed nierozwiązaniem problemu to moje życie jako przeciętnego programisty.


2

Nie jestem pewien, czy powiedziałbym, że nie mogłem rozwiązać problemu, ale zdarzały się przypadki, w których zrezygnowałem z próby rozwiązania problemu. Po spędzeniu wielu godzin na próbach naprawienia błędu lub wdrożenia jakiejś funkcji, której nie mam pojęcia, jak to zrobić, mogę powiedzieć komuś z mojego zespołu, kierownika zespołu lub kierownika: „Utknąłem w tym. chcesz żebym zrobił?" żeby wiedzieli, gdzie jestem. Mogliby powiedzieć: „Trzymaj się tego, myślimy, że to zrozumiesz” lub „Przejdź do czegoś innego, co nie jest tak ważne” lub kilka innych rzeczy, a wtedy będę wiedział, co powinienem zrobić.

Miałem błędy, których nie rozwiązałem, i pewne funkcje, które nie zostały wykonane, jasne. Chociaż mogę spróbować coś zrobić, nie wszystko jest w mojej mocy, aby rozwiązać w rozsądnym czasie. Kluczową kwestią jest komunikacja, aby przełożeni wiedzieli, gdzie jesteś.

To powiedziawszy, kilkakrotnie spotkałem się z pewnymi wyjątkowymi okolicznościami:

  1. Pracując w dużym kanadyjskim banku w Toronto, zostałbym poproszony o wykonanie wszelkiego rodzaju rzeczy, których nie wiedziałem, kiedy otrzymałem to zadanie. Na przykład poproszono mnie o przetestowanie tej metody zabezpieczania laptopów, w których klawisze „Esc” i „Enter” zostały zamienione podczas uruchamiania, a przy odpowiedniej sekwencji klawiszy laptop byłby ponownie użyteczny, co wydawało się dziwne na zewnątrz: „Czy to zadziała? Skąd mam wiedzieć, że użytkownicy będą lub nie będą w porządku?” Były też inne zadania, które albo po prostu nie miałem sprzętu ani innych zasobów, aby to zrobić. Jednocześnie było to raczej edukacyjne, ponieważ dało mi to wiele rzeczy do odnotowania w każdej przyszłej sytuacji zawodowej, aby zapobiec kłopotom. Rzeczy takie jak zapewnienie, kiedy otrzymam zapłatę, jak śledzony jest mój czas,

  2. Pracując u dostawcy usług aplikacyjnych w Calgary, dostałem ten projekt próby stworzenia kopii innej witryny w ramach naszej wewnętrznej aplikacji, którą sprzedawaliśmy jako usługę. Kluczową kwestią tutaj jest to, że nie otrzymałem harmonogramu ani sugestii, co do zrobienia w pierwszej kolejności, tylko ogólne badania, a miesiąc później zostałem poproszony o prezentację, ponieważ miałem złą reakcję na niektóre leki przeciwbólowe. Ta reakcja trwała tydzień, kiedy nagle zacząłem pracę, a następnie w następnym tygodniu poszedłem na wydarzenie Microsoftu, które było jakby ostatnią słomką, ponieważ następnego dnia zostałem zwolniony. Warto tu zauważyć, że miałem raczej słabe relacje z moim szefem, ponieważ za każdym razem, gdy zbliżał się do mojej okolicy, natychmiast pomyślałem: „A teraz co jest nie tak?”.


2

Jak powiedzieli inni, komunikacja ma kluczowe znaczenie - informowanie ludzi (kto będzie na nie wpływał), kiedy utkniesz: twój szef, członkowie zespołu, klienci itp.

Ostry współpracownik wpomniał mi kiedyś, że sukces ma swoje korzenie w dwóch rzeczach:

  1. Relacje
  2. Oczekiwania

Wydaje mi się, że dobre relacje są funkcją dobrej komunikacji i stawiania oczekiwań z góry.


2

Przestrzegam zasady Polya:

„Jeśli istnieje problem, którego nie można rozwiązać, istnieje łatwiejszy problem, którego nie można rozwiązać: znajdź go”.

George Polya

Piękno tej zasady polega na tym, że w pewnym momencie pojawi się problem, który będzie wystarczająco mały i że będziesz w stanie go rozwiązać, co, miejmy nadzieję, jeśli zrobiłeś wszystko dobrze, pozwoli ci na rozwiązanie pierwotnego problemu. Ta zasada jeszcze mnie nie zawiodła.


1

Odpowiedzi „ szukaj pomocy ” są zdecydowanie poprawne. Jest bardzo mało prawdopodobne, że jesteś pierwszą osobą, która kiedykolwiek napotka konkretny problem.

Ale jako eksperyment, co jeśli nie ma pomocy? Co jeśli musisz rozwiązać problem samodzielnie? Najważniejszą umiejętnością rozwiązywania problemów jest umiejętność rozpoznawania i kwestionowania własnych założeń . Jeśli potrafisz wyliczyć swoje założenia dotyczące problemu po kolei i wyeliminować je kolejno, w końcu dojdziesz do błędnego założenia i w rezultacie pojawią się nowe możliwości rozwiązania.

(Nawiasem mówiąc, jest to również najlepsze podejście, gdy nie widzisz odpowiedzi na problem, który pojawia się podczas rozmowy kwalifikacyjnej. Ustnie wypisz swoje założenia i ustal, które z nich jest błędne, a następnie ponownie zaatakuj problem. Prawie wszystkie „podstępne pytania” oparte są na naturalnych, ale błędnych założeniach).


1

Proszenie o pomoc jest naprawdę najlepszą odpowiedzią, ale tutaj jest trochę więcej, które mogą być przydatne.

Więc dla tych, którzy pracują w branży od dłuższego czasu, co by się stało, gdyby ktoś kazał ci rozwiązać problem, którego nie możesz? Czy to się stało, a jeśli tak, co się stało? Czy po prostu zostawili to i powiedzieli „No cóż, zgadnij, że możemy zrobić coś innego”? Czy były jakieś konsekwencje? Czy zostałeś upomniany, czy nawet zwolniony?

Tak, zdarzyło mi się i nie, nigdy nie dostałem za to nagany ani zwolnienia, ponieważ ...

W branży chodzi o to, czy rozwiążesz problemy na czas i w ramach budżetu, a porządni menedżerowie rozumieją, że nie zawsze jest to możliwe.

To, co naprawdę się dzieje, mówi kierownikowi: „Chciałbym, żebyś zrobił X, co według ciebie zajmie?” I możesz udzielić wielu odpowiedzi. Do dobrych należą:

  • Zrobiłem coś bardzo podobnego do tego, więc myślę, że zajmie to trzy tygodnie i testowanie sprzętu o wartości 3000 $.
  • Mam coś ogólnie podobnego do tego. Pozwól, że pomyślę o tym i wrócę do ciebie dziś po południu.
  • Nigdy czegoś takiego nie zrobiłem. Pozwól mi to zbadać i wrócę do ciebie jutro.
  • Nikt na tej planecie nigdy tego nie zrobił. Jeśli chcesz się temu przyjrzeć, zajmie mi dwa tygodnie przeprowadzenie wystarczającej liczby eksperymentów, aby dokonać oszacowania.

Zadaniem menedżera jest decyzja, czy i jak kontynuować. Jeśli zdecydują się kontynuować, Twoim zadaniem jest spełnienie twoich szacunków lub powiadomienie kierownika o przeszkodzie. Tak długo, jak to zrobisz, w rozsądnym towarzystwie nie będzie żadnych negatywnych konsekwencji.

Oczywiście są też nierozsądne firmy, które nie dają ci czasu ani środków na wykonanie pracy. Pracowałem nad niektórymi z nich i wszystkim powierzono problemy, których nie można rozwiązać w ramach ograniczeń firmy. Jeden z nich zwolnił około 98% personelu programistycznego w ciągu ośmiu miesięcy, co z pewnością było konsekwencją, ale nie było to osobiście skierowane na mnie i nadal uważam mojego szefa i jego szefa za dobrych przyjaciół.


+1 Bardzo dobra przyrostowa lista celów. Menedżerowie muszą zaakceptować fakt, że im mniej znany jest problem, tym więcej czasu zajmie oszacowanie, ile czasu zajmie jego rozwiązanie, a także zwiększa margines błędu dla takich szacunków. Na koniec dnia, jeśli masz nierozsądnych menedżerów, praca jest zawsze zagrożona - więc powinieneś nadal postępować jak powyżej, ponieważ obejmuje to nieco więcej twoich pleców. Przynajmniej możesz powiedzieć „tak ci powiedziałem”.
Orbling

1

Istnieje wiele różnych rodzajów problemów, na które napotkasz problemy, a wiele z nich ma różne sposoby radzenia sobie z nimi.

Jednym z rodzajów problemów jest implementacja czegoś, czego wcześniej nie widziałeś, takiego jak dziwny dźwiękowy interfejs API lub coś takiego. W tym przypadku poważnie zapytam o SO.

Innym jest bardzo duży problem do rozwiązania. Do tego typu problemu można podejść iteracyjnie. Mówią ci „Implement Humongous”. Przejrzyj go i napisz tyle kroków, ile możesz wymyślić. Następnie dzielisz skomplikowane kroki na mniejsze. Gdy jesteś zmuszony myśleć o mniejszych krokach, stają się one wyraźniejsze. Jeśli napotkasz problemy techniczne, wypróbuj testową implementację i zapytaj tutaj, jeśli to konieczne.

Jednym z bardziej irytujących problemów są źle określone żądania. Chcą tylko czegoś, co robi „x” i nie mówią ci, jak należy to zrobić. Dla nich dobrym podejściem jest prototypowanie interfejsu (zwykle GUI) i pozwolenie komuś z niego zagrać.

Są też ograniczenia czasowe, których nie można spełnić. Często wiąże się to ze modyfikacją oczekiwań i dostarczeniem funkcjonalnych prototypów.

Zazwyczaj znajdziesz drogę w ten czy inny sposób. To przerażające, ale kiedy już tam jesteś, prawie zawsze możesz znaleźć drogę.

Najlepszym rozwiązaniem może być po prostu namalowanie słowa „Don't Panic” na zewnętrznej powierzchni laptopa. I nie zapomnij swojego ręcznika.


+1 Za odniesienie do HHGTTG ​​i „Zatem istnieją ograniczenia czasowe, których nie można spełnić”. Zbyt prawdziwe. W nowoczesnym świecie biznesu opartym na marketingu możesz zostać poproszony o zbudowanie czegoś, co wkrótce, jeśli nie już, w sprzedaży; ale zajęłoby drużynie dwa razy więcej, trzy razy więcej czasu na produkcję.
Orbling

1

Moja sekwencja rozwiązywania problemów (każdy następny test jest wykonywany tylko wtedy, gdy poprzedni nie działał):

  1. Spróbuj google
  2. Zapytaj kogoś
  3. Wyszukaj SO bezpośrednio (z pominięciem Google)
  4. Myśleć
  5. Dym (== czysta głowa)
  6. Zadaj pytanie na temat SO
  7. Poczekaj do rana (== oczyść głowę jeszcze bardziej)
  8. Użyj tego brudnego hacka i źle się o mnie czujesz :(

Paskudne problemy rozwiązuje się w krokach 5-6.

Naprawdę bardzo złe problemy zwykle wymagają trochę czasu (krok 7 jest rozwiązaniem większości problemów „wydaje się, że nic nie mogę zrobić”). I mam na myśli to - przejdź do innego zadania na resztę dnia i spróbuj rozwiązać problem z samego rana. To czyni cuda.

I dopiero wtedy następuje krok 8.


Zwykle najlepszym miejscem na znalezienie rozwiązania problemów jest albo a) na rowerze, albo b) pod prysznicem. Następnie staje się wyścigiem pomiędzy dotarciem do miejsca, w którym znajduje się urządzenie do robienia notatek, albo zapomnieniem o tym, co właśnie wymyśliłem (zaczynam teraz trochę, a moja pamięć krótkotrwała jest tym, co błędne, o czym mówiłem?)
Skizz

0

Nie słyszałem o takich wydarzeniach. Przede wszystkim nigdy nie pojawia się problem, którego w ogóle nie można rozwiązać. Problem może być trudny i jego rozwiązanie może zająć trochę czasu. Gdy pojawi się problem, będziesz musiał powiedzieć, że jest to czas, którego będę potrzebować. Jeśli w swoich badaniach uważasz, że tego problemu naprawdę nie da się rozwiązać, musisz podnieść flagę i powiedzieć swojemu kierownikowi, że ten problem zajmie więcej czasu lub jest naprawdę trudny do rozwiązania. Chodzi o harmonogram. Jeśli coś obiecujesz i nie będziesz w stanie dostarczyć, to jest problem. Ale jeśli nadal mówisz o swoim statusie i obawach, to kierownik musi się tym zająć. Powinien przekierować cię do właściwej osoby, która może pomóc lub dostosować harmonogram.


3
-1, zdecydowanie można napotkać problem, którego nie można rozwiązać. „Zaprojektuj brute force solver, który może złamać 30 znaków w mniej niż minutę, który musi działać na Pentium 2 z 256 megabajtami pamięci RAM”.
AttackingHobo

1
Istnieje wiele nierozwiązywalnych problemów. Sztuka polega na tym, aby wiedzieć, że są one bardzo szybko nierozwiązywalne. Najlepiej, zanim facet od marketingu proszący o rozwiązanie problemu skończy mówić o problemie.
Orbling

@AttackingHobo ... to nie jest nawet realistyczny problem
Dacto

0

Jest tu kilka świetnych porad! Moje dwa centy są warte; Nie daj się przytłoczyć WIELKIEMU problemowi, nie zapominaj, że ekscytującą i trudną częścią rozwiązania problemu jest rozbicie go na szereg wykonalnych i, co ważniejsze, zrozumiałych pod-problemów, które z kolei rozkładają się na mniejsze pod-problemy. Każdy dobry programista zwykle robi to z minuty na minutę, podczas tworzenia kodu (używając funkcji, metod, podprogramów itp., Aby zmniejszyć ogólną złożoność sekcji kodu), a ta metodologia zwykle ma zastosowanie do każdego WIELKIEGO problemu twarz w życiu (nie tylko w pracy).


0

Oczywiście zależy to od konkretnego problemu. Ale odpowiedź może być dowolna z:

  1. Znajdź obejście / podstawienie
  2. Kup komercyjne rozwiązanie zbliżone do tego, czego chcesz
  3. Nie poddawaj się i pracuj nad nim tak długo, jak to konieczne, dopóki nie odniesiesz sukcesu .

Numer 3 może wymagać zwolnienia od problemu i ponownej wizyty tygodnie lub miesiące później. To często pomaga.


0

W moim doświadczeniu czasami pojawia się problem, którego nie można rozwiązać, przynajmniej w ograniczeniu czasowym. Poszukiwanie pomocy tak szybko, jak to możliwe, po pewnym wysiłku polegającym na rozwiązaniu problemu, zawiodło .

Pamiętaj o ogólnej zasadzie: zawsze patrz na powód, dla którego szef cię zatrudnia. Rób wszystko, co uważasz, że możesz zrobić, aby uzyskać najlepszy wynik pracy, a czasem jest to raport wczesnego niepowodzenia (znacznie lepszy niż późny).

Krótko mówiąc, jeśli uważasz, że możesz znaleźć rozwiązanie, możesz spróbować, ale podaj swojemu szefowi ocenę ryzyka i czasu. To ich problem.


0

Jeśli nawet 100-milionowe projekty mogą zakończyć się niepowodzeniem, nawet z doświadczonymi ludźmi, nie powinieneś się martwić, że poniesiesz porażkę, ponieważ nadal jesteś studentem. Miałem problem, nad którym pracowałem i odkryłem, że jeśli utkniesz w tym - musisz zarejestrować każdą próbę jego rozwiązania.

To pomaga:

  1. Dowód prób podjętych w celu rozwiązania problemu.
  2. Rejestrowanie tego typu awarii jest ważne, więc ucz się na tym i nie rób tego ponownie kilka dni później, myśląc, że zadziała.

0

Z mojego doświadczenia wynika, że ​​świeżego absolwenta nie wrzuca się w głąb. Zamiast tego prawdopodobnie będziesz częścią zespołu, który obejmuje również doświadczonych programistów.

Moja rada brzmi: skorzystaj z nich. Jeśli nie masz pewności, jak rozwiązać problem lub jeśli chcesz wiedzieć, czy Twoje rozwiązanie zmierza we właściwym kierunku, omów to z nimi. A jeśli czujesz, że gdzieś utknął, złap jednego z doświadczonych facetów i wyjaśnij swój problem i poproś o pomoc.

Najczęściej samo wyjaśnienie problemu ujawni rozwiązanie, a wyjaśnienie rozwiązania może również ujawnić wady.


0

Często dzieje się tak, ponieważ problem nie został zdefiniowany poprawnie i dokładnie. Być może próbujesz rozwiązać z góry założone rozwiązanie zamiast samego problemu.

Problemem jest tylko to, co obserwujesz, a nie to, co sobie wyobrażasz.

„Mój cholerny samochód nie chce się uruchomić” to problem. "Batteria jest wyczerpana." jest z góry przyjętym rozwiązaniem problemu z uruchomieniem samochodu. Nawet testowanie baterii nie dowodzi, że jest to jedyna przyczyna problemu. Chyba że faktycznie naładowałeś lub wymieniłeś akumulator i nie uruchomiłeś samochodu, nie masz dowodu, że przyczyną problemu jest akumulator.

Uprość i nadal upraszczaj. Rozbij go na małe części. Jeśli nie możesz rozwiązać tych części, zniszcz je. Poczujesz się lepiej. Następnie podziel go na różne małe części. Każda z tych części musi być zjawiskiem obserwowalnym.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.