avva: (moose)
[personal profile] avva
На HN обсуждают в очередной раз матрицу компетентности программиста.

Мое мнение - использовать ее в качестве пенисомерки, конечно, глупо, но внимательно прочитать - полезно. Я уверен, что каждый найдет несколько строк в этой классификации, с которыми не согласен, или важные темы, которые упущены. Но суть не в этом, а в методичном разложении всего этого материала по полочкам-ступеням. Если просто так задуматься, не имея перед глазами такую таблицу: "Что я знаю хорошо, а что плохо? Что мне стоит улучшить? Что я упускаю из виду?", то что-то, конечно, вспомнишь, но лишь малую часть. А тут подробный анализ - пусть несовершенный, как неизбежно для любого такого анализа - уже провели, и можно воспользоваться им для такого самоанализа и самооценки.

А еще Колин Персиваль (талантливый программист и секьюрити-специалист, автор Tarsnap'а) предложил свою версию вопросов по программе Computer Science для программистов: по его мнению, компетентные программисты легко ответят на большинство этих вопросов в течение 15-30 минут, не пользуясь сетью и другими справочными материалами. Точнее, он выложил первую часть (алгоритмы и структуры данных) из планируемых четырех. Люди жалуются, что это слишком сложно и программистам это в обычной жизни почти никогда не нужно.

Date: 2012-10-08 03:51 pm (UTC)
From: [identity profile] schegloff.livejournal.com
Программистам в обычной жизни некогда даже читать такие тесты, не то что их заполнять...

Date: 2012-10-08 03:51 pm (UTC)
From: [identity profile] vnarod.livejournal.com
Хорошо знать как можно больше, но в реальной практике 90% того, что там написано никогда не требуется.

Date: 2012-10-08 03:57 pm (UTC)
From: [identity profile] b-a-t.livejournal.com
Это который cpersiva? Вот так общаешься с человеком, а он оказывается такая знаменитость :)

Date: 2012-10-08 03:59 pm (UTC)
From: [identity profile] avva.livejournal.com
Может, не знаменитость, но широко известный человек в узких кругах, да.

Date: 2012-10-08 04:00 pm (UTC)
From: [identity profile] enternet.livejournal.com
Я использовал матрицу компетентности как готовый опросный лист при собеседованиях, занимало около 45 минут. Рекомендую. Разумеется, это была только часть собеседования.

Date: 2012-10-08 04:02 pm (UTC)
From: [identity profile] vasja-iz-aa.livejournal.com
Глянул на матрицу. Это навыки стенографистки, но не писателя. Впрочем, словом "программирование" называют широкое множество достаточно разных профессий, вполне возможно что для некоторых из них такая матрица корректна.

Date: 2012-10-08 04:27 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
разрешите спросить, какие навыки вы считаете важными для программиста? понятно, что все не перечислить, но в двух словах, несколько примеров.

Date: 2012-10-08 04:33 pm (UTC)
From: [identity profile] msh.livejournal.com
Мне кажется, в этой матрице есть системная проблема - в разных строчках кардинально разная сложность. Например, в одной колонке умение пользоваться git и понимание static и dynamic linking - и то и другое- минимальное требование к программисту в многих отраслях, и в той же колонке "author of framework" и "domain expert"

Date: 2012-10-08 04:36 pm (UTC)
From: [identity profile] vasja-iz-aa.livejournal.com
ну я же написал, что словом этим называют очень много разных профессий, у каждой свои требования

в России в конце прошлого века даже аникейщиков программистами называли, не знаю как сейчас

Date: 2012-10-08 04:45 pm (UTC)
From: [identity profile] dr-hyder.livejournal.com
Нормальная матрица, но с практической точки зрения при найме использовать затруднительно например, особенно если это будут делать всякие рекрутинговые агенты. Так и слышу вопросы по телефону - а вы знаете что такое скип-листы и кучи фибоначчи? сколько лет работали с ними?

Date: 2012-10-08 04:47 pm (UTC)
From: [identity profile] pphantom.livejournal.com
На мой взгляд, это следствие более общего дефекта. Она ориентирована на некоторого "усредненного программиста", поэтому в нее попали наиболее массовые на данный момент "ценности". В результате любое немэйнстримное направление в этот шаблон просто не вписывается.

Так что это матрица не компетентости программиста, а соответствия программиста трендам, модным в этом сезоне.

Date: 2012-10-08 04:49 pm (UTC)
From: [identity profile] dr-hyder.livejournal.com
А какие сферы/направления вы считаете недооценёнными в этой матрице? Не с целью спора, а чтоб просто уточнить.

Date: 2012-10-08 04:53 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
если эта матрица описывает навыки стенографистки, то опишите навыки писателя (какого-нибудь, на выбор).

Date: 2012-10-08 04:56 pm (UTC)
From: [identity profile] vronin.livejournal.com
Мне кажется в такой таблице есть два недостатка

а) Она расчитана на сферического программиста в вакууме. Программирование уже достаточно давно подразделилось на множество более узких специализаци. И даже первая колонка может быть не актуальна для _всех_ специализаций.

б) Эта таблица рассматривает ситуацию в статике (что ты знаешь прямо сейчас). Как по мне, два ключевых критерия - это ум и passion (не могу найти хорошего перевода). Собственно говоря эти два критерия позволяют передвинуться в достаточно короткие сроки по любей из строк таблицы из 2^n до log n.

Date: 2012-10-08 05:08 pm (UTC)
From: [identity profile] vmt.livejournal.com
Вопросы может и по делу, но вот из головы на них отвечать можно только сразу после перечитывания нужной книжки. Блин, кто может _запомнить_ хип-сорт и напеть про него "в условиях, приближенных к экзамену", если последний раз ты что-то сортировал полторы пятилетки назад? Я в рамках самообразования перечитывал классические труды и полгода назад знал ответ на этот вопрос, и то сегодня пребываю в счастливом неведении. И точно знаю, в какой книжке взять ответ.

Date: 2012-10-08 05:08 pm (UTC)
From: [identity profile] pphantom.livejournal.com
Ну, например, вычислительное программирование (и вообще матмоделирование) и управление оборудованием. Почти символически представлены AI и программирование высокопроизводительных систем.

Date: 2012-10-08 05:59 pm (UTC)
From: [identity profile] ilya-dogolazky.livejournal.com
"Maintains a blog in which personal insights and thoughts on programming are shared" --- oops, fail; вот он, прокол! ;)

Date: 2012-10-08 06:06 pm (UTC)
From: [identity profile] andrey yunoshev (from livejournal.com)
Умение создать произведение которое будет востребованно множеством читателей?

Причем, нужно понимать что в целом писатель даже не обязан уметь писать при этом.

Date: 2012-10-08 06:30 pm (UTC)
From: [identity profile] vasja-iz-aa.livejournal.com
извините, но я не умею писать матрицы программистких квалификаций

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

Date: 2012-10-08 06:43 pm (UTC)
From: [identity profile] vasja-iz-aa.livejournal.com
угу. на половину тамошних вопросов _опытный_ специалист ответит "я знаю, как называется книга, в которой про это написано"

Date: 2012-10-08 06:55 pm (UTC)
vlad_suh: Glider in the sky (Default)
From: [personal profile] vlad_suh
Значит, матрицу вы не читали - всё там было.

Date: 2012-10-08 06:57 pm (UTC)
From: [identity profile] dumalkin.livejournal.com
99% ;)
А оставшийся процент компенсируется лицензированием продукта который делает то что нужно. Причем я не совсем понимаю почему это обзывают аппликативным программированием.
Точнее - я запросто могу себе представить фреймворк где все эти вещи не нужны, и приложение - где нужны. Так что какая связь - непонятно. Просто есть задачи для решения которых нужно придумывать собственные алгоритмы, а есть где достаточно использовать готовые. И этих задач - большинство.

Date: 2012-10-08 07:06 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
heap сорт помню, и могу реализовать без книжек, может за пару часов. Внутри очень простые и логичные идеи, которые дают сразу много полезных структур данных. Очереди с приоритетами.

идея 1: Есть дерево начальников. когда самый главный уходит на пенсию - на его место становится самый опытный подчинённый. В образовавшуюся дырку - подчинный подчиненного и тд. Это даёт возможность вытаскивать максимум из приоритетной очереди.

идея 2: если какой-то подчиненный умнее своего начальника, то начальника понижают, а подчиненный становится на его место. Это позволяет добавлять в приоритеную очередь.

идея 3: для сортировки - просто вытаскиваем из приориетной очереди все элементы пока не опустеет.

идея 4: если надо добавить сразу много элементов, а не один, то это на самое деле можно сделать за O(N) а не O(N lnN). Когда надо сделать слияние двух организаций, то выбираем начальником новой организации самого компететного из двух. Дальше см. идея 1, как заполнить вакантное место. Разделяй входное множество людей на две организации - и властвуй.

идея 5: данное дерево начальников можно хранить в массиве слой за слоем. Ребёнок элемента N - это N*2+1 и N*2+2.


Зато я совершенно не помню как сделано RB-tree. Много раз читал - и не помню, без книжки не смогу написать.

Date: 2012-10-08 07:08 pm (UTC)
From: [identity profile] cema.livejournal.com
внимательно прочитать - полезно. Я уверен, что каждый найдет несколько строк в этой классификации, с которыми не согласен, или важные темы, которые упущены. Но суть не в этом, а в методичном разложении всего этого материала по полочкам-ступеням.

Exactly, on all points.

свою версию вопросов по программе Computer Science

Right. But called it Software Development which caused some noticeable confusion.
Edited Date: 2012-10-08 07:09 pm (UTC)

Date: 2012-10-08 07:10 pm (UTC)
From: [identity profile] avva.livejournal.com
хип-сорт вообще не нужно помнить, это тривиальное применение хипа. Нужно помнить, что такое хип и что он все умеет делать за O(log(N)) (как его в точности имплементировать, помнить необязательно). А вот это бывает полезно, хоть и не очень часто.

Date: 2012-10-08 07:33 pm (UTC)
From: [identity profile] vasja-iz-aa.livejournal.com
отчасти Вы правы, я матрицу эту внимательно не читал. не интересно. но всего там нет

Date: 2012-10-08 07:34 pm (UTC)

Date: 2012-10-08 07:47 pm (UTC)
From: [identity profile] max630.livejournal.com
> check for exceptions around code that can fail.

facepalm.jpeg

Date: 2012-10-08 08:43 pm (UTC)
From: [identity profile] clement.livejournal.com
Мне интересно насколько на составление подобных схем оказывает влияние личный опыт автора - чему его учили, с чем он сталкивался в работе, какие области той же информатики ему интересны... Вообще та же ACM публикует "идеализированные" учебные программы, что, естественно, не означает, что университеты на оные программы ориентируются.

Date: 2012-10-08 09:01 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
спасибо. конечно, умение работать с другими людьми важно, но я плохо понимаю, как это умение можно градуировать, по какой шкале.

Date: 2012-10-08 09:09 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
полезно, ага, в очередной раз показать себе, что не знаешь ни хрена из того, что приличные люди знают.

Date: 2012-10-08 09:21 pm (UTC)

Date: 2012-10-08 09:37 pm (UTC)
From: [identity profile] pingva.livejournal.com
оч. неплохо.

хорошо работать в команде, где у _каждого_ по всем параметрам "логарифмический" уровень или как минимум эти ценности разделяются и к ним стремятся.

плохо работать в команде "ветеранов индустрии", которые десятилетиями продолжают писать один и тот же говнокод.

трагедия в том, что вторые так и непонимают, что именно с ними не так. Эдакий программисткий dunning-kruger effect.

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

мораль в том, что нужно "учиццо, учиццо, учиццо" (погружается в код, убирает перископ)

Date: 2012-10-08 09:54 pm (UTC)
From: [identity profile] http://users.livejournal.com/_glav_/
>суть не в этом, а в методичном разложении всего этого материала по полочкам-ступеням

для того, чтобы каждый увидел эту суть, ему нужно былть как минимум на "третьем уровне" алгоритмов:
is able to understand the relevance of the levels of this matrix.
:)

Date: 2012-10-08 10:03 pm (UTC)
From: [identity profile] vasja-iz-aa.livejournal.com
Я тоже не знаю. Можно попробовать подсчитать маштабы и число успешно завершенных проектов, созданием которых предполагалемый опытный специалист руководил. Мне кажется, что предложеная матрица очень неправильно составлена с огромным креном в сторону перечисления технологий, при почти полном игнорировании результата. Есть такая бородатая шутка: "Я знаю самбо, карате, дзюдо и много других страшных слов....". Так вот эта матрица почти такая же, только написано всерьез.
Можно сказать "я умею сделать вебсайт продажи собачих кормов" и "я сделал вебсайт продажи собачих кормов, который три года был лидером индустрии". Разница -- как день и ночь. Первая формулировка не говорит об опыте программиста ничего. Совсем. Ноль.

Date: 2012-10-09 02:13 am (UTC)
From: [identity profile] vnarod.livejournal.com
Не совсем. В реальной компании есть необходимость решить задачу. Быстро и качественно. Нет необходимости решить её самым современным методом, в большинстве случаев абсолютно неважно, будет программа выполняться 10 секунд или 12. Если человек с 20-летним опытом быстро напишет код так как он его писал 10 лет назад, и это будет работать, то нет никакой нужды это усовершенствовать.

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

Date: 2012-10-09 10:54 am (UTC)
From: [identity profile] ak-47.livejournal.com
Ага, меня тоже передёрнуло.

Date: 2012-10-09 02:44 pm (UTC)
From: [identity profile] loqva.livejournal.com
+1500!
И где читать все то, чего не знаешь?

Date: 2012-10-10 05:01 am (UTC)
From: [identity profile] kuzia-aka-zmey.livejournal.com
угу и оценка кадровиком компетентности.
Объяснял мне эту фигню
1 минуту, 2-3 минуты, 4-5 минут, 6+ минут.

Date: 2012-10-10 05:21 am (UTC)
From: [identity profile] kuzia-aka-zmey.livejournal.com
А в конце какая то формула или что то еще должно быть?
и какая степень перед первой если в некоторых горизонталях вообще можно выбрать пункт "о чем это они, что за странные слова в названии?"

Date: 2012-10-10 07:18 am (UTC)
From: [identity profile] migmit.livejournal.com
Неплохая матрица. Посмотрел - у меня почти везде третий уровень с дырами, компенсируемыми небольшими выползами на территорию четвёртого. В нескольких строчках скатываюсь аж на первый.

Date: 2012-10-10 10:15 am (UTC)
From: [identity profile] e2pii1.livejournal.com
> Точнее, он выложил первую часть (алгоритмы и структуры данных) из планируемых четырех.

Сейчас уже 3 выложил

Date: 2012-10-15 06:44 pm (UTC)
From: [identity profile] rowaasr13.livejournal.com
А как понять, если в systems programming на level 3 всё, кроме microcode для меня родное, а зато на level 2 я нихрена не знаю о kernel mode (ибо не требовалось) и при работе с multithreading предпочту недельку что-то хорошенько проштудировать прежде чем приниматься? Это к тому, что как-то уровни не связаны, не являются развитием друг-друга.

Level 0 в testing должен быть Level ∞.

File has license header для level 3? Pfffff...

Scripting, frameworks и blogs заставляет задуматься о ценности все таблицы.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 28th, 2025 12:17 pm
Powered by Dreamwidth Studios