Все записи

Несколько советов для студентов ИТ специальностей

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

Что делать, если вы студент по специальности вычислительная техника и программное обеспечение, информационные системы, Computer Engineering, Computer Science, и вы хотите стать инженером-разработчиком(software engineer) по окончанию университета?

Есть 3 правила:

  1. Хорошо учиться на важных предметах (степень важности предмета определим в посте);
  2. Учиться и практиковаться вне университета;
  3. Брать стажировки по профилю. Не xerox, coffee, or tea guy;

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

Вот вы и студент. Если у вас есть право выбора предметов, то берите наиболее "математичные" и инженерные предметы, если нет, то выживаем. Хороший GPA - признак усидчивости, упорства, но никак не признак хорошего инженера. Поэтому разделите ваши предметы в семестре на важные и все остальное.

Скажем у вас есть такие предметы:

  • Линейная алгебра;
  • Intro to programming;
  • Data structures and algorithms;
  • Русский язык;
  • История Казахстана;
  • Философия.

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

После того, как определили какие уроки мы будем проходить, посмотрите syllabus, он всегда будет неполным и недостаточным по следующим причинам:

1) Все курсы всегда устаревают быстрее до того, как курс появится в университете;

2) Курсы читают для среднего студента, поэтому нужно всегда брать больше.

Что делаем?

Заходим на сайты вроде coursera.org, https://www.edx.org/ и берем эти курсы онлайн, просмотрите топовые университеты, их курсы почти всегда доступны для общего круга. Скажем, MIT - ocw.mit.edu, UC Berkeley - http://webcast.berkeley.edu/ и т.д. Найдите ваш курс, к примеру Linear Algebra и изучайте его по ходу вашего обучения в университете, так ваши теоретические знания будут примерно наравне с топ-студентами.

Больше практики.

  1. Решайте задачи по программированию. Поставьте перед собой цель решать одну задачу из Codeforces, TopCoder. Если не знаете, как решить задачу, смотрите на разбор задачи;
  2. Попробуйте самостоятельно реализовать алгоритм по псевдокоду, который вы прочитали в книге. Попробуйте оценить плюсы и минусы определенного подхода;
  3. Вы уже наверное научились такому выражению как ООП, разделяйте задачу на под-задачи, используйте абстракцию. Попробуйте создать простое приложение для вашей библиотеки или банкомат;
  4. Научитесь ставить Linux, грохните Винду и забудьте про нее, научитесь настраивать веб-сервер, устанавливать базу данных, не используйте XAMPP;
  5. Каждый раз придумывайте небольшую задачу для себя и пытайтесь ее решить лучше;
  6. Попробуйте найти open source проект на Github и делать contribution в него, это даст огромный плюс к вашему резюме.

Берите стажировки летом, хоть и неоплачиваемые, набирайтесь опыта, делитесь мыслями с опытными инженерами.

P.S. Имхо важные курсы для разработчика:

  • Алгоритмы;
  • Программирование;
  • Software engineering;
  • Базы данных.

И удачи в учебе, если есть вопросы, пишите в комментах, буду рад ответить.

A - level: что это?
5 бесплатных онлайн-платформ для самообразования
Мади Сатаев: как получить оффер от Amazon
Шерзат Айтбаев, программист Google: «Не бойтесь откликаться в компании вашей мечты – это бесплатно!»
Эльдар Ахметгалиев, выпускник Caltech, казахстанец, который построил стартап в спортивной аналитике в Кремниевой долине
Маргулан Сейсембаев: Об идеальных учителях, финской модели обучения, дисциплине, анархии, об открытии еще одной школы и многом другом.