So you want to be a professional
Co wiesz po tych zajęciach?
- Masz jakieś pojęcie o HTTP
- Masz jakieś pojęcie o pisaniu
aplikacji WWW
Co wiecie
Czas połowicznego rozpadu wiedzy
Dwie nieoczywiste rzeczy
Your job is not to write code
Your job is not to write code, your job is not to test, your job is not to write tests. Your job is to ship products... You're trying not to write code. If we could make all this money by not writing code we'd do it.
- Michael A. Cusumano: "Microsoft Secrets"
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
Warsztat
Warsztat pracy programisty jest bardzo ważny.
Na warsztat składa się:
- Znajomość narzędzi
- Znajomość dobrych praktyk
- Dobre nawyki
Umiejętności miękkie
Są bardzo ważne
Oprócz posiadania wiedzy, musicie:
- Umieć przekazać ją innym;
- Przekonać innych, że ją macie;
- Umieć przekonać innych do swoich racji.
Wiedza teoretyczna
- Złożoność algorytmów
- Podstawowe algorytmy i struktury danych
- Zamiana zużycia CPU na zużycie pamięci
- Algorytmy rozproszone
- Podstawy kryptografii
- Jak działa System Operacyjny
Wiedza "Praktyczna"
- Wzorce projektowe
- Jakie założenia można przyjąć przy budowie systemów rozproszonych
- Jak zaprojektować system
- Jak wdrożyć i zabezpieczyć system
Warsztat
- Learn English
- System kontroli wersji
- Testowanie kodu
- Systemy zadań (issue trackery)
Mniej ważne
- (Automatyczne)? wdrażanie oprogramowania
- Praca w zespole Zwinnym
- Wirtualizacja / konteneryzacja
Narzędzia
- Praca w powłoce (nie zawsze macie GUI)
- Znajmość Waszego ulbionego OS
- Umiejętność postawienia wirtualnej maszyny
- Budowanie systemu z konsoli
- Znajomość Waszego systemu tworzenia
dokumentacji
Dobry osąd
- Pisanie kodu, który jest czytelny (samodokumentujący się);
- Wiedza kiedy można napisać kod nieczytelny;
- Co dokumentować;
- Jak dokumentwać;
- Kiedy można użyć zewnętrznych bibliotek, a kiedy nie warto.
Warsztat/miękkie umiejętności
- Czytanie kodu
- Rozumienie kodu który przyszedł bez dokumentacji
- Robienie przeglądów kodu
- Dyskutowanie o kodzie
- Przekonywanie innych do swoich racji
Skąd zdobyć wiedzę
Wiedza teoretyczna
Można ją zdobyć poza uczelnią,
Są dostępne fajne kursy
- https://www.coursera.org
- https://www.udacity.com/
- http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/
Część kursów jest płatna, jest sporo bardzo dobrych darmowych materiałów.
Wikipedia ma całkiem rozsądne podsumowanie wielu algorytmów:
- https://en.wikipedia.org/wiki/Category:Randomized_algorithms
- https://en.wikipedia.org/wiki/Category:Algorithms
Warsztat
Można go poznać tylko praktycznie
- Trzeba napisać samemu projekt który:
- Ma kilka tysięcy linii (to nie jest wiele!)
- Robi coś sensownego
- Ma użytkowników
- Umiejętności pracy zespołowej należy nauczyć się w zespole
- Może być projekt open-source
Źrodła
Ci dwaj założyli StackOverflow:
http://www.joelonsoftware.com/
Bardzo techniczne blogi:
https://bitquabit.com/
http://danluu.com/
Uwaga: blogi, książki, prace naukowe, wykłady zawierają błędy i wszystkie należy czytać krytycznie.
Książki
Robert L. Read: How to be a Programmer: A Short,
Comprehensive, and Personal Summary
Frederick Brooks: The Mythical Man Month
Gang of Four: Design Patterns
pro-programmer
By Jacek Bzdak
pro-programmer
- 1,291