Jestem studentem inżynierii komputerowej. Zastanawiałem się, jak poradzić sobie z dużym projektem. Jaki powinien być mój pierwszy krok do osiągnięcia celu w bardziej wydajny i wydajny sposób?
Kiedy wpadam na pomysł, nie wiem, jak powinienem zacząć nad nim pracować. Wiele razy po prostu to ignoruję. Jednak nie chcę już ignorować pomysłów na mój projekt.
Teraz proszę was wszystkich, czy ktoś może podzielić się swoimi doświadczeniami? Jak powinienem rozpocząć projekt, gdy mam tylko pomysł?
Odpowiedzi:
Zapomnij na chwilę o kodowaniu i tworzeniu środowiska programistycznego. Jeśli chcesz zaangażować się w duży projekt, pierwszą rzeczą, którą musisz zrobić, to poznać cel i zakres projektu.
To, co polecam, to otwarcie edytora tekstu i napisanie dokumentu „cele projektu”. Opisz, o co chodzi w tym pomyśle, i ogólny cel oprogramowania, które chcesz napisać. Następnie wypisz cele funkcjonalne projektu. Nie mam na myśli tego, ale opisuję różne funkcje, które powinien obsługiwać gotowy produkt. Tak więc, jeśli piszesz oprogramowanie do prowadzenia szkoły, możesz wymienić „zarządzanie nauczycielami” jako element funkcjonalności, a następnie opisać, co obejmowałaby ta funkcja (śledzenie informacji kontaktowych, harmonogram zajęć itp.).
Następnie najtrudniejsza część: nie musisz robić tego od razu, ale z czasem. Tak samo ważne, jak wystawianie funkcje, które chcesz dodać dokonuje przeglądu funkcjonalność opisaną w dokumencie cele i pamiętać te cechy można żyć bez w pierwszej wersji programu. Jest to klucz do zarządzania zakresem.
Jednym z głównych powodów niepowodzenia przy większych projektach jest to, że nie wiedzą, kiedy przestać nad tym pracować. Nie uważają, że jest to „zrobione”, ponieważ pomysły wciąż przychodzą i nigdy się nie ujawniają. W końcu tracą zainteresowanie, a ty masz jeszcze pół ukończone arcydzieło. Więc chcesz mieć pewność, że dobrze rozumiesz funkcjonalność, która jest naprawdę ważna, aby osiągnąć podstawową część celu. To twój pierwszy cel.
W ten sposób zaczynam teraz wszystkie nietrywialne projekty. Pomaga mi utrzymać koncentrację i pomaga utrzymać zakres i cel przed „ewolucją” podczas rozwoju.
źródło
Myślę, że Linus ujął to najlepiej
źródło
Zakładam, że robiłeś już projekty i że jesteś na uczelni, która nie uczy kontroli wersji / źródła. Jeśli chcesz zobaczyć niektóre projekty, zawsze możesz przejść do repozytoriów open source, takich jak Github (używa Git), Bitbucket (używa Mercurial), Google Code (używa Mercurial, Git i Subversion), CodePlex (Mercurial and Subversion / TFS), SourceForge (Many) itp. I spójrz na ich bazę kodu. Łączy je to, że używają oprogramowania do kontroli źródła.
Jest wiele informacji na temat ich używania, więc sugeruję, abyś nauczył się z nich korzystać, ponieważ jest to standardowa praktyka branżowa. Oto kilka wizualnych przewodników, które pomogą Ci zacząć:
Tylko tyle możesz zrobić w wolnym czasie. Zacznij od małego : utwórz projekt od podstaw, umieść go w repozytorium kodu źródłowego. Zatwierdź zmiany w repozytorium kodu źródłowego, ilekroć chcesz dodać coś do swojego małego projektu. Z czasem stanie się duży i jeśli kiedykolwiek będziesz chciał wrócić, zawsze możesz cofnąć lub przywrócić zmiany dokonane za pomocą systemu kontroli wersji.
źródło
Występowanie syndromu „czystego papieru” jest całkowicie normalne.
Masz na myśli świetny projekt, który wygląda fantastycznie, ale kiedy siadasz przy biurku, próbując coś zrobić, nagle blokujesz i nie jesteś w stanie nic zrobić. Następnie otwierasz pasjansa i tworzysz nowy rekord.
Musisz zacząć robić coś związanego z projektem, żebyś poczuł, że się narodził.
Możesz nie chcieć od razu pisać kodu. Możesz zacząć od napisania tego, co naprawdę musi zrobić Twój projekt, lub chciałbyś, aby to zrobił. Weź długopis i papier i zacznij pisać. Możesz zacząć od szczegółów lub od większego obrazu. Spróbuj obu, aby zobaczyć, co jest najlepsze.
Możesz spróbować zdefiniować funkcje projektu, różne części, sposób komunikacji między nimi. Czuję się swobodnie z post-it, są zabawne i możesz je zmieniać w miarę postępu. Pozwól im podążać za twoim umysłem i pomysłami.
A może możesz uruchomić prototyp jakiejś funkcji lub klasy. Możesz użyć w tym celu dowolnego języka, nawet takiego, który nie istnieje i który właśnie wymyśliłeś.
Po jakimś czasie będziesz miał nad czym popracować, a twój projekt nie będzie tylko na myśli. Zrobiłeś coś.
Kiedy czujesz się komfortowo, aby rozpocząć proces programowania, nadszedł czas na staranne planowanie, dokumentowanie, prototypowanie, zebranie wszystkich wymaganych technologii i oprogramowania itd.
Ale nie zaczynaj, dopóki nie poczujesz, że to właściwy czas!
źródło
Duże projekty powstają z wielu mniejszych projektów lub części. Możesz mieć jeden wielki pomysł lub wymóg projektu - powiedzmy, aplikację zarządzającą kontaktami.
Rozbicie go; zadaj sobie pytanie: „Jakich mniejszych elementów potrzebuję, aby to zrobić?”
Po zdefiniowaniu mniejszych części powtórz; może się okazać, że niektóre części wymagają dalszego podziału. Chodzi o to, aby zdefiniować najbardziej wykonalne cele dla każdego z mniejszych elementów. Naucz się stosować zdyscyplinowane zasady w projektowaniu i rozwoju (takie jak Agile-TDD), a mniejsze, łatwiejsze do zarządzania cele zostaną spełnione.
źródło
Utwórz kontur
Masz świetny pomysł, ale nie wiesz, jak zamierzasz wykonać swoje zadanie. Utwórz zarys tego, co zamierzasz zrobić. Zapisz kroki, które będziesz musiał podjąć, jakich będziesz potrzebować, jakich języków będziesz używać itp. Upewnij się, że wszystko jest zorganizowane, w przeciwnym razie projekt będzie kompletnym wrakiem.
Zaplanuj swoje kroki
Wspomniałem o tym wcześniej, ale to naprawdę ważne. Jeśli masz zaplanowany czas, możesz mieć szacunkową datę zakończenia projektu i czas jego realizacji. To znowu organizacja i zapewni ci ciągłość działania.
Znajdź narzędzia do pracy
Jeśli zamierzasz rozpocząć duży projekt, potrzebujesz pomocy. Do organizacji kodu i dobrego systemu kontroli wersji Git jest świetny, ponieważ utrzymuje cały kod w jednym repozytorium. Aby uzyskać więcej informacji na temat Git, zobacz link, który ci dałem.
Musisz także upewnić się, że używasz języków, które pomogą ci zrobić to, co próbujesz zrobić. Przed rozpoczęciem upewnij się, że możesz utworzyć projekt. Nie mówię, nie ucz się niczego nowego, ale ucz się, zanim zaczniesz.
Sprowadź pomoc
Duże projekty zwykle nie są wykonywane samodzielnie. Przed rozpoczęciem pracy skontaktuj się z innymi uczniami, osobami z Twojej społeczności, które mogą programować, i innymi osobami, które według Ciebie mogą Ci pomóc. Nie bój się pytać.
Rozpocznij!
Nie obijaj się, czekając, aż ktoś zacznie twój projekt, a potem powiedz „Miałem ten pomysł!”. Na zawsze będzie cię prześladować ...
źródło
Może jest pełen klisz, ale ... Prześlę się.
Aby móc obsłużyć duży projekt, potrzebujesz przede wszystkim jednej rzeczy: doświadczenia. Doświadczenie daje Ci wszystko, czego potrzebujesz:
Możesz więc zrobić dwie rzeczy:
Mam nadzieję że to pomogło.
źródło
Moja definicja „dużego projektu” to „projekt, w którym głównym problemem jest koordynacja uczestników i komunikacja między nimi” (średni projekt jest wtedy, gdy zarządzanie jest równie trudne jak problemy techniczne, mały - gdy problemy techniczne są ważniejsze niż zarządzanie; zwróć uwagę, że długoterminowy projekt jednoosobowy może być dużym projektem - koordynowanie i komunikowanie się z przyszłym sobą nie różni się niczym od robienia tego samego z kimś innym).
Pierwszym krokiem w radzeniu sobie (z „odgrywaniem wiodącej roli”) dużego projektu jest uczestnictwo w jakimś dużym projekcie bez odgrywania wiodącej roli. Drugim krokiem jest osiągnięcie wiodącego poziomu roli podczas mentorowania przez kogoś, kto ma z nim doświadczenie.
Alternatywnym podejściem jest stopniowe zwiększanie wielkości projektów i wyciąganie wniosków z własnego doświadczenia ...
źródło
Niektóre pomysły są gotowe dla inżyniera, aby po prostu wskoczył i zaczął pisać kod. Projekty te mogą być duże lub małe, ale łączy je jedno: dobrze zdefiniowany problem do rozwiązania. Zainicjowałem takie projekty niezliczoną ilość razy i to tylko kwestia zbudowania przeze mnie dyscypliny wokół pisania dobrej dokumentacji z góry i przestrzegania najlepszych praktyk w zakresie kontroli kodu źródłowego, komunikacji i współpracy.
Duże projekty, dla których wszystko, co mam, to zalążek pomysłu, wymagają nieco więcej przygotowania w moim doświadczeniu. Pierwszą rzeczą, którą robię, jest rozmawianie o moim pomyśle z innymi, aby sprawdzić, czy ktoś podziela moje rozumienie problemu, który rozwiązuję, i zweryfikowanie mojego planowanego podejścia do rozwiązania problemu. Zabierz przyjaciela lub dwóch na piwo lub zaproś ich do swojego pokoju w akademiku dla Cheetos. Ale baw się dobrze z tym procesem, ponieważ dzięki temu procesowi możesz lepiej zrozumieć problem, który rozwiązujesz, znaleźć inne świetne pomysły, które możesz wnieść do rozwiązania problemu, poćwiczyć sprzedawanie swojego pomysłu innym, a może nawet zacząć budować zespół ludzi, którzy pomogą Ci go rozwiązać.
źródło
Podziel duże rzeczy na mniejsze.
Nie możesz pracować nad „osiągnięciem pokoju na świecie”. Zamiast tego pracujesz nad zakazem broni masowego rażenia, wspierasz demokrację, zapewniasz pomoc rozwojową, wspierasz kulturową i naukową wymianę itd.
źródło
Myślę, że coś, czego wiele z tych odpowiedzi nie dotyka, to zrobienie czegoś namacalnego i zmuszenie się do zrobienia tego.
Czasami utkniesz w „ziemi myślącej”, w której czujesz, że wszystko, co pozostało, to nudne pisanie na klawiaturze, ale tak naprawdę zacznij od kawałka swojego projektu, a jego wdrożenie jest zarówno zabawne, jak i trudne.
Znam wielu takich ludzi, w tym mnie, dopóki nie zacznę nic nie robić, nie mogę - tylko - myśleć i planować rozpocząć projekt. Muszę wybrać kawałek, który mogę z łatwością wdrożyć i przejść do niego, a następnie zaczyna się przepływ.
źródło
nie ma powodu, aby robić cokolwiek bez celu. Potrzebujesz historii użytkowników, które pokazują potrzebę kodu, który chcesz napisać. Powinieneś ułożyć te historie użytkowników w następujący sposób:
Jako [X]
chcę [Y]
, aby [Z]
Może się to wydawać zbyt uproszczone, ale daje ramy do nie tylko zdefiniowania użytkownika, ale także do określenia potrzeby i rezultatu końcowego w jednym zdaniu. Będziesz miał wiele z nich. Z czasem pojawi się więcej. Po ich zdobyciu możesz rozpocząć tworzenie kodu. Gdy masz więcej pomysłów lub wymyślisz inne rzeczy. Wracasz i piszesz więcej historii użytkowników, aby ich nie zapomnieć. To najlepsze miejsce na rozpoczęcie.
Podejście oparte na zachowaniu wykorzystuje to podejście, a strona pod linkiem zawiera kilka przykładów użycia tego formatu do wyrażania historii użytkowników.
Myślę, że będzie to najszybszy i najbardziej zorganizowany sposób przejścia od pomysłu do kodu.
źródło
Chwyciłam stos żółtych lepików i magiczny znacznik i usiadłam w pokoju, w którym znajduje się duża biała tablica, aby móc burzy mózgów.
Chciałbym po prostu zacząć pisać proste frazy, które przyszły mi do głowy, takie jak Menu główne, Raporty, Baza danych, Uwierzytelnianie itp. Położyłem je na białej tablicy i po prostu gapiłem się i dostałem więcej pomysłów, na przykład jak powinno wyglądać menu główne :
Otwórz plik, Zapisz plik, Zapisz plik jako, Drukuj itp. I przyklej je na białej tablicy w menu głównym.
Gdy pomysły pojawiają się w twojej głowie, zapisz je ... dobre, złe, głupie, cokolwiek tylko wpadnie w ucho. Przyklej je na planszy. Gdy spojrzysz na tablicę, pojawi się więcej pomysłów i pojawią się wzory. W pewnym momencie zaczniesz wyczuwać, co planujesz rozwijać.
Żółte lepkie są świetne, można je dość szybko przemieszczać.
Gdy wszystko zacznie się układać, podzielisz te myśli na grupy. Następnie możesz przeprowadzić burzę mózgów na poziomie pojedynczej grupy. Zrobiłbym zdjęcia białej tablicy na różnych etapach, na wypadek, gdybyś chciał zobaczyć, jak wyglądała dwadzieścia minut temu, zanim wszystko się zmieniło.
W końcu będziesz miał całkiem niezły pomysł na główne części rzeczy, które należy wykonać. Możesz dostać jeden folder dla każdego z tych fragmentów i po prostu wrzucać do nich pomysły, gdy do ciebie przychodzą.
źródło
Ponieważ jesteś studentem, zakładam, że masz na myśli studenta, a nie profesjonalistę. Ten ostatni wymaga dodatkowych rozważań biznesowych i współpracy. Właśnie rozpocząłem nowy projekt w zeszłym tygodniu, więc proces ten jest nowy w mojej głowie.
Pierwszą rzeczą, którą robię, jest badanie istniejących rozwiązań i bibliotek . Nie lubię wymyślać koła, gdy tylko jest to możliwe. Te badania są również ważnym czynnikiem przy wyborze języka dla projektu. Niektóre języki mają lepiej istniejący kod do niektórych zadań.
Następną rzeczą, którą robię, jest utworzenie folderu i poddanie go kontroli źródła . To jest tak proste jak
git init .
obecnie.Następnie działam „witaj świecie” . Dzięki temu wiem, że moje środowisko programistyczne jest skonfigurowane poprawnie.
Następnie dostaję „hello world” dla bibliotek zewnętrznych . Jest to absolutne minimum niezbędne do pokazania, że prawidłowo łączę się z biblioteką i korzystam z niej. W przypadku biblioteki bazy danych łączy się na przykład i uruchamia proste zapytanie. W przypadku zestawu narzędzi GUI wyświetla okno.
Następnie skonfigurowałem skrypty budowania i ramy testowe . Jest to mrówka, makefile lub cokolwiek, i jest o wiele łatwiejsze do skonfigurowania, gdy twój projekt jest jeszcze mały.
Następnie tworzę struktury danych . Nazywana również warstwą „modelową”. Jest to część przechowująca wszystko, co Twój program musi pamiętać, aby wykonać swoją pracę. Dużo projektuję na papierze, a potem dodam tylko odcinki. Ta część projektu jest zwykle najłatwiejsza. Na przykład program szachowy będzie potrzebował obiektów do przechowywania siatki gry, graczy, elementów, sekwencji ruchów itp.
W tym momencie mam całkiem dobrą bazę do programu i zazwyczaj dość oczywiste jest, jaki będzie następny krok dla tego konkretnego projektu. Potem robię to po prostu krok po kroku, z kodem, który działa do pewnego stopnia przez cały czas.
źródło
Jeśli wszystko, co masz, to „wielki pomysł”, będziesz potrzebować wielu rzeczy (które są bardzo dobrze opisane w innych odpowiedziach), a zwłaszcza tych 2: czas i motywacja .
Największą trudnością, gdy pracujesz sam nad osobistym projektem, jest to, że zwykle nie masz dużo czasu na to, aby co tydzień, a więc nie widzisz dużego postępu i szybko tracisz motywację.
Jak już powiedziano, podejmij małe kroki , to jest klucz.
Ale to nie wszystko, musisz zrobić małe i satysfakcjonujące kroki ! Oznacza to kroki, które przyniosą Ci największą wartość i zademonstrują kluczowe koncepcje Twojego wielkiego pomysłu.
Na przykład, jeśli pracujesz na nowym oprogramowaniu z listą super czynności do wykonania ze świetnymi interakcjami użytkownika . Nie zaczynaj od przechowywania i bazy danych, dopóki naprawdę tego nie potrzebujesz. Zacznij od innowacyjnego interfejsu użytkownika: jest zabawny i ma wartość. To sprawi, że będziesz dumny, zmotywowany i pozwoli ci szybko sprawdzić, czy Twój pomysł jest naprawdę dobry.
źródło
Pierwszą rzeczą, którą musisz zrobić, to usiąść i opisać ten pomysł na piśmie. Do tego czasu nie stanie się projektem, a nawet wtedy trzeba trochę pracy, aby zmienić go z czegoś tak efemerycznego jak pomysł w coś tak namacalnego jak projekt.
Gdy już zaszedłeś tak daleko, możesz zacząć patrzeć na przekształcanie go w projekt, identyfikując, w jaki sposób możesz podzielić go na dyskretne kroki, które można wdrożyć w logiczny sposób.
Następnie nakreśl harmonogram realizacji tych kroków. Sprawdzaj postępy w określonych odstępach czasu, aby zachować kontrolę nad tym procesem - zamiast mieć przerażające pomysły, o których nigdy wcześniej nie pomyślałeś, i dodawać je do miksu.
Zidentyfikuj początkową linię mety i zmierz się do tego. Im mniej się do tego zastosujesz, tym bardziej prawdopodobne jest, że projekt zanurzy się pod ciężarem dodatkowych pomysłów i tym bardziej zniechęcisz się do jego ukończenia, ponieważ wydaje się, że żyje wiecznie.
źródło
Wysiłek związany z kodowaniem wynosi zazwyczaj około 20% (+ -10%) budżetu projektu. Koncentrowanie się na poprawnym kodowaniu jest bezcelowe, istnieje 80% wysiłku, który nie został rozwiązany, więc uzyskanie doskonałego zarządzania kodem wciąż pozostawia tylko 20 wykonanych prac.
Co jeśli twój projekt nie ma użytkowników? Co jeśli jest idealny, ale opublikowany tydzień po pliku „Acme Patent Trolls” w celu opatentowania tego pomysłu i okazuje się być kolejnym Facebookiem?
Spójrz na następujące standardowe problemy związane z cyklem życia projektu Wymagania, Projekt, Kod, Test, Integracja, Wdrożenie, Śledzenie i korekcja defektów, Zarządzanie zmianami wymagań (żądania ulepszeń). Plany wydania, przydział zasobów (ile godzin planujesz i faktycznie wykonasz w projekcie), legalne (Freedon w obsłudze) itp.
Jeśli wszystkie powyższe są na miejscu, nawet bardzo zły kod odniesie sukces. Jeśli żadne z powyższych nie jest dostępne, najlepszy kod zawiedzie.
Nie jestem bukmacherem, ale postawiłbym na to pieniądze. Twój pierwszy „duży” projekt zawiedzie, na wiele różnych sposobów, których nie możesz sobie wyobrazić. Nie martw się, idź dalej i ponieść porażkę, wyciągnij z tego wnioski i zrób następne. Nie rozpoczęcie byłoby prawdziwą zbrodnią. Jeśli odniesiesz sukces po raz pierwszy, masz solidną karierę w zarządzaniu biznesem, a nie w programowaniu.
Aby odpowiedzieć na twoje pytanie, odłóż narzędzia programowe i wyciągnij narzędzia „planowania biznesowego”. Wypracuj, DLACZEGO to robisz, KTO wtedy DLACZEGO i KIEDY tego chcą. (Możesz być swoim własnym klientem, ale i tak wykonaj ćwiczenie). Zapisz to w „biznesplanie” i buduj na ich podstawie.
źródło
powtarzaj ostatni krok, aż projekt zostanie zakończony; zaakceptuj, że może to potrwać lata i idź naprzód
źródło
Wszystkie odpowiedzi tutaj są miłe i wszystkie, ale szczerze mówiąc, nie ma znaczenia, ile kontroli wersji, pobierania, schematu i narzutów dokonujesz, liczy się tylko to, że masz funkcjonalną aplikację, funkcjonalną aplikację jest zdefiniowany jako taki, który rozwiązuje problem, dla którego został przyjęty, wszystkie inne rzeczy są praktycznie nieistotne.
Rozpocznij kodowanie, zakoduj go do fazy funkcjonalnej, uruchom kilka testów, debuguj, uruchom i powtórz iterację z nowymi funkcjami i funkcjonalnościami (jeśli uznasz to za konieczne), w sposób bardzo podobny do lean startup - który jest zwinną metodą zarządzania i rozwój, aby stworzyć mniej odpadów (lub jak ktoś zdefiniował: na wpół ukończone arcydzieła).
źródło
Lista rzeczy do zrobienia przy rozpoczynaniu nowego projektu:
źródło