Re: Освоение новвоведений
От: matumba  
Дата: 17.01.12 13:05
Оценка: -5
Здравствуйте, Аноним, Вы писали:

А>В общем поделитесь каким образом вы обновляете свои знания... У меня например много времени уходит на работу, в результате на освоение нового очень мало времени


Нельзя же так себя уродовать! Тупо пара-тройка новостных сайтов и ты всегда в курсе. Вообще, если мелкософту нужно протолкнуть какое-нть дерьмо (типа сервелата или WCF), уверяю — завалят все сайты своими "нововведениями" по самые гланды. Твоя задача — быстро разобраться с сутью технологии и отфильтровывать её ментально, если она не нужна. Плюс гугл, если видишь в чьём-то топике незнакомые буквы. Обычно достаточно
www.gotdotnet.ru, www.codeproject.com, rsdn, sql.ru, fishki.net
Re: Освоение новвоведений
От: SergeyT. США http://sergeyteplyakov.blogspot.com/
Дата: 23.01.12 19:22
Оценка: 2 (1) +1
Здравствуйте, Аноним, Вы писали:

А>.net достаточно быстро меняется, то что вчера было паттерном для использования, в очередной версии может стать "атавизмом".

А>Как лучше всего получить картину сегодняшнюю, сколько на это уходит у вас времени ?
А>Как вы это делаете , читаете очередную новую версию Рихтера или есть точка входа msdn , на которой публикуется и обсуждается перечень изменений с рекомендациями, или обрывками собираете из интернета что попадется ?
А>В общем поделитесь каким образом вы обновляете свои знания, в частности по технологии .net. У меня например много времени уходит на работу, в результате на освоение нового очень мало времени, на форуме я вижу достаточно специалистов которые успевают и работать и осваивать новое, поэтому решил спросить тут Если это не секрет

Частично на этот вопрос я уже отвечал здесь
Автор: SergeyT.
Дата: 20.12.09
, но можно и кое-чего еще добавить.

На самом деле, если посмотреть на все нововведения в .Net-е, то нового там не так и много, все зависит от того, как на это смотреть Но давайте обо всем по порядку.

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

Вот давайте в качестве примера рассмотрим WCF. Если стараться изучить эту технологию саму по себе и запомнить десять тысяч разнородных фактов об этой технологии, то это приведет к тому, что вы потратите массу усилий и станите отличным специалистом по WCF (хотя, опять таки, чтобы стать "аццким" специалистом разобраться с более низкоуровневыми вещами, типа протоколов HTTP и TCP тоже придется). На самом же деле, WCF — это не сферический конь, а технология, построенная поверх известных и хорошо проверенных концепций: (1) различных коммуникационных протоколов, (2) паттернов построения распределенных приложений (см., например, Architectural Patterns for Distributed Computing, (3) принципов SOA (по этой теме источников, опять таки, чуть более чем дофига, начать можно с Chapter 1: Service Oriented Architecture (SOA).

Теперь, а что если у вас уже есть опыт работы с другими фреймворками для построения распределенных приложений, типа веб-сервисов или ремоутинга? Тогда, если вы на "ты" с .NET Remoting-ом и уже хорошо знаете основные принципы сетевых протоколов и понимаете паттерны, на основе которых строится любой коммуникационный фреймвор, а также уже познакомились с SOA при работе с веб-вервисами, то "изучить" WCF вам не составит особого труда. Придется лишь объединить старые знания немного другим образом и найти пору нужных классов и интерфейсов.

Аналогична ситуация и с изучением, например PLINQ-а. На самом деле этот зверь построен поверх (1) Task-ов и (2) LINQ-а. Task-и, в свою очередь построены на основе ряда известных concurrency паттернов и основываются, в свою очередь на других примитивных механизмах, типа пула потоков и примитивов синхронизации. Большинство же примитивов синхронизации в .NET-е являются оболочками вокруг примитивов синхронизации винды и/или являются имплементацией стандартных паттернов по работе с многопоточностью, которые можно найти, например в книге Patterns of Parallel Programming.

Или возьмем, например, "новую" библиотеку Code Contracts. На самом деле этим идеям уже без малого 30 лет (впервые принципы проектирования по контракту были описаны Мейером в 1985, кажется), деревьям выражений (Expression Trees) — еще больше, принципы реактивного программирования на которых построены Reactive Extensions — тоже баян.

Дело все в том, что "новых" технологий не так и много, многие из них являются всего лишь хорошо забытым старым.

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

Личный опыт изучения новых технологий

Если до этого была философия, то ниже представлен перечень шагов, как я изучаю что-то новое:
1. Заинтересованность. Первое знакомство с инструментом при общении с коллегами, на конференции или семинаре, после прочтения вводной статьи и т.д.
2. Более детальное теоретическое знакомство. Более конкретные статьи по технологиям, книги.
3. Практическое применение. (без него нормально разобраться в чем-то новом не выйдет). Решение каких-то мелких задач, написание прототипов, простых тестовых приложений, решение задач с помощью нового языка на project euler-е и т.п. (2-й и 3-й этапы обычно тесно переплетены, если только книга не является сугубо теоретической)
4. Углубленное изучение. Копаем глубже, применяем в продакшне, пишем статьи, обучаем других. Этот пункт (точнее набор пунктов) может длиться практически до бесконечности, поскольку познать "глубину всех глубин" практически невозможно.

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

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

------------------------------
(*) В первом случае цитата весьма очевидна, во-втором случае Ayende вообще пишет о важности базовых концепций, а в третьем случае, чтобы долго не искать, то я имел ввиду следующую фразу Stephen-а Toub-а:

I typically find that developers write better higher-level code if they have the right mental model for what’s happening under the covers, allowing them to better reason about bugs, about performance, about reliability, and the like.

Освоение новвоведений
От: Аноним  
Дата: 15.01.12 12:12
Оценка:
.net достаточно быстро меняется, то что вчера было паттерном для использования, в очередной версии может стать "атавизмом".
Как лучше всего получить картину сегодняшнюю, сколько на это уходит у вас времени ?
Как вы это делаете , читаете очередную новую версию Рихтера или есть точка входа msdn , на которой публикуется и обсуждается перечень изменений с рекомендациями, или обрывками собираете из интернета что попадется ?
В общем поделитесь каким образом вы обновляете свои знания, в частности по технологии .net. У меня например много времени уходит на работу, в результате на освоение нового очень мало времени, на форуме я вижу достаточно специалистов которые успевают и работать и осваивать новое, поэтому решил спросить тут Если это не секрет
Re: Освоение новвоведений
От: QrystaL Украина  
Дата: 15.01.12 12:15
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Как вы это делаете , читаете очередную новую версию Рихтера или есть точка входа msdn , на которой публикуется и обсуждается перечень изменений с рекомендациями, или обрывками собираете из интернета что попадется ?

Вот, например: MSDN.
Re: Освоение новвоведений
От: Oyster Украина https://github.com/devoyster
Дата: 17.01.12 18:08
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В общем поделитесь каким образом вы обновляете свои знания, в частности по технологии .net. У меня например много времени уходит на работу, в результате на освоение нового очень мало времени, на форуме я вижу достаточно специалистов которые успевают и работать и осваивать новое, поэтому решил спросить тут Если это не секрет


Лучше всего совмещать приятное с полезным, то есть использовать новые технологии в работе. Это получается далеко не всегда, тогда можно писать код "для себя" — участие в опен-сорс проектах (или создание своих), автоматизация каких-то своих задач, хотя бы решение примеров. В любом случае надо писать код, иначе материал не закрепится.

Если на работе не получается использовать новые технологии, то, конечно, приходится использовать нерабочее время. Если это проблема, тогда
http://rsdn.org/File/27948/bf.gif
Re: Освоение новвоведений
От: Arsen.Shnurkov  
Дата: 22.01.12 00:11
Оценка:
> Как лучше всего получить картину сегодняшнюю, сколько на это уходит у вас времени ?

Лучше всего стать руководителем отдела и получать картину в виде аналитических сводок.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.