Архив метки: C#

С чего начать изучение программирования, общее.

     Много народа хочет стать программистами. Хороших в итоге немного. Сам не то чтобы профессионал топ-класса, но с учетом набитых ошибок захотелось немного систематизировать набранный опыт. Куда податься новеньким, как учить. В общем, что бы делал я «с белого листа».

   — Где учить. 

Тут достаточно просто. Профильный университет, который соверемнный, «дышит» в ногу — идеал. Университет дает базу и дает навыки самостоятельного обучения. Это идеальный ВУЗ в вакууме. Теперь о непростом — такой универ практически нереально найти на территории эксСССР, насколько я понимаю. Это не MIT. В моем универе 80% преподавателей были ну очень старой закалки. Один из них как то зарубил мой курсовой, так как в качестве CPU был выбран PIC, который преподаватель не знал. Зато он знал КР580ВМ80А, который мне и надо было использовать. Другой пример — рассказывали, что наши ребята ездили в США для обмена опытом. Поехали крутыми перцами, приехали —  а там только BSD системы, которые наши тогда в глаза не видели. 

В итоге — в универе надо параллельно учитсья самому. Благо, для этого есть все возможности. Вообще, это хорошая практика — учиться самостоятельно параллельно, постоянно. Учите основной предмет — учите параллельно что то еще. Пусть не в полную силу, но учите. Я какое о время назад изучал вопросы цифровой фильтрации сигналов. Математика. Казалось бы, но в недавнем прошлом это пригодилось. Исправлял в проекте. Удачно ввернул пару умных сдлв про IIR и FIR в общении с работодателем = ко мне совершенно другое отношение.

Курсы / учить самостоятельно — второе / третье по предпочтению. Но! Курсы — выбираются внимательно. Обычно хорошие курсы — это достаточно дорого. Но тут, как говорится, или по 5 но большие, или по 3 на маленькие 🙂 Правильные курсы вам здорово сократят время на изучение. Дадут работу в группе, общение.

     —  Что учить

Вопрос на самом деле неоднозначный. Тут есть два варинта. С одной стороны, можно изучать что то, что не востребовано на рынке особо, но вам ОЧЕНЬ нравится. Например, программирование QNX, скалу или что то подобное. Из профитов — когда вы станете крутым профессионалом (это не один год) — вы найдете очень высокооплачиваему работу. Предложений мало — но спрос, хоть и небольшой, есть. Небольшая конкуренция — вы на коне. Но кто вас будет кормить все это время? Поэтому вариант два, он же правильный — учить надо мейнстрим. Находим что то, где работу найти легче — и изучаем. C#, VB.NET, Java — без разницы, выберете, что нравится. И учите. Ищите опенсорсные проекты и делайте с кем то, делайти сами. Лучше — в команду с кем то, то есть опенсорс. Это научит читать чужой код, писать понятный код для других людей. Опыт работы с разными системами контроля версий и прочее. Кстати, в качестве такой системя я использую Mercurial, который меня вполне устраивает.

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

     — Как учить

Для начала находим хорошую базовую книгу с азов. Читаем и делаем примеры. Хорошо, если в книге написано, как собрать ваше приложение без использования IDE. Это позволит вам понять, что происходит на самом деле при сборке. То есть командная строка и блокнот (Notepad++ / Sublime Text). Заодно найчитесь правильно настраивать переменные среды, очень часто без этого ваша программа просто не скомпилируется. После того, как станет ясно, что происходит, работаете из чистой IDE без решарперов или других улучшайзеров. Используете мейнстирм. Для .NET это Visual Studio (спокойно можно использовать Express). Для Java — Eclipse. Лучше Indigo, Juno имеет какие то странные для меня проблемы. Для С++ сложнее — тут или VS Professional, или Qt, или DevExpress ИМХО. В порядке предпочтения. Единственное — в VS 2010 был сломан autocomplete для C++, починили или нет — не знаю.

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

Какие платформы будут перспективны в будущем — думаю, Java и .NET никуда не денутся. Мир вовсю скатывается в облака и мобильный платформы — то есть копая туда, вы буз работы точно не останетесь. Насчет HTML5 — будет точно, но наверняка будет допиливаться очень быстро. JavaScript — тоже. Этот язык для меня тяжелый. Не как сам язык (он на самом деле имеет простой синтаксис) — я не предсталяю, как на нем писать сложное корпоративное ПО. 

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

В конце можно напомнить, что быть специалистом мало. Надо уметь себя продать на рынке труда правильно и грамотно. Я в этом не спец, к сожалению. Можете посмотреть доклад Якова Фаина, там есть по теме — http://jeeconf.com/materials/java-developer/

В любом случае — удачи вам, ребята! Если есть конкретные вопросы — задавайте в комментариях.