Igro-zon.ru

Работа и жизнь
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Что должен знать разработчик c

Программист C#

Программист C# специализируется на разработке веб-приложений, десктопных и кроссплатформенных приложений, игр, облачных сервисов, приложений для устройств, работающих на мобильной ОС Windows Phone, других программных продуктов. Профессия подходит тем, кого интересует информатика (см. выбор профессии по интересу к школьным предметам).

Краткое описание

C# был создан членами команды Microsoft в начале 2000 годов. Является объектно-ориентированным типизированным языком, его относят к группе С-подобных языков. Изучается C# достаточно легко, особенно в том случае, если ранее программист работал с C++ или Java, чей синтаксис очень приближен к C#.

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

  • большое количество syntactic sugar, что еще больше облегчает изучение C# и работу с ним;
  • расширяется синтаксис, язык постоянно дорабатывается, ведь сегодня его совершенствует компания Microsoft;
  • перспективный язык, который используется для популярной платформы .NET Framework;
  • более простой и понятный код;
  • кроссплатформенность;
  • много полезных материалов на русском и иностранных языках, которые можно использовать для самообразования.

В рейтинге, составленном компанией RedMonk (июнь 2017), C# занимает почетное пятое место, в рейтинге журнала IEEE Spectrum — 4 место (июль 2017). C# используют для создания разных программных продуктов, поэтому программисты, которые владеют этим языком, будут востребованы в любые времена.

Описание профессии

Программист C# — это перспективная профессия, ведь язык поддерживает компания Microsoft, поэтому его предпочитают использовать и крупные компании, и известные разработчики. Программист, использующий в работе C#, занимается разработкой игр, разных видов приложений, сервисов и прочих программных продуктов на постоянной основе. Он должен уметь не только работать с кодом и вспомогательными инструментами, но и координировать работу других сотрудников, искать заказчиков, планировать рабочее время, составлять тех. задания.

В обязанности программиста входит:

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

Самое главное — опыт практической работы, получать который можно и нужно во время обучения в вузе. Можно трудиться удаленно, занимаясь написанием несложных кодов для частных лиц, работать помощником программиста в IT-компании, пробовать создавать собственные небольшие программы.

Программист C# должен понимать свои возможности, занимаясь поиском вакансий, которые соответствуют его квалификации и стажу. Ведь специалиста Junior C# developer, невзирая на его талантливость и оценки, никогда не допустят к написанию или исправлению кода в крупном проекте.

Плюсы и минусы профессии

Плюсы

  1. Много вакансий.
  2. Много возможностей для удаленной работы.
  3. Высокие заработные платы, размер которых ежегодно возрастает.
  4. IT-специальности всегда в тренде.
  5. Быстрое обучение.
  6. Можно работать без образования, но это скорее исключение из правил, чем норма.

Минусы

  1. Профессиональные заболевания.
  2. Малоподвижный образ жизни.
  3. Работа отнимает огромное количество времени.
  4. Завышенные требования к качеству работы со стороны руководителя.

Важные личные качества

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

  1. Техническое и системное мышление.
  2. Усидчивость.
  3. Способность к самоанализу.
  4. Логическое мышление.
  5. Находчивость.
  6. Организованность.
  7. Настойчивость.
  8. Любознательность.

Обучение на программиста C#

Эту профессию выбирают люди, которые обладают техническим складом ума. Программист C# должен великолепно разбираться в различных технических вопросах, математике, знать принцип работы ПК, поэтому чаще всего разработчики изучают дисциплины, связанные с прикладной информатикой и математикой, программной инженерией, информационными технологиями, физикой.

Программа минимум: что должен знать начинающий C# программист

    Переводы, 8 января 2017 в 2:53

Рассказывает Мош Хамедани, автор курсов по C# на Udemy

Мои студенты часто задают вопросы такого рода:

Мош, меня только что приняли на должность Junior C#-разработчик. Что ты посоветуешь? Что мне необходимо выучить?

Итак, если вы ищете первую работу в качестве C#-разработчика или недавно её получили, эта статья расскажет вам, какие навыки являются необходимыми. Я постарался объединить их в единый «путь», который подойдёт желающим разрабатывать как декстопные, так и веб-приложения.

Прежде чем я углублюсь в детали, я проясню кое-что: вы — джуниор, вам не нужно знать всё на свете! Никто не знает всего, даже матёрые разработчики. Мир программирования огромен и постоянно растёт. Поэтому каждый разработчик силён лишь в определённых областях, в зависимости от тех проектов, над которыми он работал.

Каждый навык будет сопровождаться одной или несколькими ссылками на полезные ресурсы.

Базовые навыки

Вне зависимости от выбранной сферы разработки существует несколько моментов, которые стоит знать.

Структуры данных и алгоритмы

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

«Яндекс», Москва, Санкт-Петербург, от 100 000 до 300 000 ₽

Вы можете удивиться, но крупные компании наподобие Microsoft, Apple и Amazon уделяют на интервью много времени именно проверке знания структур данных и алгоритмов, а не ASP.NET 5 или WPF! Они просто хотят понять, можете ли вы мыслить, как программист.

Вот неплохая книга для начала изучения: Data Structures and Algorithms Made Easy

Если вы в чём-то не разобрались — не отчаивайтесь! Просто убедитесь, что вы поняли, что такое списки, стеки, очереди, деревья и хеш-таблицы, и умеете их реализовывать на чистом C#. Реализуйте несколько алгоритмов поиска и сортировки.

Базы данных

SQL Server — это наиболее часто используемая реляционная СУБД среди .NET разработчиков. Разберитесь в основах реляционных баз данных и базовых операциях в SQL Server.

Читать еще:  Что нужно чтобы работать охранником

T-SQL — это язык запросов, используемый в SQL Server. Освойте функции SELECT, INSERT, UPDATE, DELETE, JOIN и GROUP BY.

Вот полезные материалы:

Когда вы работаете с РСУБД, то часто используете системы объектно-реляционного отображения для работы с объектами в базе данных. Существует много таких систем, но самой популярной является Entity Framework.

Материалы для изучения:

Веб-разработка

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

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

  • Фронтенд-разработчики;
  • Бэкенд-разработчики;
  • Full-stack-разработчики: те, кто занимаются и фронт-, и бэкендом.

В зависимости от ваших предпочтений стоит выбрать один из двух путей. Full-stack-разработчики обычно более востребованы.

Фронтенд

Если вы собрались заняться фронтендом, то вам нужно познакомиться с основами HTML, CSS и Javascript.

HTML — это язык разметки веб-страниц. В отличие от языков программирования (таких как C#), у него нет логики. Для декорации нашей страницы мы используем CSS. И, наконец, JavaScript — язык, отвечающий за поведение веб-страницы.

Материалы для изучения:

Бэкенд

ASP.NET MVC — это доминирующий среди C#-разработчиков фреймворк для создания серверных веб-приложений. Для работы с ASP.NET MVC вам всё равно потребуется базовое знание HTML, CSS и Javascript. Поэтому я советую вам начать изучение с фронтенда и затем перейти к бэкенду, изучив весь спектр веб-разработки.

Вот моё руководство, в котором мы создадим простое приложение с использованием ASP.NET MVC5 и Entity Framework 6: A Step-by-Step ASP.NET MVC Tutorial for Beginners

Десктоп-разработка

Если вы хотите заняться разработкой приложений под Windows, вам понадобится отличный от предыдущего набор навыков (хотя и они, как ни странно, могут пригодиться). Большинство заданий потребует от вас знания XAML, WPF или Windows Forms.

Что нужно знать для практического использования С++? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы на него можно было дать ответ, основанный на фактах и цитатах, отредактировав его.

Закрыт 2 года назад .

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

Как писать драйвера? (в какую сторону смотреть, есть ли книги или документация). Что вообще следует писать на с++ и «как, чем»? Какой API лучше использовать для написания оконных приложений и стоит ли это делать на с++?

Вот я и не могу понять, как это происходит, ведь в книгах с++ этого нет. Надеюсь вы поняли ход моих мыслей и сможете прояснить. Спасибо.

4 ответа 4

На мой взгляд одна из самых актуальных проблем современной литературы — много фундаментального и мало более профессионального. Я постараюсь объяснить это так, как вижу сам. Хотя знаний у меня не так уж много, но по крайней мере я попытаюсь. Надеюсь знающие люди подправят, если ошибся.

Итак, работа электроники происходит посредственном передачи данных по шинам от одного управляющего устройства другому(процессоры, микропроцессоры, микроконтроллеры и т.д.). В зависимости от того, какие данные переданы, электроника выполняет определенные задачи. Фактически это уровень архитектуры компьютера и ассемблера, которую очень хорошо бы знать на базовом уровне(Тоненбаум — «Архитектура компьютера»). Команды эти обычно объединяются в своего рода блоки, аналогично функциям, которые делают какую-то определенную цель. Иногда создаются целые кучи функций, которые объединяются в библиотеки функций(те самые math, iostream и т.д.).

Низкий уровень, драйвера:

Для написания драйвером надо посылать эти самые команды управляющим устройствам. Язык С++ не очень подходит под эти задачи, проще пользоваться чистым Си. В самом простом случае подключается какая-то библиотека, которая позволяет посылать значения устройствам и читать их. К примеру, простейший способ обращения к динамику ПК может выглядеть так(учтите, windows не разрешает напрямую обращаться к портам!):

Правда добрые люди обычно делают сторонние библиотеки более высокого уровня, которые уже содержат список готовых функций, классов, структур для обращения к устройствам. Например, код выше прекрасно работает из библиотеки функций windows.h, вызывая функцию beep(). Если вы хотите писать драйвера, то вам придется читать о том, как обращаться к устройству из документации разработчиков с оффициальных сайтов, какие команды устройство может выполнять, какие данные надо для этого посылать, есть ли для этого специальные библиотеки от разработчиков и многое другое.

Высокий уровень.

Люди, которые используют С++, работают обычно с готовыми наборами библиотек или создают свои под те или иные задачи. Например, есть такая вещь как WinAPI для создания графического интерфейса Windows окон. Это опять же готовые функции, вы подключаете библиотеку и работаете с ними. В ответ они делают какую-то работу и выдают результат. Если вы посмотрите на минимальное окно, то в коде вы увидите заполнение знакомых элементов: структуры, вызов функций, использование циклов и т.д. Другое дело, что эти функции и структуры сделали разработчики и они выполняют определенную работу, Вам остается только их вызывать. Для ознакомления с ними есть документация.

Все выше и выше.

Обычно библиотеки делаются универсальными и их можно использовать повторно. Например, на основе одной можно создать другую которая будет выполнять еще более специализированные функции. Например, можно создать библиотеку с функцией рисования линий. Из нее библиотеку с функцией рисования геометрических фигур. Из нее библиотеку с рисование деталей и т.д. так наращивается функциональность. Есть например программное рисование графики на мониторе, в windows его надстройка winAPI(линии, окошки, цвета уже готовы), но и у него есть более высокоуровневая оболочка MFC или Windows Forms, которые являются более усовершенствованными, но основаными на все том же WinAPI.

Читать еще:  Я ищу работу потому что

Как итог: фактически работа программиста заключается в том, что бы выяснить какая библиотека может помочь справиться с нужными задачи и изучить ее. А изучив применить к своим нуждам. Хотите использовать Windows GUI приложения — есть WPF и Windows Form, или на более низком уровне взять WinApi. Хотите использовать видеокарту для 3D приложений — изучайте DirectX. Хотите работать с музыкой, опять же всякие библиотеки типа OpenAL есть в распоряжение. Охота писать драйвера, ищите информацию о том, как можно обращаться к устройствам и посредством какой библиотеки. Хотите узнать почему используются готовые библиотеки, изучите архитектуру компьютера и самые основы ассемблера. В любом случае вы будете пользоваться основными изученными элементами языка С++: структуры, функции, классы, указатели, простые типы данных и т.д.

Навыки .NET-разработчика

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

Этой публикацией я начинаю цикл аналитических статей по анализу необходимых и востребованных навыков для различных специализаций на российском и зарубежном IT-рынке.

Как родилось это исследование?

Участвуя в подборе как начинающих, так и опытных разработчиков, постепенно стал замечать, что многие соискатели не обладают основными необходимыми навыками. И речь не про специфику конкретной предметной области, а про основные знания разработки приложений на платформе .NET. Такие собеседования обычно завершаются обсуждением с коллегами за чашкой чая самых острых моментов собеседования кандидата. Но все же интереснее разобраться, почему разработчики не осваивают те или иные навыки, несмотря на достаточный стаж работы, и каким образом можно построить развитие на их месте?

В каком направлении развиваться: какие навыки и как приобретать?

Итак, представим себя на месте начинающего разработчика Васи. 2 года работы программистом позволили Василию узнать основы .NET Framework, научиться работать с SQL Server и даже почитать про устройство сборщика мусора. Базовые знания и навыки, позволяющие создавать .NET-приложения, на месте – чем не .NET-разработчик? Но периодически Василий думает, что пора бы уже двигаться дальше, не всегда же оставаться Junior-разработчиком. Как дальше расти? Какие есть варианты?

Василий смотрит на карьеру своих старших коллег и в его голову приходит самый простой вариант: буду сидеть на своем месте работы лет 5, активно участвуя в проектах – и тогда, скорее всего, меня сделают Senior-разработчиком или может, дай бог, архитектором. Но внутренний голос не дает покоя Васе: может не все так просто, ведь ведущий разработчик и архитектор обладают какими-то особенными навыками, которые их выделяют среди остальных разработчиков – может нужно разобраться с тем, что это за навыки, и что нужно сделать, чтобы их развить в себе?

Какие варианты есть у Васи?

Вполне логично поискать информацию о том, какие навыки сейчас актуальны в IT и как их прокачать на каком-нибудь профильном Интернет-ресурсе. Что сразу приходит в голову: Хабрахабр, RSDN, SQL.ru? Но нет, эти ресурсы скорее расширяют наш кругозор, чем дают нам информацию о том, какие навыки сейчас востребованы. Есть и другие ресурсы, которые посвящены обучению навыкам, к примеру: Pluralsight и Coursera – если бы Вася точно знал, что он хочет изучить, эти ресурсы помогли бы ему. И, конечно, не стоит забывать про профессиональные конференции. Они также полезны как для расширения кругозора, так и развития конкретных навыков, но все равно не могут ответить на вопрос Василия: в каком направлении ему развиваться? Итого, мы имеем множество ресурсов, которые позволяют прокачать те или иные навыки, но, к сожалению, не дают ответа на вопросы: в каком русле развиваться и какой набор навыков развивать? Вспомните, как вы отвечали на эти вопросы: интуитивно?

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

Востребованные навыки в вакансиях работодателей

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

В наше время существует огромное количество публичных ресурсов, на которых работодатели размещают вакансии, обозначая требования к соискателям: конкретный перечень требуемых знаний и навыков. Так за чем же тогда дело встало? Нужно просто проанализировать эту базу и в результате у нас, по идее, будет ответ на наш вопрос. В качестве источника информации по вакансиям сразу же был выбран HeadHunter, как наиболее популярный ресурс для размещения вакансий IT-компаний. Мы ввели в поисковую строку запрос .net разработчик и увидели нескольких сотен результатов. В этот момент, честно говоря, наш пыл угас: объем ручного труда превысил степень нашего энтузиазма.

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

Читать еще:  Что нужно для работы дальнобойщиком

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

Рейтинг востребованности навыков

Выборка для анализа составила 300 актуальных вакансий. Из описания каждой вакансии был извлечен перечень требуемых навыков, и по каждому из полученных навыков была собрана следующая статистика:

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

Все полученные навыки сгруппированы в три категории: hard skills, soft skills и technology – чтобы не сравнивать навыки между этими категориями, так как это сравнение выглядело бы странным и бесполезным.

В итоговый рейтинг попали 10 популярных навыков по каждой из трех категорий.

Рейтинг технологий

В технологиях с огромным отрывом побеждает ASP.NET MVC: требование владения данной технологией встречалось в 3 из 4-х вакансий. Мне, как бывшему desktop-разработчику, было откровением, что все технологии desktop UI проигрывают ASP.NET MVC в 6 раз, а в сумме WPF и Windows Forms проигрывают в 2,5 раза. Если верить статистике, судьба разработки настольных интерфейсов видится достаточно туманной.

Отметил я еще один интересный факт: WPF и Windows Forms имеют одинаковый уровень востребованности – примерно 15%. Сначала я подумал, что это связано с переводом приложений с устаревающей технологии Windows Forms на WPF, но, оказалось, что данные навыки требовались в одних и тех же вакансиях только в 2% случаев, то есть одни компании до сих пор используют Windows Forms, а другие компании уже применяют WPF при разработке своих приложений.

На втором месте по-прежнему остается «must have» навык работы с SQL Server и использования Transact-SQL в каждой второй вакансии. В трети вакансий требуется знание WCF, XML и XSLT. В каждой четвертой – LINQ. Ну, и завершает список – EF. У меня есть гипотеза о том, почему EF в нижней части списка, а SQL Server в верхней: рынок ORM до сих пор достаточно раздробленный – многие все еще продолжают собственные ORM писать, а также популярны альтернативные платформы с хорошей историей вроде NHibernate.

Если смотреть на статистику по уровню заработной платы, то наиболее высокооплачиваемыми вакансиями являются те, в которых упоминаются HTML, CSS, AJAX, jQuery и JavaScript (иные платформы JavaScript упоминались в вакансиях, но редко, а потому не попали в топ-лист).

Рейтинг профессиональных навыков

По-прежнему у нас наиболее востребован навык объектно-ориентированного программирования. Владение ООП требуется в каждой четвертой вакансии.

Меня немного удивило, что после навыка ООП сразу же идет навык анализа требований. Сомневаюсь, что работодатели подразумевают именно написание требований, скорее всего, от разработчика требуется активное участие в процессе анализа требований в том или ином виде. Тем не менее, видна тенденция того, что от разработчика требуют больше, чем просто написание кода.

Далее идут достаточно обыденные навыки: работа с системами контроля версий, проектирование архитектуры и шаблоны проектирования – эти навыки требуются в каждой четвертой вакансии.

Стоит также заметить, что навык «архитектура высоконагруженных систем» прорывается уже в топ 10 навыков, что несомненно связано с существующей общеотраслевой тенденцией. При этом вакансии, в которых упоминается данный навык, в среднем имеют самый большой уровень заработной платы – 130 тыс. руб.

Рейтинг общих компетенций

Вряд ли для вас будет откровением, что среди soft skills самый популярный навык – это знание английского языка на уровне чтения технической документации. Этот навык требуется в каждой третьей вакансии.

Второй по популярности навык – командная работа, который требуется в каждой четвертой вакансии. Конечно же, в топ 10 попали такие навыки как самостоятельность, ответственность и коммуникативные навыки. И завершает список навык «умения излагать свои мысли»: если верить статистике, то среди 25 разработчиков достаточно всего одного, который умеет правильно излагать свои мысли – остальным совсем не обязательно.

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

Востребованный .NET-разработчик

Так кто же он, востребованный и высокооплачиваемый .NET-разработчик, на которого нам стоит равняться?

Судя по статистике, портрет такого разработчика следующий.

Разработчик ASP.NET MVC, который «на ты» с SQL Server и Transact-SQL, владеющий стеком веб-технологий (HTML, CSS, JavaScript, AJAX и jQuery), умеющий создавать и использовать WCF-сервисы, ну, и конечно, умеющий преобразовывать данные в формате XML.

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

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

Продолжение следует…

В следующей статье я проведу аналогичный анализ по зарубежному рынку вакансий: какие навыки требуются от .NET-разработчика «за бугром»?

Хочу услышать ваше мнение о том, по каким специализациям будет интересно увидеть подобную аналитику, и действительно ли данная статистика помогает нам найти ответ на вопрос, какие навыки нам необходимо развивать, или тема еще не закрыта?

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

Ссылка на основную публикацию
Adblock
detector