.NET

индекс
121,03

.Net Developer — первые шаги

Toddler

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


Дабы не рассуждать о проблемах увеличения надоев со сферического коня в вакууме, будем отталкиваться от вполне конкретной цели – стать .Net разработчиком.

Прежде всего следует помнить, что нельзя объять необъятное, и если вы собираетесь стать действительно высококлассным профессионалом, то вам придется сконцентрировать все свои усилия на чем-то одном, так как платформа достаточно обширна, и физически невозможно охватить все входящие в ее состав технологии. Но, тут есть небольшая тонкость – как я могу узнать, какая технология мне интересна, если я не имею ни малейшего представления ни о том, что за технологии входят в состав платформы .Net, ни о том, что они из себя представляют? Для того, чтобы выйти из этой затруднительной ситуации, выделим в процессе обучения начальный этап. Назовем его – Нулевая ступень познания :)

Нулевая ступень познания



На этом этапе мы знакомимся с платформой, получая общие знания о ее возможностях, входящих в состав технологиях и инструментах. К сожалению, или к счастью, но уже на этом этапе придется делать выбор. Выбор основного языка программирования. Мы ведь говорим о пути развития программиста, разработчика или Software Developer’a? А раз так, то основное и непреложное условие, необходимое для достижения поставленной цели – практика программирования на протяжении всего пути профессионального роста. Следовательно, нужно определяться, какой язык программирования будет для нас основным. Если отталкиваться от возможностей платформы .Net, то теоретически, нет особого различия между языками, входящими ее состав, так как в данном случае имеющиеся в распоряжении разработчика возможности определяются  в большинстве случаев не возможностями языка, а возможностями платформы.

Если же ваши раздумья по поводу того, какой же язык программирования использовать, затянулись – можете в своем выборе ориентироваться на один из известных рейтингов языков программирования. Например, рейтинг, регулярно составляемый компанией TIOBE. Этот рейтинг строится на основе данных популярных поисковых систем о количестве разработчиков и компаний, использующих язык, а также о количестве обучающих курсов по этому языку. Из последних данных, а так же из анализа предыдущих рейтингов видно, что традиционные для платформы .Net языки программирования имеют стабильную динамику роста популярности. Так что, можно смело сказать, что в плане карьерных перспектив .Net  — более, чем приемлемый выбор.

tpci_trends

Ну, а если ограничить пространство выбора только данной платформой, то однозначным фаворитом здесь является язык C#.

history_C_

После того, как мы определились с платформой и языком программирования, самое время совершить первый экскурс в мир программирования. Для этого подойдет самый простой учебник по выбранному языку программирования – как бумажный…

csharpbook

…так и электронный…

http://www.intuit.ru/department/pl/tincsharp3/

Долго ли, кротко ли, но освоили вы самые основы премудростей нового для вас языка программирования. Пора развиваться дальше. И здесь есть два пути дальнейшего совершенствования мастерства. Ну вот, разочарованно может подумать кто-то из читателей, опять проблема выбора. Ан-нет! Все еще сложнее – пути эти не альтернатива друг другу, а объективная необходимость. Это означает, что по каждому из них, как ни крути, начинающему разработчику все-равно предстоит пройти. Не важно, в каком порядке. Хоть параллельно (здесь главное не надорваться и не потерять навсегда интерес к программированию). Что же это за пути такие? Знакомьтесь: практика и специализация. Назовем их первой и второй ступенями познания.

Первая ступень познания



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

Традиционный совет, который чаще всего упоминается в данном случае звучит так:

Примите участие в каком-либо Open Source проекте

Некоторые заблуждаются, считая, что такой способ приобретения навыков программирования не доступен для .Net разработчиков. Но, это большое заблуждение – в мире огромное количество коллективных разработок на платформе .Net. В качестве стартовой точки для поиска проекта, который соответствовал бы вашим интересам, мог бы заинтересовать и увлечь, могу посоветовать портал CodePlex.

CodePlex

Что такое CodePlex? Это хостинг для проектов с открытым исходным кодом от компании Microsoft. CodePlex позволяет совместно вести развитие программного обеспечения с открытым исходным кодом. В его состав входят wiki-страницы, система контроля версий, основанная на Team Foundation Server, форум, поддержка RSS. По состоянию на 17 марта 2010 года на сайте существует более 14000 проектов. Согласитесь, более чем богатый выбор для того, чтобы найти проект по душе.

Замечательный способ попрактиковаться в использовании языка программирования – решение алгоритмических задач. В сети предостаточно веб-сайтов, представляющих сборники таких задач. Некоторые из них даже имеют свою рейтинговою систему, учитывающую общее количество решенных задач конкретным пользователем, правильность решений и скорость публикации ответов пользователем. Один из таких ресурсов – Project Euler. Участие в подобных проектах позволяет не только постоянно совершенствоваться в практике использования языка программирования, но и оттачивает навыки алгоритмитизации и оптимизации программного кода.

Следующий совет – для сильных духом оптимистов:

напишите свое лучшее в мире приложение

Будете вы его продавать за кругленькую сумму, или раздавать бесплатно – дело десятое и в контексте данной статьи нас совершенно не интересует. Здесь действует простой и проверенный принцип – хочешь научиться плавать – прыгай туда где глубже. К сожалению, процент выплывших далек от сотни. Это бесспорный минус. Другой нежелательный эффект – выплыв, возможно вы больше никогда не захотите лезть в воду. И тем не менее, это прекрасная возможность погрузиться как в язык программирования, так и в платформу, так как лучший опыт – тот что получен на собственных ошибках, в процессе поисков решений возникающих по ходу разработки проблем.

Вторая ступень познания



Нельзя объять необъятное. С этой прописной истиной трудно не согласиться. Возможности платформы .Net охватывают практически все сферы применения программного обеспечения. Разработка десктопных приложений(WinForms и WPF), разработка веб-приложений (ASP .Net и ASP .Net MVC), разработка модулей интеграции с серверными платформами (MS SQL Server, BizTalk Server и так далее), разработка насыщенных веб-приложений (Silverlight), создание внешних модулей и кастомизация программных продуктов семейства MS Dynamics, веб-сервисы (WCF), создание мобильных приложений (сначала для платформы Windows Mobile, а в недалеком будущем уже – Windows Phone), создание игр (XNA). И список этот можно продолжать. Вполне очевидно, что в совершенстве освоить все эти технологии просто не возможно – у человека только одна жизнь, а в сутках всего 24 часа. А потому, специализация – единственное приемлемое решение. И опять перед нами необходимость выбора – на какой технологии остановиться.

Выбор специализации в разработке программного обеспечения это одновременно и просто и сложно. Главный ориентир – ваши личные интересы и предпочтения.Кто-то на дух не переносить мобильные технологии. Кому-то наоборот, ничто кроме них не интересует. Кто-то давно занимается веб-разработкой и пришел в .Net из мира PHP. Сложнее тем, кому не на что опираться. Тем, кого интересует программирование как таковое, но нет сформировавшихся технологических предпочтений. В этом случае нужно понемногу попробовать все. И выбирать, опираясь на полученный в результате поверхностного знакомства опыт, прислушиваясь скорее всего к своей интуиции.

Третий способ определения будущей специализации – самый прагматичный. Его суть заключается в том, чтобы проанализировать существующие тренды в мире IT. Поймав попутный ветер, и освоив технологии, бурное развитие которых только начинается, можно красиво рвануть вперед с низкого старта. Так, например, сегодня бесспорными доминирующими трендами являются облачные вычисления и виртуализация.

Определившись с технологией, нужно запастись терпением и приступить к изучению ее деталей, а так же – к шлифовке мастерства на практике. А заодно и посмотреть, как там другие разработчики поживают. Но, это уже…

Третья ступень познания



Вы уже кое-что умеете. У вас сформировалась своя точка зрения на какие-то технические вопросы. Вы в состоянии справиться с несложными проектами, но вам хочется большего. В то же время вы замечаете, что ваше желание профессионального роста не спешит реализовываться. И это несмотря на то, что вы постоянно прикладываете свои усилия к совершенствованию теоретических знаний и практических навыков. Такое впечатление, как будто вам на пути восхождения к вершинам мастерства встретилось бескрайнее равнинное плато. Впереди бескрайний горизонт возможностей применения добытого профессионализма, но нет ни намека на сколько-нибудь заметную возвышенность, покорив которую можно приблизить себя к абсолютному знанию (или к новой высоко-оплачиваемой должности – каждому свое). Такое замедление в развитии закономерно и связанно оно с тем, что человек – существо социальное. Если в своем профессиональном развитии вы почувствовали первые тревожные признаки стагнации – это звонок покинуть берлогу. Пора выходить в свет. Пообщайтесь с профессионалами в вашей области деятельности, с профессионалами из смежных отраслей, и даже со специалистами в таких областях деятельности, которые не имеют ничего общего с разработкой программного обеспечения. Только начните общаться, и вы удивитесь, какой богатый и бесконечный источник знаний вам откроется!

Это просто. Возможностей для общения – бескрайнее множество. Принимайте участие в заседаниях местного клуба MCP, или User Group. Если такой нет в вашем городе – создайте и станьте ее лидером. Новая ответственность подстегнет ваше развитие. Принимайте участие в специализированных форумах. В частности, как для .Net разработчика, для вас главным центром общения вполне может стать русскоязычный раздел портала MSDN, включающий в себя, помимо всего прочего, форум разработчиков. Другой известный ресурс – Сообщество .Net разработчиков GotDotNet.

Здесь важно постоянно помнить одно простое правило – иногда отдавать выгоднее, чем брать. По отношению к знаниям, которые являются информацией, это верно вдвойне. Поделившись с кем-то своим опытом, вы не утратите его. Более того, обучая других, помогая им и подсказывая, вы все глубже и глубже начинаете вникать в самую сущность тех технологий, на применении которых вы специализируетесь. Уча других, вы учитесь сами. Кроме традиционных форм общения, таких как форумы, или комментарии к статьям в блогах, есть еще такая замечательная вещь, как сервисы обмена опытом и знаниями. Это формат, близкий к форумам, но с ярко-выраженным очарованием современных медиа. Самый яркий пример – StackOverflow, на котором вы можете выступать не только в роли  вопрошающего, но и с в роли эксперта. Причем уровень вашей компетенции будет оцениваться другими участниками. На мой взгляд, это более объективный показатель, чем наличие бумажного сертификата по какой-либо технологии. Если с английским языком дела у вас обстоят не слишком хорошо, попробуйте российский аналог данного сервиса – AskDev.

И, наконец, ведите свой технический блог. Или публикуйте свои статьи на таких порталах, как Habrahabr.ru

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

Другими словами, преумножайте свое мастерство, делясь знаниями с окружающими.

Здесь я хотел поведать о следующей ступени познания, но критически оценив раздувшийся объем статьи, решил вовремя остановиться :) Следовательно, продолжение следует…
+34
17 марта 2010, 17:35
76

комментарии (43)

+11
spmbt #
Много воды. Легко уменьшается объём в 3-4 раза.
И подход. Основная мысль — «Я изучаю язык для того, чтобы работать… Оказывается, после изучения основ надо начать решать задачи.», а не «я изучаю язык, чтобы решить задачу (задачи)».
+2
Mephistophele #
Что это за книга «C# 2008 для чайников»? Где Рихтер? После графика Tiobe я бы стал изучать Java, но ника не C#. Visual Basic и VB.Net — разные языки, на графике это никак не отображено.
Вердикт — материал сырой.
+4
baiborodin #
Рихер будет позже. Начинать абсолютному нулю с Рихтера — не совсем хорошая идея.
+1
Mephistophele #
Не спорю. Абсолютному нулю нужно начинать с чего-то более прозаичного. Но рекомендовать «C# для чайников», «увольте».
+3
taliban #
вы уволены… на самом деле книги серии «для чайников» не так плохи как о них говорят, для абсолютного нуля иногда даже трудно понять что такое переменная и почему строки неизменяемы… так что эти книги не стоит исключать на нулевом этапе, возможно они сделают пользу
0
microuser #
Этому учат в учебном заведении.
+1
taliban #
бывают программисты не технари
0
arinoki #
а если предположить, что ещё в школьные годы человек решил начал увлекаться программированием?
Точнее решил увлечься)
+1
A1lfeG #
А по мне так отличная идея начинать в Рихтера :)
+1
Frey #
Да, Рихтер это перебор, очень бы рекомендовал новичкам «Trey Nash — Accelerated C# 2008»
0
linin #
Наоборот, не советовал новичкам.
Новичок, как правило, плохо еще владеет техническим английским.
Сама книга — ускоренный курс для профессионалов, сложная для понимания даже новичку, прошедшему нулевую ступень.
Переводы книг APress на русский переводчиком издательства «Вильямс» Н.А.Мухиной — выносят мозг. Так что и на русском ее не почитаешь.
+1
dmodeus #
Наверно имеется в виду, что на начальном этапе подойдет даже серия для чайников. Потом уже можно и Рихтера + Эспозито для веб-разработчиков.
+1
NoHate #
Посягну на святое.

А кому он нужен этот Рихтер? Я мало кого знаю, кому Рихтер действительно что-то дал. Рихтер расширяет кругозор, но практической пользы от него достаточно мало. Я сходу не могу даже вспомнить, что может дать Рихтер, кроме циферок на BrainBench.

Ну а начинающему программисту вообще Рихтер противопоказан. Троелсена ему — лучше для старта не придумать.
+1
Mephistophele #
Знаете, есть классный вопрос о который разбиваются все аргументы: «И чё?».
Троелсен, да, хорош, именно для начинающих. Но когда встаёт вопрос написать приложение которое должно работать с производственными роботами(или иными словами где больше парочки кнопочек) и встаёт вопрос про многопоточность\надёжность — лучше Рихтера учителя я ещё не видел.
У нас как-то была проблема, программа после 3х суток работы отъедала до 700Мб памяти, написанная на C#(!). Была туева хуча дедлоков. Не чистились ресурсы после работы с БД. Вобщем программка спокойно умирала после 3х-4х дней. Стоит заметить, что писал человек, который Рихтера в руках даже не держал. После этого случая передали проект на рефакторинг, всё успешно сделано, память не «жрёт», дедлоки «испарились», «вылеты» сошли на нет. Рефакторил человек который читал Рихтера раза 3 от корки до корки точно.
К чему я развёл эту демагогию — если человек не хочет расти, то ему незачем читать хорошие и качественные книги.
+5
NoHate #
Вопрос о «не хочет расти», вообще не стоял, не знаю, зачем вы это упомянули?

Ваш пример я не понял. Связи между дедлоками/ликами и Рихтером не могу уловить. Тем более не могу понять, зачем читать Рихтера 3 раза, для того, чтобы не делать лики и дедлоки.

Хочу, чтобы меня поняли правильно. Рихтера, конечно читал. Сейчас на столе лежит третья редакция. Но я считаю, что практическая польза этой книги несколько завышена и возведение ее в ранг Библии мне кажется беспочвенным.
+1
pavlov_eugene #
а ну конечно, троелсона! ололо

я блин этого троелсона 3 месяца в руках держал.

после 10й (20й,30й) попытки, я его просто боялся открывать. так и отдал обратно в библиотеку. эта книга для професионалов, новичок в ней не поймет абсолютно ничего.
0
NoHate #
А до Троелсена вы программировали?

Я конечно, за всех не скажу, но мне Троелсен показался очень доступным. После прочтения половины книги просто сел и начал писать на C#.

Ниже по топику люди тоже Троелсена советуют.

Но я переходил на C# с ATL/WTL, может быть, поэтому мне показалось все легким и простым.
0
pavlov_eugene #
До Троелсона програмировал на Visual Basic.

на ооп переходить сложно. и мне кажется, что тут надо что-то немного доступней и понятней
0
averkin #
Товарищ! Да простят меня великие, но вы и правы и не правы одновременно (Разумеется, ИМХО и не более того). Я хочу сказать вот что: в 99% случаев, когда человек на форуме пишет «Посоветуйте книгу для новичка» — он обречён на 2 вещи: неоправданную сложность изложения выбранного источника и на холивар между «спецами» и «гуру». Эт раз. Рано или поздно человек сам доперает до достойной литературы, но происходит это, как правило, после «Освой С++ за 21 день» или «Assembler для чайников». Эта мукулатура даёт понятие о таких вещах, о которых в последствии и задумываться-то стыдно. Когда берёшь в руки Рихтера или, Страуструпа (Все понемают, что это общий пример, не имеющий к .Net никакого отношения :) ), то непременно начинаешь благодарить богов, что ты не думаешь о синтаксисе и о том, в каком моменте мы выйдем из цыкла.
Так вот… По моему скромному мнению, начинать именно с таких книжек надо. Но, по хорошему, в них же на первой странице крупно надо писать, что «книга содержит базовые понятия и её не стоит рассматривать как серьёзный учебник». Как-то так…
+4
Skiminok #
Я когда-то в книжном магазине взял интереса ради в руки книжку «C# для чайников» и пролистал. После фразы «представьте себе, что переменная — это маленькая закрытая коробочка, в которую вы можете что-то положить, а потом это что-то достать» меня пробило на неконтролируемый хохот и книжка вернулась на полку.
+3
nolled #
А как надо объяснять абсолютному нубу?
+1
catlion #
Как это делают в «Структуре и интерпретации компьютерных программ». Книга доступна в как электронном виде, так и на бумаге на русском языке.
+3
Source #
«представьте себе, что переменная — это маленькая закрытая коробочка, в которую вы можете что-то положить, а потом это что-то достать»


Гы, а функция — это волшебная шляпа, в которую засовываем платки и шарики, а после встряски из неё выпрыгивает кролик?
+4
dmodeus #
Можно добавить про WP7. Изучайте шарп и сможете спокойно писать и для WP7!
А про начальную книжку — совет простой — полистать все книжки в магазине и выбрать ту, которая написана наиболее доступным для вас языком и при этом наиболее полно описывает платформу. Все-таки боюсь, что для чайников — это чересчур для чайников.
+2
Nagg #
Читая «для чайников» чайником и останешся. лично я бы порекоммендовал Троэлсона, а потом уже Рихтера.
0
Agny #
Если владеть английким, то очень хорошая «Head First C#» от O'REILLY.
Написана в таком разговорно-серьезном стиле и очень легко читается.
0
Dennis #
а как насчет head first python можете что-то сказать?
–4
Zakus #
Для чайников? Омг. Это такие книжки — анекдоты?

x:\Program Files\Microsoft Visual Studio 9.0\VC#\Specifications\1033\CSharp Language Specification.doc

все что нужно
–3
fllln #
Вот-вот, спека поначалу — самое то. Можно даже вот как сделать — начать писать какое-нибудь нетривиальное приложение, пользуясь исключительно спекой. Набивая шишки и тратя три часа на самые простые действия, методом огромного количества проб и ошибок, написать-таки свое приложение. А уже потом купить какую-нибудь толковую книжку. Прочитаете за два вечера как хороший приключенческий роман, гарантирую.
+2
NoHate #
Очень оригинальный подход. Сначала построить самолет (весьма нетривиальная штука), набивая шишки, а потом открыть учебник физики и прочитать, как хороший роман.

Или я irony не вижу?
0
fllln #
Нет, irony нету. Самолет конечно строить не стоит, возьмите что-нибудь попроще. Суть метода в том, что человек сам ищет ответы на вопросы, что, с моей точки зрения, весьма и весьма ценно, в то время как в книжках все разжевывают до мелочей (как правило). Пытаясь самостоятельно понять, что и как сделать, можно неплохо разобраться в философии технологии/языка. Ну а книжка просто укрепит ваши знания и закроет некоторые пробелы в них. Все имхо, конечно.
0
averkin #
проблема вот в чём: слишком много велосипедов приходится изобретать. Такой подход — скорее для С… Наверное…
0
Zakus #
Вы просто не смотрели данный файл.
НЛО прилетело и опубликовало эту надпись здесь
+1
dimacat #
Как по мне, для начинающих самый лучший автор — Эндрю Троелсен. Вот сейчас как раз изучаю .net по его книге. А Рихтер, конечно, толковые вещи пишет, но, пролистав его книгу у друга, понял, что за чтение его книг лучше взяться, когда поднабёршься хоть какого-нибудь опыта.
+2
tum0rc0re #
а по мне лучший Герберт Шилдт, я по нему и Java и C# изучаю
+1
tum0rc0re #
хотя сейчас читаю как раз Троельсена по C# и тоже посоветую его, но чисто по чтению Шилдта легче читать
+1
mnarinsky #
Мне кажется, Вы зря так пренебрежительно отнеслись к такой вещи как сертификация Microsoft.

Во-первых эта, как Вы сказали, «бумажная сертификация», официально поднимает Ваш статус как .NET специалиста (участие в форумах типа StackOverflow, тоже конечно не маловажно, но приложить профиль такого сайта к своему резюме, не так-то просто как написать, что Вы являетесь, например, MCTS).

Во-вторых наличие сертифицированного специалиста дает дополниетлные баллы для Вашей компании в программе Microsoft Partner, а это соответвенно, делаем Вас более ценным сотрудником.

Ну и наконец получение сертификатов, это именно тот путь который сама компания Microsoft советует, если Вы хотите стать специалистом в ее технологиях. Причем путь развития для каждой группы технологий (фреймворков) очень четко описан. Вот здесь можете почитать.
В основе практически всех программистких сертификаций сейчас (.NET 4.0 еще не вышел :) ) лежит экзамен 70-536 .NET Application Development foundation. Изучение материала этого экзамена я бы посоветовал сразу после Вашей фазы 0, так как знание языка C#, абсолютно еще не означает знание основ платформы .NET.
+2
micbsv #
Возможности платформы .Net охватывают практически все сферы применения программного обеспечения.

.Net Micro Framework можно добавить, для контроллеров ARM7/9, BlackFin.
0
mezastel #
Эхх, если бы можно еще для fpga перейти с vhdl на c#, было бы вообще круто.
–1
stoune #
Об участии в OpenSource проєкте новичка вы это загнули. Кто дасть право комита человеку который недавно цыкл for освоил. Последовательность перечисленнуювами нужно изменить. Сначала учимся, далее ставим себе трудную, но достижимую задачу реализировать на технологии которую выбрали для узучения(сотый клиент для твиттера с плюшками на WPF, миллионную CMS на ASP.NET, или модуль к cуществующей).
0
SmartBye #
А можно узнать про конспектирование с помощью Evernote? Как оно выглядит и какие особенности?
0
Donat #
А есть еще и C# для школьников (http://habrahabr.ru/blogs/study/67372/)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.