Вчера
Gregori создал
пост вызвавший жаркую дискуссию в узких кругах.
Спор выродился в вопрос о том должен ли программист, как автомобилист в СССР, знать всю свою «машину» вдоль и поперек, или достаточно уметь на ней ездить.
Если мы сейчас отбросим глупые споры о том, что лучше «знать или не знать» (думаю и дураку понятно, что всегда лучше что-то знать, чем наоборот), то встает вопрос времени. Реальные люди действуют в мире реальном, где время ограниченно, в том числе время на обучение. И задумываются ли те, кто орет, что программист должен знать всё и вся ab obo сколько времени это чаще всего бесполезное в реальной практике знание требует для изучения, и что это время можно потратить на изучение какой-то дополнительной технологии, которая реально будет приносить деньги.
Реальный, а не гипотетический человек обычно стоит перед выбором потратить время на изучение интерпретатора C# (в глубину) или ASP.NET? Изучать методы многопоточности C# (в глубину) или потратить это же время на изучение того как ОС распределяет потоки, или как процессор распределяет задачи по ядрам? Изучать архитектуру процессора или архитектуру программы (паттерны)?
На что нормальный человек потратит время, знание какой технологии принесет ему больше пользы и больше дохода?
Ответ ИМХО очевиден, людей программирующих на «низком» уровне (приближенных к железу) всегда нужно на порядок меньше, чем людей программирующих на «высоком» уровне, а желающих знать «низкий» уровень (просто из любопытства или из убеждений) значительно больше. Поэтому узких специалистов на высоком уровне очень часто оказывается меньше чем узких специалистов на низком уровне. По этой же причине спецов в языках высокого уровня требуется на порядок больше, чем спецов программирующих на низком уровне. Всё тоже самое касается и большинства других современных технологий особенно ИТ-технологий.
И по банальному экономическому закону спроса и предложения начинать обучение лучше с высоких уровней и углублять знания в первую очередь лучше в высоких областях и только при необходимости (лучше всего практической необходимости) двигаться на более низкие уровни.
ИМХО люди, утверждающие обратное являются пожирателями времени, будьте осторожны с ними и с их идеями.
Бывало, чтобы разработчикам описать суть проблемы, нужно было брать отладчик и ловить/изучать им место падения программы. Иначе бы не пофиксили.