23

Вопрос к C# .Net разработчикам

Всем привет!
Изучаю язык C#, хочу быть C#/.Net разработчиком. На пути изучения языка столкнулся с проблемой с которой хочу обратиться к более опытным товарищам.

Выучил синтаксис языка, ООП, сейчас изучаю LINQ.
Затем планирую изучить на базовом уровне алгоритмы и структуры данных, Git, SQL, Асинхронное программирование, Паттерны проектирования.
Далее планирую перейти к написанию клиент-серверных десктоп приложений для портфолио, с использованием ASP.NET Core, WPF MVVM.

Столкнулся с проблемой что в вакансиях требования абсолютно разные. Кто то требует просто C#, .Net, WPF, а некоторые работодатели довольно много требований указывают: UWM, Angular, Xamarin, Entity Framework, Asp.Net Web Api, Docker, Typescript, Azure DevOps, KeyCloak и т.д.

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

Хочу быть крепким джуном, который знает большинство базовых инструментов. Чтобы при трудоустройстве было больше шансов. Но вопрос, есть ли такой набор базовых инструментов?)
Извиняюсь за сумбурность мыслей, благодарю за ответы.

Лига программистов

2.3K поста12K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

2
Автор поста оценил этот комментарий

Тут уже много чего объяснили. Но я как раз WPF разработчик и имею что-то сказать.
На мой взгляд, сам WPF пока не стоит трогать. Занимайся дальше по плану, как ты описываешь: все вот эти алгоритмы , Git , SQL - но на базовом уровне, чтобы добиться понимания и не закапываться. А то так до собеса и не дойдешь никогда)) всякие  там паттерны проектирования можно поковырять, но я боюсь, что без практики ты не поймешь, что это такое и, главное, зачем это нужно. хотя паттерны - дело хорошее.
На самом деле , WPF - это обычный фреймворк. Если я правильно понял твой уровень, сконцентрируйся пока на базовом C#.
По поводу многообразия требований: все то перечислено - каша, мед , говно и пчелы - навалено в кучу. Веб, мобильная разработка, развертывание и проч. не заморачивайся.
По поводу WPF - правильно говорят, что направление достаточно узкое. Будешь пилить нишевые продукты для предприятий, производств и может еще чего, если конечно работу найдешь. (не знаю , почему именно десктоп тебе так понравился. Тут вопрос твоих личных приоритетов). Хотя я не сказал бы , что пациент скорее мертв , чем жив. Но WPF и правда не поддерживается и выглядит так будто на ладан дышит. Плюс в свете некоторых геополитических событий, многие заказчики в РФ хотят быть готовыми к внезапному отключению от Виндовс и просят кроссплатформенность для внезапного в будущем перехода на Linux, что WPF не предоставляет. Тут вступают всякие Avalonia и Uno. Эт такие же фреймворки очень похожие на WPF. Но и в них кидаться тоже не советую.
Теперь к сути)
чтобы мочь в WPF надо понимать, что такое паттерн MVVM. тут столкнешься с тем, что в интернете много кто говорит об этом, но мало кто говорит понятно. + многие примеры, гайды и мануалы по  WPF почему-то (видимо с целью простоты ) обходят этот паттерн при объяснении. для новичка может стать проблемой, хотя это не проблема) не стоит бояться.
дальше. ты можешь сказать, что знаешь WPF , если знаешь, что такое, как устроено, как работает и как реализуется Styles, Commands,  Binding, Custom controls, User controls, dependency property, attached property, Behaviors... мож че забыл.
Так же советую понять, что такое Dependency injection и как работают контейнеры зависимостей.
Кароч, если вопросы есть , могу ответить

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Или не нужно никакой фреймворк изучать и после базы идти на C#/.net разработчика и уже потом при необходимости менять свой стек?

показать ответы
2
Автор поста оценил этот комментарий

Тут уже много чего объяснили. Но я как раз WPF разработчик и имею что-то сказать.
На мой взгляд, сам WPF пока не стоит трогать. Занимайся дальше по плану, как ты описываешь: все вот эти алгоритмы , Git , SQL - но на базовом уровне, чтобы добиться понимания и не закапываться. А то так до собеса и не дойдешь никогда)) всякие  там паттерны проектирования можно поковырять, но я боюсь, что без практики ты не поймешь, что это такое и, главное, зачем это нужно. хотя паттерны - дело хорошее.
На самом деле , WPF - это обычный фреймворк. Если я правильно понял твой уровень, сконцентрируйся пока на базовом C#.
По поводу многообразия требований: все то перечислено - каша, мед , говно и пчелы - навалено в кучу. Веб, мобильная разработка, развертывание и проч. не заморачивайся.
По поводу WPF - правильно говорят, что направление достаточно узкое. Будешь пилить нишевые продукты для предприятий, производств и может еще чего, если конечно работу найдешь. (не знаю , почему именно десктоп тебе так понравился. Тут вопрос твоих личных приоритетов). Хотя я не сказал бы , что пациент скорее мертв , чем жив. Но WPF и правда не поддерживается и выглядит так будто на ладан дышит. Плюс в свете некоторых геополитических событий, многие заказчики в РФ хотят быть готовыми к внезапному отключению от Виндовс и просят кроссплатформенность для внезапного в будущем перехода на Linux, что WPF не предоставляет. Тут вступают всякие Avalonia и Uno. Эт такие же фреймворки очень похожие на WPF. Но и в них кидаться тоже не советую.
Теперь к сути)
чтобы мочь в WPF надо понимать, что такое паттерн MVVM. тут столкнешься с тем, что в интернете много кто говорит об этом, но мало кто говорит понятно. + многие примеры, гайды и мануалы по  WPF почему-то (видимо с целью простоты ) обходят этот паттерн при объяснении. для новичка может стать проблемой, хотя это не проблема) не стоит бояться.
дальше. ты можешь сказать, что знаешь WPF , если знаешь, что такое, как устроено, как работает и как реализуется Styles, Commands,  Binding, Custom controls, User controls, dependency property, attached property, Behaviors... мож че забыл.
Так же советую понять, что такое Dependency injection и как работают контейнеры зависимостей.
Кароч, если вопросы есть , могу ответить

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Привет!
Огромное спасибо за такой развернутый ответ!

Да, про wpf мне тут много  кто написал что это почти мертвая штука) Я запутался в понятиях и думал что wpf - в целом разработка для десктопа, но, как оказалось, это графическая подсистема, больше к дизайну относится.
Мне гораздо более интересен backend.
Просто я хз в какую сторону развиваться, думал что wpf востребованная вещь.  Когда начал учить язык, посмотрел по вакансиям и увидел что во многих вакансиях wpf указан как основной стек или что будет плюсом его знание. Может стоит просто знать как и что работает, реализовать небольшое десктоп приложение для портфолио но не углубляться в wpf.
Например, пройти вот такой курс недорогой - https://stepik.org/course/108281/promo заодно и познакомлюсь и с WPF и с ASP.NET Core

Мне, честно говоря, тяжело понять на какие технологии делать упор. Я готов поменять вектор в изучении C#, и буду очень благодарен если подскажешь в какую сторону смотреть)
Потому что каша в голове, и пока не получается все структурировать(

0
Автор поста оценил этот комментарий

я админ, причём в одной узкоспециализированной фигне. powershell, vbs - на этом всё.
прошлым летом пришёл шеф и сказал - у тебя месяц, чтоб стать php девелоперм на фреймворке yii2. Стал.
в конце марта пришёл шеф и сказал: теперь ты разраб на питоне и системный аналитик. проект уже идёт, ты нужен. Штош. неделя и я - один из лидов на проекте.

из чего я делаю вот какой вывод. Абсолютно похер, что ты знаешь сейчас. Важно за каое время ты узнаешь то, что хотят в конторе. Забахай свой пэт проект.
например вот упражнение: https://github.com/solita/dev-academy-2023-exercise

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вау, интересно, спасибо.
Пока рановато для меня, кончено, но попробую реализовать как знания подтяну

показать ответы
0
Автор поста оценил этот комментарий
Уже в комментах все разжевали, если суммировать вкратце - сильно зависит от проекта. Самый простой способ - ходить на собеседования. Деньги за это вроде пока не берут, зато очень быстро становится понятно, что нужно и где у тебя в знаниях пробелы. А повезёт - могут и взять и всему на реальной практике научат.
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

У меня в городе не так много вакансий, поэтому вес каждой достаточно большой)
Думаю вообще позвонить, попросить пообщаться с человеком который будет собеседовать и узнать чего от меня ждут

показать ответы
1
Автор поста оценил этот комментарий
Технологии которые следует изучить тут отмечены красным флагом https://github.com/MoienTajik/AspNetCore-Developer-Roadmap
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Жесть, ну это наверное для Middle?
Микросервисы звучит как штука для опытных парней)

показать ответы
3
Автор поста оценил этот комментарий

Если в веб-бекэнд идти, то Core/WebAPI + LINQ/EntityFramework. Поработать с какой-нибудь СУБД типа MySQL или Postgre через EntityFramework. Базово понимать как работает HTTP (методы POST/GET/PUT... знать чем отличаются). Для первой работы должно хватить.


Xamarin - это уже мобильная разработка. Если вам она интересно, просто учите Xamarin :)


WPF - десктопная разработка. Тут нужно уметь работать с базами данных ещё тоже (LINQ/EntityFramework).


Typescript/Angular - это фронтэнд - нужно учить если вы хотите быть фулл-стек разработчиком, это лучше оставить на будущее :)


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


Всё из этого знать невозможно - лучше выбрать одно направление. Либо веб, либо мобильники, либо десктоп.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Интересует десктоп в первую очередь)

показать ответы
12
Автор поста оценил этот комментарий

Я бы рекомендовал сначала структурировать что есть:
.NET - сама платформа: компиляторы (не только C#, есть и Python и JS), системные библиотеки, среда запуска
C# - основной язык для .NET

Далее разбираемся с пакетами:
LINQ - по сути набор классов + дополнения к компилятору для работы с данными
ASP.NET - набор классов для запуска web приложений, достаточно объемная история т.к. включается в себя MVC, WebAPI, SOAP и т.п., а так же компилятор Razor шаблонов (его даже можно использовать отдельно от ASP.NET для генерации файлов по шаблонам)
Entity Framework - работа с данными, хранимыми в БД, в принципе можно и не использовать, есть как альтернативы, так и базовые классы ADO.NET (EF поверх них работает).
Xamarin добавляет некоторую кросс-платформенность, но .NET с версии Core уже работает на нескольких платформах, а кроссплатформенный UI сейчас еще в относительно зачаточном состоянии.
WPF - UI на windows, для других платформ делают новые компоненты, так что может WPF и тихо уйдет (как ушел тот же Silverlight)
...и еще куча пакетов для работы с JSON, XML, REST и т.д., тысячи их...

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

SQL по любому нужен для работы с БД и не зависит от разрабатываемого приложения (веб/десктоп). SQL тоже разный есть: в MSSQL это TSQL, Oracle - PL/SQL, Postgres - PL/PG SQL и т.д.

После всего этого можно писать уже приложения, исходники хранить в Git.

Написали? Отлично, тут разбираемся со средой запуска, Dockerом и остальным DevOpsом.

Angular, Typescript это уже не .NET, это уже для разработки той части веб приложений, что будут работать в браузере. Однако все множество технологий все равно сводится к HTML+CSS+JS. Angular, React, VueJS сильно упрощают работу над сложными веб проектами.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасибо!
Можно в обучении ориентироваться вот на такой RoadMap?

Иллюстрация к комментарию
показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества