Обучение программированию с нуля

Путь 2. Бизнес-анализ

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

Бизнес-аналитик – это своеобразное промежуточное звено между заказчиком и разработчиком. Его задача заключается в том, чтобы выяснить пожелания заказчика, проанализировать и соотнести их с целями продукта, а впоследствии предоставить их разработчикам в понятном для них виде.

Бизнес-аналитик должен уметь структурированно излагать свои мысли при написании документации, поскольку именно она будет служить точкой опоры при разработке продукта.

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

Тем не менее, как бы привлекательно ни звучала данная IT-специальность, следует учитывать следующие факторы:

  • небольшое количество вакансий для специалистов без опыта – большинство работодателей требуют 2+ года опыта;
  • необходимость владения английским языком на хорошем уровне, начиная от Upper-Intermediate.
  • глубокие знания хотя бы в одной предметной области (например, здравоохранение или банковская сфера).

Совершенный цикл for

Сегодня необычный для меня формат статьи: я скорее задаю вопрос залу, нежели делюсь готовым рецептом. Впрочем, для инициирования дискуссии рецепт тоже предлагаю. Итак, сегодня мы поговорим о чувстве прекрасного.

Я довольно давно пишу код, и так вышло, что практически всегда на C++. Даже и не могу прикинуть, сколько раз я написал подобную конструкцию:

Хотя почему не могу, очень даже могу:

Наш текущий проект содержит 43 тысячи циклов. Проект пилю не я один, но команда маленькая и проект у меня не первый (и, надеюсь, не последний), так что в качестве грубой оценки пойдёт

А насколько такая запись цикла хороша? Ведь на самом деле, важно даже не то количество раз, когда я цикл написал, а то количество раз, когда я цикл прочитал (см. отладка и code review)

А тут речь очевидно идёт уже о миллионах.

Так каков он, совершенный цикл?

Книга «Мифический человеко-месяц, или Как создаются программные системы »

Привет, Хаброжители! Немногие книги по управлению проектами можно назвать столь же значимыми как «Мифический человеко-месяц». Смешение примеров из реальной разработки ПО, мнений и размышлений создает яркую картину управления сложными проектами. Эти эссе основаны на пятидесятилетнем опыте работы Брукса менеджером проектов в IBM System/360, а затем в OS/360. Первое издание книги вышло 45 лет назад, второе 25 лет назад. Возникают новые методологии, появляются новые языки программирования, растет количество процессоров, но эта книга продолжает оставаться актуальной. Почему? Спустя полвека мы продолжаем повторять ошибки, которые описал Брукс. Некоторые темы, поднимаемые в книге, кажутся устаревшими, но это лишь видимость. Фундаментальные проблемы, стоящие за ними, все так же актуальны в наше время

Важно знать свое прошлое, чтобы понимать, куда развивается индустрия разработки программного обеспечения. Поэтому, спустя 45 лет мы и читаем Брукса Многое изменилось в мире, но девять женщин всё так же не могут выносить ребенка за один месяц.

Новое поколение разработчиков. Чем они отличаются и почему это нормально

Существует мнение, что незаметно в IT произошла революция. Для того чтобы стать разработчиком, сейчас не обязательно иметь профильное высшее образование. Многие вузы во всех странах стараются внедрять новые методики обучения, но система образования очень «неповоротлива», любые изменения занимают большое количество времени, а рынок ждать не будет.
Именно эту реальность мы учли в «Школе 21», где обучение построено на способностях человека находить информацию. Здесь используются методики без учителей, лекций и оценок, и это работает. Среди участников и те, кто никогда не программировал, и те, у кого есть какой-то опыт и техническое образование.
Одна из проблем в процессе обучения — предложения о работе, которые получают большое количество участников, ещё не пройдя даже половины пути. Из-за высокого спроса на разработчиков профессия программиста стала доступна практически всем.
Мы решили обсудить плюсы и минусы такого положения дел с руководителем IT-департамента, тимлидом и двумя участниками «Школы 21».

Учите английский язык

Бо́льшая часть технической документации — на английском. Учебники и другую профессиональную литературу переводят с запозданием или не переводят вообще. Кроме того, на английском больше информации, и найти решение по англоязычному запросу проще. У ПО обычно несколько языковых версий, неплохо бы их понимать, а иногда и общаться с пользователями. Кажется, уже этих причин достаточно, чтобы захотелось подтянуть английский язык!

Как учить? Здорово, если в вузе хорошо преподают английский и у вас не осталось проблем со школьных времён. Если нет, можно пойти на курсы или заниматься с преподавателем по скайпу, читать книги, статьи и документацию ко всем технологиям только в оригинале. Сначала придётся проверять в словаре каждое слово, но постепенно это пройдёт. И самая приятная часть — играйте на ПК и консолях без перевода и смотрите видео в оригинале. Это даст результат! В идеале нужно подтянуть уровень до В2 (средне-продвинутый) или С1 (продвинутый) и подтвердить это сертификатом.

Как попасть на собеседование

Внутри Navicon стажеров, которые приходят к нам без опыта работы по нашим продуктам, мы называем «падаванами». Для простоты будем пользоваться этим термином и здесь. Первая и очевидная выгода от сложной ситуации на рынке труда для падавана – большой выбор компаний, куда можно прийти без всякого опыта работы и получить предложение пройти стажировку.

Но это совсем не значит, что требований к кандидату не предъявляют никаких: у нас в компании, например, из 50 приславших свое резюме только 10 получают приглашение на собеседование и всего один – предложение пройти у нас стажировку. В большинстве ИТ-фирм соотношение приблизительно такое же, за редким исключением: «погрешность» зависит от известности компании и ее привлекательности.

Есть общие требования, которые предъявляются ко всем кандидатам: они обычно касаются вуза и специализации, а также опыта работы. Для иллюстрации, если вы учитесь в вузе из топ-5 (ВШЭ, МГУ, Бауманка, Физтех, СПбГУ) по технической специальности, или же в профильном институте средней руки, вероятность получить приглашение достаточно высока.

Важно рассказывать о всех проектах и местах работы

Что касается опыта работы, его надо указывать всегда: даже если вы работали промоутером в магазине, можно получить плюс в кандидатскую карму за исполнительность. Можно не писать об этом в разделе «опыт работы», а хотя бы упомянуть в разделе «о себе» — так будет даже лучше. Неплохо перечислить свои студенческие работы, участие в конференциях, общественной активности. Не забудьте также указать, если хотя бы пытались сделать свое приложение, сайт или еще что-то – ссылки на эти работы будут вашим портфолио. И обязательно перечислите все языки и фреймворки, в которых вы работали в ходе обучения.

Хакатон Tour.Hack

Ивент перенесён на 26–27 сентября, Новосибирск, беcплатно

tproger.ru

События и курсы на tproger.ru

Но есть и требования, которые отличаются в зависимости от программы стажировки и ее целей – нужно показать будущему работодателю, что вы подходите именно для той вакансии, на которую претендуете. Например, на интервью стажерам-разработчикам предлагают решить задачки по программированию, а стажерам-аналитикам предлагают бизнес-кейсы (здесь, кстати, вариативность заданий гораздо выше, чем для разработчиков).

И последнее – проверьте свое резюме на грамотность, единообразность оформления. Будь вы даже выпускником ВМК, «професиональное влодение Exel» вам не простят.

Google говорит, университеты больше не нужны

Перевод

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

Мои размышления про экранную клавиатуру для Flipper Zero под экранчик 128х64 пикселя

Недавно я увидел пост с приглашением разработчиков в проект Flipper Zero и подал заявку. Меня добавили в репозиторий с прошивкой и я стал много думать над юзабилити устройства. Приснилось, что мне надо отсканировать кучу ключей-брелков от разных подъездов. Во сне были разные люди, квартиры, дождь, и почему-то мне дали целую горсть этих желтых кругляшей, отличающихся друг от друга только количеством грязи на них. И естественно, чтобы как-то совладать с этим беспорядком, я решил внести все эти ключи во Flipper Zero.
Прямо во сне, я заносил новые идентификаторы и все они добавлялись в менюшку как «Ключ», что делало действо еще бессмысленней. Получился большой список, состоящий только из слова «Ключ». Подумалось, что надо переписать прошивку. И тут как раз преимущество сна — все задуманное сбывается одномоментно. Ключи стали добавляться с рандомным суффиксом как «Ключ 74», а следом за ним мог добавиться «Ключ 22». Номер именно рандомный, не путать с контрольными суммами или хешами. В принципе, если есть хорошая память, то можно запомнить, что «Ключ 22» от Ленина 54, а «Ключ 74» от Пушкина 29. Подумалось, что неплохо бы как-то редактировать номера, прямо на Флиппере, прямо в списке ключей: у нас же свободны кнопки влево-вправо, пусть они инкрементируют/декрементируют номер! А длинное удержание вызовет вызов полноценной клавиатуры! Но стоп, какую клавиатуру рисовать? Стандартную Qwerty с переключением на Йцукен? Русифицированную Яверты? У нас же экран всего 128х64 пикселя, к тому же в него надо как-то запихнуть еще вывод набираемого! Как все это уместить? Неужели вводить текст Азбукой Морзе?

Изучайте технологии и прокачивайте навыки самостоятельно.

В вузе преподают на Windows, хотя её век ушёл, SQL всё ещё из 1999, а на дворе 2019. Догонять разницу всегда придётся самому. Ниже несколько актуальных технологий:

  • Подходы к разработке: экстремальное программирование, система непрерывной интеграции CI и система контроля версия Git.
  • Языки программирования, фреймворки и библиотеки: С ++, Python, JavaScript, TypeScript, Angular, React и др.
  • Технологии: LXD, Docker-контейнеры, кластеры Amazon и Google Cloud, мониторинг Docker Swarm.
  • Навыки тестирования: ручное, автоматизированное, нагрузочное, приёмочное, AB, SHADOW, TDD и т. д.
  • Прочее: работа в команде, оценка и декомпозиция задач, методы управления проектами Scrum и Kanban, KPI.

Технологий — море, а их сочетаний ещё больше. Знать всё невозможно, но иметь представление полезно как минимум, чтобы поддерживать разговор с бэкенд разработчиком, если вы занимаетесь фронтендом, и наоборот.

Как учиться самому? Когда в вуз приходят преподавать разработчики из IT-компаний, не пропускайте. У каждого инструмента есть мануалы и документация, гуглите. В свободном доступе можно найти записи полноценных курсов, например, Технопарка Mail.ru Group и МГТУ им. Баумана. Если есть возможность платить за обучение, загляните на Coursera, Академию Яндекса и Geekbrains. Учитесь даже тогда, когда едете в автобусе. В приложении Sololearn, например, вы найдёте краткие курсы почти по любому языку программирования с тестированием, практикой, сертификатами и даже ачивками.

Если есть вопросы и сомнения, всегда можно попросить совета у старших товарищей.

Зачем вообще писать

  1. Написать пост — значит как следует разложить всё по полочкам, обобщить опыт и поделиться им с другими. Приносить пользу чертовски приятно, попробуйте.
  2. Никогда не угадаешь, кто прочитает ваш пост. Часто это те, кто разбирается в вопросе на голову лучше вас. Фидбэк от таких людей — возможно, самое ценное, что вы приобретете на Хабре.
  3. Ваши публикации — это ваша репутация. Они лучше резюме расскажут, кто вы, чем занимаетесь и в чем разбираетесь.
  4. За первый крутой пост вы получите полноправный аккаунт и плюс в карму.
  5. В дальнейшем за статьи с высоким рейтингом по профильным темам мы можем поощрять материально. Для этого на Хабре есть Программа поощрения авторов.

Что должен знать IT специалист:

  1. Свободное умение работать с ос linux или windows, умение разбираться в железе для ПК – это базовые знания, которым необходимы всем IT-шникам.
  2. Знание английского языка (технического и разговорного). Этот язык очень важен для любого айтишника т.к. основное направление деятельности большинства it компании – страны Европы и США и основная масса IT проектов приходит из зарубежных стран или направлена на эти страны. Знание английского языка, поможет IT специалисту в работе и в общении. Это один из важных аспектов работы в IT сфере.  
  3. Знание языков программирования. Сейчас существуют IT специальности, по которым можно работать и без знания языков программирования. Однако, если Вы хотите связать свою жизнь и работу с IT индустрией, то лучше знать, хотя бы, 1 из языков, а лучше несколько. Это поможет Вам стать хорошим программистом, который может писать код и делать разработку программного обеспечения на разных языках, и это сделает Вас разносторонним программистом, позволит работать над разными проектами и расширит Ваши горизонты для поиска работы.
  4. Рекомендуем освоить знания в информационной безопасности, облачных и сетевых технологиях. Эти направления будут всегда актуальны в IT.

Языков программирования сейчас огромное количество и каждый из них применим для определенных задач и областей. Ниже, мы приведем самые популярные и наиболее часто используемые языки программирования в IT, которые Вы можете выбрать в качестве первого языка программирования:

JavaScript. Отлично подходит для начинающего. Позволяет создавать интерактивные сайты, мобильные приложения, игры, а также десктопные приложения. Но более сложный, чем Питон;
Java.  Тоже позволяет создавать мобильные и десктопные приложения. Используется на большинстве IT компаний;
Python. Легок в изучении, прост в кодировании, имеет множество библиотек. Применяется в разных областях: статистические вычисления, нейронные сети, машинное обучение, веб-разработка;
PHP. Серверный скриптовый язык, который применяется для веб-разработок (на нем работают WordPress, Facebook, ВКонтакте, Википедия). Довольно простой язык со множеством инструментов – будет полезен любому новичку.
C.  Создан для операционной системе UNIX. Ускоряет процесс обработки информации и позволяет писать код под «железо»;
C#. На этом языке тоже можно разрабатывать веб-сервисы, мобильные ПО, серверные приложения. Относительно, сложноват для начинающего, поэтому его изучение лучше оставить на потом.
Ruby. Объектно-ориентированный язык

Применяется для написания простых и понятных программ для решения задач, в которых важно время, понятность, простота разработки.
Django. Серверный веб-фреймворк, написанный на Python

Позволяет создавать безопасные веб-сайты. Применяется в Instagram, Disqus, Mozilla, Pinterest, YouTube, Google. Работает на Linux, Windows и Mac OS X.
R. Применяется для анализа, графического представления данных и статистики;
HTML, CSS. Базовые языки для создания веб-сайтов;
Android, iOS или Windows Phone. Необходимые языки для разработчика мобильных приложений
API и framework (фреймворк). Необходимо для десктоп-программиста.
База данных, например MySQL. Необходимо знать системным администраторам linux или windows

А чтобы Вам было легче начать изучение английского языка, предлагаем несколько учебных пособий:

  • учебник английского языка для айтишника
  • учебник английского языка для айтишника2
  • учебник английского языка для айтишника3

Кому подходит данная специальность

Вот портрет типичного IT-специалиста: интроверт, большую часть времени проводящий за компьютером, “Сова”, может быть социально неловким, неплохо знает английский язык и имеет высшее образование

Специалисту в сфере IT жизненно необходимо владеть рядом навыков:

  1. Понимание эргономики. Специалист должен видеть продукт пользовательскими глазами. Все разработки должны быть просты и понятны на интуитивном уровне среднему потребителю, далёкому от ИТ-сферы.
  1. Обмен знаниями. Каждый айтишник должен уметь донести собственные знания о продукте как до конченого потребителя, так и до своего коллеги, при необходимости посвящения нового игрока в команду.
  1. Прямое взаимодействие с коллегами.
  1. Интуиция. Редкое чувство подлинного понимания информационной среды, которое нельзя натренировать и которому не получиться обучиться, но если оно у вас есть, то вы – настоящая находка для компании.

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

В заключение нужно отметить, что ИТ-сфера – это самая востребованная и быстрорастущая сфера деятельности в мире. Нет более динамичной и изменчивой среды, чем сфера информационных технологий, прорывы в которой случаются чуть ли не ежемесячно.

Таким образом, чтобы оставаться на плаву, вам необходимо всегда держать разум открытым, постоянно развиваться, учить что-то новое и легко расставаться со старым. И, конечно же, быть готовым к тому, что полученные вами год назад знания, ещё через год могут стать совсем неактуальными. Но затраченные усилия стоят того, гарантированно.

Зачем всё это нужно?

Когда чайник, уперевшись в необходимость отойти от простой последовательности действий, задаёт на хабре вопрос типа «как сделать вот это?», ему с вероятностью 70% отвечают «погугли конечные автоматы» и 30% «используй finite state machine» в зависимости от страны работодателя профессионала. На следующий вопрос «а как?» отправляют в гугл. Идёт такой чайник, что только закончил мигать светодиодом и вытер пот со лба, что учил в школе немецкий и всю жизнь работал бульдозеристом в этот гугл и видит там статьи типа Википедия про конечные автоматы с формулами и в которых понятны только предлоги.

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

Итак, задача стоит, например, научить ардуину понимать нажатие кнопки типа клик, нажатие и удержание, то есть, короткий тык в кнопку, длинный и очень длинный. Любой начинающий может сделать это в функции loop() и гордиться этим, но как быть, если кнопок несколько? А если при этом надо не мешать выполнению другого кода? Я написал библиотеку SmartButton для Arduino, чтобы потом не возвращаться к теме кнопок. Здесь же напишу, как она работает.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector