Читал "Основы C#" Шилдта, а также некоторые другие книги по языку, потом уже сам читал о регулярках, протоколах IP/TCP, паттерннах (немного) и т.д. Но все равно не чувствую сил, чтобы в одного написать что-то большое, да хотя бы что-то полезнее Paint и блокнота с подсветкой синтаксиса. Собственно, что нужно читать, писать, смотреть, чтобы развиваться?
Я лично, как начинающий программист, считаю, что теорию надо постоянно подкреплять практикой, делая простые программы, постепенно усложняя их. Еще советую сначала писать схему программы на бумаге, а после только писать классы. Еще есть паттерн mvc, он упрощает создание сложных программ.
samodelkin1990: сам лично изучаю языки более 10 лет и проведя анализ вакансий решил, что самый лучший вариант- работа на себя, создание платного своего проекта и пассивные продажи, так как программирование на заказ отнимает очень много сил и времени.
Юрий: первые пол-года изучения с# я тоже ничего не понимал и весь успех был только в усталости, в основном я мало что понимал и мог писать простые программки, вроде запрос текста или вывода формы. Потом, когда количество практических программ превысило более 100 штук, я начал понимать в работе и синтаксисе языка, после чего смог сделать первые несколько программок для автоматизации работы Вконтакте. Но главное правило- делать на бумаге карандашом схему классов и их методов, а также интерфейс программки и делать поэтапно. Без схемы не сделать даже простую программку. ;-)
samodelkin1990: весь секрет сложных проектов- схема, посмотрите в интернете фотографии офисов программистов, у них стены обклеены большим количеством бумажек.
samodelkin1990: бумажный лист и есть весь секрет сложных проектов. Любая идея начинается с бумаги, будь-то архитектурный памятник, дом или программа. Если хотите, могу скинуть свою схему.
Юрий: вот мои небольшие проектики: average-programmer.jimdo.com
Правда там функционала мало, надо усиленно повышать опыт!
с# я выбрал из-за того, что тут и простые платные программы можно делать и веб-приложения и сервисы.
samodelkin1990: это я к тому, что в организации придется делать проекты такими способами, которые будет диктовать работодатель, который особо не вникает в суть программирования и этим только усложняет работу последнего.
Юрий: конкуренция есть везде, но только в случае, если вы малоопытный программист. Если вы очень опытный программист-любитель и изучали язык несколько лет, а также можете выполнить любую задачу на данном языке, то конкуренция будет практически ничтожна и останется только одна трудность- придумать идею для программы, которая будет нужна людям. Становиться генератором идей надо заранее, чтобы потом вы легко смогли придумать нишу и заработать на ней.
Юрий: можно даже стать богом любого языка, только тут нужна усидчивость и неотступность, каждый день по 2-3 часа изучать язык и практиковаться. Сила воли сделает свое дело и вы будете специалистом в одном языке. Сейчас просто большинство программистов с кашей языков в голове(я тоже таким являюсь:) ), из-за чего ни там ни там невозможно сделать нормальный проект.
Юрий: хотя тут есть риск, так как это предпринимательская деятельность, в которой без риска никак. В любом случае при нужном терпении и силы воли, даже если у вас не купят 1 или даже 2 программу или 3,4, то какая-нибудь обязательно станет популярной и можно будет заработать на ней.
Собственно, что нужно читать, писать, смотреть, чтобы развиваться?
Прикладное направление выберите для начала. Стандартный выбор на сегодня: веб-бэкенд/десктоп/игры/мобайл. Соответственно: ASP.NET 5ASP.NET Core 1.0/WPF/Unity/(UWP/Xamarin)
Юрий: в тех же условиях и я начинал - в маленько НИИ при университете. Заводы, ИТ-отделы компаний, удаленная работа - всегда есть из чего выбирать. Надо только походить вокруг и внимательно поискать.
brainick: личный опыт. Работал и в маленьких компаниях и в интеграторах федерального уровня. Разработчики в основном были с физико-математическим или классическим инженерным образованием. Даже с педагогическим и железнодорожным знаю мощных парней. Большой процент людей с профильным образованием наблюдал среди ПМов и аналитиков, чуть меньше тестировщиков. Где-то на хабре попадались исследования на эту тему.
brainick: грань тонкая. Предпологаю, что профильное образование - это все таки Computer Science или Software Engineering. Потому что в их курс входит проектирование и методологии разработки софта. А в учебных программах физиков, математиков и инженеров ничего подобного нет.
"В одного большое" никто не пишет. Определитесь что собственно вы будете писать, какой стек технологий использовать. C# это просто язык - безусловно есть вакансии по написанию голого кода на нем, но все же 99% работы связано с конкретной платформой( веб, настолки, мобилки, службы и прочее) и изучать надо устройство среды исполнения и причуды технологий. Обязательно к прочтению - "CLR via C#". Остальное зависит от пути развития и платформы, на которой вы собираетесь работать.
Юрий: Без WinAPI как 2 пальца намочить - WinForms , WPF. Ну хотя все зависит от логики вашего приложения. Конечно всегда можно придумать задачу, которая нереальна в пределах упомянутых технологий.
Дмитрий Ковальский: FindWindow, WriteProcessMemory, GetCursorPos, да и хуки. Тот же кейлогер не представляю как реализовать стандартными средствами. За WPF отдельное спасибо, давно хотел)
Если Windows, то:
- уже упомянутый WPF (с обязательным применением MVVM)
- написание WinServices
Кроме того не оставляйте в стороне:
- ADO.NET и работа с БД, в самой простейщей форме. Без БД не обойдется ни одна корпоративная программа.