Нужен совет о выборе области программирования
От: catr  
Дата: 25.08.07 08:15
Оценка:
Здравствуйте.
Нужен совет по выбору области программирования.
Полгода назад закончил универ (инженер), 24 года. Программирование нравится, в городе (миллионнике) сейчас неплохие зарплаты для программистов. Работал php-программистом, немного знаю MySQL (на уровне запросов), верстал сайты. 4 года занимаюсь Shareware: пишу на C++, MFC, WinAPI в Visual C++.

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

Кстати вопрос: что перспективнее .NET или Java? 2 года назад меня брали в одну большую компанию на программиста Java, тогда будущий начальник сказал что можно разбираться с Java "с нуля" и улучшать свои скиллзы в Java можно бесконечно. Но учеба помешала работать на полный день, потому отказался.

Про .NET я ничего не знаю, но думаю что опыт C++ и MFC поможет его освоить.

Теперь хочу подготовиться теоретически, почитать книжки, самостоятельно потыкаться в .NET прежде чем искать работу.

Вопрос: с чего начать? Посоветуйте книжки, сайты, статьи, и т.д. Как можно максимально быстро разобраться с .NET и пойти работать программистом .NET?
Скачал Петцольда "Программирование для Window на C#" в двух томах, полистал — написано как создавать формы, отрисовка, пользовательский интерфейс, менюшки, файлы, печать и т.д. Наверное сейчас это не совсем то, что нужно, т.к. в принципе тот же MFC и ИМХО проще разбираться по ходу работы.

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

Для начинающих:

1) Алгоритмы и структуры данных
— Списки\массивы: алгоритмы сортировки и поиска (какие знаете, обычно об одном ли 2-х — рассказать подробнее, дать оценку времени работы)
— Деревья: какие бывают (например, бинарные или B-деревья), простые алгоритмы на деревьях (например, поиска в бинарном дереве)

2) C#\.NET
— Общие вопросы: что такое тип, экземпляр, метод, свойство, виртуальный метод, ссылка, ссылочный тип, ValueType, интерфейс и т.п.
— Вопросы по языковым конструкциям C#
— Вопросы по сборке мусора (как работает, как ведет себя по отношению к потокам, что такое слабые ссылки и т.п.) — не обязательно знать хорошо, но хорошее знание этого рассматривается, как большой плюс.
— Вопросы по основным типам, в т.ч. по ArrayList, Hashtable, IList\ICollection\IEnumerable, IDisposable и т.п. (рассматривается, как плюс)

3) SQL, RDBMS concepts
— Основные понятия: схемы, таблицы, колонки, индексы, отношения, views (рассматривается, как плюс)
— Транзакции: что такое транзакции, изоляция (уровни изоляции), блокировки, deadlocks и т.п. (рассматривается, как плюс)


Для профи:

1) Алгоритмы и структуры данных
— (!!) Списки\массивы: алгоритмы сортировки и поиска (какие знаете, обычно об одном ли 2-х — рассказать подробнее, дать оценку времени работы)
— (!) Деревья: какие бывают (например, бинарные или B-деревья), простые алгоритмы на деревьях (например, поиска в бинарном дереве)
— Графы, простые алгоритмы на графах.

2) C#\.NET
— (!!) Общие вопросы: что такое тип, экземпляр, метод, свойство, виртуальный метод, ссылка, ссылочный тип, ValueType, интерфейс и т.п.
— (!!) Вопросы по сборке мусора (как работает, как ведет себя по отношению к потокам, что такое слабые ссылки и т.п.)
— (!!) Вопросы по основным типам, в т.ч. по ArrayList, Hashtable, IList\ICollection\IEnumerable, IDisposable и т.п.
— (!) Многопоточность \ IPC в .NET: Monitor, lock (x) {...}, ReaderWriterLock, SyncRoot и т.п.
— (!) Вопросы по языковым конструкциям C# (например, как работат foreach или чем отличается приведение типа по as от приведения типа "скобочками")
— (!) Reflection, аттрибуты: что такое, примеры.
— Сериализация: что это такое, как работает, примеры форматтеров, атрибуты, ISerializable, IDeserializationCallback
— (!) .NET Remoting: как работает, отличия между MBV & MBR-типами, связь с сериализацией, .NET Remoting и многопоточность.
— (!) ASP.NET: как работает, request processing pipeline, основные классы (HttpApplication, IHttpHandler, Page, Control и т.п.), жизненный цикл контролов на странице, отношение к многопоточности и прочие не слишком сложные вопросы (например, что такое ViewState или AJAX).
— WindowsForms: общие вопросы + отношение к многопоточности, асинхронные операции (how to).
— System.Data: довольно простые вопросы по основынам типам (IDbConnection, IDbCommand, IDataReader, DataSet, DataTable и т.п.)
— System.Xml: простые вопросы по XmlDocument, XPath & XSLT.

3) SQL, RDBMS concepts
— (!!) Основные понятия: схемы, таблицы, колонки, индексы, отношения, views
— (!) Транзакции: что такое транзакции, изоляция (уровни изоляции), блокировки, deadlocks и т.п.

Важность вопросов:
— (!!) — я считаю, что это must know
— (!) — знать желательно, но менее важно
— (без пометки): плюс, если хорошо знаком


Достаточно ли разобраться с каждым пунктом (хотя бы поверхностно), чтобы начинать искать работу программиста .NET ? Правильно ли я мыслю?
Главный вопрос — что читать? В Петцольде ничего этого нет.
Заранее благодарен за советы.
Re: Нужен совет о выборе области программирования
От: Хэлкар  
Дата: 25.08.07 08:39
Оценка:
Читать безусловно Рихтера CLR via C#ю Еще можно Троелсена. А вообще чем больше прочтет тем лучше
Re: Нужен совет о выборе области программирования
От: Awaken Украина  
Дата: 25.08.07 10:06
Оценка: 3 (1) +1
>наиболее оплачиваемой является .NET. Так же всерьез рассматриваем в будущем иммиграцию в Канаду по программе Skilled Worker, потому хотелось бы >выбрать область которая будет там востребована, чтобы не было проблем с работой.

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

C>Кстати вопрос: что перспективнее .NET или Java? 2 года назад меня брали в одну большую компанию на программиста Java, тогда будущий начальник сказал что можно разбираться с Java "с нуля" и улучшать свои скиллзы в Java можно бесконечно. Но учеба помешала работать на полный день, потому отказался.


языки программирования и платформы меняются, а базовые знания нужны всегда.
Есть вещи которые программисту нужно знать и понимать на концептуальном уровне , абстрагировавшись от конкретной реализации.
к ним относятся:
-алгоритмы и структуры данных, оценки производительности
-парадигмы программирования, лежащие в основе языков.
важно понимать чем отличаются ООП, generic programming, functional programming, статическая vs динамическая типизация.
тогда переключиться с одного языка на другой будет легко, если в их основе лежит одна парадигма
-паттерны(шаблоны) проектирования.
-многопоточное программирование. проблемы при создании многопоточных программ, способы их решения,
примитивы синхронизации.
-теория реляционных баз данных, и проектирование баз. выбор между производительностью и нормализацией,
блокировки в многопользовательской среде, транзакции и их свойства, уровни изоляции
Re[2]: Нужен совет о выборе области программирования
От: catr  
Дата: 25.08.07 10:19
Оценка:
Здравствуйте, Awaken, Вы писали:

>>наиболее оплачиваемой является .NET. Так же всерьез рассматриваем в будущем иммиграцию в Канаду по программе Skilled Worker, потому хотелось бы >выбрать область которая будет там востребована, чтобы не было проблем с работой.

A>няз в Канаде больше железячных компаний чем чисто софтверных. вывод понятен?
И тем не менее... Изучал форумы русских в Канаде. Говорят что самые востребованные: .NET и Java. Потом Oracle.

C>>Кстати вопрос: что перспективнее .NET или Java? 2 года назад меня брали в одну большую компанию на программиста Java, тогда будущий начальник сказал что можно разбираться с Java "с нуля" и улучшать свои скиллзы в Java можно бесконечно. Но учеба помешала работать на полный день, потому отказался.


A>языки программирования и платформы меняются, а базовые знания нужны всегда.

A>Есть вещи которые программисту нужно знать и понимать на концептуальном уровне , абстрагировавшись от конкретной реализации.
A>к ним относятся:
A>-алгоритмы и структуры данных, оценки производительности
A>-парадигмы программирования, лежащие в основе языков.
A>важно понимать чем отличаются ООП, generic programming, functional programming, статическая vs динамическая типизация.
A>тогда переключиться с одного языка на другой будет легко, если в их основе лежит одна парадигма
A>-паттерны(шаблоны) проектирования.
A>-многопоточное программирование. проблемы при создании многопоточных программ, способы их решения,
A>примитивы синхронизации.
A>-теория реляционных баз данных, и проектирование баз. выбор между производительностью и нормализацией,
A>блокировки в многопользовательской среде, транзакции и их свойства, уровни изоляции
Посоветуй пожалуйста что почитать на эти темы.
Re[3]: Нужен совет о выборе области программирования
От: Awaken Украина  
Дата: 25.08.07 10:59
Оценка: 3 (1) +2
C>Посоветуй пожалуйста что почитать на эти темы.

по алгоритмам: Т.Кормен — Алгоритмы построение и анализ
http://www.ozon.ru/context/detail/id/2429691/
Автор(ы): Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн
Издательство: Вильямс
Цена: 712р.

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

по паттернам и проектированию:
"банда четырех" (Гамма, Хельм, Джонсон, Влиссидес)
http://www.ozon.ru/context/detail/id/2457392/
Автор(ы): Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес
Издательство: Питер
Цена: 253р.

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

Фаулер. Архитектура корпоративных приложений
http://www.ozon.ru/context/detail/id/1616782/
Автор(ы): Мартин Фаулер
Издательство: Вильямс
Цена: 906р.

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

просто хорошие книги которые полезно прочитать любому разработчику:
МакКоннел — Совершенный код
http://www.ozon.ru/context/detail/id/3159814/
Автор(ы): С. Макконнелл
Издательство: Питер
Цена: 577р.

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

Ховард,ЛеБланк — Защищенный код
http://www.ozon.ru/context/detail/id/1387492/
Автор(ы): Майкл Ховард, Дэвид Леблан
Издательство: Русская Редакция
Цена: 476р.

В этой книге разработчики найдут советы и рекомендации по защите создаваемых приложений на всех этапах процесса создания ПО — от проектирования безопасных приложений до написания надежного кода, способного устоять перед атакам хакеров. Здесь
Re: Нужен совет о выборе области программирования
От: KonstantinVV  
Дата: 25.08.07 11:04
Оценка:
Здравствуйте, catr, Вы писали:

Да, .NET перспективен, но на мой взгляд очень хорошие программисты С++ с *очень большим* опытом все же получают больше, по крайней мере, в Москве.
Насчет книш по .NET:
1. Эндрю Троэлсен
2. Рихтер (у него 2 книги)

Троэлсен попроще сразу скажу.
Но C#, я бы сказал, довольно простой язык сам по себе. Основная сложность — в огромном framework, который придется как-то изучить, а для этого нужна большая практика.

Насчет Java — тоже простой язык в общем-то, учится с нуля совершенно спокойно.

Конечно, знания С++ очень помогут в изучении.
Re[2]: Нужен совет о выборе области программирования
От: catr  
Дата: 25.08.07 11:07
Оценка:
Здравствуйте, KonstantinVV, Вы писали:

KVV>1. Эндрю Троэлсен

KVV>2. Рихтер (у него 2 книги)
Спасибо, найду. Там отражены все те пункты которые я привел выше (вопросы к собеседования)?
Как считаете, достаточно ли разобраться во всех тех пунктах (для "начинающего"), которые в списке для собеседования, чтобы искать работу?
Re: Нужен совет о выборе области программирования
От: Дмитрий В  
Дата: 25.08.07 20:16
Оценка:
Здравствуйте, catr, Вы писали:


C>Кстати вопрос: что перспективнее .NET или Java? 2 года назад меня брали в одну большую компанию на программиста Java, тогда будущий начальник сказал что можно разбираться с Java "с нуля" и улучшать свои скиллзы в Java можно бесконечно. Но учеба помешала работать на полный день, потому отказался.


C>Про .NET я ничего не знаю, но думаю что опыт C++ и MFC поможет его освоить.


А что этот дот нет. Он продвигается одной конторой (хоть и довольно мощной). Охладеет Microsoft нему, и крынтец. А java уже давно по-большому счету двигается open-source движением. SAP и тот между дот нетом и явой в свое время сделал ставку на яву (хотя у него были идеи и то и другое продвигать) — открытые стандарты это не пустые слова. Oracle по-моему тоже до сих пор дотнет игнорирует как платформу для своих приложений.

Я понимаю когда студенты говорят — вот в дот нете все понятно, захотел создать консольное приложение, легко делается, а с явой непонятно ничего (почти дословно привел). А так специалисту по-моему все равно, дотнет, ява... У нас несколько людей на java-проекте уже успели с дотнетом поработать. Только что-то опять их ява притянула, наверное уровень зарплаты а может еще какие то мотивы. При этом отмечают, что комьюнити у явы очень мощное.

Я уже например как-то привык, что легко достать нужную java-библиотеку, причем бесплатно, так еще с исходниками. Причем обычно есть выбор между различными реализациями. Есть ли такое в дотнете?...
Re[2]: Нужен совет о выборе области программирования
От: Awaken Украина  
Дата: 25.08.07 20:21
Оценка:
ДВ>Я уже например как-то привык, что легко достать нужную java-библиотеку, причем бесплатно, так еще с исходниками. Причем обычно есть выбор между >различными реализациями. Есть ли такое в дотнете?...

с доставанием чего-либо проблем не было. sourceforge.net
Re: Нужен совет о выборе области программирования
От: ironwit Украина  
Дата: 27.08.07 15:29
Оценка:
Здравствуйте, catr, Вы писали:

C>Здравствуйте.

C> 4 года занимаюсь Shareware: пишу на C++, MFC, WinAPI в Visual C++.

какая разница для шароварения на с++ ты его будешь писать или еще на чем то?
ты хочешь перейти к работе на дядю и продавать труд? так задавай вопрос тогда верно
... << RSDN@Home 1.2.0 alpha rev. 728>>
Я не умею быть злым, и не хочу быть добрым.
Re: Нужен совет о выборе области программирования
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 28.08.07 16:34
Оценка:
на мой взгляд, это лучший ответ на данный вопрос: http://www.rsdn.ru/Forum/?mid=2294982
Автор: eao197
Дата: 10.01.07
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.