?

Log in

No account? Create an account
какие компьютерные курсы нужны (программистское) - Поклонник деепричастий [entries|archive|friends|userinfo]
Anatoly Vorobey

[ website | Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| English-language weblog ]

какие компьютерные курсы нужны (программистское) [сент. 11, 2015|03:23 pm]
Anatoly Vorobey
[Tags|]

Джеймс Хэг, отличный кстати блоггер на программистские темы, написал любопытную запись

Computer Science Courses that Don't Exist, But Should

Он предлагает (шутливо, но за шуткой скрывается серьезная мысль) ввести следующие полезные предметы на факультете компьютерных наук:

"CSCI 2100: Unlearning Object-Oriented Programming"
"CSCI 3300: Classical Software Studies"
"CSCI 4020: Writing Fast Code in Slow Languages"
"CSCI 2170: User Experience of Command Line Tools"
"PSYC 4410: Obsessions of the Programmer Mind"

Подробное описание см. по ссылке. Мне больше всех первый предмет понравился, конечно. Но и третий тоже хороший.

Хочу добавить свои предложения к этому списку (и вы тоже добавляйте, если есть идеи):

1. "Как быстро начать работать с незнакомым кодом". Изучение большого массива незнакомого кода, быстрое построение ментальной модели, проверка своего понимания на прочность. Вместо экзамена - практическое задание: выбрать и починить имеющийся баг - включая весь процесс до интеграции в главную ветку - в одном из трех проектов на выбор: OpenOffice, Mozilla Firefox, Linux kernel.

2. "Как разучиться оптимизировать". Как быстрее добиться цели с помощью более простого кода. Развитие интуитивной оценки "насколько это быстро". Культура benchmarks и microbenchmarks. Что такое overengineering, на конкретных примерах, и как его избегать.

3. "Как писать медленный код на быстрых языках". Как незаметно для себя написать квадратичный код. Чем может заниматься такое долгое время программа, написанная на C++ или Java. Как добиться, по сути дела, сериализации на первый взгляд многопоточного кода.

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

Comments:
Страница 1 из 2
<<[1] [2] >>
From: (Anonymous)
2015-09-11 12:38 pm

Самый главный курс

прогнозирование дальнейших требований заказчика (или начальства) и построение расширяемого кода с учётом этого прогноза. Для особо продвинутых - манипуляция заказчиком (начальством) с целью избежания внезапных требований, заставляющих полностью менять всю конструкцию.
(Ответить) (Thread)
[User Picture]From: pritkiy_kaban
2015-09-11 12:45 pm

Re: Самый главный курс

+1

Курс, может, быть, не самый академически важный, но на практике остро необходимый :)
(Ответить) (Parent) (Thread)
[User Picture]From: gruimed
2015-09-11 12:51 pm
Я бы предложил два:
1. "Easy way to stop over-engineering" с битьем палками по рукам за оное.
2. "Lose unnecessary features now - ask me how"
(Ответить) (Thread)
From: (Anonymous)
2015-09-11 03:46 pm

Да!

Отличные предложения! Это - самое главное! Из опыта.
(Ответить) (Parent) (Thread)
[User Picture]From: pritkiy_kaban
2015-09-11 01:22 pm
Добавлю свои пять копеек :)

- "Как начать документировать и не бросить это гиблое дело на следующий день."

- "Замок на песке, или почему нельзя взять и построить что-либо из примеров".
(Ответить) (Thread)
From: ext_1745607
2015-09-11 05:17 pm
- Как писать читабельный код :)

И для менеджеров:
- Почему вам в команде нужен technical writer
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: janatem
2015-09-11 01:53 pm
> выбрать и починить имеющийся баг - включая весь процесс до интеграции в главную ветку

Нет, «процесс интеграции в главную ветку» должен идти отдельным курсом, причем, по-видимому, вне дисциплины computer science.
(Ответить) (Thread)
[User Picture]From: janatem
2015-09-11 01:59 pm
Насчет хэш-таблицы не очень понял. Мозг, отравленный функциональной парадигмой, стремится всеми силами избегать явно мутабельных сущностей. (Хотя хэш-таблица годится, если требуется read-only хранилище.)
(Ответить) (Thread)
[User Picture]From: nevelichko
2015-09-11 02:11 pm

if you were to translate this to English

I know a lot of people who'd be interested in your suggested additional courses. Perhaps even in CS departments :)
(Ответить) (Thread)
[User Picture]From: alkach42
2015-09-11 02:51 pm
Почему нельзя перестать понтоваться. Краткий курс.
(Ответить) (Thread)
From: eeik
2015-09-11 04:14 pm
обязательная практика "месяц в operations"
(Ответить) (Thread)
[User Picture]From: alexeybobkov
2015-09-11 04:46 pm
"Marty, you're not thinking fourth dimensionally": Как избегать ненужного рефакторинга, и как вносить маленькие изменения в код так, чтобы они не выглядели большими при сравнении версий.

Edited at 2015-09-11 16:46 (UTC)
(Ответить) (Thread)
[User Picture]From: erendir
2015-09-11 05:15 pm
"Как переходить на современные технологии вовремя" или что-то в таком духе, где темой одной из лекций было бы "Как в 2015 году отказаться от SourceSafe в пользу git".
(Ответить) (Thread)
From: ext_1745607
2015-09-11 05:34 pm
Как в 2015 году понять, что за частоколом модных технологий тоже существует жизнь. (Хотя по-поводу VSS я вас персонально поддерживаю, но это не повод для принуждения к смене технологии, если люди старой технологией довольны)
(Ответить) (Parent) (Thread) (Развернуть)
From: ext_1745607
2015-09-11 05:22 pm
CSCI 2170 очень хорош. Я бы даже переформулировал:
Как попасть в специальный ад, выделенный для тех, кто вынуждает пользователей при интерактивной работе использовать командную строку.
(Ответить) (Thread)
From: huzhepidarasa
2015-09-11 05:24 pm
А что пользователи должны использовать при интерактивной работе?
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: shadow_ru
2015-09-11 07:24 pm
Наверное, было бы неплохо ещё Unlearning UML и Unlearning Debugging.
(Ответить) (Thread)
[User Picture]From: brandt1
2015-09-13 04:07 pm
А почему? Чем плох UML? Чем его следует, по вашему мнению, заменить? Насчет Debugging не понял - это какая-то система или вы имеете в виду обычное дебагирование?
(Ответить) (Parent) (Thread) (Развернуть)
[User Picture]From: link0ff
2015-09-11 07:55 pm
How to spend more time thinking than coding.
(Ответить) (Thread)
From: ext_1745607
2015-09-11 08:26 pm
How to fix bugs by reducing the LoC metric ;)
(Ответить) (Parent) (Thread)
[User Picture]From: irene221b
2015-09-11 10:01 pm
Почему нет корелляции между размером изменения в строках исходника, и масштабом разрушений изменений в поведении программы. Или как убить все, закомиттив одну измененную строку.
(Ответить) (Thread)
[User Picture]From: deadkittten
2015-09-12 02:13 am
Чтение китайского кода, основы ориентации в азиатском интерфейсе.
(Ответить) (Thread)
Страница 1 из 2
<<[1] [2] >>