Jaka jest różnica między programowaniem na poziomie uczelni a programowaniem korporacyjnym? [Zamknięte]

28

Właśnie ukończyłem studia licencjackie w dziedzinie IT. Interesuję się kodowaniem i naprawdę chcę być w tym profesjonalistą. Teraz, oprócz kursów na studiach, sam uczę się programowania (C #) (programowanie na poziomie uczelni jest zbyt podstawowe). Teraz czuję, że potrzebuję trochę więcej czasu, aby być blisko profesjonalnego programisty. Ale niektórzy z moich seniorów twierdzą, że programowanie w świecie korporacyjnym zbyt różni się od programowania książkowego, dlatego nie ma sensu marnować czasu. (Nie są to sami programiści, prawdopodobnie tak właśnie słyszeli).

Czy skorzystałbym na osiągnięciu wcześniejszego poziomu C #? czy ponieważ mierny poziom jest wystarczający do przerwania wywiadów, wyższe poziomy nie mają znaczenia dla firm, ponieważ polegają wyłącznie na szkoleniu, aby uczyć, jak działają rzeczy w świecie korporacyjnym, a uczenie się więcej nie pomoże mi zbytnio? Proszę, jeśli są profesjonalni programiści, którzy mogą pomóc, obiecuję, że jest to coś, o co każdy student zainteresowany programowaniem chce zapytać na moim etapie. „Jak faktycznie zmieniasz się z ucznia na profesjonalistę w dziedzinie programowania?” - kontynuuj naukę, dopóki nie jesteś doskonały lub dołączenie do firmy jest konieczne, gdy już znasz podstawy?

vish213
źródło
24
W szkole nigdy nie chodziło o zapewnienie umiejętności niezbędnych do znalezienia pracy. Chodzi o zapewnienie niezbędnych narzędzi do znalezienia pracy. Nic nie zastąpi doświadczenia w świecie rzeczywistym, ale nadal potrzebujesz szkoły.
Robert Harvey
5
Myślę, że tytuł stanowi użyteczne pytanie, ale jego treść zawiera prośbę o poradę dotyczącą kariery, która jest nie na tej stronie.
Bryan Oakley,
Można znaleźć czat kanał Programmers.SE (tablicy), aby być przydatnym miejscem do zadawania takich pytań - są często ludzie tam z szerokiego zakresu umiejętności ze świata korporacji.
3
W oczekiwaniu??? To NIE jest prośba o poradę dotyczącą kariery. Tak, to pytanie niewiele dotyczy dyskusji, ale można na nie odpowiedzieć. Jest tak wiele fajnych odpowiedzi na to pytanie, nie ma mowy, aby pytanie to zostało usunięte lub coś innego, chyba że w stosie wymiany nie zabraknie pamięci. Zobacz zaakceptowane odpowiedzi. Czy to daje jakąś radę zawodową?
vish213,

Odpowiedzi:

32

Istnieje wiele różnic między programowaniem w szkole a realnym świecie. Nie jestem pewien, czy istnieje coś takiego jak programowanie korporacyjne .

W zależności od tego, gdzie faktycznie pracujesz, będą ogromne różnice. Będą również ogromne różnice w zależności od wykonywanych zadań.

Nadal jednak występują pewne typowe problemy.

  • cykl życia kodu w świecie rzeczywistym bardzo różni się od pracy domowej na studiach. W programowaniu w świecie rzeczywistym zwykle pracujesz na istniejącej bazie kodu. Jednym z największych problemów jest unikanie łamania zgodności z kodem używanym przez klientów (którzy mogą być klientami wewnętrznymi lub zewnętrznymi, w zależności od rzeczywistego miejsca pracy i przypadku). Kod, który piszesz, będzie prawdopodobnie używany przez wiele lat później (to zależy: problem nie jest taki sam dla strony internetowej lub kodu osadzonego na niektórych urządzeniach). Jeśli chcesz się na to przygotować, nabądź nawyku pisania testów jednostkowych i testów funkcjonalnych dla każdego fragmentu kodu. Nie zawsze dzieje się tak w przypadku kodu z prawdziwego świata, ale powinno to uprościć życie zarówno na studiach, jak iw świecie korporacyjnym.

  • projekt / wymagania są zwykle znacznie bardziej niewyraźne w prawdziwym świecie niż w kolegialnej atmosferze. Pisząc profesjonalny kod, ktoś musi zdefiniować cel kodu, a ty nie masz po prostu problemów z zabawkami lub nawet dobrze znanych problemów. Jest bardzo prawdopodobne, że prędzej czy później to Ty będziesz projektował! Klienci zwykle nie wiedzą, czego chcą (a nawet gdy wiedzą, czego chcą, może nie być tym, czego potrzebują), a menedżerowie zwykle po prostu opisują duży obraz, pozostawiając programistom wiele szczegółów i możliwości. W zależności od zastosowanych metod („zwinny” -vs- „cykl V” itp.) Wcześniej lub później mogą pojawić się wybory i szczegółowa definicja problemu, ale powinieneś przynajmniej zachować otwarty umysł i zastanawiać się, czy faktycznie robisz to, co robisz jest wymagane. Możesz również rozważyć zmianę wymagań, jeśli trwające zadanie jest zbyt trudne do kodowania lub nieefektywne. Może i tak skończysz pisać coś bezużytecznego lub zbyt skomplikowanego, ponieważ klient lub kierownik nie zrozumiał o co ci chodzi lub się z tobą nie zgadzał. Jednak zawsze powinieneś kwestionować wymagania (jest to umiejętność przetrwania). Pamiętaj również, że wymagania mogą się zmieniać w trakcie wykonywania zadania i powinieneś być na to przygotowany.

  • na studiach, kiedy dostaniesz zadanie, zwykle powinieneś napisać jakiś kod. W prawdziwym świecie zwykle zaczynasz od sprawdzenia, czy możesz zamiast tego użyć istniejącego kodu: ponownie użyj lub zmień części projektu, użyj lub kup biblioteki itp. Jeśli znajdziesz istniejący kod, który pasuje do zadania, możesz go użyć lub nie (mogą występować problemy z konserwacją, problemy z wydajnością, problemy z prawami autorskimi, a nawet problemy z cenami), ale zwykle należy rozważyć możliwość ponownego wykorzystania istniejącego kodu.

Istnieje oczywiście wiele innych problemów związanych z pracą zespołową, skalą projektu itp. Ale powyższe punkty są problemami, które bardzo prawdopodobne są w środowiskach korporacyjnych, ale nie trzeba ich brać pod uwagę podczas pracy na uczelni.

Kriss
źródło
Przez programowanie korporacyjne miałem na myśli środowisko programistyczne w firmach.
Dobra
3
Dobra odpowiedź @ kriss. Dodałbym, że ważne jest, aby nauczyć się mówić w języku klienta, a nie w języku „programowym”. Pomoże to zarówno Twojemu klientowi, jak i Tobie.
Paddy Landau
38

Główną różnicą między programowaniem korporacyjnym a programowaniem na studiach jest skala. W szkole nigdy nie dostajesz zadania, którego jedna osoba nie może rozpocząć i zakończyć w ciągu semestru. Jako profesjonalista możesz współpracować z dziesiątkami innych programistów nad oprogramowaniem, które działa przez lata bez „ukończenia”.

Na poziomie mikro praca nie różni się tak bardzo. W końcu, gdyby było inaczej, to studia nie miałyby żadnej wartości dla firm. Ale to trochę jak różnica między pieczeniem 12 ciastek a pieczeniem 12 000 ciastek. Możesz być naprawdę dobry w pierwszym i całkowicie nieświadomy w drugim.

W szkole zajmujesz się głównie tworzeniem właściwego programu. W pracy poprawne oprogramowanie nie wystarczy. Musi być konserwowalny, testowalny, wydajny i nad tym, że może pracować jednocześnie przez wiele osób. To jest coś, czego szkoły próbują uczyć, ale tak naprawdę nie można się tego całkowicie nauczyć, chyba że to się robi.

Karl Bielefeldt
źródło
Z mojego doświadczenia wynika, że ​​większość „kodu korporacyjnego” nie stara się być łatwym w utrzymaniu, testowalnym i wydajnym, ale raczej wystarczająco dobrym, aby rozwiązać problem w krótkim czasie. W wielu przypadkach kod nie jest nawet „poprawny”, ale tylko „wystarczająco poprawny”.
simon
26

To pytanie opiera się na nieprawidłowym założeniu:

„Jak faktycznie zmieniasz się z ucznia na profesjonalistę w dziedzinie programowania?”

Stajesz się profesjonalistą, otrzymując za to wynagrodzenie. Nigdy nie przestajesz być uczniem. Jeśli to zrobisz, Twoja kariera się skończy.

Wyjdź na świat i znajdź pracę. Twój entuzjazm do nauki jest atutem.

Steven A. Lowe
źródło
4
To dobra rada, ale tak naprawdę nie odpowiada na pytanie, prawda?
Bryan Oakley,
6
Zgadzam się, że profesjonalny programista nigdy nie przestaje być uczniem - ale nie to, że wynagrodzenie czyni cię profesjonalistą. Spotkałem wielu amatorów, którzy dostali zapłatę za napisanie okropnego okropnego kodu. Profesjonalista polega na prawidłowym wykonywaniu pracy - i wykonywaniu właściwej pracy - a nie na wynagrodzeniu za rezygnację z kodu.
Bevan
@Bevan Można również argumentować, że taka jest różnica między „programistą” a „programistą”. Nie jestem jednak pewien, na czym stoję.
Izkata
3
@Bevan: Słowo „profesjonalista” jest naprawdę dwuznaczne; zmysły wymienione w pozycji na Wikisłowniku obejmują zarówno „odnoszące się, lub zgodne z (zwykle wysokimi) standardami zawodu”, jak i „które są przeprowadzane za pieniądze, zwłaszcza jako źródło utrzymania”. Zapłata automatycznie czyni z ciebie profesjonalnego programistę w tym drugim sensie, nawet jeśli nie mówi nic o tym pierwszym.
ruakh
12

Krótka odpowiedź, tak - świat korporacji jest zupełnie inny niż wiele środowisk akademickich.

To powiedziawszy, firmy o tym wiedzą. Oczekujemy, że absolwenci college'ów będą prawie bezużyteczni. Jeśli spędziłeś czas na nauce programowania, to świetnie. Nie musisz być super niesamowity, aby się o nie ubiegać, ale zrozum, że pozostanie przeciętne nie ograniczy tego.

Sam nie nauczysz się wiele, czego potrzebujesz w biznesie. Złóż wniosek jak najszybciej, kontynuując naukę na własną rękę.

Telastyn
źródło
4

Czy skorzystałbym na osiągnięciu wcześniejszego poziomu C #?

Nie. Oczekujemy, że studenci będą bezużyteczni przez kilka miesięcy, kiedy ich włamiemy. Stopień to tylko stawka na stole. Twój entuzjazm do nauki i wykonywania instrukcji jest Twoim najlepszym atutem. Podczas przeprowadzania wywiadów z absolwentami szkół wyższych chcę mieć gracza, który nie pasuje do sytuacji krytycznej.

... wyższe poziomy nie mają znaczenia dla firm, ponieważ polegają wyłącznie na szkoleniu, aby uczyć, jak działają rzeczy w świecie korporacyjnym, a uczenie się więcej niewiele mi pomoże?

Różni się to dla każdej firmy, ale ogólnie większe firmy będą miały bardziej zorganizowane szkolenie. To twoja pierwsza ważna decyzja. Czy lubisz szkolenia formalne i wysoki poziom struktury? Jeśli tak, szukaj pracy, która to zapewnia.

Jak faktycznie zmieniasz się z ucznia na profesjonalistę w dziedzinie programowania?

Zmieniasz się ze studenta na profesjonalistę, zdobywając pracę. Polecam Seniorom nawiązanie współpracy z firmą za pośrednictwem Twojej szkoły. Jest to najlepszy sposób na zmoczenie stóp i pokonanie lęku przed nowym zawodem.

Kontynuuj naukę, dopóki nie osiągniesz perfekcji lub dołączenie do firmy jest konieczne, gdy już znasz podstawy?

Znajdź pracę, nie czekaj. Często się denerwujesz, ale szczerze mówiąc o swoich umiejętnościach i nie ukrywaj entuzjazmu, aby dowiedzieć się więcej. Często zmienia się firmy kilka razy, szczególnie na początku kariery.

Gratulujemy ukończenia studiów i powodzenia w drodze do profesjonalnego programowania.

Pośpiech psychiczny
źródło
1

Powiedziałbym, że podstawowa różnica między programowaniem na poziomie korporacyjnym a szkolnym polega na tym, że programowanie na poziomie korporacyjnym jest bardziej procesem opartym na współpracy niż to, co można spotkać w klasie, a nacisk kładzie się bardziej na rozwój produktu niż naukę pedagogiczną.

Marc
źródło
1

Jeśli naprawdę oczekujesz, że programowanie w świecie korporacyjnym będzie zaawansowaną kulturą programowania wysokiego poziomu, myślę, że raczej się rozczarujesz. Programowanie w świecie korporacyjnym polega raczej na tym, aby wziąć odpowiedzialność za napisany kod i zachować go w utrzymaniu.

Ale na twoje pytanie

Jak faktycznie zmieniasz się z ucznia na profesjonalistę w dziedzinie programowania?

Nie ma to nic wspólnego z programowaniem na poziomie korporacyjnym i wyższym, ale ogólnie z programowaniem. Jeśli naprawdę chcesz się nauczyć, zacznij tworzyć własne oprogramowanie, coś, co chcesz zbudować lub zacznij pracować w projektach oprogramowania typu open source. Zadawaj pytania, które napotykasz. I czytaj kod innych ludzi.

minusSeven
źródło
1

Odpowiedź Karla na temat skali jest natychmiastowa. Nie możesz posortować tablicy 15 liczb, musisz posortować zestaw danych składający się z miliona, powiedzmy, numerów kont.

Klasa struktur danych i algorytmów prawdopodobnie poda ci kilkanaście różnych sposobów sortowania. W prawdziwej aplikacji prawdopodobnie rzucisz w kolejności według klauzuli i pozwól, aby baza danych ją zoptymalizowała.

Jeśli chodzi o przygotowanie się do świata korporacyjnego, proponuję dwa sposoby: a) Staż, nawet o niskim wynagrodzeniu lub bez wynagrodzenia, pozwoli Ci obserwować pracę innych. b) Przy wszystkich sklepach z aplikacjami możesz spróbować napisać i opublikować aplikację w sklepach Apple / Google / MS. Pomoże Ci to lepiej zrozumieć przepływy pracy, wartość testowania, potrzebę skonfigurowania odpowiedniego środowiska i narzędzi oraz wiele więcej.

SidJ
źródło
1
Chciałem tylko dodać do sklepu z aplikacjami, możesz spróbować zgłosić się na ochotnika do małego projektu. Moje pierwsze zadanie polegało na tym, aby w pracy mojej mamy pojawiły się raporty dotyczące urlopów i nadgodzin :)
SidJ
0

Najważniejsze, aby dobrze sobie radzić w programowaniu korporacyjnym, jest cierpliwość i umiejętność komunikowania się z użytkownikami, którzy nie rozumieją technologii. Upewnij się, że korzystasz z testów jednostkowych, kontroli wersji, ostrożnie debuguj i stosuj odpowiednie śledzenie / rejestrowanie. Języki mogą się zmieniać, ale zachowanie spokoju i staranne wyszukiwanie problemów zawsze będzie działać.

Tim Spann
źródło
-1

oprócz doskonałej odpowiedzi, pod warunkiem, że „programowanie korporacyjne” dotyczy również wymagań, które nie są jasne lub zmieniają się.

Co byś zrobił, gdyby twój profesor zmienił wymagania pracy domowej z programowania na dwa dni przed jej wykonaniem?

W przemyśle jest to dość powszechne.

k3b
źródło