Joel Spolsky foreword to the book Coder To Developer (MikeG)

Индустрията за създаване на компютърни игри - управление на проекти, мениджмънт, маркетинг, правни проблеми.
malkia
Power User
Power User
Мнения: 1262
Регистриран: 03 дек 2003 07:45
Местоположение: Santa Monica, CA, US
Контакти:

Joel Spolsky foreword to the book Coder To Developer (MikeG)

Мнение от malkia » 10 юни 2004 21:26

http://www.joelonsoftware.com/articles/ ... loper.html



....

There’s something weird about software development, some mystical quality, that makes all kinds of people think they know how to do it. I’ve worked at dotcom-type companies full of liberal arts majors with no software experience or training who nevertheless were convinced that they knew how to manage software teams and design user interfaces. This is weird, because nobody thinks they know how to remove a burst appendix, or rebuild a car engine, unless they actually know how to do it, but for some reason there are all these people floating around who think they know everything there is to know about software development.

...


gemicha
Site Admin
Site Admin
Мнения: 2930
Регистриран: 20 ное 2003 22:20
Местоположение: USA

Мнение от gemicha » 10 юни 2004 21:51

Да. А имам една малка раса богоизбрани, които знаят как стават нещата.

Чел съм много интересни неща на сайта на Joel. Но май се поувлича.

Правенето на софтуер нито е най-трудното нито е само за шепа богоизбрани. Всичко това се научава.

Разбирам желанието му да посява идеята за незаменимите консултанти, но всяко мнение, което е резултат от желание за самореклама не мисля че трябва да се взима на сериозно.

ikolev
модератор
модератор
Мнения: 1661
Регистриран: 20 ное 2003 22:39
Местоположение: София
Контакти:

Мнение от ikolev » 11 юни 2004 02:05

gemicha написа:Правенето на софтуер нито е най-трудното нито е само за шепа богоизбрани. Всичко това се научива.
Да. Правенето на коли също не е нито най-трудното, нито само за шепа богоизбрани. Само че коли се правят от един век, а преди това има няколко века инженерен опит. И всъщност тук изобщо не става дума за богоизбраност, защото индустрия не се прави от шепа богоизбрани, а от тълпи добре настроени и управлявани винтчета.
За съжаление софтуерното производство не е стъпило на нечий опит (никой преди не се е опитвал да изгражда и управлява огромни абстрактни конкструкции с изцяло приложна, по-точно производствена цел) и е само на 20-30 години. Тъжно е да гледаш как двама физици се борят с програма на Фортран, която без да е най-големият кошмар сътворим от някой "С гуру" (или не дай Боже С++ гуру ;) ), отдавна е минала всякакви граници на ефективност (на управлението и поддръжката, не си и помислям да коментирам изпълнението).
А най-интересното е че софтуерното производство изглежда ужасно примамливо и лесно на пръв или втори поглед... и че даже работи... до един момент.
Съгласен съм че Сполски се увлича, най-вече в егото си. Но е крайно време в университетите да започнат да преподават Софтуерно производство като сериозен няколкосеместров предмет, и то да го правят хора с опит, и то предимно със съвременна и практична насоченост, а не с някакви абстрактни теории от преди 20 години... (на запад може и да го правят вече, не знам). Защото иначе още дълго време ще се радваме когато софтуерът закъснява само с няколко месеца от грубо определените си срокове, докато филмите и още много други неща отдавна се правят за предварително фиксиран брой седмици...
Наистина, правенето на софтуер се научава, и то много по-лесно от сложната математика която понякога стои зад самия софтуер. Само трябва да има от кого или от къде да го научиш, и по-важното, да имаш достатъчно мотивация да го направиш. Защото не можеш да напишеш (вмъкни някоя неочевидна програмистка задача тук - примерно да си сметнеш матрицата на трансформация от една координатна система в друга ;) ) без да се консултираш с книгите, но лесно можеш да избегнеш консултацията когато трябва да създадеш някой нов клас - просто го пишеш, к'во толкова. Бая мъртвороден код трябва да напише човек, за да му се роди мотивацията...

malkia
Power User
Power User
Мнения: 1262
Регистриран: 03 дек 2003 07:45
Местоположение: Santa Monica, CA, US
Контакти:

Мнение от malkia » 11 юни 2004 03:10

При нас например, се изрази мнение че трябва да назначим човек специалист по SCM (Source-Control Management). Такьв който ще администрира Perforce (P4) базата, и ще изпьлнява различни заявки (например аз още имам проблем да разбера напьлно branch-ването, или по-сложното merge-ване).

Може би Сполски е прав донякьде, вьпреки "аристократизма" си, или там как по-точно да го нарека....

Manev
Power User
Power User
Мнения: 602
Регистриран: 04 дек 2003 16:13
Контакти:

Мнение от Manev » 11 юни 2004 09:57

За някой неща е прав, но на моменти преиграва ми се струва. Съгласен съм, че има разлика между кодер и девелопер и съм абсолютно съгласен, че софтуер девелопмента не е за всеки. Не всеки може да го научи. Това е като с много други професии. Не всеки може да е хирург, не всеки може да е юрист и т.н. Мистицизма около всичко това идва от факта, че ИТ сферата е свързана с постоянни нови открития и подобрения, тя е на ръба на човешкия прогрес, много хора са изкушени да се интересуват от това. Много хора не могат да се занимават професионално, а в същото време масово човечеството е обвързано с ИТ технологиите и то пряко.
Освен това възрастовата област, в коато човек има допир с ИТ технологиите е много широка и това може би създава грешно впечатление у много, че това е нещо на една ръка разстояние, нещо лесно, което разбира се после се оказва, че не е точно така.

ikolev
модератор
модератор
Мнения: 1661
Регистриран: 20 ное 2003 22:39
Местоположение: София
Контакти:

Мнение от ikolev » 11 юни 2004 10:40

Така е, проблемът - макар че това може бе не е проблем, напротив - е че ИТ навлизат масово в живота ни и се налага все повече хора да разбират все повече от тях. Навремето се смях като разбрах че в химическия факултет учат Java, но всъщност така трябва да бъде.
Може би трябва да приемем че е неизбежно хора без специално образование да се занимават с ИТ, включително програмиране, и че е по-добре вместо да ги учим да ползват сложните нови технологии, да опростим самите технологии. Някой беше казал че компютрите трябва да станат на порядъци по-достъпни - примерно, връзването на една машина в мрежа трябва да става със закачане на един кабел, и най-много някой copy/paste в операционната система, не кошмарът който е сега. Сигурен съм че един ден ще се създадат средства за програмиране, които хем ще бъдат достъпни за непрофесионалисти, хем ще изключват всички други подходи за разработване на софтуер освен "правилния". Елементарният пример са стъпките на езици като Java и С# в тая посока.

Потребителски аватар
Zemedelec
Power User
Power User
Мнения: 782
Регистриран: 08 дек 2003 15:45
Контакти:

Мнение от Zemedelec » 11 юни 2004 15:36

В по-напредничавите компании си има кодери и архитекти. Едните реализират подсистемите или техните елементи, а архитектите дизайнват цялата програма като модули, връзки между тях (интерфейси) и общ вид на данните. Дейностите им не се пресичат - едните не дизайнват на по-високо ниво, другите изобщо не пишат код. А най-често по фирмите, двете неща се вършат от едни и същи хора, без необходимия талант и възможности в една от областите. А за архитект се искат някакви други таланти, хората казват, че човек такъв се раждал (бла-бла), но си е факт - някои го могат, други - не. Може би след N години писане и осмисляне на архитектурата, човек ще може да 'вижда' нещата 'отвъд' сорса и да работи като архитект. Аз лично често имам проблеми с тая част.
Така че, по-скоро си мисля, че изказването на Сполски важи с пълна сила тук.

zelenoto
Regular User
Regular User
Мнения: 92
Регистриран: 10 дек 2003 16:34

Мнение от zelenoto » 11 юни 2004 17:54

В по-напредничавите компании си има кодери и архитекти. Едните реализират подсистемите или техните елементи, а архитектите дизайнват цялата програма като модули, връзки между тях (интерфейси) и общ вид на данните. Дейностите им не се пресичат - едните не дизайнват на по-високо ниво, другите изобщо не пишат код.
Е айде сега, още малко ще излезе че въобще не са кодевали през живота си архитектите. Верно, че е вероятно архитектите да не пишат реализацията на архитектурата която са мислили (най-малкото се предполага че едва ли ще им е по силите да участват в имплементацията на толкова системи в дизайна на колкото са участвали), но да се твърди че въобще са спрели да програмират или че този който ще пише системата не (не бива да) участва в дизайна ми се струва утопично. Напротив, архитекта трябва да е изключителен програмист, а също така е крайно препоръчително този който ще реализира системата(още по-добре някой който е реализирал подобни системи) да взима участие в дизайна и. Защото дизайна на архитектура е наистина сложно нещо - да имаш поглед 'отвъд' далеч не е достатъчно, трябва да можеш да си представяш нещата на много нива - както на по високо - като взаимодействие и свързване на оделни модули, така трябва да можеш да слезеш и малко по надолу, да си представиш как ще се реализират нещата (не в детайли естествено, макар че пък и ако това му е по силите на някой - идеално). Именно тука се пресичат дейностите на програмиста и архитекта и е хубаво да има и от двамата по малко.
Защото иначе красивия, перфектно изглеждащ дизайн на бялата дъска може да се окаже че води до трудна и неефективна имплементация на по-ниските нива.
Добър архитект се става (според мене) с много опити и грешки - дизайваш, кодиш, гледаш че не стават нещата (и къде точно) и се учиш от грешките си. Хубавата архитектура е тази която не създава проблеми при ползване/имплементация, а кое не създава проблеми при ползване/имплементация се учи с... точно така - ползване/имплементация. Човек не се ражда с подобно знание и определно много писане, и то на разнообразен код, помага за придобиването му.

Потребителски аватар
Zemedelec
Power User
Power User
Мнения: 782
Регистриран: 08 дек 2003 15:45
Контакти:

Мнение от Zemedelec » 11 юни 2004 19:09

zelenoto написа:Добър архитект се става (според мене) с много опити и грешки - дизайваш, кодиш, гледаш че не стават нещата (и къде точно) и се учиш от грешките си. Хубавата архитектура е тази която не създава проблеми при ползване/имплементация, а кое не създава проблеми при ползване/имплементация се учи с... точно така - ползване/имплементация. Човек не се ражда с подобно знание и определно много писане, и то на разнообразен код, помага за придобиването му.
Това и се опитах да каже, като акцента беше, че има специални хора за целта на дизайна на системата. Знам фирми, където архитектите действително са 'баш програмистите', но код пишат малко, а правят основно UML-диаграми.

Потребителски аватар
TBoNe
Power User
Power User
Мнения: 519
Регистриран: 05 мар 2004 12:44
Местоположение: София
Контакти:

Мнение от TBoNe » 12 юни 2004 14:43

100% съм съгласен със zelenoto. Просто доста често се случва перфектно измислената архитектура да не сработи на някое място, защото се е сведена на никсо ниво. Трябва да се вземе впредвид, че отвисоко нещата могат да изглеждат прости, а всъщност да се окаже, че тази перфектна подреденост е невъзможна (на мен това ми се случи много скоро, когато установих, че не мога да направя template клас friend и това ми разби тотално цялата архитектура).

Дизайнерите на софтуеър трябва да са програмисти. Да вярно, не е нужно да са хардкор програмисти, които пишат по цели нощи код, но трябва да разбират голяма част от принципите най-малкото на езика, на който се пише този софтуеър. Наистина теоритично всичко е възможно, но също така в повечето случаи е неефективно и неудобно за ползване.

Не смятам, че програмирането е за шепа богоизбрани. Не смятам и че изработването на дизайн на някой софтуеър е за шепа богоизбрани. Но съм сигурен, че това е работа за хора, които искат да се занимават с нея, а не я приемат като нещо лесно. Защото това, което успях да науча през последните 3 тодини като програмист е, че нищо незнам и имам още прекалено много неща да уча, да не говорим, че в момента се съмнявам и че ще мога да науча поне половината от тях този живот. Аз също се дразня от пишман програмистите, но проблема не е в тях, а в тези, които ги наемат на работа.

И в крайна сметка Joel е прав относно образованието. Но от друга страна напоследък забелязвам, че в доста университети нещата се насочват към по-добро, може би защото част от хората започнаха да се усещат, че информатиката не е математика, физика или металургия, а отделна наука, която си има свое собствено място сред другите. Така или иначе в края на тази година ще имам възможността наистина да разбера на какво ще ме научат в университета и чак тогава ще си вадя по-сериозни изводи относно това на какво ниво е висшето образование по Информатика.

gemicha
Site Admin
Site Admin
Мнения: 2930
Регистриран: 20 ное 2003 22:20
Местоположение: USA

Мнение от gemicha » 12 юни 2004 18:36

... ще имам възможността наистина да разбера на какво ще ме научат в университета и чак тогава ще си вадя по-сериозни изводи относно ...
С това тряваше да започнеш.

Информатиката *е* математика. От там идват проблемите.

malkia
Power User
Power User
Мнения: 1262
Регистриран: 03 дек 2003 07:45
Местоположение: Santa Monica, CA, US
Контакти:

Мнение от malkia » 12 юни 2004 22:25

Мисля че яко трьгнахте в просото... Не ставаше дума за АРХИТЕКТИ, а за менаджери... Такьв дето като отидете на конференция, и всичко в хотела ще е уредено, ако някой си загуби паспорта, и ще направи всичко вьзможно за да не остане човека в чуждия град. Такьв който познава психиката на програмиста, и му дава лабаво когато е нужно, и го стяга, сьщо когато е нужно. Такьв който не ограничава свободата на програмиста, но и го вкарва в пьтя...

Такьв какьвто не е нашия менаджер например, и слава богу от два дена вече не ми е началник.

Да не говоря още за човек който може да те морализира, ентусиазира, и прочие...

Не искам от него да зане да програмира, или дизайнва. Просто да ни разбира...

stefan
Sometimes here
Sometimes here
Мнения: 33
Регистриран: 02 дек 2003 17:04

Мнение от stefan » 13 юни 2004 16:42

gemicha написа:

Информатиката *е* математика. От там идват проблемите.
По-скоро проблема е как да се приложи ограничен модел (дискретна математика) към нещо доста по-сложно - в случая потребител на компютърна игра :) Но какво да се прави - с това разполагаме

ikolev
модератор
модератор
Мнения: 1661
Регистриран: 20 ное 2003 22:39
Местоположение: София
Контакти:

Мнение от ikolev » 14 юни 2004 10:16

malkia написа:Мисля че яко трьгнахте в просото... Не ставаше дума за АРХИТЕКТИ, а за менаджери...
По-скоро човекът който трябва да разбира най-много от дизайн и производство на софтуер, трябва да бъде главен програмист, или технически директор, или както там се води съответната длъжност в конкретната фирма (тук си помислям да отворя тема за имената на длъжностите в една фирма, в частност софтуерна - май не са ми много ясни).
А мениджърът трябва да му е шеф. И да разбира по-скоро икономическата отколкото техническата страна на софтуерното производство. От техническата трябва да разбира колкото да усети дали проектът се дъни по вина на главния програмист, за да го смени...

gemicha
Site Admin
Site Admin
Мнения: 2930
Регистриран: 20 ное 2003 22:20
Местоположение: USA

Мнение от gemicha » 14 юни 2004 11:50

да усети дали проектът се дъни по вина на главния програмист, за да го смени...
Може ли да не е по вина на главния програмист? Ако нещо в софтуера не е наред виновен е главният програмист. Затова му плащат повече за да носи и отговорност.

ikolev
модератор
модератор
Мнения: 1661
Регистриран: 20 ное 2003 22:39
Местоположение: София
Контакти:

Мнение от ikolev » 14 юни 2004 19:49

Що да не може - може примерно дизайнера прекалено често да иска промени, които не се вписват в първоначалния дизайн на софтуера, може издателя да *натиска* за такива промени, може управлението да поставя задачи които по някакъв друг начин пречат на разработването ("искаме демо за Е3 в което задължително да има еди-кой си ефект"). Е, вероятно опитният главен програмист ще успее да се справи с всички такива предизвикателства, или дори да ги предвиди...

Отговори