-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!.POSTED!not-for-mail
From: Edek <e...@g...com>
Newsgroups: pl.comp.programming
Subject: [OT] Re: Dlaczego w branży rozrywkowej najsłabiej płacą?
Date: Mon, 10 Oct 2011 20:08:00 +0200
Organization: ATMAN - ATM S.A.
Lines: 126
Message-ID: <j6vcb7$cl5$2@node2.news.atman.pl>
References: <5...@n...onet.pl> <j3ktcd$2o7$1@news.onet.pl>
<j3m5f0$du5$1@inews.gazeta.pl> <j3nii2$l4$1@inews.gazeta.pl>
<1...@a...googlegroups.com>
<j3o64b$ak$1@inews.gazeta.pl> <j3oon0$pnk$1@inews.gazeta.pl>
<j3qff0$8df$1@inews.gazeta.pl>
<4...@c...googlegroups.com>
<j4286s$jg9$1@inews.gazeta.pl> <j532hg$sr8$1@inews.gazeta.pl>
<j59mgi$9rv$1@inews.gazeta.pl> <j5g378$ooq$1@inews.gazeta.pl>
<j5s9mu$c1e$1@inews.gazeta.pl> <j60dl2$or5$1@inews.gazeta.pl>
<j6f0tl$f35$1@inews.gazeta.pl>
<f...@j...googlegroups.com>
<j6hra9$6qj$1@inews.gazeta.pl>
<4...@t...googlegroups.com>
<j6l5sd$5u$1@inews.gazeta.pl> <j6m0pc$pp6$1@inews.gazeta.pl>
<j6sqj7$skh$1@inews.gazeta.pl> <j6tqei$hr2$1@inews.gazeta.pl>
NNTP-Posting-Host: 213.195.143.220
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node2.news.atman.pl 1318270119 12965 213.195.143.220 (10 Oct 2011 18:08:39
GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Mon, 10 Oct 2011 18:08:39 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110428
Linux/3.1.0-15 Thunderbird/3.1.0
In-Reply-To: <j6tqei$hr2$1@inews.gazeta.pl>
Xref: news-archive.icm.edu.pl pl.comp.programming:192706
[ ukryj nagłówki ]On 10/10/2011 05:57 AM, Andrzej Jarzabek wrote:
> On 09/10/2011 19:52, Wojciech Jaczewski wrote:
>> Andrzej Jarzabek wrote:
>>
>>> Nie omówić. Wypytać. Oczywiście będzie to obarczone jakimś tam błędem,
>>> ale raczej niewielkim.
>>
>> Zaintrygowała mnie ta odpowiedź.
>>
>> Uważam, że mi od jakiegoś czasu udaje się tworzyć nie-wywalające się
>> programy - oczywiście przy pierwszych uruchomieniach czasem się i wywalą,
>> ale po poprawieniu działają już dobrze. Dużo trudniej jest doprowadzić do
>> tego, aby każdy szczegół działał zgodnie z wymaganiami, niż do tego aby
>> program się nie wywalał.
>
> Zgodzę się, że to jest trudniejszy problem, ale to nie jest tylko
> kwestia umiejętności programisty. Zresztą samo "wywalanie się" to był
> skrót myślowy, możemy sobie rozszerzyć czy dodefionować pojęcie na
> nieprawidłowe działanie programu wynikające z błędu programistycznego, w
> przeciwieństwie do błędnego czy niedostatecznego sformułowania lub nie
> do końca zrozumienia wymagań.
Skrajne podejście do sprawy: pisanie kodu to spełnienie wszystkich
ograniczeń, z czego jednym z ograniczeń są wymagania. To eksperyment
myślowy, ale też prawda.
>
>> Jednak jedyne co mógłbym powiedzieć o "technice", jak to robię jest:
>> robić
>> najprościej jak się da i realizować wyłącznie tę funkcjonalność, która
>> jest
>> wymagana. Taka odpowiedź miałaby jednak taką wadę, że do takiej
>> odpowiedzi
>> każdy, niezależnie od doświadczenia i umiejętności, mógłby przygotować
>> się w
>> minutę, a jednocześnie: to co jeden uważa za program prosty, dla drugiego
>> może być programem bałaganiarskim.
>
> No ale jeśli kandydat powie coś takiego na rozmowie, to oczywistym jest
> kolejne pytanie, co konkretnie robi, żeby jego kod był prosty. Zeby
> podał jakieś konkretne przykłady ze swojej praktyki na przykład, albo
> odpowiedział na pytanie - jeśli funkcja ma realizować skomplikowaną
> działalność, jak ją napisać, żeby była prosta. Dwie do pięciu minut na
> odpowiedź dużo ci powie.
Dodam:
Podziwiam ludzi, którzy mówią o prostocie i zawsze się zastanawiam,
czy rozumieją. Każdy problem ma wiele błędnych ale prostych rozwiązań,
w wielu dziedzinach przybliżony wynik nie spełnia wymagań. W zasadzie
zgodnie z zasadą prostoty nie powinien istnieć skomplikowany kod,
a z empirycznych, moich przynajmniej, doświadczeń ze światem kod
skomplikowany istnieje i ma się dobrze, a co najważniejsze działa
i swięcie wierzę w to, że autorzy co jak co ale uprościli go ile
się da i dalej się nie da.
Dla mnie każdy, kto zaczyna od tekstu keep it simple jest lekko
podejrzany. Co nie znaczy, że do wielu zadań się nie nadaje i że
ja sam komplikuję sprawy bez powodu.
>
>> Jeśli możesz, to przedstaw, jakie wg Ciebie techniki się wykorzystuje
>> podczas robienia nie-wywalających się programów (wystarczy mi odnośnik do
>> jakiegoś tekstu). Powinny spełniać następujące kryteria:
>> - pomagać w osiągnięciu celu
>> - być czasochłonne w nauczeniu się (bo gdyby dało się jej nauczyć w
>> dzień-
>> dwa, to nie byłoby sensu selekcjonować kandydatów wg kryterium znajomości
>> tej techniki).
>> - ma być trudno o nich opowiadać, jeśli samemu nie umie się ich
>> wykorzystać.
>
> Jest sporo takich technik, i o ile jest kilka w miarę uniwersalnych
> (abstrakcja, czytelność, w tym ograniczenie długości funkcji, code
> reuse, unit testing), to sporo jest zależnych od technologii (MT, OO,
> exception safety, konkretny język programowania). Co do tekstu, no to
> jest sporo książek traktujących o tych tematach, od ogólnych typu "Code
> Complete" Steve'a McConnella, "Refactoring" Martina Fowlera et al. Jeśli
> chodzi o C++ to np. "Effective C++" Scotta Meyersa itd.
...ale i tak wszystkie to gówno, jeżeli ktoś tylko przeczytał te
książki. Znam sporo osób, które przynajmniej jedną z powyższych
zasad dość świadomie olewają, a to co piszą jest łatwe w rozszerzaniu,
debugowaniu, utrzymaniu itd. Jest coś ze słowa "Art" w Programming,
chyba nie chodzi o kreatywność.
Techiniki, jest ich dużo: exception safety,
w tym nie zostawianie otwartych plików, sprawdzanie różnych
rzeczy w kodzie (inwarianty, proste null checki), jeżeli nie
ma garbage collection to unikanie leaków, jeżeli jest też,
testy, czytelność kodu, enkapsulacja, dzielenie problemu na mniejsze,
dbałość o odpowiednie sygnalizowanie błędów (nie BSOD ani "Exception:
Error Occured"), złożoność algorytmiczna (żeby test z 10 elementami
nie zajął 1/1000 tego co ze 100 elementami), komentowanie kodu,
nie robienie różnego rodzaju głupot (wbrew pozorom pewien problem
czasami, nie mówię o błędach), wzorce projektowe, o ile ktoś wie
jak ich używać (swoją drogą w C++ mówi się raczej o idioms),
RTFM jeżeli używa się funkcji systemowych i/lub bibliotek,
jak ktoś się bierze się za wątki, to musi mieć wyobraźnię
i znać zasady, umiejętność korzystania z języka w tym
z kompilatora i innych narzędzi, również
w celu unikania błędów - każdy język ma swoją specyfikę, na
przykład jeżeli chodzi o nie zainicjalizowane zmienne, type
safety, ostrzeżenia kompilatora, na czym można polegać,
a na czym nie itd. itp., nie wiem czy cześciej nie jest problemem
to, że ludzie padają na sprawach banalnych, niż na braku znajomości
wyrafinowanych reguł, a o drobiazgi "wolno" pytać.
Do tego każda dziedzina, w tym język, ma swoją specyfikę,
o którą można zapytać.
>
> W ogóle to można jeszcze zwrócić uwagę na istotny aspekt całej sprawy: w
> pisaniu programów, które się nie wywalają, samo to, że napiszesz program
> i on się nie wywala to jest tylko wierzchołek góry lodowej. Bardzo
> istotne jest również to, żeby program napisany przez ciebie nie wywalił
> się jak inny programista zacznie wprowadzać w nim zmiany, być może długo
> po tym i być może nie mając do ciebie dostępu i nie mogąc cię spytać
> dlaczego jest tak a nie inaczej. Oczywiście nie da się napisać programu
> tak, żeby inny programista nie mógł wprowadzić do niego błędów, ale też
> prawdopodobieństwo wprowadzenia później błędów jest mocno uzależnione od
> jakości pierwotnego kodu. Niby jest to oczywiste, ale myślę, że niejeden
> profesor kenobi by się przejechał na tym punkcie jak nic.
W konkursach nie to jest najważniejsze ;)
Edek
Następne wpisy z tego wątku
- 10.10.11 19:59 Waldek M.
- 10.10.11 20:42 Edek
- 10.10.11 20:52 Edek
- 11.10.11 03:13 Andrzej Jarzabek
- 11.10.11 03:31 Andrzej Jarzabek
- 11.10.11 11:44 Wojciech Jaczewski
- 11.10.11 15:15 Andrzej Jarzabek
- 11.10.11 19:30 Wojciech Jaczewski
- 11.10.11 19:51 Waldek M.
- 11.10.11 21:48 Edek
- 11.10.11 22:50 Edek
- 12.10.11 07:21 Andrzej Jarzabek
- 12.10.11 12:55 Andrzej Jarzabek
- 12.10.11 22:51 Wojciech Jaczewski
- 12.10.11 23:03 Wojciech Jaczewski
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-02-15 Łódź => NodeJS Developer <=
- 2025-02-15 Dęblin => Node.js / Fullstack Developer <=
- 2025-02-15 Warszawa => Developer .NET (mid) <=
- 2025-02-15 Wrocław => Senior SAP Support Consultant (SD) <=
- 2025-02-14 Zdalne załączanie grzałki bojlera elektrycznego
- 2025-02-14 Warszawa => Kierownik ds. kluczowych Klientów <=
- 2025-02-14 Częstochowa => Product Manager - Systemy infrastruktury teleinformaty
- 2025-02-14 Warszawa => Senior Frontend Developer (React + React Native) <=
- 2025-02-14 Warszawa => Data Engineer (Tech Leader) <=
- 2025-02-14 Czy ma sens grupa news:pl.soc.polityka-prawna ? :-)
- 2025-02-14 e-paper
- 2025-02-14 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-14 Warszawa => System Architect (Java background) <=
- 2025-02-14 Katowice => Senior Field Sales (system ERP) <=
- 2025-02-14 Wrocław => Specjalista ds. Sprzedaży (transport drogowy) <=