.Net Developer — первые шаги
Многие начинающие разработчики в течение достаточно длительного времени пребывают в растерянности – какие действия предпринимать для того, чтобы повышать свой уровень профессионализма. В этом цикле статьей, на примере конкретной технологии я постараюсь наметить основные моменты, на которые стоит обратить внимание.
Дабы не рассуждать о проблемах увеличения надоев со сферического коня в вакууме, будем отталкиваться от вполне конкретной цели – стать .Net разработчиком.
Прежде всего следует помнить, что нельзя объять необъятное, и если вы собираетесь стать действительно высококлассным профессионалом, то вам придется сконцентрировать все свои усилия на чем-то одном, так как платформа достаточно обширна, и физически невозможно охватить все входящие в ее состав технологии. Но, тут есть небольшая тонкость – как я могу узнать, какая технология мне интересна, если я не имею ни малейшего представления ни о том, что за технологии входят в состав платформы .Net, ни о том, что они из себя представляют? Для того, чтобы выйти из этой затруднительной ситуации, выделим в процессе обучения начальный этап. Назовем его – Нулевая ступень познания :)
Нулевая ступень познания
На этом этапе мы знакомимся с платформой, получая общие знания о ее возможностях, входящих в состав технологиях и инструментах. К сожалению, или к счастью, но уже на этом этапе придется делать выбор. Выбор основного языка программирования. Мы ведь говорим о пути развития программиста, разработчика или Software Developer’a? А раз так, то основное и непреложное условие, необходимое для достижения поставленной цели – практика программирования на протяжении всего пути профессионального роста. Следовательно, нужно определяться, какой язык программирования будет для нас основным. Если отталкиваться от возможностей платформы .Net, то теоретически, нет особого различия между языками, входящими ее состав, так как в данном случае имеющиеся в распоряжении разработчика возможности определяются в большинстве случаев не возможностями языка, а возможностями платформы.
Если же ваши раздумья по поводу того, какой же язык программирования использовать, затянулись – можете в своем выборе ориентироваться на один из известных рейтингов языков программирования. Например, рейтинг, регулярно составляемый компанией TIOBE. Этот рейтинг строится на основе данных популярных поисковых систем о количестве разработчиков и компаний, использующих язык, а также о количестве обучающих курсов по этому языку. Из последних данных, а так же из анализа предыдущих рейтингов видно, что традиционные для платформы .Net языки программирования имеют стабильную динамику роста популярности. Так что, можно смело сказать, что в плане карьерных перспектив .Net — более, чем приемлемый выбор.
Ну, а если ограничить пространство выбора только данной платформой, то однозначным фаворитом здесь является язык C#.
После того, как мы определились с платформой и языком программирования, самое время совершить первый экскурс в мир программирования. Для этого подойдет самый простой учебник по выбранному языку программирования – как бумажный…
…так и электронный…
http://www.intuit.ru/department/pl/tincsharp3/
Долго ли, кротко ли, но освоили вы самые основы премудростей нового для вас языка программирования. Пора развиваться дальше. И здесь есть два пути дальнейшего совершенствования мастерства. Ну вот, разочарованно может подумать кто-то из читателей, опять проблема выбора. Ан-нет! Все еще сложнее – пути эти не альтернатива друг другу, а объективная необходимость. Это означает, что по каждому из них, как ни крути, начинающему разработчику все-равно предстоит пройти. Не важно, в каком порядке. Хоть параллельно (здесь главное не надорваться и не потерять навсегда интерес к программированию). Что же это за пути такие? Знакомьтесь: практика и специализация. Назовем их первой и второй ступенями познания.
Первая ступень познания
Практика. Без практики все ваши знания – бесполезны и мертвы. Более того, здесь может быть уместна такая аналогия: ваши знания – это вода. Практика – это течение, которое защищает воду от застоя. Стоячая вода быстро портится и становится непригодной. К тому же она постепенно испаряется, и когда-то полный водоем в конце концов пересыхает. Чтобы такого не произошло, необходимо постоянно практиковаться. Осталось лишь выяснить – как.
Традиционный совет, который чаще всего упоминается в данном случае звучит так:
Примите участие в каком-либо Open Source проекте
Некоторые заблуждаются, считая, что такой способ приобретения навыков программирования не доступен для .Net разработчиков. Но, это большое заблуждение – в мире огромное количество коллективных разработок на платформе .Net. В качестве стартовой точки для поиска проекта, который соответствовал бы вашим интересам, мог бы заинтересовать и увлечь, могу посоветовать портал 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, вы можете заработать очень достойные призы (за инвайтами, количество которых ограничено, можете обращаться ко мне).
Другими словами, преумножайте свое мастерство, делясь знаниями с окружающими.
Здесь я хотел поведать о следующей ступени познания, но критически оценив раздувшийся объем статьи, решил вовремя остановиться :) Следовательно, продолжение следует…



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