metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-03-24 10:28 pm

Как Остаться Программистом в 40 и Больше Лет

Все, что должен знать программист, чтобы его после 40 лет не выбросили на Помойку, Где Бомжи.

[identity profile] alexandr0.livejournal.com 2011-03-26 04:35 pm (UTC)(link)
Увидев этот чудесный список, пошел посмотреть год рождения его автора. Не угадал всего на год :)

[identity profile] sharpc.livejournal.com 2011-03-26 05:41 pm (UTC)(link)
Расскажите, пожалуйста, что бы вы убрали из списка.

[identity profile] metaclass.livejournal.com 2011-03-26 05:56 pm (UTC)(link)
Все относящееся к узкой специализации. Тонкости внутренностей процессора, оккультные знания С++, редкоиспользуемые теории. Это все нужно только если заведомо работать в области, имеющей к этому отношение, а большая часть программистов этого мало того что не знает, так и знать не должна - чтобы им это работать не мешало.

[identity profile] sharpc.livejournal.com 2011-03-26 06:17 pm (UTC)(link)
Что именно вы считаете тонкостями внутренностей процессора?
C++ это тот язык, который я выбрал в качестве основного для теормина, поэтому в списке то, что считается "знать C++". То, что в C++ надо знать много тонкостей, увы, проблема, но пока ее никто не решил.
Какие именно редкоиспользуемые теории?
Я заведомо выкинул domain-specific вещи, например, Java, которая остро необходима 40% всех программистов (если верить TIOBE). Укажите, где, по вашему мнению, они еще остались.

[identity profile] metaclass.livejournal.com 2011-03-26 06:51 pm (UTC)(link)
С каких пор Java стала domain-specific?

В общем, там в списке полностью отсутствует внятная иерархия "от общего к частному", в одной строке упоминаются и частные реализации чего либо и обще-теоретические вопросы.

Я бы в теорминимум поставил только то, что заведомо нужно знать каждому программисту. В том смысле, что без этого он будет даже не ремесленником, а вообще заниматься карго-культом, имитируя непонятные ему действия. Вот к примеру, понимать работу железа и физические процессы - очень полезно, но если не заниматься научными вычислениями - тонкости знать не обязательно.

А дальше нужно сделать несколько отдельных списков для разных специализаций, причем хорошему программисту желательно знать не одну, а две смежные специализации.

Насчет же зарабатывания денег vs улучшение мира - это вечная тема для срачей. В общем, наилучшие результаты получаются у тех, кто эти два пункта совмещает, т.к. требование "это нужно продать" позволяет не витать в облаках, а стремление не делать говнокод спасает от деградации.

[identity profile] sharpc.livejournal.com 2011-03-26 07:15 pm (UTC)(link)
Чем знание Java помогает программисту под QNX? Гейдевелоперу? Вебдеву? Общее понимание методов и принципов разработки прикладного ПО, на мой взгляд, знакомство с дотнетом и его экосистемой вполне обеспечивает. C# полезнее Java в образовании, имхо, поскольку новее.

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

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

Ну так ради дискуссии этот список и был выложен :)

[identity profile] metaclass.livejournal.com 2011-03-26 07:29 pm (UTC)(link)
Гейдевелопер это что-то вроде стелс-пихоты?:)

QNX, игры, веб - это узкая специализация, это даже более предметная область, чем определенный язык программирования.

Квантовую механику и отдельные транзисторы сразу в лес - у меня специальность электроника, и то я с этим сталкивался последний раз 15 лет назад. Если придется микросхемы с нуля разрабатывать - то да, придется в памяти воскрешать это все, а для прикладного программирования - в лес. Вот логические элементы - оно нужно, потому что булева алгебра до сих пор живее всех живых, и лучше ее изучать на том, с чего она началась :)

А вот на чем учить разработке прикладного ПО я даже с ходу не скажу - наверно лучше всего сначала дать чистый C, а затем С++, жабу и дотнет одновременно - чтобы ни к чему из этого не привыкали, и чтобы можно было на сравнении языков тонкости всякие показывать.

[identity profile] sharpc.livejournal.com 2011-03-26 07:38 pm (UTC)(link)
Это утомление после некоторых особо остроумных комментаторов :)
Основное предположение "теормина" в том, что существуют штуки, которые хоть как-то пересекаются со всеми областями, в то время как остальные штуки в разных областях с другими областями пересекаются очень слабо. Скажем, никак не пересекаться хотя бы как пользователь с базами данных невозможно, а вот с какими-нибудь хитрыми собственническими технологиями МОП-транзисторов можно.
C++, на мой взгляд, полностью перекрывает Си, поэтому Си не нужен. Между Java и C# я не вижу столь значительной разницы, что Java-программистам непременно следует изучить C# и наоборот, чтобы не потерять важный и широко используемый подход.

[identity profile] metaclass.livejournal.com 2011-03-26 07:57 pm (UTC)(link)
Между С# и Java есть кардинальная разница - это подходы к инфраструктуре, типа всяких там серверов приложений, систем сборки и деплоймента и прочего. В C# это все как-то намного проще, без излишеств, в Java-проекте можно даже до программирования не добраться, угорев на полдороги во всех этих xml-конфигах, war-jar-ear-архивах и прочем.

Си желателен, поскольку является средством объединения всех этих разнородных языков и платформ, в итоге там весь низкоуровневый API на нем описан.

[identity profile] sharpc.livejournal.com 2011-03-26 08:04 pm (UTC)(link)
Это аргумент в пользу того, чтобы не изучать Java для общего образования, а только если припрет :)
Изучая C++, мимо низкоуровневого API сложно пройти, хотя да, ABI я в списке указать забыл.

[identity profile] flammar.livejournal.com 2011-03-27 08:47 am (UTC)(link)
Как раз наоборот - кто хочет руководить ненужной работой.

[identity profile] pete-by.livejournal.com 2011-03-27 10:53 am (UTC)(link)
А RTSJ вам о чем-нибудь говорит? А про JamaicaVM знаете, что она имеет непосредственное отношение к QNX?

А про веб-сервера на Java, GWT тоже не слышали? Или у вас вебдев это страничка на пхп?

Если живете в каком-то своем мире C/C++ или чего-то другого, так хоть людей не смешите подобными заявлениями.

[identity profile] sharpc.livejournal.com 2011-03-27 03:39 pm (UTC)(link)
Слышал, это костыли.
Слышал, это "о" малое.
Смейтесь на здоровье.

[identity profile] blackyblack.livejournal.com 2011-03-28 07:55 am (UTC)(link)
Вот они, дополнительные 10 лет опыта говорят!

Задротство

[identity profile] sekach.livejournal.com 2011-03-28 10:30 am (UTC)(link)
Имхо хороший английский, навыки менеджмента, основы финансов и инвестиций, а особенно хорошая доля здравого смысла дадут на порядок больше отдачи, чем все вышеперечисленное.

Вы не поверите

[identity profile] sekach.livejournal.com 2011-03-28 10:36 am (UTC)(link)
А загадал, глянул и угадал в точности :) На работе как раз ребята в этом возрасте (+-1 год) больше всего заморочены на знаниях технологий.

[identity profile] juan-gandhi.livejournal.com 2015-03-04 09:48 pm (UTC)(link)
Ну вот я уже больше сорока лет программирую, полет нормальный, продолжаю наслаждаться.

[identity profile] andrei-dikun.livejournal.com 2015-07-16 02:50 pm (UTC)(link)
Так а что не так с "крестами"? Вроде, C++ развивается в темпе: С++11, С++14, С++17. Плюс производительность у "крестовых" приложений.

[identity profile] flammar.livejournal.com 2015-07-17 12:24 pm (UTC)(link)
да, я тут постарел и понял, что не нужной работой лучше руководить, чем заниматься...

[identity profile] flammar.livejournal.com 2015-07-17 01:00 pm (UTC)(link)
"С нашим новым ультра-интеллектуальным макроассемблером вы можете вставлять код на ЛИСПе непосредственно в программы на ассемблере"

Page 5 of 5